使用yolov3 模型进行实时目标检测

主芯片:Hisi3559A
摄像头:imx214

使用海思VI-VPSS-VO进行实时检测

程序修改,将识别图片修改成实时识别视频

******************************************************************************
* function : SAMPLE_SVP_NNIE_yolov3_video
******************************************************************************/
void SAMPLE_SVP_NNIE_yolov3_video(void)
{//模型参数HI_CHAR *pcModelName = "./data/nnie_model/detection/inst_yolov3_cycle.wk";SAMPLE_SVP_NNIE_CFG_S   stNnieCfg = {0};SIZE_S stSize;PIC_SIZE_E enSize = PIC_D1_PAL;//PIC_CIFHI_S32 s32Ret = HI_SUCCESS;HI_CHAR acThreadName[16] = {0};memset(&s_stYolov3Model,0,sizeof(s_stYolov3Model));memset(&s_stYolov3NnieParam,0,sizeof(s_stYolov3NnieParam));memset(&s_stYolov3SoftwareParam,0,sizeof(s_stYolov3SoftwareParam));/******************************************step 1: start vi vpss vo******************************************/s_stRfcnSwitch.bVenc = HI_FALSE;s_stRfcnSwitch.bVo   = HI_TRUE;s32Ret = SAMPLE_COMM_IVE_StartViVpssVencVo(&s_stViConfig,&s_stRfcnSwitch,&enSize);SAMPLE_CHECK_EXPR_GOTO(HI_SUCCESS != s32Ret, END_RFCN_0,"Error(%#x),SAMPLE_COMM_IVE_StartViVpssVencVo failed!\n", s32Ret);s32Ret = SAMPLE_COMM_SYS_GetPicSize(enSize, &stSize);SAMPLE_CHECK_EXPR_GOTO(HI_SUCCESS != s32Ret, END_RFCN_0,"Error(%#x),SAMPLE_COMM_SYS_GetPicSize failed!\n", s32Ret);/******************************************step 2: init NNIE param******************************************/stNnieCfg.pszPic= NULL;stNnieCfg.u32MaxInputNum = 1; //max input image num in each batchstNnieCfg.u32MaxRoiNum = 0;stNnieCfg.aenNnieCoreId[0] = SVP_NNIE_ID_0; //set NNIE core for 0-th SegstNnieCfg.aenNnieCoreId[1] = SVP_NNIE_ID_0; //set NNIE core for 1-th SegstNnieCfg.aenNnieCoreId[2] = SVP_NNIE_ID_0; //set NNIE core for 2-th Seg/*Set configuration parameter*/s32Ret = SAMPLE_COMM_SVP_NNIE_LoadModel(pcModelName,&s_stYolov3Model);SAMPLE_SVP_CHECK_EXPR_GOTO(HI_SUCCESS != s32Ret,END_RFCN_0,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_COMM_SVP_NNIE_LoadModel failed!\n");/*Yolov3 parameter initialization*//*Yolov3 software parameters are set in SAMPLE_SVP_NNIE_Yolov3_SoftwareInit,if user has changed net struct, please make sure the parameter settings inSAMPLE_SVP_NNIE_Yolov3_SoftwareInit function are correct*/SAMPLE_SVP_TRACE_INFO("Yolov3 parameter initialization wy!\n");s_stYolov3NnieParam.pstModel = &s_stYolov3Model.stModel;s32Ret = SAMPLE_SVP_NNIE_Yolov3_ParamInit(&stNnieCfg,&s_stYolov3NnieParam,&s_stYolov3SoftwareParam);SAMPLE_SVP_CHECK_EXPR_GOTO(HI_SUCCESS != s32Ret,END_RFCN_1,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Yolov3_ParamInit failed!\n");s_bNnieStopSignal = HI_FALSE;/******************************************step 3: Create work thread******************************************/snprintf(acThreadName, 16, "NNIE_ViToVo");prctl(PR_SET_NAME, (unsigned long)acThreadName, 0,0,0);pthread_create(&s_hNnieThread, 0, SAMPLE_SVP_NNIE_yolov3_ViToVo, NULL);SAMPLE_PAUSE();s_bNnieStopSignal = HI_TRUE;pthread_join(s_hNnieThread, HI_NULL);s_hNnieThread = 0;
END_RFCN_1:SAMPLE_SVP_NNIE_Yolov3_Deinit(&s_stRfcnNnieParam,&s_stYolov3SoftwareParam,&s_stYolov3Model);
END_RFCN_0:SAMPLE_COMM_IVE_StopViVpssVencVo(&s_stViConfig,&s_stRfcnSwitch);return ;}
static HI_VOID* SAMPLE_SVP_NNIE_yolov3_ViToVo(HI_VOID* pArgs)
{HI_S32 s32Ret;SAMPLE_SVP_NNIE_PARAM_S *pstParam;SAMPLE_SVP_NNIE_RFCN_SOFTWARE_PARAM_S *pstSwParam;VIDEO_FRAME_INFO_S stBaseFrmInfo;VIDEO_FRAME_INFO_S stExtFrmInfo;HI_S32 s32MilliSec = 20000;VO_LAYER voLayer = 0;VO_CHN voChn = 0;HI_S32 s32VpssGrp = 0;HI_S32 as32VpssChn[] = {VPSS_CHN0, VPSS_CHN1};pstParam = &s_stYolov3NnieParam;pstSwParam = &s_stYolov3SoftwareParam;while (HI_FALSE == s_bNnieStopSignal){s32Ret = HI_MPI_VPSS_GetChnFrame(s32VpssGrp, as32VpssChn[1], &stExtFrmInfo, s32MilliSec);if(HI_SUCCESS != s32Ret){SAMPLE_PRT("Error(%#x),HI_MPI_VPSS_GetChnFrame failed, VPSS_GRP(%d), VPSS_CHN(%d)!\n",s32Ret,s32VpssGrp, as32VpssChn[1]);continue;}s32Ret = HI_MPI_VPSS_GetChnFrame(s32VpssGrp, as32VpssChn[0], &stBaseFrmInfo, s32MilliSec);SAMPLE_CHECK_EXPR_GOTO(HI_SUCCESS!=s32Ret, EXT_RELEASE,"Error(%#x),HI_MPI_VPSS_GetChnFrame failed, VPSS_GRP(%d), VPSS_CHN(%d)!\n",s32Ret,s32VpssGrp, as32VpssChn[0]);s32Ret = SAMPLE_SVP_NNIE_Yolov3_Proc(pstParam,pstSwParam, &stExtFrmInfo,stBaseFrmInfo.stVFrame.u32Width,stBaseFrmInfo.stVFrame.u32Height);SAMPLE_CHECK_EXPR_GOTO(HI_SUCCESS!=s32Ret, BASE_RELEASE,"Error(%#x),SAMPLE_SVP_NNIE_Yolov3_Proc failed!\n", s32Ret);//Draw rect//printf("u32ClsNum=%d,u32TotalNum=%d,%d %d \n",s_stYolov3SoftwareParam.stRect.u32ClsNum,s_stYolov3SoftwareParam.stRect.u32TotalNum,//s_stYolov3SoftwareParam.stRect.astRect[0][0].astPoint[0].s32X,s_stYolov3SoftwareParam.stRect.astRect[0][0].astPoint[0].s32Y);printf("draw ... \n");s32Ret = SAMPLE_COMM_SVP_NNIE_FillRect(&stBaseFrmInfo, &(s_stYolov3SoftwareParam.stRect), 0x0000FF00);SAMPLE_CHECK_EXPR_GOTO(HI_SUCCESS!=s32Ret, BASE_RELEASE,"SAMPLE_COMM_SVP_NNIE_FillRect failed, Error(%#x)!\n", s32Ret);//add wy       SAMPLE_SVP_TRACE_INFO("yolov3 result:\n");(void)SAMPLE_SVP_NNIE_Detection_PrintResult(&s_stYolov3SoftwareParam.stDstScore,&s_stYolov3SoftwareParam.stDstRoi, &s_stYolov3SoftwareParam.stClassRoiNum,0.8);s32Ret = HI_MPI_VO_SendFrame(voLayer, voChn, &stBaseFrmInfo, s32MilliSec);SAMPLE_CHECK_EXPR_GOTO(HI_SUCCESS!=s32Ret, BASE_RELEASE,"HI_MPI_VO_SendFrame failed, Error(%#x)!\n", s32Ret);BASE_RELEASE:s32Ret = HI_MPI_VPSS_ReleaseChnFrame(s32VpssGrp,as32VpssChn[0], &stBaseFrmInfo);if (HI_SUCCESS != s32Ret){SAMPLE_PRT("Error(%#x),HI_MPI_VPSS_ReleaseChnFrame failed,Grp(%d) chn(%d)!\n",s32Ret,s32VpssGrp,as32VpssChn[0]);}EXT_RELEASE:s32Ret = HI_MPI_VPSS_ReleaseChnFrame(s32VpssGrp,as32VpssChn[1], &stExtFrmInfo);if (HI_SUCCESS != s32Ret){SAMPLE_PRT("Error(%#x),HI_MPI_VPSS_ReleaseChnFrame failed,Grp(%d) chn(%d)!\n",s32Ret,s32VpssGrp,as32VpssChn[1]);}}return HI_NULL;
}//#define FRCN 0/******************************************************************************
* function : Yolov3 Proc
******************************************************************************/
static HI_S32 SAMPLE_SVP_NNIE_Yolov3_Proc(SAMPLE_SVP_NNIE_PARAM_S *pstParam,SAMPLE_SVP_NNIE_RFCN_SOFTWARE_PARAM_S *pstSwParam, VIDEO_FRAME_INFO_S* pstExtFrmInfo,HI_U32 u32BaseWidth,HI_U32 u32BaseHeight)
{HI_S32 s32Ret = HI_FAILURE;SAMPLE_SVP_NNIE_INPUT_DATA_INDEX_S stInputDataIdx = {0};SAMPLE_SVP_NNIE_PROCESS_SEG_INDEX_S stProcSegIdx = {0};stInputDataIdx.u32SegIdx = 0;stInputDataIdx.u32NodeIdx = 0;/*SP420*/pstParam->astSegData[stInputDataIdx.u32SegIdx].astSrc[stInputDataIdx.u32NodeIdx].u64VirAddr = pstExtFrmInfo->stVFrame.u64VirAddr[0];pstParam->astSegData[stInputDataIdx.u32SegIdx].astSrc[stInputDataIdx.u32NodeIdx].u64PhyAddr = pstExtFrmInfo->stVFrame.u64PhyAddr[0];pstParam->astSegData[stInputDataIdx.u32SegIdx].astSrc[stInputDataIdx.u32NodeIdx].u32Stride  = pstExtFrmInfo->stVFrame.u32Stride[0];#ifdef FRCN/*NNIE process 0-th seg*/stProcSegIdx.u32SegIdx = 0;s32Ret = SAMPLE_SVP_NNIE_Forward(pstParam,&stInputDataIdx,&stProcSegIdx,HI_TRUE);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Forward failed!\n");
#endif/*NNIE process(process the 0-th segment) wy*/stProcSegIdx.u32SegIdx = 0;s32Ret = SAMPLE_SVP_NNIE_Forward(pstParam,&stInputDataIdx,&stProcSegIdx,HI_TRUE);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Forward failed!\n");#ifdef FRCN/*RPN*/s32Ret = SAMPLE_SVP_NNIE_Rfcn_Rpn(pstParam, pstSwParam);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_RFCN_Rpn failed!\n");/*NNIE process 1-th seg, the input data comes from 3-rd report node of 0-th seg,the input roi comes from RPN results*/stInputDataIdx.u32SegIdx = 0;stInputDataIdx.u32NodeIdx = 3;stProcSegIdx.u32SegIdx = 1;s32Ret = SAMPLE_SVP_NNIE_ForwardWithBbox(pstParam,&stInputDataIdx,&pstSwParam->stRpnBbox,&stProcSegIdx,HI_TRUE);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Forward failed!\n");/*NNIE process 2-nd seg, the input data comes from 4-th report node of 0-th segthe input roi comes from RPN results*/stInputDataIdx.u32SegIdx = 0;stInputDataIdx.u32NodeIdx = 4;stProcSegIdx.u32SegIdx = 2;s32Ret = SAMPLE_SVP_NNIE_ForwardWithBbox(pstParam,&stInputDataIdx,&pstSwParam->stRpnBbox,&stProcSegIdx,HI_TRUE);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Forward failed!\n");/*GetResult*//*if user has changed net struct, please make sure SAMPLE_SVP_NNIE_Rfcn_GetResultfunction's input datas are correct*/s32Ret = SAMPLE_SVP_NNIE_Rfcn_GetResult(pstParam,pstSwParam);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Rfcn_GetResult failed!\n");
#endif/*Software process wy*//*if user has changed net struct, please make sure SAMPLE_SVP_NNIE_Yolov3_GetResultfunction input datas are correct*///s32Ret = SAMPLE_SVP_NNIE_Yolov3_GetResult(&s_stYolov3NnieParam,&s_stYolov3SoftwareParam);/*s32Ret = SAMPLE_SVP_NNIE_Yolov3_GetResult(pstParam,pstSwParam);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Yolov3_GetResult failed!\n");*/s32Ret = SAMPLE_SVP_NNIE_Yolov3_GetResult(&s_stYolov3NnieParam,&s_stYolov3SoftwareParam);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,SAMPLE_SVP_NNIE_Yolov3_GetResult failed!\n");/*      SAMPLE_SVP_TRACE_INFO("Yolov3 result:\n");(void)SAMPLE_SVP_NNIE_Detection_PrintResult(&s_stYolov3SoftwareParam.stDstScore,&s_stYolov3SoftwareParam.stDstRoi, &s_stYolov3SoftwareParam.stClassRoiNum,0.8);*//*print result, this sample has 81 classes:class 0:background   class 1:person       class 2:bicycle         class 3:car            class 4:motorbike      class 5:aeroplaneclass 6:bus             class 7:train        class 8:truck           class 9:boat           class 10:traffic lightclass 11:fire hydrant     class 12:stop sign   class 13:parking meter  class 14:bench         class 15:birdclass 16:cat           class 17:dog         class 18:horse          class 19:sheep         class 20:cowclass 21:elephant       class 22:bear        class 23:zebra          class 24:giraffe       class 25:backpackclass 26:umbrella      class 27:handbag     class 28:tie            class 29:suitcase      class 30:frisbeeclass 31:skis           class 32:snowboard   class 33:sports ball    class 34:kite          class 35:baseball batclass 36:baseball glove class 37:skateboard  class 38:surfboard     class 39:tennis racket class 40bottleclass 41:wine glass   class 42:cup         class 43:fork           class 44:knife         class 45:spoonclass 46:bowl             class 47:banana      class 48:apple          class 49:sandwich      class 50orangeclass 51:broccoli         class 52:carrot      class 53:hot dog        class 54:pizza         class 55:donutclass 56:cake             class 57:chair       class 58:sofa           class 59:pottedplant   class 60bedclass 61:diningtable     class 62:toilet      class 63:vmonitor       class 64:laptop        class 65:mouseclass 66:remote       class 67:keyboard    class 68:cell phone     class 69:microwave     class 70:ovenclass 71:toaster       class 72:sink        class 73:refrigerator   class 74:book          class 75:clockclass 76:vase             class 77:scissors    class 78:teddy bear     class 79:hair drier    class 80:toothbrush*/s32Ret = SAMPLE_SVP_NNIE_RoiToRect(&(pstSwParam->stDstScore),&(pstSwParam->stDstRoi), &(pstSwParam->stClassRoiNum), pstSwParam->af32ScoreThr,HI_TRUE,&(pstSwParam->stRect),pstExtFrmInfo->stVFrame.u32Width, pstExtFrmInfo->stVFrame.u32Height,u32BaseWidth,u32BaseHeight);*/s32Ret = SAMPLE_SVP_NNIE_RoiToRect(&(s_stYolov3SoftwareParam.stDstScore),&(s_stYolov3SoftwareParam.stDstRoi), &(s_stYolov3SoftwareParam.stClassRoiNum), s_stYolov3SoftwareParam.af32ScoreThr,HI_TRUE,&(s_stYolov3SoftwareParam.stRect),pstExtFrmInfo->stVFrame.u32Width, pstExtFrmInfo->stVFrame.u32Height,u32BaseWidth,u32BaseHeight);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error(%#x),SAMPLE_SVP_NNIE_RoiToRect failed!\n",s32Ret);return s32Ret;}
/******************************************************************************
* function : NNIE Forward
******************************************************************************/
static HI_S32 SAMPLE_SVP_NNIE_Forward(SAMPLE_SVP_NNIE_PARAM_S *pstNnieParam,SAMPLE_SVP_NNIE_INPUT_DATA_INDEX_S* pstInputDataIdx,SAMPLE_SVP_NNIE_PROCESS_SEG_INDEX_S* pstProcSegIdx,HI_BOOL bInstant)
{HI_S32 s32Ret = HI_SUCCESS;HI_U32 i = 0, j = 0;HI_BOOL bFinish = HI_FALSE;SVP_NNIE_HANDLE hSvpNnieHandle = 0;HI_U32 u32TotalStepNum = 0;SAMPLE_COMM_SVP_FlushCache(pstNnieParam->astForwardCtrl[pstProcSegIdx->u32SegIdx].stTskBuf.u64PhyAddr,(HI_VOID *) pstNnieParam->astForwardCtrl[pstProcSegIdx->u32SegIdx].stTskBuf.u64VirAddr,pstNnieParam->astForwardCtrl[pstProcSegIdx->u32SegIdx].stTskBuf.u32Size);/*set input blob according to node name*/if(pstInputDataIdx->u32SegIdx != pstProcSegIdx->u32SegIdx){for(i = 0; i < pstNnieParam->pstModel->astSeg[pstProcSegIdx->u32SegIdx].u16SrcNum; i++){for(j = 0; j < pstNnieParam->pstModel->astSeg[pstInputDataIdx->u32SegIdx].u16DstNum; j++){if(0 == strncmp(pstNnieParam->pstModel->astSeg[pstInputDataIdx->u32SegIdx].astDstNode[j].szName,pstNnieParam->pstModel->astSeg[pstProcSegIdx->u32SegIdx].astSrcNode[i].szName,SVP_NNIE_NODE_NAME_LEN)){pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astSrc[i] =pstNnieParam->astSegData[pstInputDataIdx->u32SegIdx].astDst[j];break;}}SAMPLE_SVP_CHECK_EXPR_RET((j == pstNnieParam->pstModel->astSeg[pstInputDataIdx->u32SegIdx].u16DstNum),HI_FAILURE,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,can't find %d-th seg's %d-th src blob!\n",pstProcSegIdx->u32SegIdx,i);}}/*NNIE_Forward*/gettimeofday(&start,NULL);s32Ret = HI_MPI_SVP_NNIE_Forward(&hSvpNnieHandle,pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astSrc,pstNnieParam->pstModel, pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst,&pstNnieParam->astForwardCtrl[pstProcSegIdx->u32SegIdx], bInstant);gettimeofday(&end,NULL);unsigned  long diff;diff = 1000000 * (end.tv_sec-start.tv_sec)+ end.tv_usec-start.tv_usec;printf(time is %ld\n”,diff);SAMPLE_SVP_CHECK_EXPR_RET(HI_SUCCESS != s32Ret,s32Ret,SAMPLE_SVP_ERR_LEVEL_ERROR,"Error,HI_MPI_SVP_NNIE_Forward failed!\n");if(bInstant){/*Wait NNIE finish*/while(HI_ERR_SVP_NNIE_QUERY_TIMEOUT == (s32Ret = HI_MPI_SVP_NNIE_Query(pstNnieParam->astForwardCtrl[pstProcSegIdx->u32SegIdx].enNnieId,hSvpNnieHandle, &bFinish, HI_TRUE))){usleep(100);SAMPLE_SVP_TRACE(SAMPLE_SVP_ERR_LEVEL_INFO,"HI_MPI_SVP_NNIE_Query Query timeout!\n");}}bFinish = HI_FALSE;for(i = 0; i < pstNnieParam->astForwardCtrl[pstProcSegIdx->u32SegIdx].u32DstNum; i++){if(SVP_BLOB_TYPE_SEQ_S32 == pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].enType){for(j = 0; j < pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u32Num; j++){u32TotalStepNum += *((HI_U32*)(pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].unShape.stSeq.u64VirAddrStep)+j);}SAMPLE_COMM_SVP_FlushCache(pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u64PhyAddr,(HI_VOID *) pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u64VirAddr,u32TotalStepNum*pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u32Stride);}else{SAMPLE_COMM_SVP_FlushCache(pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u64PhyAddr,(HI_VOID *) pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u64VirAddr,pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u32Num*pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].unShape.stWhc.u32Chn*pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].unShape.stWhc.u32Height*pstNnieParam->astSegData[pstProcSegIdx->u32SegIdx].astDst[i].u32Stride);}}return s32Ret;
}

打印输出信息

[Level]:Info,[Func]:SAMPLE_SVP_NNIE_yolov3_ViToVo [Line]:1793 [Info]:yolov3 result:
[Level]:Info,[Func]:SAMPLE_SVP_NNIE_Detection_PrintResult [Line]:798 [Info]:==== The 40th class box info====
[Level]:Info,[Func]:SAMPLE_SVP_NNIE_Detection_PrintResult [Line]:811 [Info]:288 146 325 375 0.998779
[Level]:Info,[Func]:SAMPLE_SVP_NNIE_Detection_PrintResult [Line]:798 [Info]:==== The 68th class box info====
[Level]:Info,[Func]:SAMPLE_SVP_NNIE_Detection_PrintResult [Line]:811 [Info]:240 350 284 399 0.918701
time is 47
pstRect->astRect[40][0].astPoint[0].s32X=1324
pstRect->astRect[40][0].astPoint[0].s32Y=350
pstRect->astRect[40][0].astPoint[1].s32X=1508
pstRect->astRect[40][0].astPoint[1].s32Y=350
pstRect->astRect[68][0].astPoint[0].s32X=1112
pstRect->astRect[68][0].astPoint[0].s32Y=906
pstRect->astRect[68][0].astPoint[1].s32X=1310
pstRect->astRect[68][0].astPoint[1].s32Y=906

识别到的物体
第40类 bottle 准确率 0.998779
第68类 cell phone 准确率 0.918701

HISI3559A 使用yolov3 (VI-VPSS-VO)实时目标检测相关推荐

  1. DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对《我要打篮球》视频段进行实时目标检测

    DL之Yolov3:基于深度学习Yolov3算法实现视频目标检测之对<我要打篮球>视频段进行实时目标检测 目录 输出结果 设计思路 核心代码 相关文章 成功解决AttributeError ...

  2. 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测

    树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测 本文将实现树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测,我们会先实现树莓派对视频文件的逐帧检测来验证算法流程, ...

  3. Yolo:实时目标检测实战(下)

    Yolo:实时目标检测实战(下) YOLO:Real-Time Object Detection After a few minutes, this script will generate all ...

  4. Yolo:实时目标检测实战(上)

    Yolo:实时目标检测实战(上) YOLO:Real-Time Object Detection 你只看一次(YOLO)是一个最先进的实时物体检测系统.在帕斯卡泰坦X上,它以每秒30帧的速度处理图像, ...

  5. YOLO_ Real-Time Object Detection 实时目标检测

    YOLO: Real-Time Object Detection 实时目标检测 You only look once(YOLO)是一种先进的实时目标检测系统.在Pascal Titan X上,它以每秒 ...

  6. 实用教程!使用YOLOv3训练自己数据的目标检测

    点击我爱计算机视觉标星,更快获取CVML新技术 YOLOv3是当前计算机视觉中最为流行的实时目标检测算法之一. 昨天LearnOpenCV网站博主又发福利,post了一个清晰明了的教程,一步一步示例, ...

  7. 使用SlimYOLOv3框架实现实时目标检测

    1. 介绍 人类可以在几毫秒内在我们的视线中挑选出物体.事实上,你现在就环顾四周,你将观察到周围环境并快速检测到存在的物体,并且把目光回到我们这篇文章来.大概需要多长时间? 这就是实时目标检测.如果我 ...

  8. ibm db2获取目标时间与当前时间的差值_高帧频视觉实时目标检测系统

    基于机器视觉的智能目标检测系统应用非常广泛,尤其在航天军工等领域中,经常涉及高速目标的实时检测和控制,对目标检测的智能性和实时性提出了更严格的要求.在这种应用中,视觉系统相对雷达.声纳具有信息量大.抗 ...

  9. 基于ZYNQ实时目标检测系统

    完整工程成功上板实验! 硬件使用的是黑金ZYNQ7020+配套的AN5642黑金双目摄像头. 在vivado2017.4 下verilog实现 ZYNQ7020+AN5642双目摄像头实现实时目标检测 ...

最新文章

  1. 自己开发的Grid组件 针对IOS的
  2. 6招识破翻新iPhone
  3. Eclipse 报 “Exception in thread main java.lang.OutOfMemoryError: Java heap space ”错误的解决办法...
  4. java类注入service为null_解决webservice(Java)中dao层注入为null问题
  5. mysql动态扩展_动态可扩展查询MYSQL5.7JSON+虚拟列+Mybatis
  6. PS Raw增效工具:Adobe Camera Raw13 for mac
  7. 谷歌浏览器 —— 快捷键(vimium:像使用 vim 一样操作当前页面)
  8. ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(15)之前台网站页面
  9. 谷歌开源“穷人版”摘要生成NLP模型:训练成本低,只要1000个样本就能打败人类...
  10. 使用计算机时应先按,自考试题及答案《计算机应用基础》
  11. win10计算机盘符如何,删除win10电脑多余无需使用的盘符教程
  12. Newifi路由刷机R6830
  13. 腾讯与360之争随笔 (12月21日,最后一次更新)
  14. FPGA 学习笔记(十一) VGA驱动的实现
  15. Redis学习之srem命令
  16. answer的汉语_answer是什么意思中文翻译(answer中文意思及应用)
  17. 谷歌Colab(免费算力平台)——正确打开方式(常用操作指导tips)
  18. CSDN的Markdown编辑器支持的字体和颜色
  19. vue打包部署到php,打包vue项目部署在nginx
  20. LeetCode - 1162 地图分析

热门文章

  1. 手机安装linux发行版,为亲朋好友挑选一款合适的Linux发行版
  2. Android Lost RAM的统计方法
  3. Web防火墙(WAF)是什么?和传统防火墙区别是什么?
  4. 【unity 保卫星城】--- 开发笔记01(飞机移动)
  5. 是时候来一发炸裂的开场了!
  6. 三极管构成的电流负反馈放大器
  7. matlab高斯投影坐标,基于matlab的高斯投影正反算与相邻带坐标换算程序设计
  8. 解析explain执行计划
  9. HTML5和CSS3扁平化风格
  10. 浪潮财务软件 系统表预检查: 对象 ID X。无法使用闩锁类型 SH 读取并闩锁页 。由于不可修复的错误,CHECK 语句已终止。