Hisi3559AV100 RuyiStudio使用 NNIE量化模型 板端运行成功
Posted 九章_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hisi3559AV100 RuyiStudio使用 NNIE量化模型 板端运行成功相关的知识,希望对你有一定的参考价值。
简介
RuyiStudio 集成 windows 版的 NNIE mapper 和仿真库,具有生成 NNIE wk 功能、仿真
NNIE 功能,同时具有代码编辑、编译、调试、执行功能、网络拓扑显示、目标检测画
框、向量相似度对比、调试定位信息获取等功能。
一、安装软件
1)安装wget
从http://gnuwin32.sourceforge.net/packages/wget.htm网页下载wget安装包,选择(Complete package, except sources)下载,下载得到wget-1.11.4-1-setup.exe,双击安装,安装完成后,将wget.exe所在安装目录(GnuWin32\\bin)添加到用户环境变量PATH中,用于从网页下载依赖的包。建议在用户环境变量中,先创建一个变量名为WGET_PATH的环境变量,变量值即为wget.exe的安装目录(GnuWin32\\bin),然后再将%WGET_PATH%添加到用户环境变量PATH中。
2)安装MinGW-W64
下载源码
进入官方下载网址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/,选择
7.3.0 的 x86_64-win32-seh 版本下载
解压并设置环境变量
计算机上点击右键->属性->高级系统设置->环境变量,在系统变量中添加以下变量(若已有同名变量则添加变量值用分号隔开):变量名 Path,变量值MinGW 的 bin 路径 C:\\MinGW\\bin
在 C:\\MinGW\\bin 目录下,将 x86_64-w64-mingw32-gcc.exe 再拷贝一份并重命名为mingw32-gcc.exe,否则 RuyiStudio 工具不能自动识别到 MinGW 工具链。
二、准备源码文件
将文件解压ruyi_env_setup 提取码:a6md
下载安装包文件安装包文件 链接:提取码:7h6d
1)将下载的文件放置到python35目录下
2)将libraries_v140_x64_py35_1.1.0.tar.bz2并放置在ruyi_env_setup文件夹下
3)caffe.zip 提取码:86ae ,需要放到python35\\Lib\\site-packages下解压
三、执行安装
点击setup_python.bat进行安装,setup_python.bat脚本会调用python_bat文件夹下的setup_download_python.bat,setup_extract_python.bat和setPath_python.bat,下载python,caffe的依赖包,(依赖包已经下载好了),进行安装。
opencv_python-3.4.2.16-cp35-cp35m-win_amd64.whl, protobuf-3.6.1-cp35-cp35m-win_amd64.whl, Cython-0.28.5-cp35-cp35m-win_amd64.whl以及PyYAML-3.13-cp35-cp35m-win_amd64.whl需要从cmd进到python35目录下,用pip install filename指令进行安装(如pip install opencv_python-3.4.2.16-cp35-cp35m-win_amd64.whl)。
四、添加环境变量
1)在用户环境变量中增加变量RUYI_PYTHON_PATH,变量值即为当前脚本所在位置,即,如果当前bat脚本放置在D:\\programFiles\\ruyi_env_setup目录下,那么就可以将RUYI_PYTHON_PATH的变量值为"D:\\programFiles\\ruyi_env_setup\\python35;D:\\programFiles\\ruyi_env_setup\\python35\\Scripts;D:\\programFiles\\ruyi_env_setup\\python35\\Library\\bin"。
2)手动添加"%RUYI_PYTHON_PATH%;"到用户环境变量path的开头。
3) 手动添加用户环境变量PYTHONPATH:D:\\programFiles\\ruyi_env_setup\\python35\\Lib\\site-packages\\caffe\\python,用于工具识别到caffe。
偶然出现明明环境变量已经设置成功,在cmd上执行python等都已经可以识别,但是在ruyi工具上就是不能识别到python时,需要重启电脑。
Cython-0.28.5-cp35-cp35m-win_amd64.whl和PyYAML-3.13-cp35-cp35m-win_amd64.whl,setup_roi_caffe.bat是针对带了proposal层的网络做的,如果并不涉及,相关错误提示可不用处理。
五、使用RuyiStudio-2.0.21
加载工程文件,这里使用官方提供的源码
点击yolov3_inst.cfg文件,弹出如下对话框.
1)log_level No print 编译快
2)Chip 在板子上运行,simulator PC仿真
3)输出文件.wk路径
4)image_type YUV420SP用于实时视频流而不是单张图片。
点击生成.wk文件
以yolov3为例,最终生成 inst_yolov3_inst.wk文件
量化损失对比(待)
1)mapper量化的结果;
2)使用RuyiStudio提供的python中间层输出工具 CNN_convert_bin_and_print_featuremap.py
3)板子上运行的时候生成的的文件;
使用Ruyi Studio的向量对比工具Vector Comparison
六,移植yolov3
进入nnie/sample文件夹,打开并编辑sample_nnie.c 文件,找到下面这两部分,按照自己的需求进行更改
SAMPLE_SVP_NNIE_Yolov3_SoftwareInit
pstSoftWareParam->u32OriImHeight = pstNnieParam->astSegData[0].astSrc[0].unShape.stWhc.u32Height;
pstSoftWareParam->u32OriImWidth = pstNnieParam->astSegData[0].astSrc[0].unShape.stWhc.u32Width;
pstSoftWareParam->u32BboxNumEachGrid = 3;
pstSoftWareParam->u32ClassNum = 80;
pstSoftWareParam->au32GridNumHeight[0] = 13;//图片大小/32
pstSoftWareParam->au32GridNumHeight[1] = 26;//图片大小/16
pstSoftWareParam->au32GridNumHeight[2] = 52;//图片大小/8
pstSoftWareParam->au32GridNumWidth[0] = 13;
pstSoftWareParam->au32GridNumWidth[1] = 26;
pstSoftWareParam->au32GridNumWidth[2] = 52;
pstSoftWareParam->u32NmsThresh = (HI_U32)(0.3f*SAMPLE_SVP_NNIE_QUANT_BASE);
pstSoftWareParam->u32ConfThresh = (HI_U32)(0.5f*SAMPLE_SVP_NNIE_QUANT_BASE);
pstSoftWareParam->u32MaxRoiNum = 10; //每个图片最多由多少个目标
pstSoftWareParam->af32Bias[0][0] = 116;
pstSoftWareParam->af32Bias[0][1] = 90;
pstSoftWareParam->af32Bias[0][2] = 156;
pstSoftWareParam->af32Bias[0][3] = 198;
pstSoftWareParam->af32Bias[0][4] = 373;
pstSoftWareParam->af32Bias[0][5] = 326;
...
将模型拷贝到开发板
七、板端运行出现的问题
1)版本不一致
[Level]:Debug,[Func]:SAMPLE_COMM_SVP_CheckSysInit [Line]:82 [Info]:Svp mpi init ok!
[Level]:Info,[Func]:SAMPLE_SVP_NNIE_Yolov3 [Line]:2898 [Info]:Yolov3 Load model!
[Func]:HI_MPI_SVP_NNIE_LoadModel [Line]:420 [Info]:Error(0xa0338003): the nnie_mapper version(1.2) should be 1.1, please check nnie_mapper version!
[Level]:Error,[Func]:SAMPLE_COMM_SVP_NNIE_LoadModel [Line]:560 [Info]:Error,HI_MPI_SVP_NNIE_LoadModel failed!
[Level]:Error,[Func]:SAMPLE_SVP_NNIE_Yolov3 [Line]:2901 [Info]:Error,SAMPLE_COMM_SVP_NNIE_LoadModel failed!
[Level]:Debug,[Func]:SAMPLE_COMM_SVP_CheckSysExit [Line]:95 [Info]:Svp mpi exit ok!
使用的mapper版本与SDK版本不一致
2)
[Func]:HI_MPI_SVP_NNIE_LoadModel [Line]:443 [Info]:Error(0xa0338003): the enRunMode(1) of input model should be 0!
[Level]:Error,[Func]:SAMPLE_COMM_SVP_NNIE_LoadModel [Line]:562 [Info]:Error,HI_MPI_SVP_NNIE_LoadModel failed!
[Level]:Error,[Func]:SAMPLE_SVP_NNIE_Yolov3 [Line]:2904 [Info]:Error,SAMPLE_COMM_SVP_NNIE_LoadModel failed!
[Level]:Debug,[Func]:SAMPLE_COMM_SVP_CheckSysExit [Line]:95 [Info]:Svp mpi exit ok!
<3>[svp_nnie] [Func]:SVP_NNIE_CheckForwardParamKernel [Line]:1145 [Info]:<3>[svp_nnie] Error(0xa0338003),info in astSrc[] is illegal
<3>[svp_nnie] [Func]:SvpNnieForward [Line]:625 [Info]:<3>[svp_nnie] Error(0xa0338003),Check forward param failed!
<3>[svp_nnie] [Func]:SVP_NNIE_CheckSrcBlob [Line]:476 [Info]:<3>[svp_nnie] Error(0xa0338003),astBlob[0].u32Stride(352) should be equal to or greater than 416
<3>[svp_nnie] [Func]:SVP_NNIE_CheckForwardParamKernel [Line]:1145 [Info]:<3>[svp_nnie] Error(0xa0338003),info in astSrc[] is illegal
Error(0xa0338003),astBlob[0].u32Stride(352) should be equal to
[SAMPLE_SVP_NNIE_yolov3_ViToVo]-1757: Error(0xa0338003),SAMPLE_SVP_NNIE_Yolov3_Proc failed!
[Level]:Error,[Func]:SAMPLE_SVP_NNIE_RoiToRect [Line]:1490 [Info]:Error(0xa0338003),u32ClassNum(1061997773) must be less than or equal 30 to!
[Func]:HI_MPI_SYS_MmzFlushCache [Line]:1102 [Info]:Null point
[Func]:SVP_NNIE_CheckForwardWithBboxParamUser [Line]:528 [Info]:Error(0xa0338003),pstForwardCtrl->u32SrcNum(0) must be [1,16]
[Func]:HI_MPI_SVP_NNIE_ForwardWithBbox [Line]:759 [Info]:Error(0xa0338003): Check forward with roi parameters failed!
[Level]:Error,[Func]:SAMPLE_SVP_NNIE_ForwardWithBbox [Line]:211 [Info]:Error,HI_MPI_SVP_NNIE_ForwardWithBbox failed!
[Level]:Error,[Func]:SAMPLE_SVP_NNIE_Yolov3_Proc [Line]:1590 [Info]:Error,SAMPLE_SVP_NNIE_Forward failed!
[SAMPLE_SVP_NNIE_yolov3_ViToVo]-1751: Error(0xa0338003),SAMPLE_SVP_NNIE_Rfcn_Proc failed!
1)视频没有数据,查一下VI,VPSS
2)使用的模型不是xxx_inst.wk,而且xxx_func.wk。生成的时候没有选择chip。
3)s_stYolov3SoftwareParam.stRect得到的参数不对
以上是关于Hisi3559AV100 RuyiStudio使用 NNIE量化模型 板端运行成功的主要内容,如果未能解决你的问题,请参考以下文章
HISI3559A 使用yolov3 (VI-VPSS-VO)实时目标检测
一款8K相机神经网络AI开发板,双千兆 多路视频,算力高达4.0 TOPs—AIO-3559AV100JD4
海思hi3559A开发板(59AV100SCN)视觉应用开发板防雷防静电推荐图