之后随笔将更多笔墨着重于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,内容示意图如下图图示,图片的格式支持以下几种:

(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实现具体过程。

 
 
 
 
 
 
 
 
 
 
 
 
 

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

  1. Hi3559AV100 NNIE开发(5)mobilefacenet.wk仿真成功量化及与CNN_convert_bin_and_print_featuremap.py输出中间层数据对比过程

    前面随笔给出了NNIE开发的基本知识,下面几篇随笔将着重于Mobilefacenet NNIE开发,实现mobilefacenet.wk的chip版本,并在Hi3559AV100上实现mobilefa ...

  2. Hi3559AV100 NNIE开发(7) Ruyistudio 输出mobileface_func.wk与板载运行mobileface_chip.wk输出中间层数据对比

    前面随笔讲了关于NNIE的整个开发流程,并给出了Hi3559AV100 NNIE开发(5)mobilefacenet.wk仿真成功量化及与CNN_convert_bin_and_print_featu ...

  3. Hi3559AV100 NNIE开发(2)-RFCN(.wk)LoadModel及NNIE Init函数运行过程分析

    之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3559AV100 NNIE开发(2)-RFCN(.wk)LoadModel及NNIE Init函数运行过程分析,通过对LoadModel函数及 ...

  4. Hi3559AV100 NNIE开发(4)mobilefacenet.cfg参数配置挖坑解决与SVP_NNIE_Cnn实现分析

    前面随笔给出了NNIE开发的基本知识,下面几篇随笔将着重于Mobilefacenet NNIE开发,实现mobilefacenet.wk的chip版本,并在Hi3559AV100上实现mobilefa ...

  5. Hi3559AV100 NNIE开发(6)RFCN中NNIE实现关键线程函数->SAMPLE_SVP_NNIE_Rfcn_ViToVo()进行数据流分析

    前面随笔给出了NNIE开发的基本知识,下面几篇随笔将着重于Mobilefacenet NNIE开发,实现mobilefacenet.wk的chip版本,并在Hi3559AV100上实现mobilefa ...

  6. 基于Hi3559AV100的SVP(NNIE)开发整体流程

    在之后的hi3559AV100板载开发中,除了走通V4L2->VDEC->VPSS->VO(HDMI)输出,还有需要进行神经网络的开发学习,进行如face detection的开发等 ...

  7. Hi3559AV100 NNIE RFCN开发:V4L2->VDEC->VPSS->NNIE->VGS->VO系统整体动态调试实现

    下面随笔将给出Hi3559AV100 NNIE RFCN开发:V4L2->VDEC->VPSS->NNIE->VGS->VO系统整体动态调试实现,最终的效果是:USB摄像 ...

  8. Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析

    之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3359AV100 NNIE开发(1)-RFCN demo LoadModel函数与参数解析,通过对LoadModel函数的解析,能够很好理解. ...

  9. 工具武装的前端开发工程师 Mac 软件清单

    Awesome Mac  这个仓库主要是收集非常好用的Mac应用程序.软件以及工具,主要面向开发者和设计师.有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章<工具武装的前端开发工程 ...

随机推荐

  1. ES中文分词器安装以及自定义配置

    之前我们创建索引,查询数据,都是使用的默认的分词器,分词效果不太理想,会把text的字段分成一个一个汉字,然后搜索的时候也会把搜索的句子进行分词,所以这里就需要更加智能的分词器IK分词器了. ik分词 ...

  2. Redis之哨兵机制(sentinel)——配置详解及原理介绍

    说到Redis不得不提哨兵模式,那么究竟哨兵是什么意思?为什么要使用哨兵呢? 接下来一一为您讲解: 1.为什么要用到哨兵 哨兵(Sentinel)主要是为了解决在主从(master-slave)复制架 ...

  3. 杭电多校HDU 6601 Keen On Everything But Triangle(主席树)题解

    题意: 有\(n\)根长度不一的棍子,q次询问,求\([L,R]\)区间的棍子所能组成的周长最长的三角形.棍长\(\in [1, 1e9]\),n\(\in [1, 1e5]\). 思路: 由于不构成 ...

  4. Ubuntu-16.04下Docker通过阿里云镜像安装(apt-get)

    由于通过官方路径安装docker时总是连接不上,所以从网上找了半天,通过阿里云镜像安装docker,我的Linux是ubuntu-16.04 一.配置源里的阿里云镜像仓库 sudo vim /etc/ ...

  5. DuckDuckGo Privacy Browse‪r‬

    DuckDuckGo Privacy Browser https://apps.apple.com/app/duckduckgo-privacy-browser/id663592361 https:/ ...

  6. CSS pseudo classes All In One

    CSS pseudo classes All In One CSS 伪类 https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-classes ...

  7. cookie all in one

    cookie all in one credentials: "include" https://developers.google.com/web/updates/2015/03 ...

  8. window.ShadyCSS

    window.ShadyCSS Web Components # install $ yarn add @webcomponents/shadycss@1.7.1 # OR $ npm i @webc ...

  9. how to create one single-file Web Component just using the HTML, CSS, JavaScript

    how to create one single-file Web Component just using the HTML, CSS, JavaScript web components html ...

  10. how to drag a tab to open it in a new window

    how to drag a tab to open it in a new window 在新的窗口中打开拖拽的 tab? https://superuser.com/questions/131928 ...