吳先文,葉幸福,陳祖星,李和霖
(六盤水師范學(xué)院 物理與電氣工程學(xué)院,貴州六盤水,553000)
近些年來,伴隨著經(jīng)濟、社會的發(fā)展,以及人們的物質(zhì)消費水平的不斷提升,垃圾的產(chǎn)生數(shù)量也在不斷地增加,這既是一種資源的浪費,也是一種對環(huán)境的潛在威脅,它已經(jīng)成為制約經(jīng)濟社會持續(xù)健康發(fā)展的一個重要因素。然而,傳統(tǒng)的垃圾分類方法需要大量的人力和時間成本,難以滿足大規(guī)模的分類需求,如何高效進行垃圾分類和回收,成為人們迫切需要解決的問題之一[1]。對此,本文設(shè)計一款利用機器視覺和智能算法技術(shù)實現(xiàn)對垃圾的自動分類識別的垃圾桶,其具有提高垃圾分類效率、降低人工成本,并使垃圾分類更加高效和智能化。
該系統(tǒng)以STM32F103 單片機作為主控核心,負(fù)責(zé)接收OpenMV 攝像頭模塊識別結(jié)果信號、顯示垃圾種類及驅(qū)動MG90S 舵機;OpenMV 攝像頭模塊處理對投放的垃圾進行識別,得到的識別結(jié)果發(fā)送至STM32F103 單片機;MG90S舵機收到STM32F103 單片機的信號后,通過旋轉(zhuǎn)設(shè)定好的角度而控制擋板朝向,實現(xiàn)自動分揀的功能;LCD 顯示屏則顯示分類結(jié)果以及滿載等信息,系統(tǒng)設(shè)計框圖如圖1 所示。

圖1 系統(tǒng)設(shè)計框圖
攝像頭模塊本文選用OpenMV4 H7 PLUS,它是一款低成本,功能強大的機器視覺模塊。以STM32H743IICPU 為核心,主頻為480MHz,內(nèi)存為1M,運行速度快、功耗低。它搭載了OV5640 攝像頭芯片,在QVGA(320×240)及以下分辨率時大多數(shù)簡單算法都可以運行30FPS。在小巧的硬件模塊上,用C 語言高效地實現(xiàn)了核心機器視覺算法,提供Python 編程接口[2]。通過Python 對OpenMV 進行控制,可以比較方便地通過外部終端來觸發(fā)拍攝或執(zhí)行算法,還可以利用算法的結(jié)果來控制IO 管腳。
MG90S 舵機是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。而在本系統(tǒng)中使用了三個MG90S 舵機作為分類垃圾桶的桶蓋轉(zhuǎn)軸和擋板的轉(zhuǎn)軸。1、2 號舵機將擋板旋至對應(yīng)垃圾桶入口上方,3 號舵機打開桶蓋,將識別完成垃圾投入桶內(nèi),完成自動投放垃圾的過程。
顯示部分使用3.5 英寸TFT 電容式屏幕,可實現(xiàn)宣傳教育視頻及圖片的自動播放。其顯示內(nèi)容有垃圾總量、分類結(jié)果、垃圾桶是否裝滿的提示。
垃圾桶整體呈正方形為底部向上延伸的長方體封閉式結(jié)構(gòu)。主要由七部分組成,即攝像頭及主控、1 號舵機、桶蓋及識別區(qū)、分揀擋板、2 號舵機、3 號舵機和垃圾桶分區(qū)隔板等。攝像頭及主控放置(主控集成LCD 顯示屏)桶蓋及識別區(qū)正上方,而桶蓋邊緣連接由1 號舵機控制的轉(zhuǎn)軸。垃圾桶被分區(qū)隔板平均分成四個區(qū)域,可裝四個種類的垃圾,分區(qū)隔板交叉點上設(shè)置一個平臺,用以放置于水平面呈45°角的分揀擋板和兩個舵機,其中擋板由2 號和3 號舵機控制旋轉(zhuǎn)至設(shè)定的角度。當(dāng)在識別區(qū)投入垃圾后,OpenMV攝像頭模塊會自動拍攝并分析垃圾的種類,STM32 主控則根據(jù)分類的結(jié)果驅(qū)動2 和3 號舵機,將分揀擋板旋轉(zhuǎn)至對應(yīng)的分區(qū)上方,1 號舵機再翻轉(zhuǎn),使得識別完成的垃圾自由落體,經(jīng)過分揀擋板滑至對應(yīng)分區(qū)內(nèi),從而完成自動分揀工作,垃圾桶的模型示意圖如圖2 所示。

