当前位置:网站首页 > 云计算与后端部署 > 正文

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



目录

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板)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • nfs客户端软件(win nfs客户端)2025-03-30 07:18:09
  • 操作系统课后(操作系统课后答案汤小丹版)2025-03-30 07:18:09
  • redis端口6379(redis端口号是什么)2025-03-30 07:18:09
  • 华为模拟器怎么开启端口(华为模拟器给端口配置ip)2025-03-30 07:18:09
  • 服务器部署是谁的工作(服务器在网络中部署的原则是什么?)2025-03-30 07:18:09
  • py文件打包成exe之后打不开(py文件怎么打包成可执行文件)2025-03-30 07:18:09
  • samba共享服务端口(samba文件共享端口)2025-03-30 07:18:09
  • git服务器部署(git 服务器配置)2025-03-30 07:18:09
  • redis的默认端口是(redis默认服务端口)2025-03-30 07:18:09
  • 手机软件后缀exe怎么安装(手机安装exe应用程序)2025-03-30 07:18:09
  • 全屏图片