摘要:為了加強生活垃圾分類管理、節(jié)約資源,生活垃圾分類引起了社會高度重視。文章基于YOLOv8深度學習框架進行可回收垃圾識別,隨后將開發(fā)環(huán)境中訓練好的垃圾分類模型,根據生產環(huán)境邊緣側硬件需求進行模型適配,并在邊緣側進行實時垃圾檢測推理,以實現工程化落地應用。文章通過在垃圾分揀生產環(huán)境仿真平臺對本文提出的方法進行驗證。在傳輸軌道上方安裝固定光源及工業(yè)攝像頭,邊緣設備JetSon Nano裝載開發(fā)環(huán)境下訓練好的垃圾分類模型,負責對傳送帶上的垃圾進行實時檢測推理。實驗證明,生產環(huán)境邊緣側進行垃圾檢測推理實時性高,準確率達88%以上,滿足工程應用需求。
關鍵字:深度學習模型;可回收垃圾識別;YOLOv8;邊緣設備JetSonNano
中圖分類號:TP311 文獻標識碼:A
文章編號:1009-3044(2024)17-0029-04 開放科學(資源服務)標識碼(OSID) :
1 研究背景
隨著城市化步伐的加快,生活垃圾的數量急劇增加,通過深度學習技術自動有效地進行垃圾分類可以減少垃圾回收任務中的巨大勞動力。由于人工智能垃圾分揀系統通常在垃圾分揀生產環(huán)節(jié)安裝多個智能檢測設備,實時對傳送帶上的垃圾進行檢測識別,并依據檢測結果通知機械臂進行自動垃圾分揀。
然而,在這樣的生產環(huán)境邊緣側,邊緣設備通常只配置有限的計算資源,無法滿足存儲和運行復雜神經網絡模型的要求。因此,需要借助云計算中心來完成這些任務,但云協同會引發(fā)響應延時和網絡帶寬消耗的增加,并帶來用戶隱私數據泄露等潛在風險[1]。
為了滿足生產環(huán)境邊緣側人工智能項目的部署應用,設計高效、高性能的輕量級神經網絡成為解決問題的關鍵[2]。然而,為了提升模型的準確度,深度神經網絡往往采用更深、更大的架構,這導致了模型參數的顯著增加、存儲需求的上升和計算量的增大[3]。受限于物聯網邊緣設備在計算能力、存儲空間和能源資源方面的局限,深度神經網絡難以被直接部署到這些設備上[3]。因此,需要部署低內存、低計算資源、高準確度且能實時推理的輕量級深度神經網絡到邊緣設備。
為了應對這一重要任務,我們設計和實現一個能夠在生產環(huán)境邊緣設備上實時進行垃圾檢測識別的系統,以實現工程化落地應用。首先,在開發(fā)環(huán)境下,我們在高性能PC服務器上對基于YOLOv8的垃圾模型進行訓練、驗證、評估和測試。隨后,我們將訓練好的模型根據生產環(huán)境邊緣側硬件進行適配,本文系統中所用的是來自英偉達的Jetson Nano邊緣計算盒子。最后,我們將適配后的模型部署在邊緣側硬件終端,實現對垃圾的推理檢測,并將檢測結果作為后續(xù)機械臂進行垃圾分揀的依據,從而在生產環(huán)境邊緣側實現了工程化落地應用。
2 相關技術
2.1 目標檢測
作為計算機視覺最重要的領域之一,隨著深度學習的發(fā)展,目標檢測在過去幾年中取得了巨大進展。目標檢測算法可分為兩類。第一類算法是基于遞歸CNN模型設計的,該模型通過選擇性搜索或CNN網絡產生區(qū)域建議,然后進行分類和重劃分。這些算法準確得多,但效率低下。另一種算法僅使用CNN網絡來直接預測不同目標的類別和位置,其中成功的例子包括YOLO 和SSD。 其中,YOLO (You Only LookOnce)系列模型是一類廣泛應用于目標檢測的深度學習模型,其獨特的特點是端到端地檢測,能夠在一次前向傳播中同時完成目標檢測和定位,具有高效性和準確性的優(yōu)勢[4]。
YOLO是目前比較流行的目標檢測算法,速度快結構簡單,只需要一次CNN運算,提供end-to-end的預測, YOLO算法不斷改進,產生了YOLO9000 算法、YOLOv3、YOLOv5 以及較新的YOLOv8算法。YOLOv3 是有著較大改進,它相對于YOLO 和YOLO9000的改進之處在于采用多尺度檢測和darknet53網絡結構,對象分類用Logistic取代了softmax,在一定程度上緩解了小目標檢測不到的問題以及多個框疊在一起只能畫出一個框的問題。后續(xù)的YOLO 算法都是在此基礎上做不斷地改進和提升。
2.2 YOLOv8模型
YOLOv8 是于2023年1月10日推出的。截至目前,它是計算機視覺領域中用于分類、檢測和分割任務的最先進模型。該模型在精度和執(zhí)行時間方面都優(yōu)于所有已知模型。YOLOv8是YOLO系列模型的最新王者,各種指標全面超越現有對象檢測與實例分割模型,借鑒了YO?LOv5、YOLOv6、YOLOX等模型的設計優(yōu)點,全面提升改進YOLOv5 的模型結構基礎上實現,同時保持了YOLOv5工程化簡潔易用的優(yōu)勢。YOLOv8的特點在于融合了許多實時目標檢測中優(yōu)異的技術,仍然采用了YOLOv5中的CSP(跨階段局部網絡)思想、特征融合方法(PAN-FPN)和SPPF模塊[5]。YOLOv8除了支持姿態(tài)評估以外,通過模型結構的修改還支持了小目標檢測與高分辨率圖像檢測。如圖1所示官方對YO?LOv5和YOLOv8在 COCO Val 2017數據集上訓練的結果對比。每張圖的識別準確性、訓練速度上,YO?LOv8n模型均取得更好的mAP。
YOLOv8主要的創(chuàng)新點包括一個新的骨干網絡、一個新的 Ancher-Free 檢測頭和一個新的損失函數,可以在從 CPU 到 GPU 的各種硬件平臺上運行,具體變化為:
1) 第一個卷積層的 kernel 從 6x6 變成了 3x3。
2) 所有的 C3 模塊換成 C2f,結構如下所示,可以發(fā)現多了更多的跳層連接和額外的 Split 操作去掉了Neck 模塊中的 2 個卷積連接層。
3) Backbone 中 C2f 的 block 數從 3-6-9-3 改成了 3-6-6-3。
4) N/S 和 L/X 兩組模型改了縮放系數。
5) Head 部分變化最大,從原先的耦合頭變成了解耦頭,并且從 YOLOv5 的 Anchor-Based 變成了Anchor-Free,而且不再有之前的 objectness 分支,只有解耦的分類和回歸分支。
基于YOLOv8工程化簡潔易用的優(yōu)勢,本系統采用YOLOv8 對垃圾進行檢測識別。YOLOv8 模型由Backbone、Neck 和 Head 三個關鍵部分構成。Back?bone主要用于提取圖像特征。 Neck 通常由多個卷積層和特定的激活函數組成,可以對提取的特征進行進一步的加工處理。Head 由多個卷積層、激活函數和上采樣等組成,生成檢測目標的位置、類別和置信度等關鍵信息。 Head 模塊的設計和優(yōu)化,對于模型的檢測精度和泛化能力起至關重要的作用[6]。
3 系統框架
本文中設計并實現了一個基于EdgeAI的可回收垃圾檢測與識別系統。如圖2所示,主要由三個部分構建組成:邊緣檢測設備、邊緣AI計算盒子和高性能PC服務器或中央云。
1)高性能PC服務器。由于訓練YOLOv8模型通常需要大量的計算資源,因此有必要求助于高性能PC服務器來訓練圖像分類模型、存儲圖像或視頻數據集。本系統中首先將在高性能PC服務器完成垃圾分類模型的訓練、驗證和評估,生成準確率、性能較好的模型。
2)終端檢測設備。邊緣檢測設備由一臺工業(yè)攝像機構成,用于實時采集垃圾傳送帶上的垃圾圖像,并發(fā)送給邊緣AI計算盒子進行識別。
3)邊緣AI計算盒子。將高性能PC服務器生成的模型,依據邊緣AI計算盒子硬件要求,進行模型適配,轉化為輕量級模型,然后應用該模型在生產環(huán)境邊緣側進行垃圾推理檢測。最后,根據垃圾檢測結果,邊緣AI計算盒子向機械臂發(fā)送控制信號,將垃圾放入其正確的容器中。
4 實驗應用和驗證
4.1 系統準備
1)硬件平臺設備準備。垃圾分揀系統生產環(huán)境仿真平臺硬件設備主要包括終端檢測設備、邊緣AI計算盒子、垃圾傳送帶和分揀機械臂。其中終端檢測設備配備了工業(yè)攝像機、光源。mvubs500c的工業(yè)相機負責使用穩(wěn)定的光源進行傳送帶上垃圾圖像捕獲。邊緣AI 計算盒子 JetsonNano 主要負責垃圾實時推理檢測。2)官網下載YOLOv8預訓練模型。
4.2 數據集準備
我們收集了2 500 多張圖片垃圾圖片,圖像數據示例如圖3所示。隨后,使用LabelImg 標注工具對每張圖片中的垃圾進行標注,分為濕的(wet) 、其他的(other)、有害的(hazardous)和可回收的(re?cycle) ,并進行數據集劃分,其中訓練集包含2 192張圖片,驗證集包含200張圖片,測試集包含108 張圖片。
4.3 模型的訓練和評估
1)模型訓練。我們設定訓練的輪數200,訓練的批次為4。需要新建一個yaml文件用于存儲訓練數據的路徑及模型需要進行檢測的類別。YOLOv8在進行模型訓練時,會讀取該文件的信息,用于進行模型的訓練與驗證。yaml 文件參數修改的具體內容如下:包括對train、val、test三個數據集路徑的修改、分類數和分類標簽值的修改。經過200次訓練后,我們看到各類垃圾的mAP50 都達到了0.85 以上,平均值為0.884,訓練數據的總體準確率高于88%,且每張圖片預處理時間0.9ms,推理時間為2.8ms,性能較好,如圖4 所示。
2)模型評估。在深度學習中,我們通常用損失函數下降的曲線來觀察模型訓練的情況。YOLOv8在訓練時主要包含三個方面的損失:定位損失(box_loss)、分類損失(cls_loss)和動態(tài)特征損失(dfl_loss) 。定位損失box_loss:預測框與標定框之間的誤差,越小定位得越準;分類損失cls_loss:計算錨框與對應的標定分類是否正確,越小分類得越準;動態(tài)特征損失(dfl_loss) :用于回歸預測框與目標框之間距離的損失函數,越小越準。本文在模型訓練結束后,通過可視化損失函數可見模型收斂好,準確率約在85%以上,如圖5所示。
3)模型測試和驗證。在測試集合上對實物圖片進行測試和驗證,在四類垃圾上獲得較好的識別效果,如圖6所示。模型訓練完成后,可以得到一個最佳的訓練結果模型.pt文件,可以使用該文件進行后續(xù)生產環(huán)境邊緣側的推理檢測。
4.4 工程化落地應用
生產環(huán)境邊緣推理測試主要是在英偉達Jetson?Nano邊緣設備上運行。英偉達JetsonNano邊緣設備搭載四核Cortex-A57 處理器,128 核Maxwell GPU 及4GB LPDDR內存,有足夠的AI算力,支持NVIDIA Jet?Pack,其中包括用于深度學習、計算機視覺、GPU計算、多媒體處理、CUDA,cuDNN 和TensorRT 等軟件庫。首先將PC機測試通過模型訓練完成后,我們可以得到一個最佳的訓練結果模型.pt文件。由于深度學習框架中,TensorRT對Pytorch的支持更為友好,因此我們轉換為TensorRT部署文件格式,實現模型優(yōu)化和加速目標,達成更高推理速度。具體先將Pytorch模型文件.pt 模型轉換為權重文件 .wts ,最后轉換為TensorRT引擎文件.engine,JetsonNano邊緣設備中運行的核心命令如下:
1)進入/jetson/yolov8目錄,運行命令“cd /jetson/yo?lov8”和“python3 gen_wts.py yolov8s.pt”,將.pt轉換為.wts;
2)將前面生成的wts文件從/jetson/yolov8復制到jetson/tensorrtx/yolov8里,運行命令“sudo ./yolov8 -s ../yolov8s.wts yolov8s.engine s”生成.engine文件。
本文將JetsonNano 邊緣計算盒子部署到垃圾分揀系統生產仿真平臺,對經由終端設備工業(yè)攝像頭采集的圖像進行實時檢測推理,由于考慮到攝像頭采集圖像頻率和傳送帶速度的協調性問題,如果傳送帶速度慢而攝像頭采集速度快,有可能會重復發(fā)送圖像分類數據,因此添加圖像采集延時功能,如下所示:
#如果圖像已經存在并且允許識別
if show_raw is not None and self.runClassify:#對圖像進行分類
category, cls_name, rate, image = self.yolo.predict(show_raw)
current_time = time.time()
inf = (current_time - self.last_time)
if inf >= self.ui.spb_time.value(): #超過指定的時間間隔
self.ui.lbl_msg.setText(′識別中...′)
if cls_name != ′′ and self.ui.slider_conf.value() <=rate * 100 and inf >= self.ui.spb_time.value():
# 發(fā)MQTT消息
if self.client is not None:
config = self.config[′mqtt′]
try:
self. client. publish(config[′topic′], str(category). en?code(encoding="ascii"))
show_image = ImageQt.ImageQt(image)
self. ui. lbl_classify. setPixmap(QtGui. QPixmap. fro?mImage(show_image))
self.ui.lbl_category.setText(cls_name)
self.ui.lbl_rate.setText("{0:.2f}".format(rate))
self.last_time = current_time
self.ui.lbl_msg.setText(′等待分類...′)
except IOError as err:
print(err)
else:
pass
最后,在垃圾分揀生產環(huán)境仿真平臺邊緣側進行垃圾檢測識別驗證。實驗證明可以實時有效檢測識別傳送帶上的垃圾,并通知分揀小車將垃圾送入相應裝置。邊緣側垃圾檢測識別效果如圖7所示。實驗證明系統檢測速度快,準確性高,滿足工程化應用需要。
5 總結
在本文中,我們基于YOLOv8模型對垃圾圖像進行檢測識別,并將在開發(fā)環(huán)境下訓練好的垃圾分類模型,適配到生產環(huán)境邊緣側JetsonNano硬件中,進行邊緣側實時檢測推理,從而實現人工智能項目的工程化落地應用。系統集成了終端檢測設備、邊緣AI計算盒子和高性能PC機,為處理繁重的計算任務提供了出色的平臺。
參考文獻:
[1] 譚郁松,李恬,張鈺森.面向邊緣智能的神經網絡模型生成與部署研究[J/OL].計算機工程,2024.DOI:10.19678/j.issn.1000-3428.0068554.
[2] 葛道輝,李洪升,張亮,等.輕量級神經網絡架構綜述[J].軟件學報,2020,31(9):2627-2653.
[3] 徐小華,周長兵,等.輕量級深度神經網絡模型適配邊緣智能研究綜述[J].計算機科學,2024(5).
[4] 馬冉,顧宏.基于改進YOLOv8的火災目標檢測系統[J].人工智能與機器人研究,2024(1):56-65.
[5] 雷源毅,朱文球,廖歡.復雜場景下的改進YOLOv8n安全帽佩戴檢測算法[J].軟件工程,2023,26(12):46-51.
[6] 王宏宇,韓笑,宋席發(fā),等.基于YOLOv8的路面病害識別方法研究[J].工業(yè)控制計算機,2024,37(5):98-99,101.
【通聯編輯:光文玲】