繼前幾期電子發燒友用戶為我們帶來了關于HZHY-AI300G的精彩測評后,本期我們再次為大家分享一份新的產品測評。本次測評涵蓋了更多產品性能的細節與實際操作反饋,希望能為廣大愛好者提供新的啟發和參考。以下是完整測評內容,歡迎大家持續關注并積極交流討論!
HZHY-AI300G工業級國產化智盒,采用RK3588工業級芯片組適應-40℃-85℃工業級寬溫網關。
以前測試過其他廠家的RK3568產品,對瑞芯微的工具也比較了解。
項目計劃
此次評測的項目計劃:
1.根據文檔,學習RK3588的AI開發環境和相關的程序框架。
2.利用RKNN框架進行視頻識別的模型構建工作。
3.利用該開發板的接口實現WiFi和RS485傳感器的連接工作,構建工業互聯網關。
4.將所接收到的數據上傳至MQTT服務器平臺。
外觀介紹
周末就拿到了開發板,非常的小巧,和實驗室使用的工業網關做個對比,簡直是美女和野獸的區別。
作為一款在復雜工況中使用的產品,4G模塊還是非常有用的。
文字資料
在合眾恒躍的網站上可以看到基本的資料:RK3588-文檔教程README--ShowDoc
產品的接口非常豐富,包括兩個網口、兩個USB口、一個調試口、一個OTG口、TF卡和SIM卡的接口。
產品還提供了GPIO、2個RS485、1個RS232接口,采用的是插拔式的PCB接線座,非常方便使用。
合眾恒躍在B站上提供了很多學習視頻,這點還是值得稱道的。
內容主要包括:
AI 300G的環境構建和外設測試;
RK3588,包括RKNN開發工具的介紹;
RK35588項目實戰,包括OCR識別、YOLOv8目標識別、人臉識別等。
廠商還提供了Linux入門的教程, 這對新手非常友好。我以前接觸過一些工程師,他們以前有MCU經驗,但是初試學習Linux還是有些困難的。做RK3588的產品的廠商目前很多,合眾恒躍還是給人不錯的第一印象。
例程測試
HZHY-AI300G智能盒默認的系統是Ubuntu,這樣非常方便使用,接上USB鍵盤和鼠標就像使用電腦一樣。
廠商在百度盤中提供了測試例程,今天就來簡單的測試一下。
RTC測試
廠商提供的例程是針對交叉編譯環境的,要在本地編譯,修改修改一下Makefile。
將原來的代碼中的CC注釋掉:
1.#CC=/home/hzhy/HZHY/RK3568/rk356x_
linux_sdk/buildroot/output/rockchip_rk3568/
host/bin/aarch64-buildroot-linux-gnu-gcc
2.CC=/home/hzhy/HZHY/RK3568/
3568_demo/HZ-EVM-RK3568-GCC/bin/aarch64-buildroot-linux-gnu-gcc
3.
4.APP_SRC_DIR = ./src
5.APP_INC_DIR = ./inc
改為:
1.rockchip_rk3568/host/bin/aarch64-
buildroot-linux-gnu-gcc#
2.CC=/home/hzhy/HZHY/RK3568/
3568_demo/HZ-EVM-RK3568-GCC/bin/aarch64-buildroot-linux-gnu-gcc
3.
4.APP_SRC_DIR = ./src
5.APP_INC_DIR = ./inc
然后Make就可以得到可執行文件了。開發板的RTC設備為/dev/rtc或/dev/rtc0。默認的設備訪問權限是只有root用戶可以讀寫,所以使用sudo chmod 666 /dev/rtc將設備修改為人人可以讀寫。然后運行./rtc_demo rtc -r就可以讀出RTC數據了。
UART測試
我在后面會用到RS485,所以也簡單的運行了一下UART的程序程序。
從程序的結果可以看出,系統中有4個USB串口,這是4G模塊所使用的,可以通過串口給模塊發指令,進行上網操作;另外三個串口,ttyS0應該是RS232,而ttyS7和ttyS8應該是RS485接口。后面,我會專門測試串口的使用。
Neuron工業協議網關軟件
Neuron早先是開源軟件,核心部分和MODBUS、MQTT插件都免費?,F在NeuronEx是最新版本,已經不開源了。
1
軟件安裝
Neuron是可以直接用現成的deb軟件包安裝的。廠商提供的x86和ARM架構的不同軟件包。
根據不同版本及架構下載安裝包,例如:
1.wget https://www.emqx.com/zh/downloads/
neuron/2.6.8/neuron-2.6.8-linux-amd64.deb
2.sudo apt install neuron-2.6.8-linux-amd64.deb
安裝后的版本,Neuron 提供了 30 個點(30 個連接和 30 個數據標簽)的免費額度??稍诓话惭b EMQ 許可證的情況下,運行這些商業模塊。超出免費額度后,則必須安裝有效的試用版或官方 EMQ 許可證。
2
軟件運行
3
軟件運行
在南向設備中選擇新建設備,創建一個名為RS485的設備,設備類型選擇Modbus-RTU。
在創建設備的頁面,物理鏈路選擇為Serial,串口設備設置為/dev/ttyS8。
4
創建要監視的數據點位
完成南向插件的添加和配置后,要建立設備與 Neuron 之間的通信,首先應為南向驅動程序添加組和點位。點擊RS485設備,添加一個名為 Data 的數據組 。
點位是分配給一條信息的非分層唯一關鍵字,其中定義了設備中的數據存儲位置和數據操作屬性,還包含有關數據的一些元數據信息,如比例因子、精確度和讀/寫屬性等。我使用的溫濕度傳感器有兩個點位:溫度和濕度。點位將被分配到組中。同一個組的數據以相同的頻率進行采集以及上報。創建好組和點位,即可從數據監控中獲取點位的實時值。
我選用的傳感器是冀歐速傳感器,它的產品采用的是MODBUS協議。MODBUS是一個非常老的協議,1979年成為事實上的國際標準,目前有個國際組織進行維護:The Modbus Organization。
RS485接口產品中使用的是MODBUS over Serial Line協議,或者稱為MODBUS RTU協議,其官方文檔定義:Specification and Implementation Guide for MODBUS over serial line
協議的基本格式非常簡單,有地址域、功能碼、數據和CRC校驗組成。
冀歐速傳感器的查詢命令如下,這里功能碼0x03就是用來查詢數據的。
對數據簡單解釋一下:
濕度數據0x164,就是10進制的356,對應著35.6% RH
溫度數據0xFFDD,就是-35的補碼,對應-3.5℃。
在組列表頁,點擊組名稱進入點位列表頁,添加需要采集的設備點位,包括點位地址,點位屬性,數據類型等。我們添加兩個點位:
溫度:read屬性,INT16類型,地址:1!40001,乘系數值為 0.1
濕度:read屬性,INT16類型,地址:1!40002,乘系數值為 0.1
其中,其中Read屬性用于讀取數據,1 代表 Modbus 模擬器中設置的點位站點號,40001 代表點位寄存器地址,400001是第一個保持寄存器,設備值 * 乘系數 = 顯示值`。
5
數據查看
在南向設備中,可以看到RS485設備的運行狀態。
在數據監控頁面就可以看到溫濕度傳感器傳過來的信息。
至此,我們完成了南向設備的添加工作。
前面介紹了如何在HZHY-AI300G智能盒創建南向設備,有了南向設備就可以實現數據采集,但是還需要建立北向設備才能將數據發送到MQTT服務器上。在介紹北向設備之前,先介紹如何在華為IoTDA平臺上建立設備。
華為IoTDA平臺
華為云設備接入IoTDA指的是設備接入服務(IoT Device Access),是華為云的物聯網平臺提供海量設備連接上云、設備和云端雙向消息通信、批量設備管理、遠程控制和監控、OTA升級、設備聯動規則等能力,并可將設備數據靈活流轉到華為云其他服務,幫助物聯網行業用戶快速完成設備聯網及行業應用集成。
首先進入華為云IoTDA網站:華為云物聯網平臺_華為云IoT平臺_IoT_設備接入-華為云,點擊控制臺按鈕進行登錄。控制臺界面如下圖:
注冊IoTDA實例
在控制臺界面處點擊左上角三條橫線,會出現菜單;
選擇“IoT物聯網”——“設備接入IoTDA”;
在左側欄目中選擇IoTDA實例,在標準版處選擇購買實例;
每位用戶都有一次免費的使用機會,在其中選擇免費單元即可。
創建產品
1.在左欄中選擇 產品→創建產品;
2.填寫產品名稱、協議類型(MQTT)和數據格式(JSON);
3.設備類型選擇調整為“自定義類型”,設備類型隨意填寫;
4.創建完產品進入產品詳情界面,隨后可以為產品定義物模型,添加物模型中的服務,并添加相應的功能屬性。不過Neuron的MQTT插件不支持華為物模型的數據格式,除非專門寫一個北向插件,否則Neuron發送的數據可以被華為云接收處理,但是不能顯示為華為物模型,所以我們省略物模型的構建。
添加設備
選擇左欄中的“設備→所有設備” 注冊新設備,為后面Neuron的數據上傳做準備。
接下來介紹一下如何建立北向應用將采集到的數據發送到華為云物聯網服務器上。
Neuron的北向應用
Neuron 是運行在物聯網邊緣網關硬件上的工業協議網關軟件,通過將來自繁雜多樣工業設備的不同協議類型數據轉換為統一標準的物聯網 MQTT 消息,實現設備與工業物聯網系統之間、設備彼此之間的互聯互通,進行遠程的直接控制和信息獲取。Neuron 支持同時為多個不同通訊協議設備、數十種工業協議進行一站式接入及 MQTT協議轉換。北向插件用于連接到IOT平臺或邊緣流處理引擎,北向插件和南向插件組合使用實現數據采集和數據傳遞。
創建北向節點
在Neuron控制臺創建北向 MQTT 節點,連接并將點位數值上傳到 MQTT Broker,此處是華為IoTDA平臺。
在配置 -> 北向應用,點擊 添加應用 添加 MQTT 客戶端節點:
名稱:此應用節點名稱,例如,HuaweiIoT;
插件:選擇 MQTT 插件。
點擊創建后,將跳轉至應用配置頁面,我們將在這里配置 Neuron 與北向應用建立連接所需的參數。您也可點擊設備卡片上的設備配置圖標進入應用配置界面。
設置MQTT連接參數
點擊應用卡片上的 應用配置 按鍵進入應用配置界面設置 MQTT 連接。
上述參數可以在云平臺的左欄中 “設備→所有設備“,然后選定要使用的設備,進入設備詳情后,選擇”MQTT連接參數:查看” 中找到。我選擇非SSL模式,這里的端口信息一定要選擇1883。如果要使用SSL,則端口為8883,則在服務器和Neuron中都需要配置CA證書。
在Neuron中點擊提交,完成北向應用的配置,應用卡片自動進入 運行中 的工作狀態。如果連接狀態顯示為斷開,請檢查網絡狀態或者MQTT連接參數是否正確。
訂閱南向設備的數據
采集點位是以組為單位進行數據上傳的,訂閱選擇要上傳的點位組。
在設備卡片或設備列,可點擊數據統計圖表查看及應用運行情況、接收和發送的數據情況。
在華為云上查看上傳數據
如果Neuron中設備狀態顯示為已連接,就意味數據被成功發送到華為云上了。
登錄華為云的控制臺,在左欄中點擊“監控運維→在線調試/消息跟蹤→選擇設備” 選中目標設備后返回點擊IoT平臺即可查看到相關日志。
數據也可以導出為Excel文件供進一步分析。數據也可以轉發給華為的數據庫,然后利用數據大屏進行可視化分析。這些內容超出了本次測評的范圍,就不詳細介紹了。前面已經展示了AI300G智能盒轉為工業網關的能力,接下來我們將測試RK3588的NPU推理能力。
首先,需要安裝RKNN相關工具和Python的環境。
安裝RKNN工具
瑞芯微提供的NPU相關工具包括RKNN-Toolkit2、RKNN Toolkit Lite2。
RKNN-Toolkit2是為用戶提供在 PC、 Rockchip NPU平臺上進行模型轉換、 推理和性能評估的開發套件, 用戶通過該工具提供的 Python接口可以便捷地完成以下功能:
1.模型轉換: 支持 Caffe、 TensorFlow、 TensorFlow Lite、 ONNX、 DarkNet、 PyTorch等模型轉為 RKNN模型, 并支持 RKNN模型導入導出, RKNN模型能夠在 Rockchip NPU平臺 上加載使用。
2.量化功能: 支持將浮點模型量化為定點模型, 目前支持的量化方法為非對稱量化( asymmetric_quantized-8及asymmetric_quantized-16) , 并 支 持 混 合 量 化 功 能 。
3.模型推理: 能夠在 PC上模擬 Rockchip NPU運行 RKNN模型并獲取推理結果; 或將 RKNN模型分發到指定的 NPU設備上進行推理并獲取推理結果。
4.性能評估: 將 RKNN模型分發到指定 NPU設備上運行, 以評估模型在實際設備上運行時的性能。
5.內存評估: 評估模型運行時的內存的占用情況。 使用該功能時, 必須將 **RKNN 模型分發 到 NPU設備中運行, 并調用相關接口獲取內存使用信息。
6.量化精度分析: 該功能將給出模型量化前后每一層推理結果與浮點模型推理結果的余弦距離, 以便于分析量化誤差是如何出現的, 為提高量化模型的精度提供思路。
RKNN Toolkit Lite2為 Rockchip NPU平臺提供 Python編程接口,幫助用戶部署 RKNN模型,加速 AI應用的落地。我們在開發板上一般只需要安裝RKNN Toolkit Lite2,而RKNN-Toolkit2通常是安裝在電腦上的。
安裝pip3
AI-300G采用的是Ubuntu系統,默認是安裝了Python 3.8,但是沒有安裝RKNN相關的工具。開發板上沒有pip3,所以需要先安裝一個:
sudo apt install python3-pip
安裝RKNN Toolkit Lite2
然后從https://github.com/airockchip/rknn-toolkit2/tree/master/rknn-toolkit-lite2/packages下載所需要rknn_toolkit_lite2的安裝包,對于我的配置,就是rknn_toolkit_lite2-2.0.0b0-cp38-cp38-linux_aarch64.whl文件。
使用pip進行安裝:
pip install rknn_toolkit_lite2-2.0.0b0-cp38-cp38-linux_aarch64.whl
另外,安裝一下OpenCV,方便進行圖像處理:
pip install -i https://mirror.baidu.com/pypi/simple opencv_contrib_python
安裝RKNPU2運行庫
瑞芯微的NPU運行還需要RKNPU2運行庫支持。首先從https://github.com/airockchip/rknn-toolkit2/tree/master/rknpu2/runtime/Linux下載所需要的RKNN Server和RKNPU2 Runtime庫。注意:不要使用廠商提供的百度盤里面的庫文件,那些文件版本太低了。 瑞芯微的NPU相關工具迭代速度相當快,要注意模型、工具之間的版本匹配。
至此,運行Python NPU推理程序的開發環境就準備好了。環境準備好之后,接下來利用瑞芯微的NPU進行道路視頻中的車輛識別,根據識別到的車輛的數量估計道路的流量情況,實現智慧交通中的流量監控功能。
YOLOv8的RKNN模型
我們使用YOLOv8框架進行目標的檢測。YOLOv8(You Only Look Once version 8)是一個深度學習框架,用于實現實時對象檢測。YOLOv8 繼承了前代模型的優點,并在此基礎上進行了多項改進,包括更復雜的網絡架構、更優化的訓練流程和更強大的特征提取能力。
瑞芯微在其Github倉庫中提供了大量已經優化和測試驗證過的模型,其中就包括YOLOv8:
https://github.com/airockchip/rknn_model
_zoo/blob/main/examples/yolov8/
README.md。
瑞芯微提供的模型是一個優化后的模型,與官方原始模型不同。以yolov8n.onnx為例來展示它們之間的差異。
1、它們輸出信息的對比如下。左邊是官方原始模型的輸出,右邊是優化后的模型輸出。如圖所示,原始模型的輸出被分為三個部分。例如,在輸出集合([1,64,80,80],[1,80,80,80],[1,1,80,80])中,[1,64,80,80]是邊界框的坐標,[1,80,80,80]是對應于80個類別的邊界框置信度,而[1,1,80,80]是80個類別置信度的總和。
請注意,這里的解釋是基于常見目標檢測模型(如YOLO系列)的輸出格式,具體細節(如維度含義)可能因模型版本或實現而異。但一般來說,上述解釋提供了關于YOLO類模型輸出結構的通用理解。
2、以輸出集合([1,64,80,80],[1,80,80,80],[1,1,80,80])為例,瑞芯微在模型中移除了兩個卷積節點之后的子圖,保留了這兩個卷積的輸出([1,64,80,80],[1,80,80,80]),并增加了一個reducesum+clip分支來計算80個類別置信度的總和([1,1,80,80])。
這里的“reducesum”操作通常用于對某個維度上的元素進行求和,而“clip”操作用于限制求和結果的取值范圍,以避免數值溢出或保持數值在特定范圍內。
瑞芯微提供的YOLOv8模型的訓練方法和官方的完全相同,只是在導出的時候做了一些修改,有關導出 RKNPU 適配模型說明請見:https://github.com/airockchip/ultralytics_
yolov8/blob/main/RKOPT_README.zh-CN.md。
程序的部署
YOLOv8程序在RK3588上的部署,我們參考了風箏2100的博文https://blog.csdn.net/weixin_42206548
/article/details/138507491,在此表示感謝。
和RKNN_model_zoo 中的examples 提供的YOLOv8 的相關 demo,該程序有兩點改進:
1.借助rknn-multi-threaded使用多線程推理提高NPU的占用率,參考:
https://blog.csdn.net/2401_84011132/
article/details/137803348
2.優化了Python 后處理部分去除PyTorch 依賴,將后處理耗時從幾百毫秒降低到了幾十毫秒。
在 main.py 文件中,可以修改模型、線程數,還可以修改成實時推理攝像頭。
1.# 推理視頻文件
2.cap = cv2.VideoCapture('./720p60hz.mp4')
3.
4.# 推理實時攝像頭
5.cap = cv2.VideoCapture(0)
6.cap.set(cv2.CAP_PROP_FRAME_
WIDTH,640)cap.set(cv2.CAP_PROP_
FRAME_HEIGHT,480)
程序啟動后會顯示RNKK的相關信息:
1.python3 main.py
2.I RKNN: [1932.433] RKNN Runtime Information, librknnrt version: 2.0.0b0 (35a6907d79@2024-03-24T1014)
3.I RKNN: [1932.433] RKNN Driver Information, version: 0.9.3
4.I RKNN: [1932.434] RKNN Model Information, version: 6, toolkit version: 1.6.0+81f21f4d(compiler version: 1.6.0 (585b3edcf@2023-12-11T0756)), target: RKNPU v2, target platform: rk3588, framework name: ONNX, framework layout: NCHW, model inference type: static_shape
5./rknnModel/yolov8s.rknn done
6.I RKNN: [1932.644] RKNN Runtime Information, librknnrt version: 2.0.0b0 (35a6907d79@2024-03-24T1014)
7.I RKNN: [1932.644] RKNN Driver Information, version: 0.9.3
8.I RKNN: [1932.644] RKNN Model Information, version: 6, toolkit version: 1.6.0+81f21f4d(compiler version: 1.6.0 (585b3edcf@2023-12-11T0756)), target: RKNPU v2, target platform: rk3588, framework name: ONNX, framework layout: NCHW, model inference type: static_shape
9./rknnModel/yolov8s.rknn done
10.I RKNN: [1932.770] RKNN Runtime Information, librknnrt version: 2.0.0b0 (35a6907d79@2024-03-24T1014)
11.I RKNN: [1932.770] RKNN Driver Information, version: 0.9.3
12.I RKNN: [1932.771] RKNN Model Information, version: 6, toolkit version: 1.6.0+81f21f4d(compiler version: 1.6.0 (585b3edcf@2023-12-11T0756)), target: RKNPU v2, target platform: rk3588, framework name: ONNX, framework layout: NCHW, model inference type: static_shape
13../rknnModel/yolov8s.rknn done
流量統計
我們在每幀推理結束后,統計其中"car"、"motorbike "、 "bus"和"truck"對象的數量,作為流量統計的依據。
為了避免上傳到云服務器的數據過多,每30幀上傳一次數據。我的程序已經可以在開發板上實時運行,并顯示車輛檢測結果。
完成了車輛檢測工作,我們將數據通過MQTT協議上傳到華為IoTDA服務器。
華為IoTDA建立產品和設備
華為IoTDA的用法前面已經介紹了,這里就簡單描述一下步驟。先在華為云中創建一個產品。
然后在該產品的物模型中,添加5個屬性,即合計、轎車、卡車、摩托車和客車。
再在產品中創建一個設備用于MQTT接入。
Python程序編寫MQTT客戶端
pip install paho.mqtt程序中使用了paho.mqtt庫,所以先需要安裝該庫文件:
1.pip install paho.mqtt
每30幀發送一次數據到服務器,發送數據的函數定義如下:
運行程序,從華為云的控制臺,我們就可以看到上傳的數據了。
程序下載
完整的程序可以從這里下載:*附件:hzhy-ai300g.zip
說明:其中MQTT的參數被用XXXX代替了,需要用真實的華為云接入參數代替。測試用的720p60hz.mp4和RKNN模型文件太大了,需要的同學請到publish / rknn3588-yolov8 · GitLab (bwbot.org)下載。
至此,我們這次評測就完全結束了,歡迎大家留言提出寶貴的意見。
目前電子發燒友上產品使用測評正在進行中,歡迎大家積極反饋,正是有了你們的支持,我們才能不斷進步,為用戶帶來更加優質的智能產品體驗。
-
芯片
+關注
關注
453文章
50406瀏覽量
421815 -
網關
+關注
關注
9文章
4306瀏覽量
50945 -
工業互聯網
+關注
關注
28文章
4299瀏覽量
94050 -
RK3588
+關注
關注
6文章
312瀏覽量
4224
發布評論請先 登錄
相關推薦
評論