前 言 本文主要介紹基于創(chuàng)龍科技TL3562-MiniEVM評(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.209 LinuxSDK:rk3562-ubuntu20.04-sdk-[版本號(hào)](基于rk3562_linux_release_v1.2.0) 無(wú)特殊說(shuō)明情況下,本文默認(rèn)使用USB TO UART0作為調(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ò)處理器。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-開(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)換為RK3562 NPU可使用的RKNN模型; (3) 應(yīng)用開(kāi)發(fā):基于RKNN API開(kāi)發(fā)應(yīng)用程序。 圖 1 NPU開(kāi)發(fā)流程圖 我司提供的NPU開(kāi)發(fā)案例位于產(chǎn)品資料“4-軟件資料\Demo\platform-demos\”,具體說(shuō)明如下。關(guān)于RKNN-Toolkit2模型轉(zhuǎn)換API接口說(shuō)明,可查看yolov5_object_detect案例"tool\rknn-toolkit2\doc\"目錄下的"02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.0.0beta0_CN.pdf"文檔。 關(guān)于RKNN API的詳細(xì)使用說(shuō)明,可查看yolov5_object_detect案例"tool\rknn-toolkit2\doc\"目錄下的"04_Rockchip_RKNPU_API_Reference_RKNNRT_V2.0.0beta0_CN.pdf"文檔。 評(píng)估板簡(jiǎn)介 創(chuàng)龍科技 TL3562-MiniEVM 是一款基于瑞芯微 RK3562J/RK3562 處理器設(shè)計(jì)的四核 ARM Cortex-A53 + 單核 ARM Cortex-M0 國(guó)產(chǎn)工業(yè)評(píng)估板,主頻高達(dá) 2.0GHz。評(píng)估板由核心板和評(píng)估底板組成,核心板 CPU、ROM、RAM、電源、晶振等所有元器件均采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率 100%,評(píng)估底板大部分元器件亦采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率約 99%(按元器件數(shù)量占比,數(shù)據(jù)僅供參考)。核心板經(jīng)過(guò)專業(yè)的 PCB Layout 和高低溫測(cè)試驗(yàn)證,支持選配屏蔽罩,質(zhì)量穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境要求。 評(píng)估板引出 2 路 Ethernet、2 路 USB、Micro SD、UART 等通信接口,同時(shí)引出 2 路 M IPI CSI、LVDS LCD、MIPI LCD、HDMI OUT、MIC IN、SPK OUT、HP OUT 多媒體接口,支 持 1080P@60fps H.264 視頻編碼、4K@30fps H.265 視頻解碼。 評(píng)估板體積小巧,尺寸為 85x130mm,可作為卡片式電腦使用,且便于產(chǎn)品集成,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。 評(píng)估板硬件資源圖解 1 評(píng)估板硬件資源圖解 2 案例說(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)行修改。 程序處理流程圖如下: 圖 2 案例測(cè)試 請(qǐng)通過(guò)網(wǎng)線將評(píng)估板千兆網(wǎng)口ETH0 RGMII連接至路由器。 圖 3 請(qǐng)將案例bin目錄下的所有文件拷貝至評(píng)估板文件系統(tǒng)任意目錄下。 圖 4 在可執(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 圖 5 從輸出信息可知,本案例程序識(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é)果如下所示。 圖 6 圖 7 car.jpg 圖 8 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)證。 圖 9 案例編譯 將案例src源碼目錄拷貝至Ubuntu工作目錄下,請(qǐng)先確保已參考《Ubuntu系統(tǒng)使用手冊(cè)》文檔安裝LinuxSDK。進(jìn)入源碼目錄,執(zhí)行如下命令配置環(huán)境變量,并修改CMake配置文件CMakeLists.txt,請(qǐng)根據(jù)實(shí)際情況修改為L(zhǎng)inuxSDK源碼路徑。 Host# source /home/tronlong/RK3562/Ubuntu/rk3562-ubuntu20.04-sdk-v1.0/environment Host# vim CMakeLists.txt 圖 10 圖 11 新建一個(gè)build目錄,用于存放編譯過(guò)程產(chǎn)生的相關(guān)文件。 Host# mkdir -p build 圖 12 進(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 圖 13 圖 14 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等文件,如下圖所示。 圖 15 關(guān)鍵代碼 (1) 加載圖片RGB數(shù)據(jù)。 圖 16 (2) 加載模型并初始化RKNN。圖 17 (3) 前處理,對(duì)圖像進(jìn)行縮放和裁剪以適配模型輸入。圖 18 (4) 設(shè)置模型運(yùn)行輸入輸出參數(shù),NPU運(yùn)行模型,獲取模型輸出,統(tǒng)計(jì)運(yùn)行耗時(shí)。圖 19 圖20 (6) 使用目標(biāo)識(shí)別結(jié)果給圖片添加水印,并保存為圖片文件。圖 21 圖 22 |