RK3588 邊緣計算應用:文冠果成熟度檢測

60 多年過去了,盡管輝光管已經(jīng)停產(chǎn),有很多工程師仍然對它情有獨鐘。我用 8 塊液晶顯示屏制作了一個擬輝光管時鐘,感受復古元素的美感,表達對過去經(jīng)典的敬意。

文冠果是一種生長于北方的木本油料樹種,其所產(chǎn)的高級木本食用油非常適合長期儲存。目前傳統(tǒng)檢測文冠果的技術相對落后,并且存在人工檢測效率低的問題。香橙派5 Plus主控芯片為RK3588,它是瑞芯微電子推出的一款高性能芯片,該芯片集成了強大的CPU和NPU,提供高達6TOPS的算力,使其在復雜的視覺處理任務中表現(xiàn)卓越,特別適合機器視覺邊緣計算應用。為了深入挖掘RK3588的視覺檢測潛力,我們將其應用于農(nóng)業(yè)領域文冠果的成熟度檢測。這個任務涉及圖像識別中以文冠果為目標的成熟度檢測,通過圖像分析來判斷文冠果的成熟狀態(tài),從而為果農(nóng)提供有價值的信息。

設計方案

首先我們構建了一個文冠果成熟度檢測系統(tǒng),利用 RK3588 的計算能力實現(xiàn)自動化識別,檢測效果如圖 1 所示。系統(tǒng)首先使用攝像頭捕捉文冠果的圖像,然后通過預訓練的深度學習模型對圖像進行分析。模型能夠識別不同成熟度的果實,并根據(jù)成熟度等級提供相應的反饋。當系統(tǒng)識別到果實達到最佳采摘時期時,會發(fā)送通知給果農(nóng),提示果實可以采摘

打開網(wǎng)易新聞 查看精彩圖片

這個任務要求系統(tǒng)能夠從攝像頭圖像中識別文冠果并準確判斷其成熟度。由于一張圖像中可能包含多個不同成熟階段的文冠果,且每個文冠果的大小、形狀和顏色都不相同,因此這一任務融合了圖像分類與位置定位。要求在文冠果成熟度檢測中不僅能夠識別圖中的文冠果,還需要給出每個文冠果的具體位置和成熟度,這比單一的分類任務要復雜得多。Yolo 算法是一種創(chuàng)新的目標檢測方法,其核心特點:一次性檢測、統(tǒng)一的框架以及實時處理能力。因此我們選用了較新的 Yolov8 算法

硬件清單

本文用到的部分硬件清單見附表。

打開網(wǎng)易新聞 查看精彩圖片

制作過程

本系統(tǒng)利用高清攝像頭對文冠果拍攝進行樣本采集,通過 USB 接口傳輸至香橙派 5 Plus 邊緣計算平臺。在香橙派 5 Plus 上,將采集的文冠果圖片數(shù)據(jù)導入部署的 Yolov8 模型上,經(jīng)模型快速訓練推理后,在顯示屏上呈現(xiàn)推理結果。系統(tǒng)流程如圖 2 所示。大家可以掃描目錄頁電子資源二維碼獲取程序文件。

打開網(wǎng)易新聞 查看精彩圖片

第一步:進行文冠果的樣本采集,實地拍攝樣本大于 1000 張。建議使用與實際拍攝時一致的手機、拍攝環(huán)境和拍攝角度,通過對照片進行初步篩選,獲取不同時期的果實照片,如圖 3 所示。

打開網(wǎng)易新聞 查看精彩圖片

第 二 步: 對 采 集 的 文冠 果 數(shù) 據(jù) 進 行 標 注, 安 裝Labelimg進行數(shù)據(jù)集標注。

(1)通過輸入 pip 命令,安裝 Labelimg 標注軟件。

(2)配置 predefined_classes.txt,以便于提高標注的速度。

(3)通過在終端輸入Labelimg 啟 動 軟 件, 單 擊“Open Dir”打開照片所在的文件夾,單擊“ChangeSave Dir”將保存路徑設置為照片的原始路徑,并在 View 菜單中,修改為自動保存模式(Auto Save Mode)。

(4) 我 們 將 文 冠 果 照 片 為 3 類,Immature標簽為未成熟,Ripe 標簽為成熟,可采摘標簽為Bursts。按 W 鍵啟用標注功能,用鼠標畫出矩形方框,對果實進行標注,松開鼠標后,并在彈出的菜單中選擇我們預先設定好的 3 類標簽。重復以上步驟,將所有圖片標注完成就組成了文冠果的數(shù)據(jù)集,標注文冠果數(shù)據(jù)如圖 4 所示。

