Modelo de clasificación de imágenes de Pytorch para ONNX (notas de estudio del hermano Tongji Zihao)

Código del entorno de instalación y configuración
que ejecuta la plataforma GPU en la nube: respuesta a consejos de inteligencia artificial de cuenta pública gpu
Tongji Zihao hermano 2022-8-22 2023-4-28 2023-5-8
Instalar Pytorch

pip3 install torch torchvision --extra-index-url https://download.pytorch.org/whl/cu113

Instalar ONNX

pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple

Instalar el motor de inferencia ONNX Runtime

pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple

Instalar otros kits de herramientas de terceros

pip install numpy pandas matplotlib tqdm opencv-python pillow -i https://pypi.tuna.tsinghua.edu.cn/simple

Verifique que la configuración de la instalación sea exitosa

import torch
import onnx
import onnxruntime as ort
print('PyTorch 版本', torch.__version__)
print('ONNX 版本', onnx.__version__)
print('ONNX Runtime 版本', ort.__version__)

Convierta el modelo de clasificación de imágenes de Pytorch a la clase ONNX-ImageNet1000
. Exporte el modelo de clasificación de imágenes ImageNet previamente entrenado de Pytorch al formato ONNX para su posterior implementación en el motor de inferencia.
Código que ejecuta la plataforma GPU en la nube: consejos de inteligencia artificial para cuentas públicas Responder al
hermano gpu Tongji Zihao 2022-8-22 2023-4-28 2023-5-8

import torch
from torchvision import models
import onnx

device=torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
print('device:',device)

# 载入ImageNet预训练PyTorch图像分类模型
model=models.resnet18(pretrained=True)
model=model.eval().to(device)
# 构造一个输入图像Tensor
x=torch.rand(1,3,256,256).to(device)
print(x.shape)
# 输入PyTorch模型推理预测,获得1000个类别预测结果
output=model(x)
print(output.shape)
# PyTorch模型转ONNX格式
with torch.no_grad():
    torch.onnx.export(
        model,                    # 要转换的模型
        x,                        # 模型的任意一组输入
        'resnet18_imagenet.onnx', # 导出的ONNX文件名
        input_names=['input'],    # 输入Tensor的名称(自己起名字)
        output_names=['output'],  # 输出Tensor的名称(自己起名字)
        opset_version=11,         # ONNX算子集版本
    )
# 验证onnx模型导出成功
# 读取ONNX模型
onnx_model=onnx.load('resnet18_imagenet.onnx')
# 检查模型格式是否正确
onnx.checker.check_model(onnx_model)
print('无报错,onnx模型导入成功!')
# 以可读的形式打印计算图
print(onnx.helper.printable_graph(onnx_model.graph))
#使用Netron可视化模型结构
#Netron:https://netron.app
#视频教程:https://www.bilibili.com/video/BV1TV4y1P7AP

Modelo de clasificación de imágenes de PyTorch para clasificación de flores ONNX

import torch
from torchvision import models
import onnx

device=torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
print('device:',device)

# 导入训练好的模型
model=torch.load('MobileNetV2.pth')
model=model.eval().to(device)
# 构造一个输入图像Tensor
x=torch.rand(1,3,224,224).to(device)
print(x.shape)
# 输入PyTorch模型推理预测,获得N个类别预测结果
output=model(x)
print(output.shape)
# PyTorch模型转ONNX格式
with torch.no_grad():
    torch.onnx.export(
        model,                    # 要转换的模型
        x,                        # 模型的任意一组输入
        'mobilenetv2_flowers5.onnx', # 导出的ONNX文件名
        input_names=['input'],    # 输入Tensor的名称(自己起名字)
        output_names=['output'],  # 输出Tensor的名称(自己起名字)
        opset_version=11,         # ONNX算子集版本
    )
# 验证onnx模型导出成功
# 读取ONNX模型
onnx_model=onnx.load('mobilenetv2_flowers5.onnx')
# 检查模型格式是否正确
onnx.checker.check_model(onnx_model)
print('无报错,onnx模型导入成功!')
# 以可读的形式打印计算图
print(onnx.helper.printable_graph(onnx_model.graph))
# 登录netron.app在线模型可视化网页打开可视化模型结构

Lectura ampliada
[Hermano Tongji Zihao] Proyecto de graduación de clasificación de imágenes, detección de objetivos, segmentación semántica, segmentación de instancias y detección de puntos clave completados en dos días: https://github.com/TommyZihao/Train_Custom_Dataset
Página de inicio de ONNX: https://onnx. ai
Página de inicio de ONNX Github: https://github.com/onnx/onnx
Marco de aprendizaje profundo compatible con ONNX: https://onnx.ai/supported-tools.html
Plataforma informática compatible con ONNX: https://onnx.ai/ -tools.html compatible
Operadores ONNX: https://onnx.ai/onnx/operators
Sitio web de visualización del modelo en línea Netron: https://netron.app
Videotutorial de Netron: https://www.bilibili.com/video/BV1TV4y1P7AP
Zhou Blog de Yifan
Tutorial introductorio sobre la implementación de modelos (1): Introducción a la implementación de modelos https://zhuanlan.zhihu.com/p/477743341
Tutorial introductorio sobre la implementación de modelos (2): Resolución de problemas en la implementación de modelos https://zhuanlan.zhihu. com/p /479290520
Tutorial introductorio sobre la implementación del modelo (3): explicación detallada de la conversión de PyTorch a ONNX https://zhuanlan.zhihu.com/p/498425043

Supongo que te gusta

Origin blog.csdn.net/qq_50993557/article/details/132844759
Recomendado
Clasificación