王文勝1* 年誠旭1 張 超1 閻如鵬2 吳鑫全1 張歆博1
(1.北京信息科技大學 機電工程學院 北京 100192;2.北京信息科技大學 自動化學院 北京 100192)
隨著機器視覺技術的不斷發(fā)展,通過視覺方式進行信息處理變得越來越普遍,利用視覺進行目標識別就是其中一個重要應用。垃圾分類是近幾年國家大力倡導推廣并實施的一項環(huán)保重要舉措,借助機器視覺進行自動垃圾分類是一項具有價值的前沿研究。目前垃圾分類已貫徹多年,但仍有部分人群不習慣進行垃圾分類投放,主要原因有以下幾點:1)對垃圾分類認知模糊,不清楚該如何分類;2)垃圾分類投放耗時耗力。非住宅區(qū)的公共場所是指如公交車站、地鐵站、火車站、校園戶外、體育場、體育館等地,垃圾投放量小,區(qū)別于住宅區(qū)內的大型垃圾箱。兩者的區(qū)別在于住宅區(qū)垃圾大多為人們日常生活產生的垃圾,垃圾量大,且多為整袋投放,或者一堆垃圾一起投放,難以實現垃圾自動分類。而小場景下的垃圾產生大多是行人臨時產生的少量垃圾,如零食包裝、礦泉水瓶、廢紙等,多為單一投放,且單人投放量較少。
目前智能垃圾箱有多種形式,主要分為聲控方式和視覺方式2類。聲控方式需要投放者對著垃圾箱說出垃圾的名稱,垃圾箱判定該垃圾所屬類別后打開相應垃圾箱,完成投放,如馬浚剛等設計了一種基于STM32單片機的語音識別智能垃圾箱,利用語音識別模塊ASR-MO8B、語音播報模塊WT2003S-16和sG90模擬舵機實現垃圾箱的智能化聲音識別,并且能語音控制對應垃圾箱垃圾蓋的自動開閉;趙小芬基于語音識別算法,并將其應用于垃圾分類,開發(fā)了一種軟硬件結合的嵌入式智能垃圾箱。基于視覺方式主要是采用目標檢測識別的方法進行垃圾識別和分類,識別過程主要包括圖像預處理,特征提取和分類3個步驟,依據特征提取方式可分為傳統(tǒng)機器學習方法和深度學習方法。傳統(tǒng)機器學習方法是針對圖像提取其特征并進行匹配篩選,確定目標種類,如黃浩然對采集到的垃圾圖像提取Hu不變矩和12個顏色空間特征作為特征向量,對比特征向量之間的相似性來確定垃圾種類;黃興華等通過改進局部二值模式(LBP)紋理特征算法,結合梯度方向直方圖(HOG)算法,提出一種新的特征融合方法,并利用支持向量機(SVM)進行垃圾分類識別; Irfan等采用Haar-Cascade方法檢測地板上的物體并將灰度共生矩陣(GLCM)和定向梯度直方圖(HOG)結合起來得到1組特征,利用支持向量機( SVM)將物體進行垃圾分類。深度學習法垃圾分類是利用近年來較流行的深度學習模型進行垃圾識別,如 Wang等提出的通過使用區(qū)域提議網絡和 ResNet 網絡算法訓練Faster R-CNN開源框架,再通過 RPN(區(qū)域提議網絡)層得到輸出; Kumar等研究了YOLO v3算法在Darknet神經網絡框架中用于訓練自制數據集,針對6種對象類別(紙板﹑玻璃、金屬、紙張﹑塑料和有機廢物)進行了訓練,使用YOLO v3-tiny執(zhí)行了檢測任務,以驗證YOLO v3算法的能力,結果表明:所提出的YOLO v3方法對具有一定的泛化能力。還有部分學者也進行了相關研究。
本設計不僅實現了垃圾識別軟件程序設計,還在Jetson nano 平臺下實現了識別算法的嵌入式硬件化,同時配合機械結構設計,完成了實際應用的自動分類垃圾箱的設計。軟件部分采用最新深度學習算法模型YOLO v5進行垃圾識別,識別結果通過串口通信發(fā)送至Arduino控制板中,由 Arduino控制板控制旋轉舵機的運動以及翻轉舵機運動,從而實現垃圾自動分類投放。
摘要:提出了一種基于YOLO v5模型的自動垃圾分類箱設計,應用于非住宅區(qū)的公共場所(如火車站、公交站、商場、校園等)。垃圾箱設計有4個垃圾桶,以2行2列擺放,中間為轉軸,可帶動軸上方的垃圾臨時存儲抽屜轉動。采用單目攝像頭采集視頻圖像,以英偉達Jetson mano嵌入式芯片作為上位機主控芯片,利用YOLO v5深度學習模型進行垃圾的自動提取與識別,并將上位機識別結果信息通過串口發(fā)送至下位機 Arduino控制板,Arduino控制板控制舵機帶動垃圾臨時儲存抽屜開口轉動到相應的垃圾桶上方,從而控制升降臺傾倒垃圾,完成垃圾自動分類。測試結果表明:垃圾識別結果穩(wěn)定可靠,準確率可達到93% ,能夠實現垃圾自動分類。
本設計的系統(tǒng)總框架設計流程如圖1所示,系統(tǒng)由PC機、Jetson Nano 與Arduino 組成。首先通過PC機收集垃圾分類數據集,對數據集進行預處理和訓練,訓練采用YOLO v5算法模型,得到權重與訓練結并分析。將權重放入Jetson Nano嵌入式設備中,攝像頭實時采集圖片,Jetson Nano通過訓練處理的權重進行垃圾分類識別,并將識別結果發(fā)送至Arduino控制板中,Arduino控制板根據信號類別控制大舵機旋轉,將垃圾臨時存放抽屜的口轉到對應的垃圾桶上方,控制翻轉舵機翻轉,實現垃圾傾倒,完成垃圾投放。識別與控制過程流程圖如圖2所示,實物圖如圖3所示。垃圾桶由4個小垃圾箱⒉排⒉列組成,其中有害垃圾箱較小,下方空余空間用于安置下位機控制電路。在裝置上方高度為150 mm處安裝1個小平臺用于放置識別垃圾種類的攝像頭。垃圾投放至抽屜狀的投放裝置內,其底部配有旋轉舵機,可實現360°旋轉。當攝像頭完成垃圾識別,舵機帶動投放裝置旋轉至相應垃圾桶箱位置,裝置內投放舵機帶動其內四連桿裝置將垃圾翻入垃圾桶實現垃圾投放。將4個垃圾桶進行編號,廚余垃圾、可回收垃圾、有害垃圾和其他垃圾對應編號分別為0、1、2、3 ,垃圾投放裝置起始位置對應0號垃圾桶。當視覺模塊輸出信號為0時,表示垃圾為廚余垃圾,單片機無需控制投放裝置旋轉,直接進行投放即可;當視覺模塊輸出信號為1時,表示垃圾為可回收垃圾,投放裝置需要延導軌順時針旋轉90°再進行投放,依次類推。
下位機硬件電路設計如圖4所示,Arduino 工作電壓一般為3~5 V,符合Led指示燈和4個紅外發(fā)射器的電壓要求,故可直接將該5個器件連接在引腳與CND之間,實現開關控制。LED正極連接Arduino 6號引腳,紅外發(fā)射器1、2、3、4的正極分別連接Arduino的 11、12、8、7號引腳。同理,2個舵機通過Arduino的+5V和 GND形成回路進行供電。2個舵機均通過PWM信號控制,對應Arduino 10號引腳和9號引腳,通過不同的占空比轉動對應的角度,實現了云臺及翻斗的精準控制。4個光電傳感器供電原理同上,RX引腳分別連接Arduino 的5、4、3、2引腳,同時將Arduino 上的這4個引腳定義為輸入模式,實時檢測垃圾桶的裝載狀態(tài)。
從圖4中可知:電路系統(tǒng)一共包括3個模塊,分別為光電傳感器與紅外發(fā)射器模塊、舵機模塊、Led提示模塊:
1)光電傳感器與紅外發(fā)射器模塊。
用于檢測垃圾桶是否已滿。采用4個光電傳感器與紅外發(fā)射器組,分別對應4個垃圾桶,將該模塊安裝在垃圾桶高約75%位置,將每個紅外發(fā)射器對準光電傳感器,當垃圾遮擋傳感器時,會產生數字電平信號或模擬電壓信號(本垃圾桶采用數字電平信號) ,芯片檢測該電信號,能夠方便地實現滿載報警功能。
2) Led滿載指示燈模塊。
用于提示用戶垃圾桶是否已滿。檢測到垃圾桶已滿后,向上位機發(fā)送1個已滿信號(4個垃圾桶的已滿信號分別為a , b、 c , d),同時點亮Led燈,作為用戶可見的垃圾桶已滿提示,此時Arduino進入長時間待機狀態(tài),不再接收上位機所傳的數據。待用戶倒完垃圾,初始化(復位)Arduino后,Arduino恢復正常工作, Led 燈常閉。
3)舵機模塊。
用于垃圾投放。舵機模塊由1個180°舵機(小舵機)和1個360°舵機(大舵機)2個舵機組成。大舵機采用磁編碼超大扭矩合金舵機,該舵機為數碼舵機,反應靈敏,行程大,零盲區(qū),可持續(xù)工作,與其他舵機上使用保險絲保護的完全不同,保險絲一旦熔斷,舵機無法繼續(xù)工作,增加了家用垃圾桶的安全性。以脈沖信號為輸人模式,操作簡單,用于對云臺水平旋轉的控制。小舵機采用金屬單雙軸舵機,數字舵機精度高,金屬外殼散熱快,金屬齒輪增強了使用壽命,用于對翻斗的控制。
下位機軟件工作流程如圖5所示。首先啟動Arduino,通過光電傳感器與紅外發(fā)射器模塊判斷垃圾桶是否已滿。若垃圾桶已滿,向上位機發(fā)送已滿信號、點亮Led燈同時進入待機狀態(tài)。若垃圾桶未滿,則Arduino接收上位機信號,信號0、1、2、3分別對應廚余垃圾、可回收垃圾、有害垃圾、其他垃圾,Arduino與上位機Jetson Nano 之間的通信通過ASCII碼傳輸,對應接收到的值為48、49、50、51 ,通過對這4個值的判斷,來控制舵機模塊準確將垃圾投進對應的垃圾箱。大舵機對應不同種類垃圾,0號垃圾桶逆時針旋轉45°,1號垃圾桶順時針旋轉45°,2號垃圾桶順時針旋轉135°,3號垃圾桶逆時針旋轉135°,從而將云臺對準相應的垃圾桶,之后小舵機旋轉30°將翻斗抬起,將垃圾準確迅速地投入垃圾桶。2個動作完成后,2個舵機分別回到初始0°狀態(tài)。投放完畢后﹐翻斗、云臺分別回正,同時檢測垃圾桶是否已滿,并重復上述步驟。
上位機識別程序利用YOLO v5模型進行垃圾分類識別,采用Jetson Nano作為上位機來運行程序,識別完成后將識別結果通過串口發(fā)送給下位機Arduino ,并進行相關動作。由于垃圾箱內識別區(qū)是相對封閉穩(wěn)定的區(qū)域,光照基本不變、識別背景穩(wěn)定,給高精度識別帶來了便利。
本設計以常見垃圾為例,尤其針對非住宅區(qū)的公共場所(如地鐵站﹑火車站、學校等場所)所產生的垃圾為例進行算法研究,收集的常見垃圾數據,包括食品包裝紙、礦泉水瓶、飲料瓶、易拉罐、塑料盒、電池、水果皮核、干果殼等。每一小類采集了約100張數據,包括不同拍攝角度,不同腐壞程度等,共采集了4000張數據,其中 3500張用于訓練,500張用于測試。再將每小類劃分到廚余垃圾、可回收垃圾、有害垃圾以及其他垃圾中。部分不同垃圾的真實訓練數據集如圖6所示。標注工具采用LabelImg 軟件進行標注,標注過程如圖7所示。
YOLO v5模型的網絡結構圖如圖8所示??芍?網絡分為4個通用模塊,包括Input 、 Blackbone 網絡、Neck 網絡和Outputo。
1 ) Input:采用Mosaic數據增強的方式,以隨機縮放、隨機裁剪、隨機排布的方式對數據進行拼接。在網絡訓練中,網絡在初始錨框的基礎上輸出預測框,進而與真實框groundtruth進行比對,計算兩者差距,再反向更新,迭代網絡參數,達到自適應錨框計算。同時,對原始圖像自適應的添加最少的黑邊,以此減少計算量,提升目標檢測速度。
2 ) Blackbone 網絡:以Focus 結構作為基準網絡,原始圖像輸人到Focus結構中,使用32個卷積核進行切片操作,最終將其變成304×304×32的特征圖,其中應用了CSP1__X 結構。
3 ) Neck 網絡:采用FPN+PAN的結構, FPN自頂向下將高層的特征信息通過上采樣的方式進行傳遞融合,得到進行預測的特征圖。FPN層的后面添加了一個自底向上的特征金字塔,包含2個PAN結構。這樣結合操作,FPN層自頂向下傳達強語義特征,而特征金字塔則自底向上傳達強定位特征,實現從不同的主干層對不同的檢測層進行特征聚合。
4 ) Output:目標檢測的后處理過程中,采用GIOU_Loss做 Bounding box的損失函數,采用加權nms的方式進行極大值抑制來進行目標框的篩選工作。
數據集訓練程序的運行環(huán)境為windows 10系統(tǒng)、cudnn8. 0 、 cuda10.2、顯卡型號為8 GB的 gtx1050、pytorch框架版本為1.7.1。垃圾圖像數據集的訓練過程設置輪數為400輪,將輸入圖像尺寸設置為640 mm×640 mm,同時設置每批訓練數據量為16。訓練完成后,得到訓練結果如圖9所示。
圖9反映了隨著次數增加,訓練指標的變化趨勢。總訓練次數為400輪。其中, GIoU為訓練數據集模型的損失函數;Objectness為目標的損失函數均值,值越小目標檢測越準確;Classification為分類的損失函數均值,值越小目標檢測越準確;Precision表示精度;Recall表示召回率。從圖9可以看出:隨著訓練次數的增加,精度和召回率在不斷升高,最終穩(wěn)定在接近100%的數值附近; f~h前面加了val,表示為驗證數據集的結果;mAP表示mean AveragePrecision , 即平均精度, mAP@ 0.5參數為損失函數設為0.5時,每一類圖片的AP值的平均; mAP@ 0.5 :0.95表示損失函數在步長為0.5、范圍在0.5~0.95閾值下的平均mAP。從圖9中可以看出,當訓練達到80輪左右時, mAP@ 0.5上升到了1.0 , mAP@ 0.5∶0.95上升到了0.7左右,并且隨著訓練輪數的增加不斷提高,最終達到0.8左右,訓練精度較高。
運行成功后部分結果如圖10所示。運行結果中,“廚余垃圾”“可回收垃圾”等標識是識別到的圖像類別,后面的數字表示識別的置信度得分。可以看出,第1行為其他垃圾,主要以零食等塑料包裝袋為主;第2行為可回收垃圾,以易拉罐、礦泉水瓶為主;第3行為廚余垃圾,以水果皮、瓜子皮等為主;第4行為有害垃圾,以電池為主。識別判斷物體最為接近的一類,給出置信度,識別到的置信度得分總體均在0.5以上,處于一個較高的范圍。
將基于YOLO v5算法的垃圾分類識別結果與YOLO v3深度學習算法以及傳統(tǒng)的機器學習算法HOG+SVM對比,結果如表1所示。本研究使用了384種垃圾進行算法的檢測。從表1中可知:YOLO v3深度學習精度低于YOLO v5算法,傳統(tǒng)機器學習的方法HOG+SVM 準確率更低,只有63%。YOLO v5算法檢測結果準確,在數據集豐富的情況下準確率高。本研究對垃圾圖像進行了訓練,準確率可達到93.0% ,因此可用于實際應用。
本研究提出一種基于YOLO v5模型的自動垃圾分類箱設計,應用于非居民生活住宅小區(qū)的公共場所。垃圾箱設計采用機器視覺的方式,設計了視覺模塊、控制模塊和機械模塊,利用攝像頭采集圖像,YOLO v5模型在Jetson nano高性能的嵌入式芯片中運行識別垃圾種類,上位機同時將垃圾識別結果發(fā)送至下位機控制舵機旋轉完成垃圾投放。
本設計立足于國家政策的需求,滿足特定場所的垃圾自動分類需求,方便行人完成垃圾分類。采用最新的深度學習模型YOLO v5進行垃圾分類圖像的訓練和分類識別,高效準確地完成了垃圾的自動分類工作,試驗結果表明本設計垃圾分類準確率可達93% ,基本滿足實際需求。
來源:王文勝,年誠旭,張超,等.基于YOLO v5模型的非住宅區(qū)自動垃圾分類箱設計[J].環(huán)境工程,2022,40(3):159-165.
全文下載鏈接:
https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CJFD&dbname=CJFDLAST2022&filename=HJGC202203024&uniplatform=NZKPT&v=SR_dxCzLMysfMu3zBOjCI96qd8-qDFRfHyM__Meh3F4RXQSUQlbgs6QKc3WT6ul7
作者 | 王文勝、 年誠旭、張 超、閻如鵬、吳鑫全、張歆博