圖2 垃圾桶模型示意圖
數(shù)據(jù)集的建立使用OpenMV IDE 工具欄中的數(shù)據(jù)集編輯器配合OpenMV 攝像頭采集的垃圾圖像數(shù)據(jù),作為分類的數(shù)據(jù)集,而不使用網(wǎng)絡(luò)上現(xiàn)成的數(shù)據(jù)集,是為了得到符合實際情況,更好地模擬現(xiàn)實。通過OpenMV 多角度拍攝得到的2932 張數(shù)據(jù)集,包含不可回收垃圾、廚余垃圾、可回收垃圾、有害垃圾等四大種類,部分垃圾樣本示例如圖3所示。

圖3 部分垃圾樣本示例圖
將數(shù)據(jù)集上傳,隨機抽取79%圖片作為訓(xùn)練集,21%圖片作為測試集,并做相應(yīng)類別標(biāo)簽。因所采集的數(shù)據(jù)集較少,為了提高數(shù)據(jù)處理精度,使用幾何處理和數(shù)字信號處理(DSP)技術(shù)進行圖像處理,主要功能包括對圖像進行尺寸縮放以及使用適合最短軸方法將圖像大小統(tǒng)一處理為96×96 像素。采用DSP 技術(shù)對圖像進行預(yù)處理,以獲得RGB 彩色圖像,能夠更好地保留圖像的信息。把圖像轉(zhuǎn)換成一段特征數(shù)據(jù),以便進一步進行的圖像處理。
自VGG 問世以來,深度學(xué)習(xí)領(lǐng)域的神經(jīng)網(wǎng)絡(luò)越來越注重計算能力和適應(yīng)能力的提升。然而,隨著網(wǎng)絡(luò)規(guī)模和復(fù)雜度的增加,神經(jīng)網(wǎng)絡(luò)占有的空間也越來越大,導(dǎo)致了對硬件條件的更高要求。訓(xùn)練和預(yù)測這種神經(jīng)網(wǎng)絡(luò)模型需要更高的計算能力和成本,限制了其普及性和推廣度。由于移動設(shè)備的硬件資源有限,其對深度學(xué)習(xí)網(wǎng)絡(luò)模型的處理能力也受到了一定的限制。為此,深度學(xué)習(xí)領(lǐng)域內(nèi)逐漸形成了神經(jīng)網(wǎng)絡(luò)小型化的發(fā)展趨勢。MobileNet 等神經(jīng)網(wǎng)絡(luò)模型在移動設(shè)備和嵌入式設(shè)備的應(yīng)用中在保證模型準(zhǔn)確率的前提下,大幅減小模型體積、計算量和運行時間,同時提高準(zhǔn)確率的優(yōu)勢,成為移動設(shè)備的理想選擇[3]。
本次設(shè)計采用MobileNetV2 作為網(wǎng)絡(luò)模型,并在此基礎(chǔ)上利用ImageNet 預(yù)訓(xùn)練權(quán)重。首先,在避免破壞已學(xué)習(xí)特征的前提下,凍結(jié)其底層,以確保其不被改動。其次,添加新的可訓(xùn)練層,并使用采集的數(shù)據(jù)集對這些層進行訓(xùn)練,以便獲得不同種類的垃圾特征。最后,對模型進行微調(diào),保存產(chǎn)生的權(quán)重,MobileNetv2 預(yù)訓(xùn)練流程圖如圖4 所示。

圖4 MobileNetv2 預(yù)訓(xùn)練流程圖
遷移學(xué)習(xí)是一種利用已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型來解決新問題的方法,即將已經(jīng)學(xué)習(xí)到的知識稱為“源領(lǐng)域”,新問題稱為“目標(biāo)領(lǐng)域”。遷移學(xué)習(xí)的目標(biāo)是將源領(lǐng)域的知識應(yīng)用于目標(biāo)領(lǐng)域,以提高目標(biāo)領(lǐng)域的學(xué)習(xí)性能[4]。具體實現(xiàn)方式是:首先,加載已經(jīng)訓(xùn)練好的MobileNetV2 網(wǎng)絡(luò)模型,在此基礎(chǔ)上添加新的可訓(xùn)練層,一般是全連接層或者卷積層,根據(jù)新問題的需要進行設(shè)計。然后,使用新的數(shù)據(jù)集對這些層進行訓(xùn)練,以適應(yīng)新問題要求。在訓(xùn)練過程中,常常使用遷移學(xué)習(xí)中的fine-tuning 技術(shù),即保持已有層的參數(shù)不變,只在可訓(xùn)練層進行微調(diào)。在遷移學(xué)習(xí)中,由于MobileNetV2 神經(jīng)網(wǎng)絡(luò)已經(jīng)學(xué)習(xí)到了很多圖像特征,因此可以充分利用這些特征來提取新問題中的特征,從而提高模型的精度和泛化能力[5]。此外,使用預(yù)先訓(xùn)練好的MobileNetV2 模型可以避免從頭開始設(shè)計和訓(xùn)練模型的時間和計算成本,并且在不丟失已有學(xué)習(xí)的特性的情況下使用現(xiàn)有的偏差和權(quán)重[6],遷移學(xué)習(xí)流程圖如圖5 所示。

