迅為iTOP-3576開發板采用瑞芯微RK3576高性能、低功耗的應用處理芯片,集成了4個Cortex-A72和4個Cortex-A53核心,以及獨立的NEON協處理器。它適用于ARM PC、邊緣計算、個人移動互聯網設備及其他多媒體產品。
支持INT4/INT8/INT16/FP16/BF16/TF32混合運算,并憑借其強大的兼容性,可以輕松轉換基于TensorFlow、MXNet、PyTorch、Caffe等一系列框架的網絡模型。滿足多種應用場景。
rknn-model-zoo?中提供了當前主流算法部署到?RK SOC?的例程,包含了模型的轉換、模型
的?Python api?推理、模型的?C api?推理,rknn-model-zoo?倉庫在?1.5?小節已經講解了獲取方法,
而由于每個例程的使用都非常相似,所以在本章節只以?deeplabv3?例程為例進行例程演示。
DeepLabv3?是一種用于語義分割的深度學習模型,由?Google?研究團隊在?2017?年提出。它
是?DeepLab?系列模型的第三代產品,相比前兩代模型在準確性和運行效率上都有顯著提升。
5.1 模型下載和模型轉換
不論是模型的?Python api?推理還是模型的?C api?推理都需要將常規模型轉換為?RKNN?模型,
首先進入到?deeplabv3?目錄
在?model?目錄下有著常規模型的下載腳本,如下圖所示:
然后賦予該腳本權限并運行該腳本,下載?deeplabv3?模型,
下載完成之后,可以看到當前目錄多出來了?deeplab-v3-plus-mobilenet-v2.pb?模型,其他例
程的模型也是通過上述方法進行下載。然后來到?python?目錄下,在?python?目錄下有著模型轉
換的?python?程序?convert.py,
convert.py?程序實際上就是由?rknn-toolkit2?編寫的程序,所以在運行之前必須要確保根據
2.1?小節搭建了?rknn-toolkit2?環境,convert.py?的使用方法如下所示:
可以使用以下命令進行模型轉換,表示將?deeplab?模型轉換為在?RK3576?上運行的量化
RKNN?模型,如下圖所示:
python3 convert.py ../model/deeplab-v3-plus-mobilenet-v2.pb rk3576 i8
在運行的過程中會有一些警告,不影響轉換結果,默認忽略即可,轉換完成會在?model
目錄下生成名為?deeplab-v3-plus-mobilenet-v2.rknn?的?RKNN?模型,
至此,關于?deeplabv3?例程的模型下載和模型轉換就演示完成了,rknn-model-zoo?其他例
程的模型下載和模型轉換步驟相同,模型轉換完成之后,就可以進行推理測試了,rknn-model
-zoo?提供了?rknn-toolkit2 Python API?連板推理和?rknpu2 C API?推理這兩種方式,會在接下來
的小節中對兩種方法進行演示。
5.2 Python API 推理
在每個?rknn-model-zoo?例程文件夾的?python?目錄中除了模型轉換程序還有推理程序,所
使用的也是由?rknn-toolkit2 API?編寫的程序,
而由于?rknn-toolkit2?只能運行在?X86?的?Linux?系統中,所以這里采用的是連板推理的方式,
關于連板推理的演示可以看?2.2.2?小節,在本章節不再進行詳細的介紹,直接進行演示。
首先啟動開發板,這里開發板燒寫的是?ubuntu22?鏡像,使用其他鏡像都可以,燒寫完成
之后,需要先更新?rknn_server?和?librknnrt.so?文件,rknn_server?和?librknnrt.so?分別為?rknn-too
lkit2/rknpu2/runtime/Linux/rknn_server/aarch64/usr/bin?和?rknn-toolkit2/rknpu2/runtime/Linux/li
brknn_api/aarch64?目錄下如下圖所示:
然后將?rknn_server?和?librknnrt.so?拷貝到開發板上,其中?rknn_server?需要拷貝到/usr/bin
目錄下,而?librknnrt.so?要拷貝到/usr/lib?目錄,拷貝完成之后,運行?rknn_server?如下圖所示:
然后確保開發板的?adb?設備連接到了虛擬機?ubuntu,連接成功之后在左側菜單欄中會有一
個手機的圖標,
然后在終端使用“adb devices”命令查看當前連接的?adb?設備,存在?adb?設備表示連接成
功,
而?deeplabv3.py?程序的運行需要?matplotlib?依賴,所以要運行以下命令安裝?matplotlib,如
下圖所示:
pip3 install matplotlib -i https://repo.huaweicloud.com/repository/pypi/simple/
安裝完成之后就可以運行?deeplabv3.py?程序了,deeplabv3.py?程序有三個參數,分別為
--model_path、--target?和--device_id,--model_path?表示?RKNN?模型路徑,--target?表示連接的
開發板?SOC?類型,--device_id?為上面通過“adb devices”獲取到的設備?id,但由于只有一個設
備,所以--device_id?參數可以忽略不寫,所以推理命令如下所示:
運行完成之后,會在當前路徑輸出語義分割之后的圖形?output.png,原圖形和分割之后的
對比圖如下所示:
可以看到小朋友、自行車已經使用了不同的顏色進行了分割,至此對于?Python API?推理就
演示完成了。