onnx模型部署(onnx模型部署arm板)

onnx模型部署(onnx模型部署arm板)目录 1 前言 2 代码 3 数据形态 分类用 4 配置文件 5 训练 6 测试 分析 混淆矩阵等等 测试图片效果等 7 导出 onnx 8 onnx 推理 9 docker 环境简单补充 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 好久没有做图像分类了 于是想用商汤的 mmclassifica 快速搞一波 发现已经没有了 现在是 mmpretrain 集成 nbsp nbsp nbsp nbsp nbsp nbsp nbsp 截止到我写文章 我是下载的 GITHUB 中的 mmpretrain



目录

1.前言

2.代码

3.数据形态【分类用】

4.配置文件

5.训练

6.测试-分析-混淆矩阵等等,测试图片效果等

7.导出onnx

8.onnx推理

9.docker环境简单补充


        好久没有做图像分类了,于是想用商汤的mmclassification快速搞一波,发现已经没有了。现在是mmpretrain集成。

        截止到我写文章,我是下载的GITHUB中的mmpretrain,我是main分支,是1.2版本。     安装环境:

     (1)跟着文档来就好

        主要是这两步: cd mmpretrain    -->  pip install -U openmim && mim install -e .

        open-mmlab喜欢用mim来装东西,又快,又对。包括mmcv、mmdeploy、mmdet等。

    (2)自己搞一个docker,我文章最后做补充文档~

 可以看出,data下是训练集和验证集,然后是类名,类名下是各自图片,就这样就行了。

代码里有个config文件,下面的resnet下面的,resnet50_8xb32_in1k.py抄一个过来做自己的,它里边还有如下一些配置文件:

依次把所有内容抄过来,做一个自己的配置文件。我放在config_me下边,叫my_resnet50_8xb32_in1k.py,最终内容如下边代码:

这里有两点需要注意,一个是去模型库下载预训练权重【读readme找模型库,对应配置文件下载的对应预训练pth】,第二个是dataset_type = 'CustomDataset'这里用自定义就行了,数据形态上边那样就行,不用、不用去改dateset下的imagenet、 coco啥的标签......

 
   

    把tools文件夹下边的train.py,复制一份【PS.后边都指的复制到项目根目录下】,只改动如下代码,然后python train.py就可以训练了。【注意训练结果权重在你的work-dir指定目录下】

 
   
还可以加几句打印类别顺序:【还没试过,待定】 classes = runner.test_loop.dataloader.dataset.metainfo.get('classes') print("=== 本次训练类别顺序: ======================") print(classes) print('=========================================')

   同理,把tools下的test.py复制,改动如下,可以评估验证集:

 
   

同理, analyze_results.py复制一份出来,改动如下,可以分析模型对测试集的效果:

 
   

同理, confusion_matrix.py复制一份出来,改动如下,可以计算验证集的混淆矩阵:

 
   
运行的时候,加上 --show 和--include-values等,显示带数字的混淆矩阵 同理,把demo下边的image_demo.py复制一份,改动如下,可以测试图片推理:
 
   

这里用到mmdeploy, 把mmdeploy,git clone一个到本项目文件夹下,再cd到mmdeploy里,同样运行mim install -e .来安装mmdeploy或者参考:Get Started — mmdeploy 1.3.1 文档

 目前我这里是:1.3.1版本

导出onnx脚本:export_onnx.py

 
   

(1)mmdeploy推理方式

 
   

(2)onnx-runtime推理方式, 脱离框架【very nice !!!!!!!!!】

         里边数据处理是参考 config文件里边图像,比如resize啥的要对。

 
   

# 假设真实标签和模型预测结果
y_true = np.array([0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2])
y_pred = np.array([0, 1, 2, 0, 0, 2, 2, 1, 2, 0, 1, 1, 0, 1, 2])

# 生成分类报告
report = classification_report(y_true, y_pred, target_names=['a', 'b', 'c'])
print(report)

# 计算混淆矩阵 cm = confusion_matrix(y_true, y_pred)

# 打印混淆矩阵 print("混淆矩阵: ", cm)

- dockerFile如下: 从阿里源拉一个torch的基础镜像.........

# https://www.modelscope.cn/docs/环境安装 # GPU环境镜像(python3.10)

FROM registry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.3.0-tf2.16.1-1.15.0

# FROM registry.cn-hangzhou.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.3.0-tf2.16.1-1.15.0

# FROM registry.us-west-1.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.3.0-tf2.16.1-1.15.0

RUN mkdir /opt/code

WORKDIR /opt/code

- 构建镜像 docker build -t hezy_base_image .

- 创建容器 docker run --name  hezy_mmcls  -d  -p 9528:22  --shm-size=1g  hezy_base_image   tail -f /dev/null

【-d 表示后台, -p表示端口映射 --shm-size 表示共享内存分配  tail -f /dev/null表示啥也不干】

- docker run还有些参数,可以酌情添加。

- docker exec -it 容器id /bin/bash: 命令可以进到容器

- docker images, docker ps | grep hezy: 查看镜像和容器等等

针对本次mmpretrain环境里边继续操作:

- 容器里边删除所有关于mm的环境【重装】,包括mmcls、openmim、mmdet、mmseg、mmpretrain等;

- 安装mmpretrain:https://mmpretrain.readthedocs.io/zh-cn/latest/get_started.html

- 验证:python demo/image_demo.py demo/demo.JPEG resnet18_8xb32_in1k --device cpu

- 补充:映射ssh等以及如下:

vim /etc/ssh/sshd_config  下边这些设置放开:

Port 22

AddressFamily any

ListenAddress 0.0.0.0

PermitRootLogin yes

PermitEmptyPasswords yes

PasswordAuthentication  yes

#重启ssh

service ssh restart

# 设置root密码:passwd root

外边就root/root和IP:端口登录了。【其他shel或者pycharm等idea登录用】

今天的文章 onnx模型部署(onnx模型部署arm板)分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2026-03-10 07:40
下一篇 2026-03-10 07:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/52124.html