转onnx模型

import sys
sys.path.append('./data')
sys.path.append('./model')

from model import MobileNetV3_large


import torch

def convert_onnx():
    device = 'cuda' if torch.cuda.is_available() else 'cpu'
    model_path = 'E:/work/ThermalFireRecognition/FireRecognition-test/weights/best3.pt' 
    model = MobileNetV3_large(num_classes=2)


    model.load_state_dict(torch.load(model_path, map_location=device))

    model.to(device)
    model.eval()
    dummy_input = torch.randn(1, 3, 224, 224).to(device)#输入大小   #data type nchw
    onnx_path = 'E:/work/ThermalFireRecognition/FireRecognition-test/weights/final.onnx'
    torch.onnx.export(model, dummy_input, onnx_path, input_names=['input'], output_names=['output'],opset_version=11)
    print('convert retinaface to onnx finish!!!')

if __name__ == "__main__" :
    convert_onnx()

onnx模型简化

## 首先需要将模型转化为onnx
## 加载虚拟环境,并导入 onnx-simplifier 简化网络模型结构

conda activate evns
pip install onnx-simplifier -i https://mirror.baidu.com/pypi/simple
python -m onnxsim ${INPUT_ONNX_MODEL} ${OUTPUT_ONNX_MODEL}
"Sample: python -m onnxsim ./yolov5.onnx ./yolov5_sim.onnx"