1.YOLO模型资料
本文档内容以工程、yolov5s模型为例。
a.模型结构
详细的模型结构可以利用netron工具打开.pt或.onnx模型查看。
b.模型参数即验证结果
其中,YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x为五种类型的预训练模型,其包含的检测类别相同,均包括以下80类:
'person','bicycle','car','motorcycle','airplane','bus','train','truck','boat',
'trafficlight','firehydrant','stopsign','parkingmeter','bench','bird','cat','dog',
'horse','sheep','cow','elephant','bear','zebra','giraffe','backpack','umbrella',
'handbag','tie','suitcase','frisbee','skis','snowboard','sportsball','kite',
'baseballbat','baseballglove','skateboard','surfboard','tennisracket','bottle',
'wineglass','cup','fork','knife','spoon','bowl','banana','apple','sandwich',
'orange','broccoli','carrot','hotdog','pizza','donut','cake','chair','couch',
'pottedplant','bed','diningtable','toilet','tv','laptop','mouse','remote','keyboard',
'cellphone','microwave','oven','toaster','sink','refrigerator','book','clock','vase',
'scissors','teddybear','hairdrier','toothbrush'
Size表示模型支持输入的图像尺寸为640*640。
MAP(50-95)表示只有当预测结果置信度阈值为50-95时才算正确的话,模型在coco测试集上的预测精确度。
Speedcpub1表示该模型在cpu上的推理速度是多少。
SpeedV100b1表示该模型在gpu上的推理速度是多少,其中V100为英伟达的一种显卡类型。
Params表示模型需要训练的参数数量,单位是million。
FLOPs表示模型执行推理时每秒需要进行的浮点数运算次数,次数越少说明模型约轻量,模型参数越少。
2.移植过程和优化文档
通过章节一得到yolo原始模型,其后缀为.pt,要想将其放到SS928芯片上执行推理,必须将其转换为.om模型,.pt模型转为.om模型需要分两步:
1).pt模型转为.onnx;
2).onnx转为.om;
其中,步骤1依赖github开源的yolo工程,步骤2依赖海思提供的atc工具,即资料包中的Asc-cann-toolkit_6.10.t01spc030b330__64.run。
下面将对步骤1和步骤2的实现进行详细的说明:
2.1环境搭建指南
.pt模型转换为.onnx
1.准备一个纯净的ubuntu18:04的环境;
2.安装anaconda
通过安装Anaconda来创建虚拟环境,可以在同一个系统上创建多个相互独立的Python运行环境。每个虚拟环境中都可以安装所需的Python包和库,以满足不同项目或应用程序的需求,而且不会影响到系统上其他的Python环境,保证了环境隔离。(与全局系统环境和其他虚拟环境都隔离开来)
(1)Anaconda镜像资源下载网址:
(2)选择对应的版本下载,下载完成后在终端输入命令运行.sh文件即可安装:
./_64.sh
注意anaconda版本的选择,不要选择太高的版本,默认安装高版本python。
(3)等待安装,不断回车,输入yes
(4)输入安装路径,即步骤(5)中的${install_path}
(5)安装完成之后,根据提示将安装路径添加到环境变量中
sudovi~/.bashrcexportPATH=${install_path}/bin:$PATH或
condainit
(6)输入conda可查看是否安装成功,若输出下图即为安装成功
3.创建conda虚拟环境
condainfolist创建特定python版本的虚拟环境condaactivatepy375退出虚拟环境condaremove-npy375--all增加用户对软件包的可执行权限。chmod+x*.run执行如下命令进行安装./*.run--install提示执行如下命令生效环境变量,运行后仅在当前终端会话中临时生效,将指令写入到~/.bashrc中,每次启动终端都会自动运行该指令。vi~/.bashrcsource/usr/local/Asc/asc-toolkit/svp_latest/x86_64-linux/script/进入软件包所在路径,执行以下命令进行卸载./*.run--uninstall选择no
安装依赖
sudoapt-getinstallmakelibc6-i386lib32z1lib32stdc++6zlib1g-devlibncurses5-devncurses-termlibncursesw5-devg++u-boot-toolstexinfotexlivegawklibssl-devopensslbcp7zip-fullgperfbisonflexdiffutilsgitunzipsudoapt-getinstallzlib1g-devliblzo2-devuuid-devpkg-configautomakesudoapt-getinstalltexlive
(2)交叉编译工具安装
安装交叉编译工具
/创建虚拟环境condacreate-npy375python==3.7.5pip换源mkdir~/.piptouch~/.pip/~/.pip/安装,版本号=3.13.0pipinstallprotobuf安装numpy,版本号=1.13.3pipinstallnumpy安装decorator,版本号=4.4.0pipinstalldecorator安装cffi,版本号1.12.3pipinstallcffi==1.12.3安装pathlib2pipinstallpathlib2pipinstallkconfiglibwheelpycryptodomepyelftools
上述所有环境已打包成docker镜像,保存为tar包(见资料包中ybn_hasi_),后续进行模型转换不需要再进行相应环境配置,执行下述docker指令即可:
注意,这里要求开发环境所要求的硬件及操作系统要满足以下要求。
硬件:内存最小30GB
操作系统:_64
需要用到sudo命令,请用户自行获取所需的sudo权限。
确认有无dockerimages|grepybn创建后再次进入容器dockerexec-ittest/bin/bash
2.2模型转换
同上面的环境配置说明一样分两个步骤来进行说明:
.pt模型转换为.onnx
由于芯片不支持五维的transpose算子,pt转onnx过程不能按照yolo提供的官方步骤,操作如下:
以下指令均在激活的docker容器中运行。
cd/root/hasi_ss928//condaactivateyolov5导入定制rpn算子补丁,本质为修改/models/中的代码来去掉五维transpose操作并加入filter、sort、nms后处理推理代码目录cd/root/hasi_ss928/yolo/model生成的om模型存放路径:/root/yolo/model/yolov5s_
中atc转换参数说明:
进入docker容器dockerexec-ittest/bin/bash修改src/sample_中的配置模型、bin文件默认路径生成的可执行文件在./out下
3.芯片执行推理
生成的结果.txt在./out中
4.推理结果可视化
执行画框指令python../script/./data/dog_bike__
3.2示例代码和测试数据
示例代码及测试数据均在文件夹/root/hasi_ss928/yolo中,请按照a中提供步骤测试整个推理流程。
代码链接:
提取码:scj4
4.问题排查和故障排除
问题1:
解决方案:共享库路径加入环境变量中后运行source~/.bashrc指令
问题2:
解决方案:未加载接口驱动文件,加载驱动
rmmod/ko//ko/svp_npu/ot_svp_
详细内容见易百纳技术社区
免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系