NNIE开发RuyiStudio软件 mobilefacenet.cfg参数配置

之后随笔将更多笔墨着重于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 添加上报标注。

 1 layer {

2 name: "conv5 "

3 type: "Convolution"

4 bottom: "conv4"

5 top: "conv5_report"

6 convolution_param {

7     num_output: 256

8     kernel_size: 3

9     pad: 1

10     stride: 1

11   }

12 }

  ②用户指定自定义计算精度(compile_mode=2)时,在对应层的层名后加上高精度 “_hp”(16比特)标记,可实现指定任意层为高精度输入,格式如下所示。

 1 layer {

2 name: "conv5_hp"

3 type: "Convolution"

4 bottom: "conv4"

5 top: "conv5"

6 convolution_param {

7     num_output: 256

8     kernel_size: 3

9     pad: 1

10     stride: 1

11   }

12 }

  ③对于mapper支持层,可以通过在name字段增加_cpu标记来指定该层切换为cpu执行(包含CPU、DSP等非NNIE执行的,均使用_cpu标志),格式如下所示。

 1 layer {

2 bottom: "rpn_cls_score"

3 top: "rpn_cls_score_reshape"

4 name: "rpn_cls_score_reshape_cpu"

5 type: "Reshape"

6 reshape_param {

7   shape {

8     dim: 0

9     dim: 2

10     dim: -1

11     dim: 0

12     }

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,内容示意图如下图图示,图片的格式支持以下几种:

Hi3559AV100 NNIE开发(3)RuyiStudio软件 .wk文件生成过程-mobilefacenet.cfg的参数配置

(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_func

10 [RGB_order] BGR

11 [data_scale] 0.0078125

12 [internal_stride] 16

13 [image_list] ./data/images/imageList.txt

14 [image_type] 1

15 [mean_file] ./data/pixel_mean.txt

16 [norm_type] 5

后面随笔将给出mobilefacenet网络的NNIE实现具体过程。

以上是 NNIE开发RuyiStudio软件 mobilefacenet.cfg参数配置 的全部内容, 来源链接: utcz.com/a/121354.html

回到顶部