海思hi3516dv300芯片AI圖像模塊學(xué)習(xí)(十五)Ruyi仿真源碼流程瀏覽
參考:https://zhuanlan.zhihu.com/p/450741615

官方的仿真例子,

mian.cpp是編譯的主程序,mian.cpp調(diào)用oneseg.cpp,這里面是海思運(yùn)行YOLO的流程,也包括輸入圖片和模型的地址,使用前注意修改。
oneseg.cpp調(diào)用YOLOV3.cpp,里面包含YOLOV3?的專用函數(shù)和參數(shù)。尤其是SvpSampleYolo.h,里面包括探測類別等參數(shù),用之前必須先配置好

首先看mian.cpp

核心文件在src文件夾下,main.cpp中關(guān)注SvpSampleCnnDetYoloV3();
對應(yīng)實(shí)例在src文件夾的SvpSampleDetectionOneSeg.cpp中(單步檢測)

最上面是測試文件和模型文件路徑

首先是測試集{ "../../data/detection/yolov3/image_test_list.txt" }

可以看到是bgr格式
需要把一張jpg圖片轉(zhuǎn)成bgr(注意順序是bgr)二進(jìn)制文件,華為Hi3516AV100開發(fā)板上的深度學(xué)習(xí)的樣例程序,要求輸入文件不是普通的jpg,而是bgr格式的二進(jìn)制文件。
海思提供的bgr文件分量排列格式是bbbb...gggg....rrrr....
open、write函數(shù)的wb模式可以實(shí)現(xiàn)二進(jìn)制寫入

反著寫可以還原,這里注意img_split與img[:, :, chn]的內(nèi)存地址相同,此時(shí)如果變img_split,img[:, :, chn]也會跟著變

保存好bgr圖片后以后,改索引位置

換路徑

換自己的模型,用inst.wk

切換到構(gòu)建模式instruction

改了路徑之后,SvpSampleCnnDetectionOneSeg是主函數(shù)
首先是參數(shù)核驗(yàn)和變量聲明初始化

然后從wk模型文件里扒參數(shù),配置內(nèi)存和控制器

執(zhí)行網(wǎng)絡(luò)推理和NMS的后處理,其中第二步是不支持層,需要調(diào)用SvpSampleYoloV3.cpp中專用的函數(shù),里面需要配置大量軟件參數(shù)注意修改。

結(jié)束

整體流程和板端程序接近,這里不細(xì)看了,具體要配置的部分下一節(jié)細(xì)講。