[FMQL30TAI开发]运行Icraft-ModelZoo yolov5示例工程全流程详细介绍
本文详细介绍了YOLOv5_7.0模型从下载到嵌入式部署的全流程。首先从ModelScope获取YOLOv5_7.0工程源码及配套资源,包含模型权重、配置文件等。然后验证框架模型推理效果,将PyTorch模型导出为Icraft支持的ONNX/Torchscript格式并进行结构适配。接着通过icraft工具链编译模型生成部署文件,分别在Windows系统进行C++仿真和socket模式测试,最后完
·
1. 从icraft-modelzoo下载yolov5_7.0示例工程
- Modelzoo网址:https://www.modelscope.cn/collections/icraft_modelzoo-18b52923d4854f
- Yolov5_7.0下载地址:https://www.modelscope.cn/models/AIBS/yolov5_7.0
- 参考配套readme进行下载,MODEL为模型名

- TAG为Icraft版本

- 下载命令
git clone -b v3.33.1 https://www.modelscope.cn/AIBS/yolov5_7.0.git

- 下载的yolov5_7.0文件夹包含了yolov5工程源码、权重、导出的torchscript模型、Icraft编译配置文件以及运行时代码及配套文档,可根据情况进行开发验证。
- 本文按照标准流程进行每一步的讲解。
2. 框架模型训练&推理验证
- 对于模型训练,本本不做介绍,参考网上相关教程,结合应用场景,准备数据集,修改神经网络进行训练即可。训练得到权重后,即可开始嵌入式部署。
- 本章节用的是yolov5开源的权重yolov5s.pt,训练的数据集是COCO,类别80。
- Yolov5s.pt通过netron可视化效果如下,只包含了模型算子和对应参数,不包含模型结构,该模型不可作为Icraft输入。

- 按照readme进行yolov5s.pt的推理效果验证,该环节需要依赖深度学习环境,环境搭建方式很多,可参考以下链接亦可自行搭建。
[FMQL30TAI开发]搭建深度学习环境,anaconda安装详细教程(windows系统/ubuntu20.04-aarch64系统)-CSDN博客
- 运行./1_scripts/0_infer.py脚本,目的是加载yolov5s.pt,验证框架模型的推理效果。

3. 框架模型导出Torchscript/ONNX&推理验证
- Icraft要求输入模型格式为ONNX或者Torchscript,因此需要将框架模型导出ONNX或Torchsript格式。
- Yolov5官方源码中,提供了export.py脚本,运行效果如下:

- 通过netron可视化效果如下:


- Yolov5_7.0_icraft目录下./1_scripts/1_save.py脚本,对导出的模型结构做了修改,确保导出的模型结构符合Icraft适配DetPost模块的要求。对于非YOLO系列模型并无此要求,按照通用方法,导出ONNX即可,只要ONNX在Icraft编译通过,即可上板部署。
- 运行./1_scripts/1_save.py脚本,导出模型用于Icraft编译输入。

- 通过netron可视化yolov5s_640x640.pt

- 运行./1_scripts/2_save_infer.py脚本,验证导出模型的正确性。

4. ONNX/Torchscript通过icraft编译转换生成json&raw
- 工程中已提供配置好的toml文件、输入模型和量化校准集,本章节不做详细介绍。
- 编译模型:
icraft compile ./config/ZG/yolov5s_int8.toml

5. 运行yolov5_c++_仿真(windows系统)
- Windows系统需要安装icraft相关环境和visual studio 2022。
- 下载的工程中,以及完成了c++应用程序相关工程的构建,直接运行编译命令:
cd yolov5_7.0_icraft/3_deploy
mkdir build_win
cd build_win
cmake ..
cmake --build . --config Release

- 生成的可执行文件,即支持仿真也支持socket模式,由yaml文件进行配置

- 配置yaml文件参数

- 运行yolov5_c++仿真
.\Release\yolov5s_psin.exe ..\cfg\yolov5s_ZG_int8_demo.yaml

- 用visual studio打开工程,运行仿真,便于修改代码和调试


- 运行效果

6. 运行yolov5_c++_socket模式(windows系统)
- Socket模式:上位机与开发板通过网线连接,上位机运行应用程序,开发板启动icraft-serve服务,上位机将模型和数据通过socket协议传输到开发板进行计算。
- 开发板启动icraft-serve

- 修改yaml文件,配置为socket模式

- 运行程序

- 开发板打印信息情况:

7. 运行yolov5_c++_psin模式
- 将第5节修改的yaml指定目录改回传参数的形式。

- 进入交叉编译环境(docker)

- 编译成功:

- 修改yaml配置:

- 上传工程文件到板载系统某个路径

- 运行程序(需要root权限):

更多推荐



所有评论(0)