前 言
本文主要介紹基于創(chuàng)龍科技TL3588-EVM評(píng)估板的NPU開(kāi)發(fā)案例,適用開(kāi)發(fā)環(huán)境如下。
Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
虛擬機(jī):VMware16.2.5
開(kāi)發(fā)環(huán)境:Ubuntu20.04.6 64bit
U-Boot:U-Boot-2017.09
Kernel:Linux-5.10.160
Debian:Debian11
LinuxSDK:LinuxSDK-[版本號(hào)](基于rk3588_linux_release_v1.2.1_20230720)
無(wú)特殊說(shuō)明情況下,本文默認(rèn)使用USB TO UART2作為調(diào)試串口,使用系統(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ò)處理器。RK3588內(nèi)部已集成高能效神經(jīng)網(wǎng)絡(luò)處理器NPU,支持神經(jīng)網(wǎng)絡(luò)推理硬件加速,能夠流暢運(yùn)行AI算法。主要參數(shù)如下:
(1)支持INT4/INT8/INT16/FP16/BF16/TF32等;
(2)支持多種框架,如TensorFlow/PyTorch/Caffe/MXNet等;
(3)6TOPS算力。
備注:更多詳細(xì)信息請(qǐng)查看“6-開(kāi)發(fā)資料數(shù)據(jù)手冊(cè)核心板元器件CPU”目錄下的文檔。
NPU開(kāi)發(fā)流程如下:
(1)模型訓(xùn)練:用戶根據(jù)需求自行訓(xùn)練模型或使用官方提供的模型;
(2)模型轉(zhuǎn)換:使用RKNN-Toolkit2將預(yù)訓(xùn)練模型轉(zhuǎn)換為RK3588 NPU可使用的RKNN模型;
(3)應(yīng)用開(kāi)發(fā):基于RKNN API開(kāi)發(fā)應(yīng)用程序。
圖 1?NPU開(kāi)發(fā)流程圖
關(guān)于RKNN-Toolkit2模型轉(zhuǎn)換使用說(shuō)明、混合量化、精度問(wèn)題排查的詳細(xì)介紹,可查看LinuxSDK源碼"external/rknn-toolkit2/doc/"目錄下的"Rockchip_User_Guide_RKNN_Toolkit2_CN-1.5.0.pdf"與"Rockchip_User_Guide_RKNN_Toolkit2_EN-1.5.0.pdf"文檔。
圖 2
關(guān)于RKNN API的詳細(xì)使用說(shuō)明可查看LinuxSDK源碼"external/rknpu2/doc/"目錄下的"Rockchip_RKNPU_User_Guide_RKNN_API_V1.5.0_CN.pdf"與"Rockchip_RKNPU_User_Guide_RKNN_API_V1.5.0_EN.pdf"文檔。
圖 3
我司提供的NPU開(kāi)發(fā)案例為產(chǎn)品資料“4-軟件資料Demoplatform-demosyolov5_object_detect”,具體說(shuō)明如下。