圖5 遷移學(xué)習(xí)流程圖
為驗證本次設(shè)計所提模型的遷移性能及有效性,進行了準(zhǔn)確度實驗。實驗數(shù)據(jù)集均為實際拍攝圖片,并非使用網(wǎng)絡(luò)上下載的數(shù)據(jù)集,數(shù)據(jù)集分為不可回收垃圾、廚余垃圾、可回收垃圾、有害垃圾等四大種類。在模型訓(xùn)練中,學(xué)習(xí)率是訓(xùn)練深度學(xué)習(xí)模型時的一個關(guān)鍵超參數(shù),過大的學(xué)習(xí)率可能導(dǎo)致模型訓(xùn)練不穩(wěn)定或模型無法收斂,而過小的學(xué)習(xí)率可能導(dǎo)致模型訓(xùn)練緩慢或可能陷入局部最優(yōu)解,因此,選擇了三個不同的學(xué)習(xí)率(0.001、0.0005 和0.0001),并比較它們在模型訓(xùn)練過程中的準(zhǔn)確率[7],實驗結(jié)果對比如表1 所示。

表1 不同學(xué)習(xí)率時模型的準(zhǔn)確率
根據(jù)表1可知,學(xué)習(xí)率設(shè)置為0.0005,迭代次數(shù)為20時,訓(xùn)練效果最佳[8]。即此次模型訓(xùn)練的學(xué)習(xí)次數(shù)設(shè)置為20 次,學(xué)習(xí)率設(shè)置為0.0005,其模型訓(xùn)練結(jié)果如圖6、7 所示。

圖6 模型準(zhǔn)確率變化曲線圖
圖6 為模型準(zhǔn)確率變化曲線,圖7 為模型交叉熵?fù)p失函數(shù)變化曲線,圓點標(biāo)記藍色實曲線表示驗證集,紅色實曲線表示驗證集。可以從圖中看出訓(xùn)練集的準(zhǔn)確率為0.9765,驗證集的準(zhǔn)確率為0.9077,訓(xùn)練集的損失為0.9092,驗證集的損失為0.4167,準(zhǔn)確率和損失函數(shù)隨著訓(xùn)練次數(shù)的增加而逐漸趨于平穩(wěn),最終模型驗證集的損失分為0.283。

圖7 模型交叉熵?fù)p失函數(shù)變化曲線圖
使用TensorFlow Lite converter 將最優(yōu)模型轉(zhuǎn)換成tflite 格式模型文件,部署在OpenMV 攝像頭模塊上,最后進行整機的調(diào)試。選擇四大類垃圾,包括不可回收垃圾、廚余垃圾、可回收垃圾、有害垃圾,每類投入垃圾桶100 次,再記錄其分揀結(jié)果,其分揀結(jié)果熱力圖如圖8 所示。

圖8 分揀結(jié)果熱力圖
如圖8 所示,顏色越深表示值越高,對應(yīng)的準(zhǔn)確率越高。圖中有害垃圾的準(zhǔn)確率最低,其值為0.82,最終該系統(tǒng)分揀的平均準(zhǔn)確率為0.9,且該系統(tǒng)反應(yīng)較快,信息顯示正常,舵機也能根據(jù)設(shè)定快速作出相應(yīng)反應(yīng)。
針對傳統(tǒng)的垃圾分類方法需要大量的人力和時間成本,難以滿足大規(guī)模的分類需求,本文提出了一種基于輕量化卷積神經(jīng)網(wǎng)絡(luò)模型,結(jié)合遷移學(xué)習(xí)和STM32F103 單片機的系統(tǒng)設(shè)計與研究。首先,使用遷移學(xué)習(xí)的方法,將MobileNetV2 預(yù)訓(xùn)練模型提取的垃圾圖像特征遷移到新的可訓(xùn)練層,并采用TensorFlow 框架進行模型訓(xùn)練;其次,使用TensorFlow Lite converter 將最優(yōu)模型轉(zhuǎn)換成tflite 格式模型文件,部署在OpenMV 攝像頭模塊上。最后,對該系統(tǒng)整機調(diào)試及實驗測試,其測試結(jié)果表明,基于MobileNetV2 和遷移學(xué)習(xí)的垃圾分揀系統(tǒng),能夠完成對不可回收垃圾、廚余垃圾、可回收垃圾、有害垃圾這四大類識別并自動分揀,大大提高垃圾分類的效率,減少人工分類帶來的時間損失和資源浪費,同時還能對環(huán)境保護做出重要的貢獻。在未來,相信此項技術(shù)將會被廣泛應(yīng)用,并發(fā)揮出更加重要的作用。