之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3559AV100 NNIE开发(3)RuyiStudio软件 .wk文件生成过程-mobilefacenet.cfg的参数配置,目前项目需要对mobilefacenet网络进行.wk的开发,通过RuyiStudio创建工程(关于软件RuyiStudio的安装与配置看后期是否有时间,有时间就会出一篇随笔供大家参考),在工程下配置mobilefacenet.cfg文件,加载训练好的mobilefacenet.caffemodel与mobilefacenet.prototxt并进行mobilefacenet.wk的生成,其中重要的一环为mobilefacenet.cfg参数的配置,下面随笔将给出具体操作,首先给出整体需要配置的参数表:
1[prototxt_file] 2[caffemodel_file] 3[batch_num] 4[net_type] 5[sparse_rate] 6[compile_mode] 7[is_simulation] 8[log_level] 9[instruction_name] 10[RGB_order] 11[data_scale] 12[internal_stride] 13[image_list] 14[image_type] 15[mean_file] 16[norm_type]
下面给出一一说明:
(1)prototxt_file
为网络描述文件,NNIE mapper 对 prototxt 的输入层格式、layer 格式、激活层、Scale、Bias 层、RNN、LSTM 层及特殊的中间层上报、高精度配置、指定支持层有 CPU 执行等特定的规范约束。这里我对中间层、高精度配置、CPU执行进行一个具体的叙述:
①中间层是指不在网络段结尾处的层。用户需要中间层结果输出时,需要对应层的“top”域中添加“_report”标识符进行标注。如果某一中间层有多个 top 都需要输出,用户可以为每一个 top 添加上报标注。
正在上传... 取消
1layer { 2name:"conv5 " 3type:"Convolution" 4bottom:"conv4" 5top:"conv5_report" 6 convolution_param { 7num_output:256 8kernel_size:3 9pad:110stride:111 }12}
②用户指定自定义计算精度(compile_mode=2)时,在对应层的层名后加上高精度 “_hp”(16比特)标记,可实现指定任意层为高精度输入,格式如下所示。
1layer { 2name:"conv5_hp" 3type:"Convolution" 4bottom:"conv4" 5top:"conv5" 6 convolution_param { 7num_output:256 8kernel_size:3 9pad:110stride:111 }12}
③对于mapper支持层,可以通过在name字段增加_cpu标记来指定该层切换为cpu执行(包含CPU、DSP等非NNIE执行的,均使用_cpu标志),格式如下所示。
1layer { 2bottom:"rpn_cls_score" 3top:"rpn_cls_score_reshape" 4name:"rpn_cls_score_reshape_cpu" 5type:"Reshape" 6 reshape_param { 7 shape { 8dim:0 9dim:210dim: -111dim:012 } 13 }14}
(2)caffemodel_file:
网络模型数据文件。
(3)[batch_num]
0/1:single(单张)模式;
>1:batch(多张)模式。采用single模式mapper一个任务只能处理一张图片,内部存储全部为一张图片分配,减少数据调度次数。采用batch模式,在计算FC时batch_num张图片同时计算,计算资源利用率高。 (最大取值256)
(4)[net_type]:
网络的类型。
0:CNN(不包含LSTM/RNN/ROIPooling/PSROIPooling 的任意网络);
1:ROI/PSROI(包含 ROI Pooling 和 PSROI Pooling的网络);
2:Recurrent(包含 LSTM、RNN 的网络);
(5)[sparse_rate] --->(取值0到1,默认0)
NNIE引擎采用了参数压缩技术以减少带宽占用,为了提高压缩率,可通对FC参数进稀疏处理。
用户通过sparse_rate数值指定多少比例的FC参数稀疏为0,例如配0.5,则FC参数有50%将被稀疏为0,由于数据变的稀疏,压缩模块会获得更好的压缩率。稀疏值越高,计算FC时所需参数带宽越低,但精度会有所下降。
(6)[compile_mode]
0:Low-bandwidth(低带宽模式,默认):通过量化算法使参数与数据位宽最少,使系统所需带宽达到最小,但会有精度损失;
1:High-precision(高精度模式): 结果精度最好,但是性能会下降;;
2:User-specify(用户配置模式): 需要用户在prototxt中标明所有使用高精度计算的层,标注规则请见prototxt_file说明;
(7)[is_simulation]
网络模型转化类型。
0:Chip,芯片模式,网络模型转化成在芯片上加载的wk文件,指令仿真也使用此模式;
1:Simulation,仿真模式,网络模型转化成在PC端仿真上加载的wk文件,功能仿真使用此模式;
(8)[log_level]
设置是否开启日志文件,以及配置打印的等级,本参数可省略,当省略时,为不打印日志文件。
0:打印main函数流程,cfg文件等信息;
1:打印nnie_mapper解析到的文件信息,包含image_list、prototxt、内存分配过程;
2:打印中间表示信息;
3:打印详细信息,有大量文件输出,转化耗时较长,请谨慎使用;
(9)[instruction_name]
nnie_mapper生成的知识库文件名称。默认生成如下格式的知识库名:inst.wk;用户也可以自行修改生成的知识库名字。
(10)[RGB_order] --->取值范围:{RGB,BGR} default:BGR
image_type设置为0时,该参数无效;
image_type设置为1时,不管该参数配置何值,要求用户板端输入必须为BGR_Planar格式图像;
image_type设置为3、5时,表示YUV图像数据转成RGB Planar或者BGR Planar图像输入给网络。
本参数可省略。
(11)[data_scale]
数据预处理缩放比例,配置为浮点数,配合norm_type使用本参数可省略,默认为0.00390625=1/256。FLT_MAX等于3.402823466e+38。
(12)[internal_stride]
用户根据DDR颗粒对应的最佳读写效率配置中间结果的对齐方式。要求:DDR3对应16,DDR4对应32,可不填,默认为16;
(13)[image_list]
NNIE mapper 用于数据量化的参考图像 list 文件或feature map 文件。该配置跟 image_type 相关。如果网络的数据输入是灰度或者 RGB 图像输入,即image_type 配置不为 0,image_list 配置为所参考图片的list,内容示意图如下图图示,图片的格式支持以下几种:
(14)[image_type]
表示网络实际执行时输入给网络的数据类型,该配置跟 image list 相关。
0∶表示网络数据输入为 SVP BLOB_TYPE_S32(参考《HiSVP API参考》)或者向量的类型(VEC_S32和 SEQ S32);此时要求 image list 配 置为 feature map 文件;
1∶ 表示网络数据输入为 SVP BLOB TYPE U8(普通的灰度图和 RGB 图)类型; 此时要求 image_list 配置是 RGB 图或者灰度图片的 list 文件;
3∶ 网络数据输入为 SVP_ BLOB_TYPE YUV420SP类型;
5∶ 网络数据输入为SVP_BLOB_TYPE YUV422SP类型;
当配置为3或者5时,image_list配置为 RGB图片的 list 文件。
(15)[mean_file]
norm_type为1、4时,表示均值文件xxx.binaryproto;
norm_type为2、5时,表示通道均值文件;
norm_type为0、3时,用户也需要配置mean_file项,但具体内容可以是一个无效路径,比如null;通道均值文件mean.txt中每一行的浮点数表示 对应的通道均值,如单通道只有一个值。
(16)[norm_type]
表示对网络数据输入的预处理方法。注意image_type配置为0时,norm_type只能配置为0;image_type配置为3或者5时,网络输入数据为YUV图像,但是NNIE硬件会根据RGB_order配置项自动转为RGB或者BGR图像,此时norm_type配置方法跟image_type为1时一致。
0:不做任何预处理;
1:mean file,减图像均值;
2:channel mean_value,减通道均值;
3:data_scale,对图像像素值乘以data_scale;
4:mean filewith data_scale,减图像均值后再乘以data_scale;
5:channel mean_value with data_scale,减通道均值后再乘以data_scale。
(17) [is_check_prototxt]
检查网络描述文件标志。
0:mapper模式,对prototxt、caffemodel等进行转化。
1:网络过滤器模式,对prototxt文件是否符合支持规格进行检查。
给出目前我的mobilefacenet.cfg配置:
1[prototxt_file] ./mark_prototxt/mobilefacenet_mark_nnie_20210205133124.prototxt 2[caffemodel_file] ./data/mobilefacenet.prototxt.caffemodel 3[batch_num]256 4[net_type]0 5[sparse_rate]0 6[compile_mode]0 7[is_simulation]1 8[log_level]3 9[instruction_name] ./mobileface_func10[RGB_order] BGR11[data_scale]0.007812512[internal_stride]1613[image_list] ./data/images/imageList.txt14[image_type]115[mean_file] ./data/pixel_mean.txt16[norm_type]5
Wooden Speakers https://www.zeshuiplatform.com/