石則斌, 羅雪峰, 王 隱, 聞春敖, 蔡佩君
(浙江大學光電科學與工程學院,杭州 310027)
垃圾分類是垃圾處理流程中的基礎環節,一直以來是各級政府倡導與推行的重要工作。由于配套設施不完善,人們垃圾分類意識與能力不強,該項工作成效并不理想,收集到的垃圾多為混合垃圾,后續仍需人工進行分類,增加了處理成本。將后續分揀工作交由機器完成[1],不僅能降低成本,提高工作效率,也能避免工人長期與垃圾接觸所引發的健康問題。
目前常見的智能車多基于機器人操作系統(Robot Operating System,ROS),使用激光雷達進行定位導航[2-3],該類車價格昂貴,不適合用于垃圾分揀。為此,設計一種智能垃圾分揀車,基于樹莓派平臺,利用單目廣角攝像頭、傾斜角度傳感器、超聲波測距傳感器等,通過Yolo-Fastest目標檢測算法,實現自主路徑規劃、垃圾拾取分類、垃圾定點運放的功能[4-5],具有較高的性價比,對智能垃圾分揀做了一定的探索。
卷積神經網絡是一種前饋型神經網絡,包括輸入層、卷積層、池化層、全連接層以及輸出層,各層的神經元都只與上一層相連[6]。本項目采用的Yolo-fastest算法基于輕量級神經網絡EfficientNet-Lite[7-9],通過量化和算子優化,使得算法模型體積更小,運算速度更快。
Yolo-Fastest是Yolo系列中最輕、最快的通用目標檢測算法,其網絡結構如圖1 所示。與傳統Yolo 網絡一樣,Yolo-Fastest 網絡由主干網絡和深層網絡組成,主干網絡用于提取圖像特征,深層網絡用于提取目標物的邊界框。與傳統Yolo不同,Yolo-Fastest的主干網只有27 層,其中第1 層為標準卷積層,其余均為深度可分離卷積層,大大減少了模型的參數量和運算量[10-11]。

圖1 Yolo-Fastest算法網絡結構
Yolo-Fastest卷積神經網絡將輸入的圖片分割成S×S個網格,每個單元格負責檢測那些中心點落在該格子內的目標,通過卷積網絡提取特征,使用全連接層得到預測值。利用神經網絡,可得到檢測目標的中心位置(x,y),并根據損失函數Loss 計算預測結果的置信度。
超聲波測距與雷達原理一樣,利用超聲波在空氣中的傳播速度已知,測量聲波從發射到遇到障礙物反射回來的時間,根據發射與接收的時間差計算出發射點到障礙物的實際距離。超聲波在空氣中的傳播速度為340 m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離:
這就是所謂的時間差測距法。
以簡單可靠、經濟實用為設計理念設計的垃圾分揀車整體結構如圖2 所示。圖2(a)是垃圾分揀車的系統框圖,分揀車以樹莓派4B[12]為開發平臺,通過單目廣角攝像頭獲取的圖像,作為主要信息;超聲波測距傳感器、傾斜角度傳感器作為輔助信息來源,通過算法處理,輸出信號控制電動機和舵機,控制分揀車的運動和垃圾抓取。圖2(b)是分揀車的實物圖,長35 cm、寬25 cm、高50 cm。

圖2 垃圾分揀車整體結構
采用4 GBRAM 樹莓派4B 作為主控制板。樹莓派4B 是一款基于Cortex-A72 架構的微型計算機板卡,搭載了4 核BCM2711 處理器,主頻達1.5 GH,具有強大的運算性能,可作為低成本開發平臺,能較好地滿足分揀車的運算需求,同時也符合簡單可靠、經濟實用的設計理念。
使用135°廣角無畸變攝像頭。該攝像頭采用OV2710 傳感器,具有最高200 萬像素,支持手動調焦和自動曝光,通過USB接口可免驅動與樹莓派主板相連。使用時獲取的圖像分辨率設置為640 ×480,能比較穩定地獲取較大視場范圍的清晰圖像,使得分揀車一次性獲得盡可能多的信息,提高分揀效率。
使用超聲波傳感器獲取距離信息,作為分揀車運動控制的輔助信息來源,進一步提高分揀車運動的準確性。該傳感器包括超聲波發射器、接收器與控制電路,采用I/O口TRIG觸發,可提供2 ~400 cm的非接觸式距離,測距準確度可達3 mm。
分揀車運動過程中因為運動累計誤差,產生角度偏移,導致無法準確駛向垃圾堆放點,引入傾斜角度傳感器,能在任意位置得到準確的角度,通過與初始角度比較,對分揀車姿態做出修正,保證分揀車沿直線行駛。該傳感器工作電壓在3 ~5 V,測量范圍-180° ~180°,具有1°的測量準確度和0.01°的分辨率。
分揀車針對室內等較平坦地面,采用抓取框的抓取方式。圖3 所示為分揀車的抓取框,由亞克力板制成,其中前臂、左右臂分別與舵機相連,通過運動抓取算法控制,可實現某一臂的單獨抬放和組合抬放,配合分揀車的前移和左右移,實現對不同位置垃圾的快速抓取。在抓取框與地面接觸一側裝有毛刷,避免電池、果皮等較小垃圾從分揀框下方漏過,同時減小分揀框與地面的摩擦。

