王偉杰,姚建濤,張敏燕,王 敏
(四川工商學(xué)院 計(jì)算機(jī)學(xué)院,成都 611745)
隨著國家對(duì)環(huán)境問題的重視,以及環(huán)保意識(shí)逐漸深入人心,垃圾分類的理念也逐漸步入人們的視野。然而對(duì)于垃圾分類存在的問題,也急需得到解決。目前市面上清理垃圾的機(jī)器人主要分為兩類:一是家用的掃地機(jī)器人,二是大型的垃圾分揀機(jī)器人。前者依靠紅外線或者超聲波進(jìn)行避障和充電,只能清掃垃圾,沒有分類功能;后者成本太高,只適用于大型的垃圾回收站?;谶@些問題,本文設(shè)計(jì)完成了一款基于圖像識(shí)別的垃圾回收和計(jì)算機(jī)視覺智能充電機(jī)器人,既能識(shí)別和分類回收垃圾,智能避障,也能實(shí)現(xiàn)自動(dòng)充電。
由于人們對(duì)環(huán)境問題越來越重視,盡快解決垃圾分類的話題已被提到議事日程。國家為解決環(huán)境問題頒布了一些法律支持,上海市已于2019 年1 月31 日率先通過了《上海市生活垃圾管理?xiàng)l例》,垃圾分類第一次被寫入法律。目前中國的垃圾分類回收處理主要面臨如下問題:前期垃圾分類阻力大、中期垃圾分類處置不合理、后期生活垃圾處理不夠科學(xué)[1]。中國的全民垃圾分類目前還處于推廣階段,居民垃圾分類意識(shí)不強(qiáng),很多城市依然采用混合收集方式,這給垃圾處理的中期和后期帶來不便。垃圾處理的中期是垃圾中轉(zhuǎn)站對(duì)垃圾進(jìn)行進(jìn)一步分類,大部分地區(qū)沒有出臺(tái)強(qiáng)制性的垃圾分類政策,一部分地區(qū)的垃圾中轉(zhuǎn)站并沒有對(duì)回收的垃圾進(jìn)行分類和再利用。國內(nèi)市場上還沒有一款針對(duì)前期垃圾分類的智能產(chǎn)品,垃圾分類依然需要居民手動(dòng)分類。
人們生活水平的提高,生活垃圾種類也在不斷增加,但市場上還沒有適用于家庭和公共場所的人工智能垃圾回收機(jī)器人。目前國內(nèi)市場上垃圾清理機(jī)器人技術(shù)主要有:激光雷達(dá)的傳輸和感應(yīng)技術(shù),通過光的折射或者反射對(duì)不同的垃圾進(jìn)行數(shù)據(jù)的返回,根據(jù)射程的距離來實(shí)現(xiàn)垃圾分類。而人工智能的出現(xiàn)在增加傳統(tǒng)掃地機(jī)器人功能的同時(shí),也打破了機(jī)器人依靠多個(gè)傳感器才能運(yùn)行的傳統(tǒng)模式。
經(jīng)調(diào)研分析,智能垃圾分類機(jī)器人的主要功能包括以下幾部分:
(1)垃圾識(shí)別。機(jī)器人會(huì)將視覺信息通過樹莓派發(fā)送給服務(wù)器,GPU 服務(wù)器會(huì)將處理后的目標(biāo)信息(包括垃圾的類型和位置)返回給機(jī)器人。
(2)拾取垃圾并分類。樹莓派會(huì)根據(jù)服務(wù)器返回的目標(biāo)信息執(zhí)行相應(yīng)的命令控制機(jī)械臂夾取垃圾,并將其放入到相應(yīng)的垃圾桶中。
(3)智能充電。當(dāng)機(jī)器人的電量低于一定的值時(shí),機(jī)器人將會(huì)通過攝像頭自動(dòng)檢測周圍是否有插座,當(dāng)識(shí)別到插座時(shí),機(jī)器人會(huì)通過機(jī)械臂將充電插頭插入到插座中。
系統(tǒng)用到的硬件設(shè)備主要包含:攝像頭、機(jī)械臂(含機(jī)械臂驅(qū)動(dòng)模塊)、電機(jī)(含電機(jī)驅(qū)動(dòng)塊)、樹莓派、電池、底座(含履帶)等。硬件結(jié)構(gòu)如圖1 所示。
圖1 硬件結(jié)構(gòu)圖Fig.1 Hardware structure diagram
其中:攝像頭采用的是1080p 高清usb 工業(yè)攝像頭;機(jī)械臂驅(qū)動(dòng)模塊采用插卡式設(shè)計(jì),系統(tǒng)采用STM32 控制板,支持PC 圖形化、代碼編程以及脫機(jī)運(yùn)行,提供正運(yùn)動(dòng)學(xué)分析和逆運(yùn)動(dòng)學(xué)分析;電機(jī)驅(qū)動(dòng)模塊開關(guān)頻率高,可有效避免調(diào)試電機(jī)頻率低帶來的問題;樹莓派使用的是Raspberry pi 3 Model B+,板卡配備64 位的1.4GHz 四核ARM Cortex-A53 處理器,該設(shè)備的雙頻無線局域網(wǎng)具有模塊化的兼容性;系統(tǒng)使用鋁電池,主要為機(jī)械臂舵機(jī)、小車電機(jī)、以及樹莓派供電;電機(jī)型號(hào)為985 低速版,額定轉(zhuǎn)速為12 V 3 000 r/min;機(jī)械臂由合金機(jī)械爪、6 個(gè)數(shù)字舵機(jī)(包含3 個(gè)防燒防堵轉(zhuǎn)舵機(jī))、全金屬旋轉(zhuǎn)底盤以及若干鋁合金支架構(gòu)成。
軟件架構(gòu)如圖3 所示。它主要有二種模式,即垃圾識(shí)別分類模式和智能充電模式,默認(rèn)模式為垃圾識(shí)別分類模式。通過將攝像頭獲取的視覺信息傳輸給樹莓派,再由樹莓派傳輸給系統(tǒng)后端,后端GPU 服務(wù)器將會(huì)對(duì)該視覺信息進(jìn)行處理,并將目標(biāo)的位置信息和類別信息傳輸給樹莓派。樹莓派執(zhí)行相應(yīng)指令,調(diào)整攝像頭的位置(攝像頭在機(jī)械臂上),同時(shí)驅(qū)動(dòng)電機(jī)靠近目標(biāo),直到調(diào)整到合適的位置,樹莓派才會(huì)給機(jī)械臂驅(qū)動(dòng)模塊發(fā)送夾取的命令,機(jī)械臂根據(jù)對(duì)應(yīng)目標(biāo)類別信息放入到自帶的對(duì)應(yīng)垃圾桶中。并且會(huì)再次判斷目標(biāo)是否夾取成功,若失敗將再次調(diào)整機(jī)器人與目標(biāo)之間的位置。如果多次夾取失敗,樹莓派會(huì)將其相關(guān)信息發(fā)送給服務(wù)器,研究人員會(huì)對(duì)其進(jìn)行分析和做相關(guān)處理。
智能充電的原理與垃圾識(shí)別分類的原理相似。當(dāng)電池電量下降到相應(yīng)值時(shí)(第一閾值),樹莓派自動(dòng)將模式切換為智能充電模式。該模式下機(jī)器人會(huì)自動(dòng)尋找插座,當(dāng)機(jī)器人識(shí)別到插座時(shí),樹莓派會(huì)執(zhí)行相應(yīng)命令調(diào)整攝像頭,并驅(qū)動(dòng)電機(jī)靠近插座,機(jī)械臂再將機(jī)器人充電器夾起,并調(diào)整機(jī)械臂位置,直到充電器插入插座。樹莓派會(huì)判斷該插座是否有電,如無電,則取出充電器尋找其他的插座。若電量低于第二閾值時(shí),此時(shí)機(jī)器人的電量已經(jīng)不夠其完成自動(dòng)充電,機(jī)器人會(huì)停留在原地給后端發(fā)送位置坐標(biāo),以便相關(guān)人員能夠找到。軟件邏輯關(guān)系如圖2所示。
圖2 軟件邏輯圖Fig.2 Software logic diagram
2.4.1 Yolov4 目標(biāo)檢測算法概述
Yolov4[2]是Yolov3[3]的改進(jìn)版,無論在精度還是速度上Yolov4 都碾壓了Yolov3。YoLov4 原文作者在論文中提到,在進(jìn)行bounding box regression 時(shí),傳統(tǒng)的目標(biāo)檢測算法(如Yolov3)都是根據(jù)預(yù)測框和真實(shí)框的中心點(diǎn)坐標(biāo),以及寬高信息設(shè)定MSE(均方誤差)損失函數(shù),Yolov3 的總損失函數(shù)公式如式(1):
MSE 損失函數(shù)包括3 個(gè)部分:即預(yù)測框的位置損失、預(yù)測框預(yù)測的類別損失和預(yù)測框置信度損失。MSE 損失函數(shù)將檢測框中心點(diǎn)坐標(biāo)和寬高等信息作為獨(dú)立的變量對(duì)待,但實(shí)際上這些信息之間是有聯(lián)系的。因此,Yolov4 的作者將MSE 替換為CIOU(Complete-IoU)。CIOU 考慮到3 個(gè)幾何因素,即重疊面積、中心點(diǎn)距離和長寬比。CIoU 的懲罰項(xiàng)是在DIoU 的懲罰項(xiàng)基礎(chǔ)上加了影響因子α和ν,這個(gè)因子把預(yù)測框長寬比擬合目標(biāo)框的長寬比考慮進(jìn)去。其中α是用做trade-off 的參數(shù),v是用來衡量長寬比一致性的參數(shù)[4],具體公式如式(2)、式(3):
其中,ωgt和hgt為真實(shí)框的寬和高,ω和h為預(yù)測框的寬和高。如果真實(shí)框和預(yù)測框的寬和高一樣,則v為0,即該懲罰項(xiàng)失效。其次Yolov4 將DarknetConv2D 的激活函數(shù)由ReLU 修改成了Mish,如公式(4):
相比ReLU 激活函數(shù),Mish 激活函數(shù)的輸出更為平滑,而平滑的激活函數(shù)可以讓更好的信息進(jìn)入神經(jīng)網(wǎng)絡(luò),從而使模型得到更好的泛化能力,避免過擬合。其次,是將resblock_body 的結(jié)構(gòu)進(jìn)行了修改,運(yùn)用了CSPnet 結(jié)構(gòu)。運(yùn)用這種結(jié)構(gòu)的作用是在降低計(jì)算量的同時(shí)增加模型的精準(zhǔn)度,CSPnet 結(jié)構(gòu)如圖3 所示。
圖3 CSPnet 結(jié)構(gòu)Fig.3 CSPnet structure
Yolov4 采用了PANet(用于實(shí)例分割的路徑聚合網(wǎng)絡(luò))[5]的結(jié)構(gòu),將低層與高層的特征進(jìn)行融合,提高目標(biāo)檢測的精度,尤其是對(duì)小目標(biāo)識(shí)別的精度。PANet 總體上是Mask-Rcnn 的改進(jìn)版[6],整體思路為提高信息流在網(wǎng)絡(luò)中的傳輸速度。其主要在3 方面進(jìn)行了改進(jìn):
(1)提出了Bottom-up Path Augmentation,它能提高底層特征信息的利用率,加快底層特征信息的傳輸效率;
(2)提出了Adaptive Feature Pooling,在提高特征提取速度的同時(shí)也保證了特性信息的利用率;
(3)提出了Fully-connected Fusion,提高了mask 的生成質(zhì)量。
為解決小目標(biāo)檢測準(zhǔn)確度低的問題,Yolov4 作者在其算法中引入了馬賽克數(shù)據(jù)增強(qiáng)算法。其原理是從數(shù)據(jù)集中每次讀取4 張圖片,然后對(duì)這4 張圖片進(jìn)行翻轉(zhuǎn)、縮放、色域變化等,如圖4 所示。最后將其組合在一起,如圖5 所示。
圖4 圖片的翻轉(zhuǎn)、縮放、色域變化Fig.4 Flip,zoom,gamut change
圖5 圖片的拼接結(jié)果Fig.5 The Mosaic result of the picture
2.4.2 目標(biāo)檢測實(shí)現(xiàn)
本文基于Yolov4 實(shí)現(xiàn)目標(biāo)檢測,Yolo Head 會(huì)根據(jù)前面提取的特征層進(jìn)行預(yù)測,不斷調(diào)整先驗(yàn)框的大小和位置,使其生成最后的預(yù)測框。經(jīng)過主干網(wǎng)絡(luò)的特征提取,可以得到shape 為(N,52,52,255)、(N,26,26,255)和(N,13,13,255)的特征層,而每個(gè)特征層上會(huì)有3 個(gè)預(yù)設(shè)好的anchor box,總共會(huì)聚類9 個(gè)anchor box。對(duì)于輸入圖片為416x416時(shí),在13x13 的特征圖中由于其感受野最廣,適合檢測大目標(biāo),所以分配最大的 anchor box,即(116x90)、(156x198)、(373x326)。在26x26 的特征圖中,它的感受野處于中等水平,適合檢測中等大小的目標(biāo),所以分配中等大的anchor box,即(30x61),(62x45),(59x119)。在52x52 的特征圖中,感受野最小,適合檢測小目標(biāo),所以分配最小的anchor box,即(10x13),(16x30),(33x23)。邊框預(yù)測公式為式(5)~式(8):
通過上面的公式可以得到邊界框相對(duì)于特征映射的位置和大小,但網(wǎng)絡(luò)實(shí)際學(xué)習(xí)的目標(biāo)是tx、ty、tw、th 這4 個(gè)參數(shù)。由于Yolov4 的輸出是一個(gè)卷積特征圖,其中包含了特征圖深度的邊界框?qū)傩?,而邊界框的屬性又由彼此堆疊的單元格測出,這種格式對(duì)輸出值的處理很不方便。
其中tx和ty是預(yù)測的坐標(biāo)偏移值,tw和th是尺度縮放,根據(jù)前面的公式可以求出真實(shí)的預(yù)測框坐標(biāo)。求tx,ty,tw,th的公式如式(9)~式(12):
每張?zhí)卣鲌D上有3 個(gè)先驗(yàn)框,具體哪個(gè)先驗(yàn)框預(yù)測目標(biāo),需要在訓(xùn)練中確定,即由IOU 最大的先驗(yàn)框來預(yù)測,而其余的兩個(gè)先驗(yàn)框不會(huì)和ground truth 匹配。最后根據(jù)得到的tx,ty,tw,th來對(duì)先驗(yàn)框進(jìn)行微調(diào),使其與ground truth 重合,得到最后的預(yù)測框。
首先收集圖片,使用Python 程序?qū)⑺袌D片重命名,使用Labelimg 給每個(gè)圖片的object 打上標(biāo)簽,生成的目標(biāo)信息保存于對(duì)應(yīng)的”.XML”文件里。本研究采用的是VOC 格式的數(shù)據(jù)集,訓(xùn)練前將“.jpg”文件放在VOC2007 文件夾中的JPEGlmages 目錄,標(biāo)簽文件放在VOC2007 中的Annotation 目錄中。在VOC2007 目錄中運(yùn)行test.py,會(huì)生成4 個(gè).txt 文件,即train.txt、val.txt、test.txt 和trainval.txt。修改voc_label.py 中的相關(guān)參數(shù)(sets 和classess)的值,然后運(yùn)行該代碼,會(huì)生成3 個(gè)文件2007_train.txt、2007_val.txt、2007_test.txt,并在VOC2007 中生成一個(gè)labels 文件夾。
上述生成的labels 文件夾中txt 文件,是訓(xùn)練真正用到的數(shù)據(jù)集,其中存放每張圖片的絕對(duì)路徑和真實(shí)框的位置。訓(xùn)練的命令也比較簡單:./darknet detector train cfg/obj.data cfg/yolo-obj.cfg yolov4.conv.137。當(dāng)神經(jīng)網(wǎng)絡(luò)的loss 值幾乎不變時(shí),則可停止訓(xùn)練。
實(shí)驗(yàn)使用2 500 張圖片來測試模型的精度,具體數(shù)據(jù)見表1。
表1 模型測試精度表Tab.1 Model test accuracy table
從表中可以看出,模型對(duì)插座的識(shí)別精度最高,對(duì)干垃圾的識(shí)別精度最低??赡苁沁x取干垃圾的訓(xùn)練圖片特征不太明顯或圖片量太少而導(dǎo)致模型對(duì)該類別的收斂不及其它類別。因此,可以尋找特征更為明顯的干垃圾圖片,加入到訓(xùn)練集中,這樣其識(shí)別精度應(yīng)該會(huì)有所提高。另外,本模型的平均精度為86.06%,能識(shí)別的垃圾種類很少,離理想的模型還是有一定的距離,需擴(kuò)充訓(xùn)練集圖片的數(shù)量和種類,優(yōu)化識(shí)別算法,使模型更加完善。
本研究是基于Yolov4 目標(biāo)檢測算法,將圖像信息傳輸給樹莓派,再由樹莓派傳輸給服務(wù)器,服務(wù)器會(huì)根據(jù)相應(yīng)算法進(jìn)行處理后,將處理的數(shù)據(jù)傳回到樹莓派中。機(jī)器人通過芯片的返回?cái)?shù)據(jù)執(zhí)行相應(yīng)的操作,將垃圾進(jìn)行分類。自動(dòng)充電和自動(dòng)避障也是相同的原理來實(shí)現(xiàn)的。該機(jī)器人獲取外界信息靠的是攝像頭,而非各種傳感器,這種設(shè)計(jì)不僅能減輕機(jī)器人的質(zhì)量,提升機(jī)器人的靈活性,也大大減少了使用其它傳感器產(chǎn)生的費(fèi)用。