AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验

这篇具有很好参考价值的文章主要介绍了AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 实验目的:

1.完成yolov5s模型的训练及推理验证。

2.完成onnx模型的转换的转换。

3.完成模型量化环境配置、模型验证、验证数据集准备及模型的量化转换。

4.完成转换后的模型在地平线RDK X3开发板上的部署和推理,静态图片推理和实时图像推理。

5.以上过程均需在实验报告中体现。

  1. 实验环境:
  1. 地平线开发板烧写OriginBot SD卡镜像,v2.0.1版本;参考链接
  2. PC电脑,Windows系统或Ubuntu系统,完成环境配置,用于yolov5的模型训练和onnx模型的转换。
  3. Ubuntu系统虚拟机,用于模型的量化和转换。
  1. 实验内容及步骤

3.1下载yolov5

使用tag为v2.0的版本的yolov5提前进行模型的训练。下载链接:https://github.com/ultralytics/yolov5/blob/v2.0。可以直接下载zip压缩包,解压得到文件夹yolov5-2.0。

下载yolov5s.pt预训练模型,放入到weights文件夹下,下载链接:Release v2.0 · ultralytics/yolov5 · GitHub

3.2 修改数据集配置文件

在data目录下创建一个test_data.yaml的数据集配置文件,其中train为训练集图片的路径,val为验证集图片的路径,nc为检测的类型数目,names为检测的类型的名称,如下图所示:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

修改模型配置文件models/yolov5s.yaml,根据检测的类型将nc修改为2,对应mouse和screwdriver这两个类别;

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

3.3 训练模型

1)在正式开始训练之前,需要对train.py进行以下修改:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

修改完成之后,打开anaconda 终端,运行训练命令如下,--device 0表示使用GPU:

python train.py --img 640 --batch 1 --epochs 100 --data data/test_data.yaml --weights weights/yolov5s.pt --device 0

正常情况下会开始训练,训练100个epochs后结果如下:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

训练结束后,在runs\exp0\weights文件夹下生成了最后一轮训练的模型last.pt100轮中最好的模型best.pt,同时生成了训练结果的统计分析:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

模型训练完成后,使用test数据集进行测试,将test文件夹放在inference文件夹下,使用训练出来的best.pt模型,置信度为0.7,执行如下命令:

python detect.py --source ./inference/test --weights ./runs/exp0/weights/best.pt --conf 0.7

正常情况下会开始进行检测,自动读取test文件夹中的图片,

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

检测完成后,在test文件夹同级目录下生成output文件夹,用于存放结果,如下图:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

具体测试结果:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

图中的置信度有0.8以上,说明模型的训练效果不错,可以继续使用

3.4 onnx模型转换-依赖环境安装及文件修改

模型训练测试完成后,需要将模型转换成onnx模型,用于下一步的模型转换,安装环境依赖:

pip install onnx==1.7

修改导出版本:export.py文件第48

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

修改输出节点维度信息:yolo.py文件29

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

安装成功:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

3.5 yolov5模型转onnx

使用训练好的best.pt模型,img-size 设为672。命令如下,

python export.py --weights ./runs/exp0/weights/best.pt --img-size 672 --batch-size 1

正常情况下,会在runs/exp0/weights文件夹下生成best.onnx模型。

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

不过实验过程中遇到错误:

报错如下:

TorchScript export success, saved as ./runs/exp15/weights/best.torchscript.pt

ONNX export failure: Descriptors cannot be created directly.

If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.

If you cannot immediately regenerate your protos, some other possible workarounds are:

 1. Downgrade the protobuf package to 3.20.x or lower.

 2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).

 报错:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

解决方法:卸载protobuf,并重新安装3.20版本的rotobuf

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

3.6 模型量化环境配置

首先安装Anaconda

配置环境:

在虚拟机的Linux系统中安装完成支持 Python 3.8.x 版本的 Anaconda3 环境

其中出现无法使用conda命令的报错(conda: command not found)

  在尝试启动修改环境变量无果后,最后将整个虚拟机删除,并重新建一个磁盘空间50GB大小的虚拟机后成功可以安装对应的conda环境。

  在指令中输入conda list,可以查看自己是否进入成功安装conda

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

成功安装Anaconda,实验继续

下面是环境配置的过程:

1.linux终端开发机中执行如下命令,获取模型转换资料包:

wget -c ftp://xj3ftp@vrftp.horizon.ai/ai_toolchain/ai_toolchain.tar.gz --ftp-password=xj3ftp@123$%