圖3 垃圾分揀車抓取框
分揀車使用64 Bit樹莓派操作系統,使用C ++語言進行算法開發編寫。軟件設計包括圖像識別和運動抓取算法兩部分,圖像識別采用目標檢測算法Yolo-Fastest,在樹莓派上能實現15 幀的較高幀數視頻的目標檢測;運動抓取采用一種反饋控制算法,能夠較好地配合Yolo-Fastest算法做出快速的運動和抓取。
實驗選取一次性紙杯、橘子皮、礦泉水瓶、七號電池、A4 紙團,按分類標準可分為可回收垃圾、廚余垃圾、有害垃圾和其他垃圾。為得到較好的訓練結果,用于訓練和測試模型的數據集均由分揀車攝像頭拍攝制作,分別從不同的角度和背景共拍攝了2 000 張照片,根據后續訓練效果添加特定背景和角度下照片300張,同一照片中同時存在多個檢測目標,盡可能保證各類目標總數相近。通過人工方式對數據集標簽進行分類,將這些數據集按照9∶1的比例分為訓練集和測試集在電腦上用于神經網絡模型訓練。
神經網絡訓練時Loss值與重復次數的關系如圖4所示,Loss值越低,模型對測試集中目標的檢測準確度越高,可見,當重復次數達到約6 000 次時,Loss 降到1%以下且變化逐漸趨于平穩。分別選取重復次數為7 000、8 000、9 000、10 000 和12 000 的模型作為待選定模型,分別部署在樹莓派后,通過實際的圖像識別效果,從中選取最優的模型。

圖4 訓練中Loss與重復次數關系
將訓練獲得的模型文件轉換移植到樹莓派的NCNN框架中進行測試,通過OpenCV 可實時預覽識別結果。通過比較,綜合考慮圖像識別的精度和速度,最終選擇重復次數為8 000 次的模型為最終模型。實驗中,靜止情況下,分揀車對2 m以內的目標可以實現95%以上的識別率,對4 m處的目標仍有60%左右的識別率。
根據圖像識別算法計算得到的目標坐標信息以及其他傳感器獲得的距離、角度等信息,算法可判斷目標相對于分揀車的位置,產生指令控制分揀車運動和垃圾抓取動作。
垃圾分揀流程如圖5 所示,分揀車啟動,記錄自身初始姿態,獲取圖像并識別。根據識別結果,未檢測到垃圾時,分揀車會按一定的路線巡視;當檢測到垃圾后,分揀車會向最近的垃圾移動并完成抓取。根據抓取垃圾的種類,分揀車將前往相應的垃圾堆放點,在這一過程中,分揀車將不斷判斷視野中是否出現相同類別的垃圾,如果有,分揀車會繼續抓取,以提高垃圾分揀的效率;如果沒有,分揀車會將垃圾在堆放區放下,并重復上述操作開始新一輪垃圾分揀。

圖5 分揀車垃圾分揀流程
運動抓取算法中,核心問題是如何判斷垃圾的實際位置。為解決這一問題,采用一種反饋控制算法,通過不斷判斷垃圾與分揀車的相對位置,進而反饋控制分揀車運動。目標識別時,圖像識別算法會計算得到目標中心在整個圖像中的相對位置,該值以像素的形式輸出,由于攝像頭固定在分揀車上隨分揀車一起運動,可以認為所獲取圖像中,分揀車即攝像頭的位置是固定不變的,通過比較目標中心與分揀車中心的像素,判斷目標與分揀車的相對位置。該判斷算法與人抓取物體的方式相似,通過快速的圖像識別,將分揀車每次運動后新的位置進行反饋,控制分揀車做出新的運動,逼近目標直至完成抓取[13]。
垃圾實際分揀情況如圖6 所示,實驗在3.5 m ×5.5 m的場地中進行,對隨機擺放的10 個5 種上述垃圾進行分類,最快可在2 min 完成分揀,平均能在2 min 40 s完成分揀,分揀正確率90%以上。圖6(a)為分揀車對場地中垃圾的識別結果,分揀車對目標具有很好的識別效果,對視場內的垃圾識別普遍具有0.9以上的高置信度;圖6(b)為分揀車將垃圾運送投放至垃圾堆放點,完成垃圾分類堆放。

圖6 垃圾實時分揀情況
分揀車通過目標識別算法,快速準確地對單目廣角攝像頭獲取的圖像進行識別,配合超聲波測距傳感器和傾斜角度傳感器,利用麥克納姆輪移動靈活快速的優勢,提高分揀車的運動速度和靈活性[14],以較低的成本實現所需功能,符合簡單可靠、經濟實用的設計理念,對垃圾自動拾取、分類做了一定的探索研究,具有較好的應用前景。分揀車在硬件結構和算法上還有較大的提升空間,如使用機械爪和垃圾收集裝置,進一步提高垃圾抓取的速度;應用更復雜的定位算法,實現單目攝像頭的地圖構建和空間定位[15-16],以適應更復雜環境下的工作等。