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