wget -c ftp://xj3ftp@vrftp.horizon.ai/model_convert_sample/yolov5s_v2.0.tar.gz --ftp-password=xj3ftp@123$%

2.创建模型转换环境:

conda create -n horizon_bpu python=3.8 -y  

3.进入conda模型转换环境:

conda activate horizon_bpu 

4.解压模型转换环境和示例模型安装包并进行相关依赖的安装:

tar -xvf yolov5s_v2.0.tar.gz

tar -xvf ai_toolchain.tar.gz

pip install ai_toolchain/h* -i https://mirrors.aliyun.com/pypi/simple

pip install pycocotools -i Simple Index

第三条指令执行时出现了如图的错误:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

不能构建pycocotools,其实是没有安装GCC:前面还有错误信息error: command 'gcc' failed: No such file or directory表明系统可能没有安装GCCGNU编译器套件)。可以使用系统的包管理器来安装它。

sudo apt-get install build-essential

在顺利完成安装后,可以键入 hb_mapper --help 命令验证是否可以正常得到帮助信息,若打印如下信息,说明环境已安装完成

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

3.7 模型量化转换

开发环境准备完成,使用命令:conda activate horizon_bpu 进入开发机模型转换环境。

将转换后的best.onnx模型放到yolov5s_v2.0/04_detection/03_yolov5s/mapper文件夹下。

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

然后按以下步骤进行模型验证

进入浮点模型转换示例yolov5s模型目录:

    cd yolov5s_v2.0/04_detection/03_yolov5s/mapper

修改01_check_X3.sh脚本: 

将模型修改为自己转换好的 best.onnx模型,如下图:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

确认模型结构及算子是否支持,并提供每个算子执行硬件的分配情况(BPU/CPU),RDK X3 执行脚本:01_check_X3.sh

bash 01_check_X3.sh

命令执行完毕后,出现以下日志,说明模型校验成功:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

验证数据准备

模型检查通过后,根据以下步骤进行模型转换。

修改校准数据,在01_common/calibtation_data文件夹下新建文件夹my_image,用于存放自己的校准数据,修改02_preprocess.sh 中的--src_dir--dst_dir路径,src_dir所指路径用于存放训练数据中取50张标准数据图片,dst_dir所指路径用于存放转换后的.rgb文件;

进行校准数据预处理,修改02_preprocess.sh脚本文件:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

执行脚本:02_preprocess.sh,进行校准数据预处理:

bash 02_preprocess.sh

命令执行完毕后,出现以下日志并无任何报错,说明数据预处理成功:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

同时,在mapper文件夹下生成my_calibration_data_rgb_f32文件夹,校准数据转换成.rgb格式;

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

模型转换

1.yolov5s_config_X3.yamlmodel_parameters下的onnx_model参数修改为自己的模型best.onnx,如下图:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

2.yolov5s_config_X3.yamlcalibration_parameters下的cal_data_dir参数修改为自己的校准数据预处理之后的文件夹calibration_data_rgb_f32,如下图:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

#转换时所需的配置文件 yolov5s_config_X3.yaml,已存放在03_build_X3.sh脚本同级文件夹下,然后RDK X3 执行脚本:03_build_X3.sh

bash 03_build_X3.sh

命令执行完毕后,若出现以下日志并无任何报错,说明模型转换成功:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

3.8 模型部署

注意事项:模型上板运行前,将 my_yolov5s_672x672_nv12.bin 定点模型拷贝至开发板的/opt/hobot/model/x3/basic/ 目录下

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

放一张自己的图像数据比如test103.jpg07_yolov5_sample文件夹下用于推理,并修改test_yolov5.py文件,修改使用的模型为my_yolov5s_672x672_nv12.bin,读取的图片为test102.jpg

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

修改postprocess.py文件,修改检测的类型数量num_classes2,修改reshape参数,其中reshape([1, 84, 84, 3, 7])最后一个参数7num_classes + 5得出,如下图:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

修改coco_classes.names文件,如下图:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

调用以下命令运行:

cd /app/pydev_demo/07_yolov5_sample/

sudo python3 ./test_yolov5.py

命令执行完毕后,若出现以下日志并无任何报错,说明模型部署成功:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉

得到result识别图像如下:

AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验,人工智能,目标检测,计算机视觉文章来源地址https://www.toymoban.com/news/detail-833057.html

