海思AI芯片(Hi3519A/3559A)方案学习(十五)基于nnie引擎进行推理的仿真代码浅析

前言

HISVP仿真(即基于nnie引擎进行推理)的代码有如下四个版本

前两个是功能性仿真,后两个是指令性仿真。在功能性或指令性仿真内部又分为使用opencv库和不使用opencv库两种类型。它们的最终结果应该是一致的,但功能性验证显然速度要快很多。

由于yolo层后处理都是软件实现的,所以当待仿真的算法模型(即wk文件)改变时,尤其网络size或目标识别种类数等方面不同,下面这些参数需要在代码里面手动进行修改。

模型参数修改

待识别的输入图像设置如下所示。 对应yolo版本的路径中有image_test_list.txt来指定一个或多个输入图像的路径和文件名称。

权值文件的指定如下所示。上面是指令级别的wk文件;下面是功能仿真的wk文件。

最重要的模型相关参数设置在SvpSampleYolo.h中。下面是一个尺寸为416x416的模型参数,识别类型有80个classes。其它参数请自行体会。 当模型尺寸改变,如608x608,那么下面xxx_82, 94以及106层的feature map大小也随之改变。此外,识别类型数目发生变化,那么xxx_CHANNEL_NUM以及CLASS_NUM也要相应修改。

 此外,在软件后处理(主要是NMS)检测框时,有两个参数也是可以调节的。一个是每个框的置信阈值,另外一个是两个框之间的iou阈值。 

最后一个值得注意地方就是 anchor boxes的修改。在svpSampleYolov3.cpp代码里面,它的符号表式是 bias。

结论

 由上可知,当算法模型发生变化,往往需要手动调整一些软件参数。 某一个环节做错了,很有可能得到错误的结果。

你可能感兴趣的:(嵌入式AI)