馬含章,王淼鑫,鐘拼揚,劉華,常若葵,董晉峰
(天津農(nóng)學院 工程技術(shù)學院,天津 300392)
隨著人們生活水平的提高,城市垃圾產(chǎn)生數(shù)量逐年增多,已經(jīng)成為全國大中城市一個重要的污染來源,實行垃圾分類刻不容緩。
目前我國已出現(xiàn)基于不同技術(shù)原理的垃圾分類設(shè)備,隨著技術(shù)的進步,垃圾分類正向精細化的趨勢發(fā)展[1]。垃圾分類的基礎(chǔ)是垃圾種類的判別,傳統(tǒng)技術(shù)主要運用觸覺和重量等傳感器對垃圾進行簡單分揀[2],我國早期研發(fā)的智能垃圾分類設(shè)備大多要依靠復雜的機械結(jié)構(gòu)[3-4],但存在適用范圍小、分類效率低的問題。2017 年后,隨著垃圾分類政策的提出,針對智能垃圾分類設(shè)備的研究也逐漸增多,市面上出現(xiàn)了成型的垃圾分類設(shè)備[5]。
應用于垃圾種類判斷的圖像識別技術(shù),在目前的計算機視覺技術(shù)領(lǐng)域處于相對成熟、應用難度較低的層次。計算機視覺技術(shù)的高速發(fā)展使視覺識別技術(shù)在垃圾分類領(lǐng)域的市場占比日益提升。此外,圖像識別技術(shù)的門檻低、成本較小,能夠快速形成實用化的產(chǎn)品投放市場,因此,目前國內(nèi)外均已出現(xiàn)大量基于視覺識別的智能垃圾桶、垃圾分類軟件等[6-8]。采用視覺識別的垃圾分類裝置對垃圾的材質(zhì)、重量沒有限制,分類范圍可涵蓋全部垃圾種類,同時具有體積和重量小、分類速度快等優(yōu)點。視覺識別技術(shù)的不斷發(fā)展也使得垃圾識別的準確性大大提升。因此,設(shè)計一款基于視覺識別的垃圾分類裝置,可大幅提高社會垃圾分類效率和準確性。
視覺識別,即通過模型訓練,找出同一類別的物體映射到二維空間中的特征像素點在數(shù)值和相對位置方面的規(guī)律,根據(jù)規(guī)律擬合出近似的函數(shù),該函數(shù)即為該類物體的像素特征,并與其他類別物體的像素特征加以區(qū)分,最終實現(xiàn)區(qū)分不同種類物體的過程。捕捉和分析圖像的特征是視覺識別的核心工作內(nèi)容[9]。需要注意的是,訓練模型需要大量基本數(shù)據(jù),才能保證識別準確度。
一般情況下,圖像處理的對象是從完整圖像中選擇的部分區(qū)域。這部分區(qū)域是圖像分析中被關(guān)注的重點區(qū)域,被稱為感興趣區(qū)域。提取感興趣區(qū)域的過程在圖像處理中被稱為圖像分割。主要的圖像分割方法有如下幾種:閾值分割方法、區(qū)域分割方法、邊緣分割方法和模糊集理論分割方法等。其中閾值分割法因為其實現(xiàn)簡單、計算量小、性能穩(wěn)定被廣泛使用[10]。提取感興趣區(qū)域可以減少處理時間,增加精度,為區(qū)域內(nèi)后續(xù)目標的檢測和識別提供條件,提升系統(tǒng)的準確率[11]。
圖像采集過程是視覺識別的第一步。圖像采集包括創(chuàng)建數(shù)據(jù)集、確定采集數(shù)量及拍照采集等過程,圖像采集流程如圖1。
圖1 圖像采集流程
首先在OpenMV IDE 中創(chuàng)建數(shù)據(jù)集,用于存放各個種類的數(shù)據(jù),并在已創(chuàng)建的數(shù)據(jù)集中添加種類。創(chuàng)建分類后連接OpenMV 并運行。此時IDE上的framebuffer 幀緩沖區(qū)可以看到OpenMV 的實時圖像。點擊拍照即可完成當前圖像的采集,采集數(shù)量的多少直接影響后期識別結(jié)果的準確程度。圖像采集如圖2。目前的數(shù)據(jù)顯示,每個采集的樣本數(shù)量應在100 張以上,才能使準確率保持在較高水平。
圖2 圖像采集
完成采集后得到四個不同種類垃圾的數(shù)據(jù)集。其中包括廚余垃圾14 類4 182 張照片,可回收垃圾2 類1 402 張照片,有害垃圾4 類1 200 張照片,其他垃圾3 類1 300 張照片,對于每一類的不同形態(tài),均采集圖像約100 張。四個種類采集照片共約8 100 張。
數(shù)據(jù)采集完成后,即可進行模型訓練。模型訓練可在 EDGE IMPLUSE 網(wǎng)站完成。EDGE IMPLUSE 是一個在線網(wǎng)站,可以為嵌入式產(chǎn)品快速生成嵌入式系統(tǒng)神經(jīng)網(wǎng)絡(luò)模型。
將圖片上傳至該網(wǎng)站,對圖片進行DSP 預處理,根據(jù)種類特征會生成一個三維函數(shù)模型。圖中不同的點代表不同種類特征,相同的點越聚集,代表該種類特征越明顯;反之,如果不同的點混合在同一區(qū)域,這說明數(shù)據(jù)集前期的采集特征不夠明顯。圖3 為預處理函數(shù)模型,該模型具有明顯的聚集區(qū)域,是較為理想的訓練模型。
圖3 預處理函數(shù)模型
預處理后選擇transfer learning,開始正式的模型訓練。不同的訓練次數(shù)對結(jié)果的準確率有影響,訓練次數(shù)與準確率不完全成正比,次數(shù)過多會導致訓練模型過擬合,準確率下降。經(jīng)反復對比測試,訓練次數(shù)在20 次左右為最優(yōu)。當訓練次數(shù)未達到設(shè)定值,但準確率已經(jīng)足夠高時,會自動停止訓練,防止過擬合。
模型訓練結(jié)束后,即可下載對應的OpenMV模型文件。圖4 為模型文件構(gòu)成。
圖4 模型文件
在下載的模型文件中,共有三個文件。其中.py文件為示例代碼,trained.tflite 文件是生成的模型,labels.txt 是模型各種類的標簽。將這三個文件復制到OpenMV 內(nèi)置的Flash 中,打開OpenMV IDE即可運行程序。
該系統(tǒng)包括識別模塊、控制模塊以及投放模塊。紅外傳感器為系統(tǒng)總開關(guān),當紅外傳感器檢測到有人投放垃圾時,識別模塊開始工作。先由攝像頭完成圖像信息采集,再將采集到的圖像與處理器中的模型進行比對,生成識別結(jié)果(垃圾種類)并發(fā)送給控制模塊??刂颇K根據(jù)收到的結(jié)果信息完成投放垃圾并復位。在識別和投放的過程中,紅外傳感器處于不工作狀態(tài),直到投放模塊復位結(jié)束,傳感器恢復等待模式。系統(tǒng)結(jié)構(gòu)框圖如圖5 所示。
圖5 系統(tǒng)結(jié)構(gòu)圖
硬件電路由Arduino MEGA2560 開發(fā)板、Openmv4 H7 plus 攝像頭、二自由度舵機云臺和HW-201 紅外傳感器構(gòu)成。所有元器件均與Arduino 板相連。圖6 為系統(tǒng)接線示意圖。
圖6 系統(tǒng)接線示意圖
OpenMV 與Arduino 串口通信至少需要3 根線:TXD,RXD,GND。TXD 是發(fā)送端,RXD 是接收端,GND 是地線。連線的時候,需要把OpenMV的RXD和TXD分別連到Arduino的TXD與RXD。脫機運行時,OpenMV 可通過Arduino 對其供電。
180 度舵機必需使用PWM 引腳進行驅(qū)動。因此選擇Arduino MEGA2560 開發(fā)板的9、10 引腳分別控制上層、下層舵機。
紅外傳感器的輸出信號為數(shù)字信號,連接到開發(fā)板任一數(shù)字引腳即可。
根據(jù)已確定的投放裝置,確定裝置主體部分可分為兩層,上層為垃圾識別區(qū),用來安裝投放口和識別裝置;下層為垃圾分類區(qū),存放投放裝置及不同類別的垃圾桶。使用SOILDWORKS 軟件搭建裝置模型如圖7 所示。
圖7 裝置模型
攝像頭位于頂部正中間,較為關(guān)鍵的是攝像頭與放置垃圾的托盤的距離應與模型訓練時的距離一致,才能確保識別結(jié)果不受影響。經(jīng)實際比對,確定攝像頭與垃圾投放處的最佳距離為17 cm,此高度下各尺寸的垃圾均可清晰識別。
存放不同種類的四個垃圾桶按“田”字形擺放,舵機通過旋轉(zhuǎn)、傾斜兩個動作完成全種類垃圾投放。在上層舵機的U 形支架上粘貼一個圓形白色托盤作為垃圾投放點。
識別程序是整個系統(tǒng)的核心部分,識別的準確程度也決定了系統(tǒng)的性能。圖8 為視覺識別程序工作流程。
圖8 識別程序工作流程圖
在程序初始化部分,導入程序需要用的庫,定義圖片的像素格式、大小等參數(shù)。定義名為start()的識別函數(shù),將采集到的圖像與模型比對,取概率最高的種類的標簽,串口輸出給Arduino。為保證準確率,識別對象屬于某一種類的概率大于0.8 時,方可打印結(jié)果。當概率低于0.8 時,重新比對,直到概率高于0.8 為止。
Arduino 作為系統(tǒng)的控制中心,需要接收紅外傳感器的高低電平并控制舵機工作。
紅外傳感器觸發(fā)是軟件系統(tǒng)的第一個環(huán)節(jié)。紅外信息觸發(fā)后,識別投放環(huán)節(jié)才依次進行。HW-201 紅外傳感器當前方有物體遮擋時,輸出低電平,沒有物體遮擋時,輸出高電平。圖9 為此環(huán)節(jié)的工作流程。
圖9 紅外傳感器觸發(fā)檢測工作流程
在初始化部分設(shè)置引腳和傳感器運行電平。
定義有返回值的digitalSwitch()函數(shù),當串口接收到高電平,即紅外信號沒有被遮擋時,函數(shù)返回值為0;當串口接收到低電平即紅外信號被遮擋時,間隔1 秒再次檢測。若仍為低電平,則函數(shù)返回值為1,反之為0。延時設(shè)計可以有效避免誤觸。
舵機控制主要包含下層舵機旋轉(zhuǎn)、上層舵機傾斜、上層舵機復位、下層舵機復位四個部分。上下層舵機的旋轉(zhuǎn)角度由OpenMV 發(fā)送的結(jié)果決定。圖10 為舵機控制程序的工作流程。
圖10 舵機控制程序流程圖
在初始化部分調(diào)用舵機的庫函數(shù),設(shè)置舵機信號引腳,其中上層舵機為pin9,下層舵機為pin10。設(shè)置舵機初始角度,上層舵機90 度,下層舵機30 度。在setup()函數(shù)中,定義舵機的脈沖寬度,并初始化舵機。
完成初始化后,定義舵機四個動作的子函數(shù),統(tǒng)一放入void runSteer()函數(shù)中。baseAngle 和upperAngle 兩個局部變量即為上下層舵機的目標角度,其數(shù)值由垃圾種類決定。四個子函數(shù)的設(shè)計思路為比較目標角度與舵機初始化角度。在投放過程中,當目標角度大于初始化角度時,舵機正轉(zhuǎn),當目標角度小于初始化角度時,舵機反轉(zhuǎn)。在復位過程中,與上述過程相反。接收到OpenMV發(fā)送的種類后,在loop()函數(shù)中調(diào)用void runSteer()函數(shù),并給baseAngle 和upperAngle 兩個變量賦值,即規(guī)定舵機的旋轉(zhuǎn)角度。相比于在loop()函數(shù)中定義舵機的投放函數(shù),將投放動作定義為子函數(shù),并在loop()函數(shù)中調(diào)用。
OpenMV 與Arduino 通信屬于兩個模塊的交互,涉及Arduino 發(fā)送開始信號、OpenMV 接收開始信號、OpenMV 發(fā)送識別結(jié)果、Arduino 接收識別結(jié)果等過程。必須保證二者在相同信息上設(shè)定的字符一致。圖11 為通信部分的軟件工作流程。
圖11 通信流程
在初始化部分,首先設(shè)定串口引腳,Arduino的RX、TX 引腳分別對應OpenMV 的TX、RX 引腳。兩者波特率應保持一致。
在設(shè)定OpenMV 的TX、RX 引腳時應注意,OpenMV4 H7 plus 的UART 總線的物理引腳設(shè)定為:
UART(1):(TX,RX)=(P1,PO)
UART(3):(TX,RX)=(P4,P5)
初始化完成后,Arduino 作為控制中心,等待紅外傳感器輸出高電平,紅外傳感器輸出高電平后,給OpenMV 發(fā)送開始字符“1”。在發(fā)送前、后都必須clear 串口,以避免串口存在異常數(shù)據(jù)導致系統(tǒng)混亂。在OpenMV 上同樣設(shè)定字符“1”,當串口接收到Arduino 發(fā)送該字符后,調(diào)用設(shè)定好的識別程序,并將結(jié)果發(fā)送給Arduino。
Arduino 接收OpenMV 發(fā)送的識別結(jié)果。在串口打印出等待狀態(tài)或接收到的識別結(jié)果,可實時判斷系統(tǒng)是否正常工作,方便調(diào)試。應注意的是,要確保OpenMV和Arduino上設(shè)定的垃圾桶編號一致。
在軟、硬件系統(tǒng)完成后,對整個系統(tǒng)進行脫機運行測試。本系統(tǒng)目前可以識別的垃圾種類有:
廚余垃圾:完整或切割過的香蕉、蘋果、橘子、番茄、土豆、蘿卜、青椒;可回收垃圾:易拉罐、小號礦泉水瓶;有害垃圾:紐扣電池、2號電池、5 號電池、7 號電池;其他垃圾:小磚塊、瓷器碎片、煙頭。
取每種垃圾的各種不同形態(tài)樣本各2~3 種進行準確率測試。其中廚余垃圾取各類的完整形態(tài)和切割成不同大小形態(tài)為樣本集;可回收垃圾、有害垃圾取各類的不同品牌為樣本集;其他垃圾取各類不同形態(tài)為樣本集。每個樣本進行3 次測試。
經(jīng)過多次試驗得出,可回收垃圾和有害垃圾的識別準確率較高,可達到90%以上;廚余垃圾和其他垃圾的準確率則較低,約為70%。整體準確率約為78%。在所有分類錯誤的案例中,將廚余垃圾歸類為其他垃圾,和將其他垃圾歸類為廚余垃圾是兩種最常見的情況。也有少量有害垃圾被識別為其他垃圾。具體統(tǒng)計數(shù)據(jù)見表1。
表1 測試數(shù)據(jù)統(tǒng)計表 %
導致以上結(jié)果的原因在于易拉罐、礦泉水瓶和電池的特征較為明顯,不易與其他種類的垃圾混淆;而其他垃圾中的小磚塊、瓷器碎片等,與切割過的廚余垃圾的形態(tài)、顏色相似度較高,使系統(tǒng)產(chǎn)生了錯誤判斷。
本文基于目前的社會垃圾分類設(shè)施需求和相關(guān)方面的研究現(xiàn)狀,設(shè)計了一款使用視覺識別技術(shù)的智能垃圾分類設(shè)備。該系統(tǒng)針對生活垃圾進行了有效分類,經(jīng)測試,可回收垃圾和有害垃圾識別準確率可高達90%以上,設(shè)計方案可行。同時視覺識別技術(shù)目前已相對成熟且廣泛商業(yè)化,采用視覺識別技術(shù)作為垃圾種類識別依據(jù),有著低成本、高效率的優(yōu)勢。