前 言
本文主要介紹基于創(chuàng)龍科技TL3562-EVM評(píng)估板的NPU開發(fā)案例,適用開發(fā)環(huán)境如下。
Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
虛擬機(jī):VMware16.2.5
開發(fā)環(huán)境:Ubuntu20.04.6 64bit
U-Boot:U-Boot-2017.09
Kernel:Linux-5.10.209
LinuxSDK:rk3562-buildroot-2021.11-sdk-[版本號(hào)](基于rk3562_linux_release_v1.2.0_20240620)
無(wú)特殊說(shuō)明情況下,本文默認(rèn)使用USB TO UART0作為調(diào)試串口,使用Linux系統(tǒng)啟動(dòng)卡(Micro SD方式)啟動(dòng)系統(tǒng),通過(guò)路由器與PC機(jī)進(jìn)行網(wǎng)絡(luò)連接,請(qǐng)確保PC機(jī)、Ubuntu系統(tǒng)可正常訪問(wèn)互聯(lián)網(wǎng)。
NPU(Neural network Processing Unit),即神經(jīng)網(wǎng)絡(luò)處理器。RK3562內(nèi)部已集成高能效神經(jīng)網(wǎng)絡(luò)處理器NPU,支持神經(jīng)網(wǎng)絡(luò)推理硬件加速,能夠流暢運(yùn)行AI算法。主要參數(shù)如下:
(1)支持INT4/INT8/INT16/FP16等;
(2)支持多種框架,如TensorFlow、MXNet、PyTorch、Caffe等;
(3)1TOPS算力。
備注:更多詳細(xì)信息請(qǐng)查看“6-開發(fā)資料數(shù)據(jù)手冊(cè)核心板元器件CPU”目錄下的文檔。
NPU開發(fā)流程如下:
(1)模型訓(xùn)練:用戶根據(jù)需求自行訓(xùn)練模型或使用官方提供的模型;
(2)模型轉(zhuǎn)換:使用RKNN-Toolkit2將預(yù)訓(xùn)練模型轉(zhuǎn)換為RK3562 NPU可使用的RKNN模型;
(3)應(yīng)用開發(fā):基于RKNN API開發(fā)應(yīng)用程序。
圖 1 NPU開發(fā)流程圖
我司提供的NPU開發(fā)案例位于產(chǎn)品資料“4-軟件資料Demoplatform-demos”。其中,yolov5_object_detect案例為靜態(tài)演示案例(通過(guò)單張圖片進(jìn)行目標(biāo)識(shí)別),v4l2_yolov5_detect案例為動(dòng)態(tài)演示案例(通過(guò)攝像頭連續(xù)獲取圖像進(jìn)行目標(biāo)識(shí)別),具體說(shuō)明如下。
表 1
關(guān)于RKNN-Toolkit2環(huán)境搭建、模型轉(zhuǎn)換使用說(shuō)明、混合量化、精度問(wèn)題排查的詳細(xì)介紹,可查看yolov5_object_detect案例"toolrknn-toolkit2doc"目錄下的"02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf"文檔。
關(guān)于RKNN-Toolkit2模型轉(zhuǎn)換API接口說(shuō)明,可查看yolov5_object_detect案例"toolrknn-toolkit2doc"目錄下的"02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf"文檔。
關(guān)于RKNN API的詳細(xì)使用說(shuō)明,可查看yolov5_object_detect案例"toolrknn-toolkit2doc"目錄下的"04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.0.0beta0_CN.pdf"文檔。
1yolov5_object_detect案例
案例說(shuō)明
本案例基于RKNN API實(shí)現(xiàn)對(duì)圖片中目標(biāo)對(duì)象的識(shí)別,并將識(shí)別結(jié)果以加水印的方式添加至圖像,并保存成圖片文件。案例循環(huán)測(cè)試10次,統(tǒng)計(jì)出推理的平均處理耗時(shí)。
備注:本案例基于瑞芯微官方例程實(shí)現(xiàn),進(jìn)行了目錄的重構(gòu)及編譯的簡(jiǎn)化,功能邏輯未進(jìn)行修改。官方例程位于LinuxSDK源碼"/external/rknpu2/examples/rknn_yolov5_demo/"目錄下。
圖 2
程序處理流程圖如下:
圖 3
案例測(cè)試
請(qǐng)通過(guò)網(wǎng)線將評(píng)估板千兆網(wǎng)口ETH0 RGMII連接至路由器。
圖 4
請(qǐng)將案例bin目錄下的所有文件拷貝至評(píng)估板文件系統(tǒng)任意目錄下。
圖 5
在可執(zhí)行文件所在目錄,執(zhí)行如下命令,對(duì)圖片目標(biāo)對(duì)象進(jìn)行模型推理。
備注:模型運(yùn)行的時(shí)間會(huì)有抖動(dòng)。
Target# ./yolov5_object_detect yolov5s-640-640_rk3562.rknn car.jpg
圖 6
從輸出信息可知,本案例程序識(shí)別出測(cè)試圖片包含person、car、bus、truck等對(duì)象,運(yùn)行1次模型耗時(shí)為73.843000ms;循環(huán)運(yùn)行10次模型平均耗時(shí)為47.365303ms。
案例程序?qū)y(cè)試圖片的目標(biāo)對(duì)象標(biāo)記成功后將輸出名稱為out.jpg的標(biāo)記圖片至當(dāng)前目錄,請(qǐng)將out.jpg文件拷貝至Windows下,并使用PC端相關(guān)軟件對(duì)比查看car.jpg與out.jpg,測(cè)試結(jié)果如下所示。
圖 7
圖 8 car.jpg
圖 9 out.jpg
從out.jpg圖片可知,案例程序能正確框選出人物、汽車等物體,同時(shí)顯示person、car文字標(biāo)簽和置信度,標(biāo)記對(duì)象的數(shù)量及信息等與程序打印信息一致。
本程序能夠支持識(shí)別的目標(biāo)數(shù)據(jù)集類型說(shuō)明位于bin目錄下的coco_80_labels_list.txt文件,用戶可根據(jù)相關(guān)目標(biāo)類型進(jìn)行測(cè)試驗(yàn)證。
圖 10
案例編譯
將案例src源碼目錄拷貝至Ubuntu工作目錄下,進(jìn)入源碼目錄,執(zhí)行如下命令配置環(huán)境變量,并修改CMake配置文件CMakeLists.txt,請(qǐng)根據(jù)實(shí)際情況修改為L(zhǎng)inuxSDK源碼路徑。
Host# source /home/tronlong/RK3562/rk3562-buildroot-2021.11-sdk-v1.0/buildroot/output/rockchip_rk3562/host/environment-setup
Host# vim CMakeLists.txt
圖 11
圖 12
新建一個(gè)build目錄,用于存放編譯過(guò)程產(chǎn)生的相關(guān)文件。
Host# mkdir -p build
圖 13
進(jìn)入build目錄,執(zhí)行如下命令進(jìn)行案例編譯,編譯完成將會(huì)在build目錄下生成編譯過(guò)程產(chǎn)生的相關(guān)文件,并在src目錄下生成install目錄,該目錄下存放案例相關(guān)文件。
Host# cd build
Host# cmake -DCMAKE_C_COMPILER=aarch64-buildroot-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-buildroot-linux-gnu-g++ ../
Host# make -j8
Host# make install
圖 14
圖 15
build目錄存放編譯過(guò)程產(chǎn)生的相關(guān)文件,install目錄存放案例相關(guān)文件,包括測(cè)試圖片car.jpg、類別數(shù)據(jù)集coco_80_labels_list.txt、RKNN模型yolov5s-640-640_rk3562.rknn和可執(zhí)行程序yolov5_object_detect等文件,如下圖所示。
圖 16
關(guān)鍵代碼
(1)加載圖片RGB數(shù)據(jù)。
圖 17
(2)加載模型并初始化RKNN。
圖 18
(3)前處理,對(duì)圖像進(jìn)行縮放和裁剪以適配模型輸入。
圖 19
(4)設(shè)置模型運(yùn)行輸入輸出參數(shù),NPU運(yùn)行模型,獲取模型輸出,統(tǒng)計(jì)運(yùn)行耗時(shí)。
圖 20
(5)進(jìn)行后處理,得到目標(biāo)識(shí)別結(jié)果。
圖 21
(6)使用目標(biāo)識(shí)別結(jié)果給圖片添加水印,并保存為圖片文件。
圖 22
(7)重復(fù)運(yùn)行10次模型并統(tǒng)計(jì)平均耗時(shí)。
圖 23
由于篇幅過(guò)長(zhǎng)等原因,部分內(nèi)容均不逐一展示,如需獲取完整版詳細(xì)資料,請(qǐng)關(guān)注創(chuàng)龍科技微信公眾號(hào)或官網(wǎng),或者評(píng)論區(qū)留言,感謝您的支持!
審核編輯 黃宇
-
嵌入式
+關(guān)注
關(guān)注
5208文章
20591瀏覽量
336343 -
NPU
+關(guān)注
關(guān)注
2文章
384瀏覽量
21310
發(fā)布評(píng)論請(qǐng)先 登錄
iTOP-3562開發(fā)板/核心板采用RK3562,集成四核A53+Mali G52架構(gòu)
迅為瑞芯微RK3562開發(fā)板主頻2.0內(nèi)置NPU算力達(dá)1TOPS,核心板擴(kuò)展更多功能
瑞芯微米爾RK3562國(guó)產(chǎn)核心板,ARM中量級(jí)多面手
新一代低價(jià)開發(fā)板芯片RK3562來(lái)啦! — 觸覺(jué)智能RK3562開發(fā)板
四核A53@2GHz+NPU開發(fā)板只要198元!還是國(guó)產(chǎn)+工業(yè)級(jí)
4核CPU,ARM中量級(jí)多面手,米爾瑞芯微RK3562核心板上市
全國(guó)產(chǎn)!瑞芯微3562Mini(2GHz四核A53 NPU)工業(yè)開發(fā)板規(guī)格書
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開發(fā)板—LVGL應(yīng)用開發(fā)案例
創(chuàng)龍瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開發(fā)板—調(diào)試工具安裝
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開發(fā)板—IRIG-B碼對(duì)時(shí)案例
創(chuàng)龍 瑞芯微 RK3562 國(guó)產(chǎn) 2GHz 四核A53 工業(yè)開發(fā)板—NPU開發(fā)案例
評(píng)論