打開網(wǎng)易新聞 查看精彩圖片

第三步:配置 Yolov8 環(huán)境訓練模型。

(1)安裝 pytorch、ultralytics 等。

(2)分割數(shù)據(jù)集,運行腳本 Split_Dataset.py,按照 8:2 的比例將文冠果數(shù)據(jù)集拆分為訓練集和驗證集,其中訓練集用于訓練 Yolov8 網(wǎng)絡的網(wǎng)絡參數(shù)權值,驗證集用于驗證訓練的參數(shù)權重是否滿足文冠果成熟度的量化要求。

(3) 編 寫 配 置 文 件 train-config.yaml, 及訓 練 腳 本 Yolo-train.py。 然 后 通 過 運 行 python Yolo-train.py 命 令 進 行 訓 練, 等 待 訓 練 結 束,Yolov8 模型訓練結束,如圖 5 所示,展示了 3 種文冠果標簽的訓練結果。

打開網(wǎng)易新聞 查看精彩圖片

第四步:轉化為 RKNN 模型部署至 RK3588。

(1)將 best.pt 文件導出為 ONNX 的通用模型文件,圖 6 所示為 ONNX 模型轉化完畢。

打開網(wǎng)易新聞 查看精彩圖片

(2) 在 Ubuntu 20.04 系 統(tǒng) 中 安 裝 RKNNToolkit2 進行模型轉換的環(huán)境準備工作,再準備所要用到的文件。

(3)使用 convert.py 對 ONNX 模型進行轉換,轉化為 RKNN 模型以方便部署。

(4)在香橙派板端利用 rknn-toolkit2-lite 的Python API 板端推理模型,通過運行 Yolov8.py進行模型推理。模型推理部分結果如圖 7 所示。

打開網(wǎng)易新聞 查看精彩圖片

實驗訓練

在數(shù)據(jù)集的準備過程中,我們需要將文件的圖片隨機分配到 train(訓練集)和 val(驗證集)兩個文件夾中,用于模型的訓練和驗證。首先設置數(shù)據(jù)集劃分的比例,訓練集占 80%,驗證集占 20%。然后遍歷數(shù)據(jù)集文件夾下的所有圖像和對應的標注文件,并根據(jù)設定的比例隨機分配到訓練集和驗證集。最后將圖像和標注文件移動到目標文件夾中,確保每個圖像和其對應的標注文件一起被分配。具體實現(xiàn)如程序 1 所示。

打開網(wǎng)易新聞 查看精彩圖片
打開網(wǎng)易新聞 查看精彩圖片
打開網(wǎng)易新聞 查看精彩圖片

在模型部署過程中,我們經(jīng)常需要將模型從一種格式轉換為另一種格式,以適應不同的硬件平臺。例如,將 ONNX 格式的模型轉換為 RKNN 格式,以便RK3399Pro、RK1808 等在瑞芯微 NPU 上運行。程序 2 描述了如何將 ONNX 模型轉換為 RKNN 模型,并通過提供的數(shù)據(jù)集來改進模型的量化精度。

打開網(wǎng)易新聞 查看精彩圖片
打開網(wǎng)易新聞 查看精彩圖片

在目標檢測的實際應用中,我們需要加載訓練好的模型,對圖像進行推理和檢測。Yolov8.py 演示了如何加載 Yolov8 模型,并對指定的圖像進行推理,提供了從模型加載、圖像預處理、推理、結果后處理到結果展示的完整流程,幫助我們在不同的平臺上快速部署和驗證模型的性能,簡化后主要的程序如程序 3 所示。

打開網(wǎng)易新聞 查看精彩圖片
打開網(wǎng)易新聞 查看精彩圖片
打開網(wǎng)易新聞 查看精彩圖片

結語

深度學習一定需要很高的專業(yè)水平、很復雜的技術嗎? RK3588 的高性能邊緣計算、廣泛應用、易部署的優(yōu)勢,降低了嵌入式 AI 應用落地的難度。在實際應用中,這樣的系統(tǒng)可以幫助農(nóng)業(yè)生產(chǎn)者更準確地進行收獲決策,優(yōu)化收獲時間和提高整體產(chǎn)量。如果你有一個好玩的基于目標檢測的創(chuàng)意,進行采樣、標記、訓練之后,Yolov8 算法會提供現(xiàn)成訓練環(huán)境,完善的訓練工具,就能為你的興趣和夢想插上一雙翅膀。本項目由沈陽師范大學創(chuàng)新創(chuàng)業(yè)訓練計劃項目資助,申請編號:202407035。