2021年3月3日星期三

基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析

  下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI、VDEC、VPSS、VGS、VO、NNIE,其中涉及的内容,大家可以参考之前我写的博客:

Hi3559AV100的VI细节处理说明:

https://www.cnblogs.com/iFrank/p/14374658.html

基于Hi3559AV100的视频采集(VDEC-VPSS-VO)整体框图设计

https://www.cnblogs.com/iFrank/p/14370575.html

基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍:

https://www.cnblogs.com/iFrank/p/14465306.html

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

https://www.cnblogs.com/iFrank/p/14377668.html

   首先给出整体的RFCN流程图解,整个RFCN分为3个step,具体如下所示:

  在分析RFCN数据流之前,首先了解一下基于Hi3559AV100的NNIE模型,在搭建好SDK等环境后,配置好对应的硬件,在HiLinux上进行测试,具体如下:

 1 ~ # ./sample_nnie_main 2 Usage : ./sample_nnie_main <index>  3 index: 4   0) RFCN(VI->VPSS->NNIE->VGS->VO). 5   1) Segnet(Read File). 6   2) FasterRcnnAlexnet(Read File). 7   3) FasterRcnnDoubleRoiPooling(Read File). 8   4) Cnn(Read File). 9   5) SSD(Read File).10   6) Yolov1(Read File).11   7) Yolov2(Read File).12   8) Yolov3(Read File)13   9) LSTM(Read File)14   a) Pvanet(Read File).\n")

  从中看可以看到RFCN的整个过程VI->VPSS->NNIE->VGS->VO,VI模块绑定了VPSS模块,VI从摄像头输入一路视频,经VPSS分解为两路,(具体见SAMPLE_SVP_NNIE_Rfcn中step 3-线程创建函数SAMPLE_SVP_NNIE_Rfcn_ViToVo),通过如下函数:

 1   HI_MPI_VPSS_GetChnFrame( //用户从通道获取一帧处理完成的图像。 2  3           s32VpssGrp, 4  5           as32VpssChn[1],  6  7           &stExtFrmInfo,  8  9           s32MilliSec);10   HI_MPI_VPSS_GetChnFrame( //用户从通道获取一帧处理完成的图像。11 12           s32VpssGrp,13 14           as32VpssChn[0], 15 16           &stBaseFrmInfo, 17 18           s32MilliSec);

(设置两路VPSS通道如帧图片大小等等参数见SAMPLE_COMM_IVE_StartVpss函数)

  一路stBaseFrmInfo保持原来的1080P分辨率(这个需要看MIPI接口的相机型号来,如:见SAMPLE_COMM_IVE_StartViVpssVencVo函数:

case SONY_IMX277_SLVS_2M_240FPS_12BIT:

*penSize = PIC_1080P;

);

  一路stExtFrmInfo转为PIC_CIF(352x288)分辨率(追溯到最初的赋值语句:在SAMPLE_SVP_NNIE_Rfcn函数中:PIC_SIZE_E enSize = PIC_CIF;

经过如下得到VPSS通道对应的图片大小:

 1 SAMPLE_COMM_IVE_StartViVpssVencVo 2  3  aenSize[1] = *penExtPicSize; 4  5   SAMPLE_COMM_IVE_VbInit(aenSize,astSize,VPSS_CHN_NUM); 6  7    SAMPLE_COMM_SYS_GetPicSize(paenSize[i], &pastSize[i]) 8  9     SAMPLE_COMM_SYS_GetPicSize10 11     {12 13      switch (enPicSize)14 15      {16 17        case PIC_CIF: /* 352 * 288 */ 18         pstSize->u32Width = 352;   19         pstSize->u32Height = 288; break;......20 21      }22 23     }

  之后到SAMPLE_SVP_NNIE_Rfcn_Proc函数,具体如下:

 1 s32Ret = SAMPLE_SVP_NNIE_Rfcn_Proc( 2  3       pstParam, 4   5      pstSwParam, 6   7      &stExtFrmInfo, 8  9      stBaseFrmInfo.stVFrame.u32Width,10 11      stBaseFrmInfo.stVFrame.u32Height); 

  随后进入加框函数:(即进入VGS视频图形子系统)

1 //Draw rect2 3 s32Ret = SAMPLE_COMM_SVP_NNIE_FillRect(4 5     &stBaseFrmInfo,  //*pstFrmInfo6 7     &(pstSwParam->stRect), // *pstRect8 9      0x0000FF00); //u32color 

  用到了两个VGS重要参数定义:

  VGS_TASK_ATTR_S stVgsTask;  //定义 VGS task 的属性

  VGS_ADD_COVER_S stVgsAddCover; //定义 VGS 上 COVER 的配置

  下面为定义图像属性和输出图像属性:

1 memcpy( &stVgsTask.stImgIn, 2     pstFrmInfo, 3     sizeof(VIDEO_FRAME_INFO_S)); 4 5 memcpy( &stVgsTask.stImgOut, 6     pstFrmInfo,            7     sizeof(VIDEO_FRAME_INFO_S)); 

  随后定义 VGS 上 COVER 的配置,设置COVER参数,如颜色设置为0x0000FF00(绿色,这个与之前Hi3519 RFCN运行一致,加绿色的框)

通过memcpy定义任意四边形 COVER 四个坐标点:

1 memcpy( stVgsAddCover.stQuadRangle.stPoint,2 3     pstRect->astRect[i][j].astPoint, //(pstSwParam->stRect)4 5     sizeof(pstRect->astRect[i][j].astPoint));

  VGS 支持对一幅图像进行遮挡操作,遮挡区域形状可以是矩形或者任意四边形, 遮挡区域颜色为纯色,支持批量打 COVER。 而在Draw rect函数中,没有对stBaseFrmInfo数据直接操作,目前认知VGS做COVER任务提交job时,直接将COVER数据送入至VO,随后加上stBaseFrmInfo的数据:

 1 //将视频图像送入指定输出通道显示。 2  3 s32Ret = HI_MPI_VO_SendFrame( 4  5     voLayer, 6  7     voChn, 8  9     &stBaseFrmInfo,10 11     s32MilliSec);

   整体的数据流处理流程如下:

 

 

 

 









原文转载:http://www.shaoqun.com/a/600604.html

跨境电商:https://www.ikjzd.com/

blibli:https://www.ikjzd.com/w/1676

海鹰数据:https://www.ikjzd.com/w/2539


下面随笔系列将对Hi3559AV100RFCN实现细节进行解析,整个过程涉及到VI、VDEC、VPSS、VGS、VO、NNIE,其中涉及的内容,大家可以参考之前我写的博客:Hi3559AV100的VI细节处理说明:https://www.cnblogs.com/iFrank/p/14374658.html基于Hi3559AV100的视频采集(VDEC-VPSS-VO)整体框图设计https://w
赛兔:https://www.ikjzd.com/w/2375
cima是什么:https://www.ikjzd.com/w/1372
aicpa:https://www.ikjzd.com/w/1373
亚马逊目录分析:如何通过ASIN来推动销量增长:https://www.ikjzd.com/home/19879
亚马逊新手卖家开始运营前,要做哪些事情?:https://www.ikjzd.com/home/113269
社交电商火爆当下,跨境电商社交化愈演愈烈:https://www.ikjzd.com/home/19546

没有评论:

发表评论