[HI3516DV300開發筆記]HiSi NNIE輸入圖像數據設置


本文上接:

[HI3516DV300開發筆記]HiSi NNIE + opencv解算openpose人體關鍵點輸出

https://blog.csdn.net/abc517789065/article/details/103592190


在上文中,已經初步實現了移植openpose模型到HISI3516開發板並且檢測出人體2D關鍵點位置

整個檢測的邏輯結構如下圖所示(也許爲了這張圖該寫系列博客,這張圖放在最前面,可惜我懶):

目前這裏有一個問題:VPSS輸出的 368*368 YVU420SP圖像數據,我並不是直接輸入到NNIE的,而是先保存成.yuv文件再讀取輸入到NNIE。這麼做的原因是爲了儘快打通整個流程,實際上並沒有必要多此一舉,就是將上圖優化爲:

還是之前說的思路,遇到問題解決問題。


隨着本文的寫作,我將嘗試做兩件事情:

<1>如何將HiSi3516DV300 SDK已有的yolov3 demo從檢測單張bgr圖片改造成YVU420SP數據

<2>如何將VPSS輸出的YVU420SP數據直接送入我移植的openpose模型進行預測

藉此熟悉HISI SVP NNIE SDK的各種花裏胡哨的數據結構的含義


0:在RuyiStudio上修改模型輸入並重新生成wk

首先把目光從開發板轉移到RuyiStudio,打開yolov3_func.cfg或者yolov3_inst.cfg,找到:

沒錯,就是把image_type從U8改爲YVU420SP,重新生成wk文件即可

大部分神經網絡算法是檢測bgr格式的,但是HiSi系列芯片VPSS輸出一般都是YVU格式,如果要向NNIE輸入bgr還需要轉一道。筆者親測修改此處的image_type重新生成wk文件再將開發板VPSS的YVU420SP格式直接輸入網絡也是可以用的。至於怎麼做的沒有細究,可能和IVE有關。

修改image_type爲YVU420SP後重新生成的wk文件並不會影響在PC上對png等格式圖片進行的仿真(所以改了image_type重新生成wk後還能用之前的圖片仿真,什麼都不用改),可以看下RuyiStudio裏的代碼,幾個關鍵函數:

SvpSampleReadAllSrcImg

SvpSampleImgReadFromImglist

s_SvpSampleImgRead

SvpSampleImgReadRaw / svpsample_utils_cv::SVPUtils_ReadImage

SVPUtils_MatToBlob_U8 / SVPUtils_MatToBlob_YVU420SP / SVPUtils_MatToBlob_YVU422SP

仿真時輸入到NNIE的數據格式會先被轉化

 

重新生成的以YVU420SP格式爲輸入的wk文件自然要拷貝到開發板並且重新載入,加載方法參考SAMPLE_SVP_NNIE_Yolov3即可;載入時被自動填寫的參數:SAMPLE_SVP_NNIE_PARAM_S/SAMPLE_SVP_NNIE_SEG_DATA_S/SVP_SRC_BLOB_S的enType可以看到以自動變爲了SVP_BLOB_TYPE_YVU420SP


既然提到了SVP_SRC_BLOB_S,就先弄得HiSi NNIE的一些關鍵數據結構:

1:數據結構 SAMPLE_SVP_NNIE_PARAM_S

待續

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章