徐 麗,劉易知,王澤龍,郭金帥,丁稼綺
(長沙理工大學(xué)電氣與信息工程學(xué)院,湖南長沙 410014)
垃圾圍城是我國當(dāng)前城市管理的一大難題,僅2020年新增可回收垃圾總量便超過30億t。填埋、焚燒等傳統(tǒng)垃圾處理方式占用大量土地資源,影響空氣質(zhì)量,容易對環(huán)境造成二次污染。因此可回收垃圾的減量化、無害化、資源化已成社會亟待解決的重要課題[1]。
現(xiàn)有的機械自動化雖然可以提高分揀效率,但無法識別垃圾種類。在當(dāng)前人工智能盛行的大背景下,“深度學(xué)習(xí)算法”的提出,基于大數(shù)據(jù)的大規(guī)模計算、視覺分析等一系列技術(shù)的不斷創(chuàng)新,人工智能分揀設(shè)備應(yīng)運而生[2]。目前國外處于研究階段的可回收垃圾前、后端分揀的智能設(shè)備比較多樣,前端如美國CleanRobotics 公司開發(fā)的Trashbot 智能垃圾桶;后端如麻省理工計算機科學(xué)和人工智能實驗室2019年開發(fā)的Rocycle 垃圾回收分揀機器人。國內(nèi),上海的一款前端GPS 垃圾回收機器人已實現(xiàn)了垃圾的智能識別,但對后端分類的研究,國內(nèi)還處于一片空白。
為響應(yīng)國家建設(shè)綠色、生態(tài)中國的號召,團隊研發(fā)的產(chǎn)品針對我國可回收垃圾的后端處理問題,完成了可回收垃圾重新生產(chǎn)利用環(huán)節(jié)的最后一塊拼圖。在保證了商業(yè)價值的基礎(chǔ)上,兼顧了社會效益,為可持續(xù)發(fā)展做出了實質(zhì)性的貢獻(xiàn)。
整套分類系統(tǒng)由卸貨斗、震動喂料機、攝像頭、主副傳送帶、機械臂、包裝機、收集器組成。其中,垃圾順著卸貨斗進(jìn)入震動喂料機,在此處進(jìn)行初篩,實現(xiàn)垃圾的初步分離。然后通過喂料機出口的識別掃描儀,被攝像頭進(jìn)行拍攝,圖像通過視覺系統(tǒng)完成識別。當(dāng)系統(tǒng)無法識別出垃圾種類時,垃圾會經(jīng)主傳送帶運輸?shù)侥┒说氖占髦?。如系統(tǒng)成功識別垃圾,則其會隨著主傳送帶進(jìn)行運動,當(dāng)移動至對應(yīng)類別的機械臂分揀區(qū)后,機械臂會夾取該垃圾至對應(yīng)類別的副傳送帶上,再由副傳送帶運輸?shù)桨b機處。
團隊以越疆MG400為基礎(chǔ),對該機械臂機身以及爪形等硬件配置進(jìn)行升級,機身主體部分更換為更高強度的金屬復(fù)合材料,體積增大三倍,有效荷重從12 kg 提升至18 kg,提高50%,工作耐溫極限從55 ℃提高到90 ℃,提高64%,最高功耗可到1 000 W。
該機械臂采用四軸結(jié)構(gòu),其大小臂和底座三部分實現(xiàn)機械爪在X、Y、Z 三軸的位置定位,末端舵機的旋轉(zhuǎn)R 軸,則可以使爪子從多個不同角度對垃圾進(jìn)行抓取。如圖1所示為機械爪結(jié)構(gòu)圖。
圖1 機械爪結(jié)構(gòu)圖
機械爪部分采用一臂多爪設(shè)計,單個機械臂上搭載有多個規(guī)格不同的機械爪,根據(jù)視覺系統(tǒng)識別的結(jié)果,底座旋轉(zhuǎn),選取最適的爪型。如圖1機械爪結(jié)構(gòu)圖中1、2部分所示,采用基礎(chǔ)的外夾式爪型,可對常見形態(tài)的垃圾進(jìn)行抓取,區(qū)別在于1號爪尺寸較小,對小體積垃圾有更好的拾取效果。3號爪采用真空吸盤結(jié)構(gòu),吸盤中間留有氣孔,當(dāng)吸盤貼合片狀垃圾表面時,氣泵工作,通過管道將接觸面的空氣抽空,對垃圾進(jìn)行拾取。測試極限狀態(tài)下,該吸盤可穩(wěn)定吸附起21 kg 金屬板。
此外,機械臂整體以及卸貨斗、喂料機和收集器都會進(jìn)行特殊防銹、防腐處理,例如酸洗磷化處理,防止金屬在長期潮濕的環(huán)境中生銹,或被垃圾液腐蝕,延長使用壽命[3]。
(1)震動喂料機:主體部分為電動機,振動臺以及緩沖器。裝置使能后,電動機帶動傾斜的振動臺工作,使堆疊著的垃圾分散開,并送至主傳送帶前端。緩沖器安裝在振動臺和基座之間,穩(wěn)定振動臺的運動[4]。
(2)攝像頭:對垃圾進(jìn)行攝像掃描,將數(shù)據(jù)傳輸至后臺進(jìn)行分析。
(3)傳送帶:分為主傳送帶和副傳送帶。主傳送帶將初篩后的垃圾運輸至機械臂分揀區(qū),再由相對應(yīng)類別程序的機械臂將垃圾夾取至該類垃圾的副傳送帶上,通過副傳送帶運輸至包裝機進(jìn)行包裝。
(4)收集器:副傳送帶末端的漏斗型金屬裝置,將各類垃圾收集運輸?shù)桨b機中。
(5)包裝機:主體結(jié)構(gòu)為壓縮裝置、打包系統(tǒng)、液壓系統(tǒng)及機架。包裝機將收集器匯集的垃圾進(jìn)行壓縮,縮減固體垃圾的體積,壓縮后的垃圾塊將傳送至打包系統(tǒng)自動打包。
系統(tǒng)最初設(shè)想:收集足量數(shù)據(jù)集,訓(xùn)練出多個模型,再根據(jù)試驗結(jié)果選擇最終模型。
由于可回收垃圾分類并無相關(guān)數(shù)據(jù)集,因而系統(tǒng)最初數(shù)據(jù)集是由網(wǎng)絡(luò)爬蟲爬取,再進(jìn)行數(shù)據(jù)篩選與清洗后所得。測試時,系統(tǒng)識別準(zhǔn)確率極低。采用更換模型、圖像增強、調(diào)整訓(xùn)練參數(shù)、增加訓(xùn)練輪次等方式,也都收效甚微。這違背了深度學(xué)習(xí)獨立同分布[5]的假設(shè)。深度學(xué)習(xí)對大規(guī)模訓(xùn)練數(shù)據(jù)極其依賴,需要大量數(shù)據(jù)去理解潛在的數(shù)據(jù)模式[6][7]。即:模型對未來數(shù)據(jù)的預(yù)測與模擬,是建立在對現(xiàn)有數(shù)據(jù)的訓(xùn)練學(xué)習(xí)上的。
于是使用遷移學(xué)習(xí)的方法,放寬了獨立同分布的假設(shè),目標(biāo)域中的模型無需從頭訓(xùn)練,可顯著降低目標(biāo)域?qū)τ?xùn)練數(shù)據(jù)與訓(xùn)練時間的需求,前后共自主拍攝五萬多張五類可回收垃圾的數(shù)據(jù)集。
系統(tǒng)識別準(zhǔn)確率不穩(wěn)定,存在波動,有時甚至呈直線式下降、降至隨機水平。
于是使用圖像降噪的方法進(jìn)行處理。因傳送帶近似于黑色,對應(yīng)RGB 3個通道的數(shù)字較小,故設(shè)定一個背景噪聲處理機制,即先使已固定好方位及角度的攝像頭對未運載垃圾的傳送帶不間斷地拍照,再利用OpenCV 庫將拍攝到的傳送帶及傳送帶外的背景環(huán)境進(jìn)行分離,并使用RGB 值為(235,235,235)的顏色填充背景環(huán)境。當(dāng)傳送帶運載垃圾時,繼續(xù)沿用此機制即可。
一次偶然的試驗中,系統(tǒng)出現(xiàn)誤將傳送帶識別成垃圾的情況。由于此情況發(fā)生概率極低,因而試驗前期并未發(fā)現(xiàn)此問題,以下是解決方法的優(yōu)化過程:①拍攝大量傳送帶圖像并為其建立數(shù)據(jù)集,再將傳送帶圖像數(shù)據(jù)與可回收垃圾圖像數(shù)據(jù)一起進(jìn)行訓(xùn)練。最終的試驗結(jié)果證明了此種方法的可行性。②優(yōu)化代碼結(jié)構(gòu)。采用閾值管理的方法。即通過試驗確定一個閾值,當(dāng)識別系統(tǒng)給出的關(guān)于每類垃圾的置信度存在于此閾值范圍內(nèi)時,激發(fā)機械臂控制程序;反之則不激發(fā),識別系統(tǒng)繼續(xù)處理下一張垃圾圖像。該方法不僅繼承了上述兩種方法的優(yōu)點,還具有代碼更簡潔、使用參數(shù)更少、適用場景更多、可根據(jù)不同的需求進(jìn)行相應(yīng)調(diào)整的優(yōu)點。
4.4.1 圖像處理
利用OpenCV 中的resize 函數(shù)將圖像調(diào)節(jié)為預(yù)定大小。反復(fù)試驗確定降噪閾值,當(dāng)圖像背景的RGB平均值低于100 時,將背景顏色改為(235,235,
235)。
基于Python 語言并結(jié)合其自帶的GUI—Tkinter編寫了一個可對圖像亮度與對比度數(shù)值大小進(jìn)行可視化調(diào)節(jié)的界面。當(dāng)外界燈光環(huán)境變化導(dǎo)致識別準(zhǔn)確率下降時可調(diào)用此界面對拍攝到的垃圾圖像進(jìn)行調(diào)節(jié)。
此功能原理如下。其中,a 代表對比度的數(shù)值,b 代表亮度的數(shù)值,img_original 表示原圖,img_new表示調(diào)節(jié)后的圖片。
img_new=a*img_original+b
圖像經(jīng)過處理后會被送入預(yù)先訓(xùn)練好的模型中進(jìn)行識別。
4.4.2 識別系統(tǒng)
訓(xùn)練數(shù)據(jù)利用了Keras庫中的ImageDataGenerator函數(shù)進(jìn)行數(shù)據(jù)增強,每輪的batch_size 為128,并運用了遷移學(xué)習(xí)的方法將預(yù)訓(xùn)練好的CNN 模型——InceptionResNetV2 及其權(quán)重作為起點,再加上GlobalAveragePooling2D 層和Dense 層對可回收垃圾的數(shù)據(jù)集進(jìn)行訓(xùn)練。訓(xùn)練好的模型以H5文件的格式被存儲在了系統(tǒng)中,系統(tǒng)運行時將自動載入此H5文件。模型編譯語句如下:
model.compile(optimizer=Adam(1e-4),
loss='categorical_crossentropy',metrics=['acc'])
模型訓(xùn)練10個epoch 后的準(zhǔn)確率及損失率的變化曲線如圖2所示。
圖2 準(zhǔn)確率及損失率變化曲線
試驗時測試的所有模型及其準(zhǔn)確率,如表1所示。其中每種模型每種垃圾分別試驗750 次,合計試驗750×5×5=18750次。
表1 各模型的實驗準(zhǔn)確率(%)
經(jīng)過各方面綜合分析與比較,最終選定InceptionResNetV2。模型識別完成后將輸出一個關(guān)于五類可回收垃圾的結(jié)果向量。
4.4.3 決策程序
利用Numpy 庫中的argmax 函數(shù)取出結(jié)果向量中的最大值,并判斷此最大值是否在[0.7,1]的區(qū)間內(nèi)。是,則舍棄此垃圾;否,則返回此最大值所對應(yīng)的索引并根據(jù)最終輸出的索引控制相應(yīng)的機械臂進(jìn)行抓取,0到4分別對應(yīng)塑料、布料、廢紙、玻璃和金屬。當(dāng)返回的索引值為-1(用戶摁下鍵盤上的“q”鍵退出了程序)與-2(傳送帶停止運動)時,模型將被關(guān)閉、程序也將停止運行。當(dāng)以上兩個因素都調(diào)整好之后重新運行main.py 文件,系統(tǒng)即可再次進(jìn)入工作狀態(tài)。
裝置應(yīng)用了深度學(xué)習(xí)原理,利用多層神經(jīng)網(wǎng)絡(luò)和視覺系統(tǒng)來對可回收垃圾的種類進(jìn)行識別,并控制機械臂的運動來對垃圾進(jìn)行自動分揀。大大提高了可回收垃圾分揀的效率,實現(xiàn)了智能化分揀,對于綠色城市建設(shè)將有很大的經(jīng)濟與社會效益。