【Atlas 200DK】YOLOv3和YOLOv5部署
数据集介绍
无论什么数据集开发版移植的流程是差不多的,我们使用的数据集是NWPU VHR-10 Dataset,这是由西工大标注的航天遥感目标检测数据集,该数据集有650张包含目标的图像和150张背景图像,共计800张,目标种类包括飞机、船舰、油罐、棒球场、网球场、篮球场、田径场、港口、桥梁和汽车一共10个类别,为了满足项目要求,将四个篮球场归为一类,所以本项目实际类别有7个类别。我们进行数据增强扩充后总共有2130张,训练集有1420张,下面统计了每一个类别的个数:
类别 |
飞机 |
船只 |
油库 |
操场 |
港口 |
桥梁 |
车辆 |
数量 |
3378 |
930 |
718 |
2418 |
798 |
374 |
2254 |
开发板环境搭建
我们所使用的版本是C73,这个版本是和20.1.rc1兼容的,华为推出了1.3.0.0、1.32.0.0、20.0.RC1、20.1.rc1四个版本。20.1.rc1版本是华为基于全新架构打造的最新版本,更易于开发者阅读、了解、开发属于自己的AI代码。按照以下链接可以完成环境的搭建:
环境搭建教程
YOLOv3的部署
模型训练转换
YOLOv3 source code
因为目前开发板只支持caffe和tensorflow训练的模型的转换,所以我先选用yolov3先训练了一个基础模型并且进行部署和测试。将训练好的模型用freeze_graph.py转换成.pb文件,再利用mindstudio将.pb(大概有246.6MB)转成.om(124.2MB)模型,没有经过量化。(界面中Tools下面Model Converter进行模型转换)
可参考mindstudio官方手册
转换参数设置
这里的R是255的倒数,通过这些步骤可以将图片自己归一化。
服务器上的结果
显卡型号:Nvidia GTX 1080 ti
cuda版本:9.0
(测试参数设置使用的都是默认的,比如score阈值是0.3,IoU阈值是0.45)
开发板上的结果
部署到开发板上的过程,前期图方便为完成任务主要用python部署,但是很慢很慢离实时还差得远,之后只能用c++部署,其实从一开始就应该用c++部署的,官方给提供了c++示例代码(但是是基于caffe训练的模型),应该先把流程过一遍先明白开发的顺序是怎样的。整个过程遇到了很多困难但也学到了很多,但回顾总体过程,其实在部署的过程中需要完善的代码主要就是前处理和后处理部分,模型推理部分直接可以用芯片的acl接口完成。用python和c++写的代码都放在了我的github上,欢迎给个star✨,谢谢。
python部署
python部署是真的慢,先上速度的结果。10帧每秒
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)