海思Hi3559AV100/Hi3519AV100 NNIE深度学习模块开发与调试记录

在学了在学了! 2020-08-10 09:21:07 5370
  1. 开发流程

链接:https://pan.baidu.com/s/1SJ9OOfCjJvqLAuMoPpb1yA
提取码:pjvu

  1. 例程解析

海思的NNIE例程包含以下几个模型:

~ # ./sample_nnie_main
Usage : ./sample_nnie_main <index> 
index:
         0) RFCN(VI->VPSS->NNIE->VGS->VO).
         1) Segnet(Read File).
         2) FasterRcnnAlexnet(Read File).
         3) FasterRcnnDoubleRoiPooling(Read File).
         4) Cnn(Read File).
         5) SSD(Read File).
         6) Yolov1(Read File).
         7) Yolov2(Read File).
         8) LSTM(Read File).

RFCN例程中,VI模块绑定了VPSS模块,VI从摄像头输入一路1080P视频,经VPSS分解为两路,一路stBaseFrmInfo保持原来的1080P分辨率,一路stExtFrmInfo转为CIF(352x288)分辨率,stExtFrmInfo输入到NNIE模块SAMPLE_SVP_NNIE_Rfcn_Proc得到分类与框位置信息,再将框位置信息通过SAMPLE_COMM_SVP_NNIE_FillRect给到VGS模块画框,最后通过HI_MPI_VO_SendFrame发送到VO,在HDMI显示器上显示。测试表明处理一帧数据的时间约为89毫秒,即帧率为11帧左右。

其他1)~8)例程直接读取图片文件给到NNIE处理,处理完后打印分类及框信息。

sample_nnie_main.c例程函数调用关系:

  1. 模型的颜色空间

需要注意的是RFCN的wk模型文件与后面1)~8)几个模型的wk模型文件的颜色格式是不同的,RFCN调用的wk文件是YVU420颜色空间,而1)~8)模型的是BGR颜色空间。原因是后面1)~8)的模型是通过读图片文件的方式,图片需为颜色空间为BGR的裸数据,后缀名为*.bgr格式。如果要使用1)~8)的模型对视频流数据(来源于VI或VDEC模块,即从摄像头输入或本地视频文件解码)进行处理,需要使用YVU420颜色空间的wk模型文件,否则模型处理会失败。

  1. VDEC--VPSS--NNIE-- VGS--VO流程开发

该流程通过VDEC读入本地的视频文件并解码,经过VPSS给到NNIE做神经网络处理,再通过VGS大框,再从VO-HDMI输出。
流程如下:

  • 初始化相关参数
  • 初始化VB(SAMPLE_COMM_SYS_Init),必须先于VDEC,VPSS等模块之前初始化VB
  • load模型文件(SAMPLE_COMM_SVP_NNIE_LoadModel)
  • 初始化模型参数(SAMPLE_SVP_NNIE_XXXXX_ParamInit)
  • 初始化VDEC(SAMPLE_COMM_VDEC_InitVBPool)
  • 开启VDEC(SAMPLE_COMM_VDEC_Start)
  • 开启VPSS(SAMPLE_COMM_VPSS_Start)
  • 开启VO(SAMPLE_COMM_VO_StartVO)
  • 绑定VDEC与VPSS(SAMPLE_COMM_VDEC_Bind_VPSS)
  • 开启解码线程(SAMPLE_COMM_VDEC_StartSendStream)
  • 开启NNIE处理线程,从VPSS取帧数据,NNIE处理,再用VGS加框
  • 结束,反初始化等操作

VDEC模块读取的视频文件需为H.264的裸数据文件(.h264格式),该模块可参考sample_vdec例程编写,一个通道对应一个视频文件。

VPSS模块有组(Group)与通道,一个组(Group)对应一个VDEC通道,即有多少个VDEC通道就有多少个VPSS Group。每个VPSS的Group, 有两个VPSS通道,一个对应原视频分辨率,一个对应wk模型文件要求输入的图像分辨率。需要注意的是,astVpssChnAttr[i].u32Depth参数必须大于0,因为需要调用HI_MPI_VPSS_GetChnFrame获取帧数据。

VO支持显示多个窗口,每个窗口对应1路视频,例如设置
stVoConfig.enVoMode = VO_MODE_4MUX;
则显示为4分屏,VGS处理完后数据通过HI_MPI_VO_SendFrame给到VO,HI_MPI_VO_SendFrame的第2个参数对应于屏幕中的窗口序号。

显示效果如下,车辆标注框为红色,人的标注框为蓝色

原文链接:https://blog.csdn.net/zh8706/article/details/94554337

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 2 收藏 评论 打赏
评论
1个
内容存在敏感词
手气红包
  • 2021-09-11 17:53:40
    回复

    您好,请问你是怎么通过vgs给两个类别画不同的颜色框的?

相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
在学了在学了!
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区