海思SS928(SD3403)主控平台迁移YOLOv5-YOLOv7步骤详解

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_

详细内容见易百纳技术社区

免责声明:本文章如果文章侵权,请联系我们处理,本站仅提供信息存储空间服务如因作品内容、版权和其他问题请于本站联系