前 言
本文主要介紹基于創(chuàng)龍科技TL3588-EVM評估板的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.160
Debian:Debian11
LinuxSDK:LinuxSDK-[版本號](基于rk3588_linux_release_v1.2.1_20230720)
無特殊說明情況下,本文默認(rèn)使用USB TO UART2作為調(diào)試串口,使用系統(tǒng)啟動卡(Micro SD方式)啟動系統(tǒng),通過路由器與PC機(jī)進(jìn)行網(wǎng)絡(luò)連接,請確保PC機(jī)、Ubuntu系統(tǒng)可正常訪問互聯(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ì)信息請查看“6-開發(fā)資料數(shù)據(jù)手冊核心板元器件CPU”目錄下的文檔。
NPU開發(fā)流程如下:
(1)模型訓(xùn)練:用戶根據(jù)需求自行訓(xùn)練模型或使用官方提供的模型;
(2)模型轉(zhuǎn)換:使用RKNN-Toolkit2將預(yù)訓(xùn)練模型轉(zhuǎn)換為RK3588 NPU可使用的RKNN模型;
(3)應(yīng)用開發(fā):基于RKNN API開發(fā)應(yīng)用程序。
圖 1?NPU開發(fā)流程圖
關(guān)于RKNN-Toolkit2模型轉(zhuǎ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ì)使用說明可查看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開發(fā)案例為產(chǎn)品資料“4-軟件資料Demoplatform-demosyolov5_object_detect”,具體說明如下。
案例說明
本案例基于RKNN API實現(xiàn)對圖片中目標(biāo)對象的識別,并將識別結(jié)果以加水印的方式添加至圖像,并保存成圖片文件。案例循環(huán)測試10次,統(tǒng)計出推理的平均處理耗時。
備注:本案例基于瑞芯微官方例程實現(xiàn),進(jìn)行了目錄的重構(gòu)及編譯的簡化,功能邏輯未進(jìn)行修改。官方例程位于LinuxSDK源碼"external/rknpu2/examples/rknn_yolov5_demo/"目錄下。
圖 4
程序處理流程圖如下:
圖 5
案例測試
請通過網(wǎng)線將評估板千兆網(wǎng)口ETH0連接至路由器。
圖 6
請將案例bin目錄下的所有文件拷貝至評估板文件系統(tǒng)任意目錄下。
圖 7
在可執(zhí)行文件所在目錄,執(zhí)行如下命令,對圖片目標(biāo)對象進(jìn)行模型推理。
備注:模型運(yùn)行的時間會有抖動。
Target# ./yolov5_object_detect yolov5s-640-640_rm_transpose_rk3588.rknn bus.jpg
圖 8
從輸出信息可知,本案例程序識別出測試圖片包含4個person和1個bus對象,運(yùn)行1次模型耗時為23.905000ms;循環(huán)運(yùn)行10次模型平均耗時為21.356800ms。
案例程序?qū)y試圖片的目標(biāo)對象標(biāo)記成功后將輸出名稱為out.jpg的標(biāo)記圖片至當(dāng)前目錄,請將out.jpg文件拷貝至Windows下,并使用PC端相關(guān)軟件對比查看bus.jpg與out.jpg,測試結(jié)果如下所示。
圖 9
圖 10?bus.jpg
圖 11?out.jpg
從out.jpg圖片可知,案例程序能正確框選出4位人物和1輛汽車,同時顯示person、bus文字標(biāo)簽和置信度,標(biāo)記對象的數(shù)量及信息等與程序打印信息一致。
本程序能夠支持識別的目標(biāo)數(shù)據(jù)集類型說明位于bin目錄下的coco_80_labels_list.txt文件,用戶可根據(jù)相關(guān)目標(biāo)類型進(jìn)行測試驗證。
圖 12
案例編譯
環(huán)境搭建
打開Ubuntu,執(zhí)行如下命令,安裝NPU案例開發(fā)所需的Python3工具及依賴庫。
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案例開發(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ī)可能存在多個Python版本,由于虛擬機(jī)環(huán)境問題可能導(dǎo)致庫安裝不成功或成功亦無法找到庫,因此建議使用虛擬環(huán)境安裝庫。virtual可任意命名,指定目錄創(chuàng)建,若無指定目錄則默認(rèn)當(dāng)前目錄。
圖 16
執(zhí)行如下命令,進(jìn)入LinuxSDK源碼"rk3588_linux_release_v1.2.1/external/rknn-toolkit2/"目錄,安裝案例相關(guān)依賴庫。
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í)行如下命令,若無報錯信息,則表示安裝成功,如下圖所示。按下"Ctrl + D"即可退出測試。
Host# python3
from rknn.api import RKNN
圖 20
執(zhí)行如下命令,可退出虛擬環(huán)境。
Host# deactivate
圖 21
模型轉(zhuǎn)換
打開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)化成功后將會在當(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文件,請根據(jù)實際情況修改為LinuxSDK源碼路徑。
Host# source /home/tronlong/RK3588/rk3588_linux_release_v1.2.1/debian/sysroots/environment
Host# viCMakeLists.txt
圖 25
圖 26
執(zhí)行如下命令,新建一個build目錄,用于存放編譯過程產(chǎn)生的相關(guān)文件。
Host# mkdir -p build
圖 27
進(jìn)入build目錄,執(zhí)行如下命令進(jìn)行案例編譯,編譯完成將會在build目錄下生成編譯過程產(chǎn)生的相關(guān)文件,并在src目錄下生成install目錄,該目錄下存放案例相關(guān)文件。
Host# cd build
Host# cmake ../
Host# make -j8
Host# make install
圖 28
build目錄存放編譯過程產(chǎn)生的相關(guān)文件,install目錄存放案例相關(guān)文件,包括測試圖片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)前處理,對圖像進(jìn)行縮放和裁剪以適配模型輸入。
圖 32
(4)設(shè)置模型運(yùn)行輸入輸出參數(shù),NPU運(yùn)行模型,獲取模型輸出,統(tǒng)計運(yùn)行耗時。
圖 33
(5)進(jìn)行后處理,得到目標(biāo)識別結(jié)果。
圖 34
(6)使用目標(biāo)識別結(jié)果給圖片添加水印,并保存為圖片文件。
圖 35
(7)重復(fù)運(yùn)行10次模型并統(tǒng)計平均耗時。
圖 36
審核編輯 黃宇
-
開發(fā)板
+關(guān)注
關(guān)注
25文章
5999瀏覽量
110044 -
NPU
+關(guān)注
關(guān)注
2文章
340瀏覽量
20511
發(fā)布評論請先 登錄
創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—視頻圖像處理框架

創(chuàng)龍 瑞芯微 RK3588 國產(chǎn)2.4GHz八核 工業(yè)開發(fā)板—調(diào)試工具安裝

迅為RK3588開發(fā)板Linux安卓麒麟瑞芯微國產(chǎn)工業(yè)AI人工智能
全國產(chǎn)!瑞芯微 RK3576 ARM 八核 2.2GHz 工業(yè)開發(fā)板—LVGL應(yīng)用開發(fā)案例

迅為瑞芯微iTOP-3588開發(fā)板/核心板
迅為iTOP-RK3588S開發(fā)板/核心板瑞芯微RK3588S處理器6TOPS算力內(nèi)置NPU
iTOP-3588開發(fā)板采用瑞芯微RK3588處理器四核心架構(gòu)GPU內(nèi)置獨立NPU強(qiáng)大的視頻編解碼
迅為iTOP-RK3588S開發(fā)板/核心板6TOPS的NPU算力視頻編解碼8K編碼+8K解碼
Banana Pi開源社區(qū)基于瑞芯微RK3588開發(fā)板,DeepSeek開發(fā)利器
Banana Pi開源社區(qū)基于瑞芯微RK3588開發(fā)板,DeepSeek開發(fā)利器

評論