AI老铁 · 2020年07月21日

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

本系列为华为海思海思AI芯片(Hi3519A/3559A)方案学习系列之十五,主要对基于nnie引擎进行推理的仿真代码浅析,系列文章请见底部。
作者:ltshan139

前言

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

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

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

模型参数修改

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

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

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

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

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

结论

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


版权声明:本文为CSDN博主「ltshan139」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/avideointerfaces/article/details/90182987



海思AI芯片系列文章



更多海思AI芯片方案学习笔记欢迎关注海思AI芯片方案学习

推荐阅读
关注数
852
内容数
40
海思AI芯片(Hi3519A/3559A)方案学习系列笔记,欢迎关注。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息