案例說(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/"目錄下。
圖 4
程序處理流程圖如下:
圖 5
案例測(cè)試
請(qǐng)通過(guò)網(wǎng)線將評(píng)估板千兆網(wǎng)口ETH0連接至路由器。
圖 6
請(qǐng)將案例bin目錄下的所有文件拷貝至評(píng)估板文件系統(tǒng)任意目錄下。
圖 7
在可執(zhí)行文件所在目錄,執(zhí)行如下命令,對(duì)圖片目標(biāo)對(duì)象進(jìn)行模型推理。
備注:模型運(yùn)行的時(shí)間會(huì)有抖動(dòng)。
Target# ./yolov5_object_detect yolov5s-640-640_rm_transpose_rk3588.rknn bus.jpg
圖 8
從輸出信息可知,本案例程序識(shí)別出測(cè)試圖片包含4個(gè)person和1個(gè)bus對(duì)象,運(yùn)行1次模型耗時(shí)為23.905000ms;循環(huán)運(yùn)行10次模型平均耗時(shí)為21.356800ms。
案例程序?qū)y(cè)試圖片的目標(biāo)對(duì)象標(biāo)記成功后將輸出名稱為out.jpg的標(biāo)記圖片至當(dāng)前目錄,請(qǐng)將out.jpg文件拷貝至Windows下,并使用PC端相關(guān)軟件對(duì)比查看bus.jpg與out.jpg,測(cè)試結(jié)果如下所示。
圖 9
圖 10?bus.jpg
圖 11?out.jpg
從out.jpg圖片可知,案例程序能正確框選出4位人物和1輛汽車,同時(shí)顯示person、bus文字標(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)證。
圖 12
案例編譯
環(huán)境搭建
打開(kāi)Ubuntu,執(zhí)行如下命令,安裝NPU案例開(kāi)發(fā)所需的Python3工具及依賴庫(kù)。
Host# sudo apt-get install python3 python3-dev python3-pip
Host# sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 libgl1-mesa-glx libprotobuf-dev
圖 13
圖 14
執(zhí)行如下命令,安裝NPU案例開(kāi)發(fā)所需的cmake和virtualenv工具。
Host# sudo apt install cmake
Host# sudo apt install virtualenv
圖 15
執(zhí)行如下命令,使用virtualenv工具創(chuàng)建虛擬環(huán)境并進(jìn)入虛擬環(huán)境。
Host# virtualenv -p /usr/bin/python3 virtual //創(chuàng)建虛擬環(huán)境
Host# source virtual/bin/activate //進(jìn)入虛擬環(huán)境
備注:虛擬機(jī)可能存在多個(gè)Python版本,由于虛擬機(jī)環(huán)境問(wèn)題可能導(dǎo)致庫(kù)安裝不成功或成功亦無(wú)法找到庫(kù),因此建議使用虛擬環(huán)境安裝庫(kù)。virtual可任意命名,指定目錄創(chuàng)建,若無(wú)指定目錄則默認(rèn)當(dāng)前目錄。
圖 16
執(zhí)行如下命令,進(jìn)入LinuxSDK源碼"rk3588_linux_release_v1.2.1/external/rknn-toolkit2/"目錄,安裝案例相關(guān)依賴庫(kù)。
Host# cd /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/external/rknn-toolkit2/
Host# pip3 install six~=1.15.0
Host# pip3 install typing-extensions~=3.7.4
Host# pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r doc/requirements_cp38-1.5.0.txt
Host# pip3 install packages/rknn_toolkit2-1.5.0+1fa95b5c-cp38-cp38-linux_x86_64.whl
圖 17
圖 18
圖 19
在當(dāng)前目錄下,執(zhí)行如下命令,若無(wú)報(bào)錯(cuò)信息,則表示安裝成功,如下圖所示。按下"Ctrl + D"即可退出測(cè)試。
Host# python3
from rknn.api import RKNN
圖 20
執(zhí)行如下命令,可退出虛擬環(huán)境。
Host# deactivate
圖 21
模型轉(zhuǎn)換
打開(kāi)Ubuntu,執(zhí)行如下命令,進(jìn)入虛擬環(huán)境。
Host# source virtual/bin/activate
圖 22
將案例src源碼目錄拷貝至Ubuntu工作目錄下,進(jìn)入源碼目錄的model目錄,執(zhí)行如下命令進(jìn)行模型轉(zhuǎn)換,將ONNX模型轉(zhuǎn)化為RKNN模型。模型轉(zhuǎn)化成功后將會(huì)在當(dāng)前目錄下新生成rknn_models目錄,并在rknn_models目錄下生成RKNN模型。
Host# cdmodel/
Host# python3 onnx2rknn.py
圖 23
模型轉(zhuǎn)化成功后執(zhí)行如下命令,退出虛擬環(huán)境。
Host# deactivate
圖 24
案例編譯
在案例src源碼目錄下,執(zhí)行如下命令配置編譯環(huán)境,并修改CMakeLists.txt文件,請(qǐng)根據(jù)實(shí)際情況修改為L(zhǎng)inuxSDK源碼路徑。
Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment
Host# viCMakeLists.txt
圖 25
圖 26
執(zhí)行如下命令,新建一個(gè)build目錄,用于存放編譯過(guò)程產(chǎn)生的相關(guān)文件。
Host# mkdir -p build
圖 27
進(jìn)入build目錄,執(zhí)行如下命令進(jìn)行案例編譯,編譯完成將會(huì)在build目錄下生成編譯過(guò)程產(chǎn)生的相關(guān)文件,并在src目錄下生成install目錄,該目錄下存放案例相關(guān)文件。
Host# cd build
Host# cmake ../
Host# make -j8
Host# make install
圖 28
build目錄存放編譯過(guò)程產(chǎn)生的相關(guān)文件,install目錄存放案例相關(guān)文件,包括測(cè)試圖片bus.jpg、類別數(shù)據(jù)集coco_80_labels_list.txt、RKNN模型yolov5s-640-640_rm_transpose_rk3588.rknn和可執(zhí)行程序yolov5_object_detect等文件,如下圖所示。
圖 29
關(guān)鍵代碼
(1)加載圖片RGB數(shù)據(jù)。
圖 30
(2)加載模型并初始化RKNN。
圖 31
(3)前處理,對(duì)圖像進(jìn)行縮放和裁剪以適配模型輸入。
圖 32
(4)設(shè)置模型運(yùn)行輸入輸出參數(shù),NPU運(yùn)行模型,獲取模型輸出,統(tǒng)計(jì)運(yùn)行耗時(shí)。
圖 33
(5)進(jìn)行后處理,得到目標(biāo)識(shí)別結(jié)果。
圖 34
(6)使用目標(biāo)識(shí)別結(jié)果給圖片添加水印,并保存為圖片文件。
圖 35
(7)重復(fù)運(yùn)行10次模型并統(tǒng)計(jì)平均耗時(shí)。
圖 36
審核編輯 黃宇
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
26文章
6314瀏覽量
118724 -
NPU
+關(guān)注
關(guān)注
2文章
378瀏覽量
21137
發(fā)布評(píng)論請(qǐng)先 登錄
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—ISP圖像處理開(kāi)發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—視頻圖像處理框架
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—IgH?EtherCAT主站開(kāi)發(fā)案例(下)
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—IgH?EtherCAT主站開(kāi)發(fā)案例(上)
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—物聯(lián)網(wǎng)模塊開(kāi)發(fā)案例
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—調(diào)試工具安裝
迅為RK3588開(kāi)發(fā)板Linux安卓麒麟瑞芯微國(guó)產(chǎn)工業(yè)AI人工智能
全國(guó)產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開(kāi)發(fā)板—LVGL應(yīng)用開(kāi)發(fā)案例
迅為iTOP-3588S開(kāi)發(fā)板核心板引腳240PIN全部引出8GB內(nèi)存32GBEMMC存儲(chǔ)
iTOP-3588S開(kāi)發(fā)板四核心架構(gòu)GPU內(nèi)置GPU可以完全兼容0penGLES1.1、2.0和3.2。
迅為瑞芯微iTOP-3588開(kāi)發(fā)板/核心板
迅為iTOP-RK3588S開(kāi)發(fā)板/核心板瑞芯微RK3588S處理器6TOPS算力內(nèi)置NPU
iTOP-3588開(kāi)發(fā)板采用瑞芯微RK3588處理器四核心架構(gòu)GPU內(nèi)置獨(dú)立NPU強(qiáng)大的視頻編解碼
基于飛凌嵌入式RK3588核心板的8K全景相機(jī)方案
創(chuàng)龍 瑞芯微 RK3588 國(guó)產(chǎn)2.4GHz八核 工業(yè)開(kāi)發(fā)板—NPU開(kāi)發(fā)案例
評(píng)論