到了这里,关于AI边缘设计目标检测模型训练、模型转换及RDK X3部署实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从0开始yolov8模型目标检测训练

    首先有大环境,即已经准备好了python、nvidia驱动、cuda、cudnn等。 2.1 创建虚拟环境 2.2 激活虚拟环境 注意:激活虚拟环境的时候,需要清楚自己创建的虚拟环境(yolov8)是在root权限下,还是在user权限下,否则,当使用source activate yolov8激活环境的时候,可能一直会提示Could n

    2024年02月12日
    浏览(30)
  • 【目标检测】60、MMYOLO | 如何使用 MMYOLO 训练模型

    代码链接:https://github.com/open-mmlab/mmyolo/tree/main 相关文档: 1、自定义数据集 标注+训练+测试+部署 全流程 2、10分钟带你换遍主干网络 3、10 分钟轻松掌握大图推理 4、特征图可视化 5、配置文件解读 MMYOLO 是一个 YOLO 系列算法的开源库,该库支持一次环境配置调试多种模型,和

    2024年02月04日
    浏览(45)
  • 【目标检测】YOLOv5算法实现(七):模型训练

      本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本系列文章主要以YOLOv5为例完成算法的实现,后续修改、增加相关模块即可实现其他版本的

    2024年01月22日
    浏览(40)
  • 目标检测 YOLOv5 预训练模型下载方法

    目标检测 YOLOv5 预训练模型下载方法 flyfish https://github.com/ultralytics/yolov5 https://github.com/ultralytics/yolov5/releases 可以选择自己需要的版本和不同任务类型的模型 后缀名是pt

    2024年02月08日
    浏览(41)
  • 目标检测再升级!YOLOv8模型训练和部署

    YOLOv8 是 Ultralytics 开发的 YOLO(You Only Look Once)物体检测和图像分割模型的最新版本。YOLOv8是一种尖端的、最先进的SOTA模型,它建立在先前YOLO成功基础上,并引入了新功能和改进,以进一步提升性能和灵活性。它可以在大型数据集上进行训练,并且能够在各种硬件平台上运行

    2024年01月20日
    浏览(33)
  • YOLOV8目标检测——最全最完整模型训练过程记录

    本文记录一下yolov8训练目标检测模型的过程,以及其中的一些需要注意的地方。本人是yolov5直接使用的yolov8,因此本文也记录了与yolov5的训练过程不一样的地方。 原创声明:如有转载请注明文章来源。码字不易,如对卿有所帮助,欢迎评论、点赞、收藏。 这边说一下,pip这

    2024年02月07日
    浏览(39)
  • PaddleDetect图像目标检测模型训练之数据标注——使用labelme进行标注

    在做PaddleDetect图像检测模型训练时,需要对数据集进行人工标注,下面将已货车检测为例,使用labelme进行标注的详细过程记录一下,以防日后忘记。 本文中使用到的文件请到这里下载:https://download.csdn.net/download/loutengyuan/87616492 labelme是图形图像注释工具,它是用Python编写的

    2024年02月16日
    浏览(31)
  • 【3】使用YOLOv8训练自己的目标检测数据集-【收集数据集】-【标注数据集】-【划分数据集】-【配置训练环境】-【训练模型】-【评估模型】-【导出模型】

    云服务器训练YOLOv8-新手教程-哔哩哔哩 🍀2023.11.20 更新了划分数据集的脚本 在自定义数据上训练 YOLOv8 目标检测模型的步骤可以总结如下 6 步: 🌟收集数据集 🌟标注数据集 🌟划分数据集 🌟配置训练环境 🌟训练模型 🌟评估模型 随着深度学习技术在计算机视觉领域的广泛

    2023年04月15日
    浏览(66)
  • 从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型

    从零开始的目标检测和关键点检测(一):用labelme标注数据集 从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型 1、数据集类型即coco格式的数据集,在dataset_info声明classes、keypoint_info(关键点)、skeleton_info(骨架信息)。 2、训练参数 3、模型定义、数据预处理、

    2024年02月06日
    浏览(31)
  • 从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

    从零开始的目标检测和关键点检测(一):用labelme标注数据集 从零开始的目标检测和关键点检测(三):训练一个Glue的RTMPose模型 在 [1]用labelme标注自己的数据集 中已经标注好数据集(关键点和检测框),通过labelme2coco脚本将所有的labelme json文件集成为两个coco格式的json文件,

    2024年02月06日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包