前 言 本文主要介紹基于創(chuàng)龍科技TL3562-MiniEVM評估板的NPU開發(fā)案例,適用開發(fā)環(huán)境如下。 Windows開發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit 虛擬機:VMware16.2.5 開發(fā)環(huán)境:Ubuntu20.04.6 64bit U-Boot:U-Boot-2017.09 Kernel:Linux-5.10.209 LinuxSDK:rk3562-ubuntu20.04-sdk-[版本號](基于rk3562_linux_release_v1.2.0) 無特殊說明情況下,本文默認使用USB TO UART0作為調(diào)試串口,使用系統(tǒng)啟動卡(Micro SD方式)啟動系統(tǒng),通過路由器與PC機進行網(wǎng)絡(luò)連接,請確保PC機、Ubuntu系統(tǒng)可正常訪問互聯(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ò)推理硬件加速,能夠流暢運行AI算法。主要參數(shù)如下: (1) 支持INT4/INT8/INT16/FP16等; (2) 支持多種框架,如TensorFlow、MXNet、PyTorch、Caffe等; (3) 1TOPS算力。 備注:更多詳細信息請查看“6-開發(fā)參考資料\數(shù)據(jù)手冊\核心板元器件\CPU\”目錄下的文檔。 NPU開發(fā)流程如下: (1) 模型訓練:用戶根據(jù)需求自行訓練模型或使用官方提供的模型; (2) 模型轉(zhuǎn)換:使用RKNN-Toolkit2將預訓練模型轉(zhuǎn)換為RK3562 NPU可使用的RKNN模型; (3) 應(yīng)用開發(fā):基于RKNN API開發(fā)應(yīng)用程序。 圖 1 NPU開發(fā)流程圖 我司提供的NPU開發(fā)案例位于產(chǎn)品資料“4-軟件資料\Demo\platform-demos\”,具體說明如下。關(guān)于RKNN-Toolkit2模型轉(zhuǎn)換API接口說明,可查看yolov5_object_detect案例"tool\rknn-toolkit2\doc\"目錄下的"02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf"文檔。 關(guān)于RKNN API的詳細使用說明,可查看yolov5_object_detect案例"tool\rknn-toolkit2\doc\"目錄下的"04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.0.0beta0_CN.pdf"文檔。 評估板簡介 創(chuàng)龍科技 TL3562-MiniEVM 是一款基于瑞芯微 RK3562J/RK3562 處理器設(shè)計的四核 ARM Cortex-A53 + 單核 ARM Cortex-M0 國產(chǎn)工業(yè)評估板,主頻高達 2.0GHz。評估板由核心板和評估底板組成,核心板 CPU、ROM、RAM、電源、晶振等所有元器件均采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率 100%,評估底板大部分元器件亦采用國產(chǎn)工業(yè)級方案,國產(chǎn)化率約 99%(按元器件數(shù)量占比,數(shù)據(jù)僅供參考)。核心板經(jīng)過專業(yè)的 PCB Layout 和高低溫測試驗證,支持選配屏蔽罩,質(zhì)量穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境要求。 評估板引出 2 路 Ethernet、2 路 USB、Micro SD、UART 等通信接口,同時引出 2 路 M IPI CSI、LVDS LCD、MIPI LCD、HDMI OUT、MIC IN、SPK OUT、HP OUT 多媒體接口,支 持 1080P@60fps H.264 視頻編碼、4K@30fps H.265 視頻解碼。 評估板體積小巧,尺寸為 85x130mm,可作為卡片式電腦使用,且便于產(chǎn)品集成,方便用戶快速進行產(chǎn)品方案評估與技術(shù)預研。 評估板硬件資源圖解 1 評估板硬件資源圖解 2 案例說明 本案例基于RKNN API實現(xiàn)對圖片中目標對象的識別,并將識別結(jié)果以加水印的方式添加至圖像,并保存成圖片文件。案例循環(huán)測試10次,統(tǒng)計出推理的平均處理耗時。 備注:本案例基于瑞芯微官方例程實現(xiàn),進行了目錄的重構(gòu)及編譯的簡化,功能邏輯未進行修改。 程序處理流程圖如下: 圖 2 案例測試 請通過網(wǎng)線將評估板千兆網(wǎng)口ETH0 RGMII連接至路由器。 圖 3 請將案例bin目錄下的所有文件拷貝至評估板文件系統(tǒng)任意目錄下。 圖 4 在可執(zhí)行文件所在目錄,執(zhí)行如下命令,對圖片目標對象進行模型推理。 備注:模型運行的時間會有抖動。 Target# ./yolov5_object_detect yolov5s-640-640_rk3562.rknn car.jpg 圖 5 從輸出信息可知,本案例程序識別出測試圖片包含person、car、bus、truck等對象,運行1次模型耗時為73.843000ms;循環(huán)運行10次模型平均耗時為47.365303ms。 案例程序?qū)y試圖片的目標對象標記成功后將輸出名稱為out.jpg的標記圖片至當前目錄,請將out.jpg文件拷貝至Windows下,并使用PC端相關(guān)軟件對比查看car.jpg與out.jpg,測試結(jié)果如下所示。 圖 6 圖 7 car.jpg 圖 8 out.jpg 從out.jpg圖片可知,案例程序能正確框選出人物、汽車等物體,同時顯示person、car文字標簽和置信度,標記對象的數(shù)量及信息等與程序打印信息一致。 本程序能夠支持識別的目標數(shù)據(jù)集類型說明位于bin目錄下的coco_80_labels_list.txt文件,用戶可根據(jù)相關(guān)目標類型進行測試驗證。 圖 9 案例編譯 將案例src源碼目錄拷貝至Ubuntu工作目錄下,請先確保已參考《Ubuntu系統(tǒng)使用手冊》文檔安裝LinuxSDK。進入源碼目錄,執(zhí)行如下命令配置環(huán)境變量,并修改CMake配置文件CMakeLists.txt,請根據(jù)實際情況修改為LinuxSDK源碼路徑。 Host# source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment Host# vim CMakeLists.txt 圖 10 圖 11 新建一個build目錄,用于存放編譯過程產(chǎn)生的相關(guān)文件。 Host# mkdir -p build 圖 12 進入build目錄,執(zhí)行如下命令進行案例編譯,編譯完成將會在build目錄下生成編譯過程產(chǎn)生的相關(guān)文件,并在src目錄下生成install目錄,該目錄下存放案例相關(guān)文件。Host# cd build Host# cmake ../ Host# make -j8 Host# make install 圖 13 圖 14 build目錄存放編譯過程產(chǎn)生的相關(guān)文件,install目錄存放案例相關(guān)文件,包括測試圖片car.jpg、類別數(shù)據(jù)集coco_80_labels_list.txt、RKNN模型yolov5s-640-640_rk3562.rknn和可執(zhí)行程序yolov5_object_detect等文件,如下圖所示。 圖 15 關(guān)鍵代碼 (1) 加載圖片RGB數(shù)據(jù)。 圖 16 (2) 加載模型并初始化RKNN。圖 17 (3) 前處理,對圖像進行縮放和裁剪以適配模型輸入。圖 18 (4) 設(shè)置模型運行輸入輸出參數(shù),NPU運行模型,獲取模型輸出,統(tǒng)計運行耗時。圖 19 圖20 (6) 使用目標識別結(jié)果給圖片添加水印,并保存為圖片文件。圖 21 圖 22 |