吳先文,葉幸福,陳祖星,李和霖
(六盤水師范學(xué)院 物理與電氣工程學(xué)院,貴州六盤水,553000)
近些年來,伴隨著經(jīng)濟(jì)、社會的發(fā)展,以及人們的物質(zhì)消費(fèi)水平的不斷提升,垃圾的產(chǎn)生數(shù)量也在不斷地增加,這既是一種資源的浪費(fèi),也是一種對環(huán)境的潛在威脅,它已經(jīng)成為制約經(jīng)濟(jì)社會持續(xù)健康發(fā)展的一個重要因素。然而,傳統(tǒng)的垃圾分類方法需要大量的人力和時間成本,難以滿足大規(guī)模的分類需求,如何高效進(jìn)行垃圾分類和回收,成為人們迫切需要解決的問題之一[1]。對此,本文設(shè)計一款利用機(jī)器視覺和智能算法技術(shù)實(shí)現(xiàn)對垃圾的自動分類識別的垃圾桶,其具有提高垃圾分類效率、降低人工成本,并使垃圾分類更加高效和智能化。
該系統(tǒng)以STM32F103 單片機(jī)作為主控核心,負(fù)責(zé)接收OpenMV 攝像頭模塊識別結(jié)果信號、顯示垃圾種類及驅(qū)動MG90S 舵機(jī);OpenMV 攝像頭模塊處理對投放的垃圾進(jìn)行識別,得到的識別結(jié)果發(fā)送至STM32F103 單片機(jī);MG90S舵機(jī)收到STM32F103 單片機(jī)的信號后,通過旋轉(zhuǎn)設(shè)定好的角度而控制擋板朝向,實(shí)現(xiàn)自動分揀的功能;LCD 顯示屏則顯示分類結(jié)果以及滿載等信息,系統(tǒng)設(shè)計框圖如圖1 所示。
圖1 系統(tǒng)設(shè)計框圖
攝像頭模塊本文選用OpenMV4 H7 PLUS,它是一款低成本,功能強(qiáng)大的機(jī)器視覺模塊。以STM32H743IICPU 為核心,主頻為480MHz,內(nèi)存為1M,運(yùn)行速度快、功耗低。它搭載了OV5640 攝像頭芯片,在QVGA(320×240)及以下分辨率時大多數(shù)簡單算法都可以運(yùn)行30FPS。在小巧的硬件模塊上,用C 語言高效地實(shí)現(xiàn)了核心機(jī)器視覺算法,提供Python 編程接口[2]。通過Python 對OpenMV 進(jìn)行控制,可以比較方便地通過外部終端來觸發(fā)拍攝或執(zhí)行算法,還可以利用算法的結(jié)果來控制IO 管腳。
MG90S 舵機(jī)是一種位置(角度)伺服的驅(qū)動器,適用于那些需要角度不斷變化并可以保持的控制系統(tǒng)。而在本系統(tǒng)中使用了三個MG90S 舵機(jī)作為分類垃圾桶的桶蓋轉(zhuǎn)軸和擋板的轉(zhuǎn)軸。1、2 號舵機(jī)將擋板旋至對應(yīng)垃圾桶入口上方,3 號舵機(jī)打開桶蓋,將識別完成垃圾投入桶內(nèi),完成自動投放垃圾的過程。
顯示部分使用3.5 英寸TFT 電容式屏幕,可實(shí)現(xiàn)宣傳教育視頻及圖片的自動播放。其顯示內(nèi)容有垃圾總量、分類結(jié)果、垃圾桶是否裝滿的提示。
垃圾桶整體呈正方形為底部向上延伸的長方體封閉式結(jié)構(gòu)。主要由七部分組成,即攝像頭及主控、1 號舵機(jī)、桶蓋及識別區(qū)、分揀擋板、2 號舵機(jī)、3 號舵機(jī)和垃圾桶分區(qū)隔板等。攝像頭及主控放置(主控集成LCD 顯示屏)桶蓋及識別區(qū)正上方,而桶蓋邊緣連接由1 號舵機(jī)控制的轉(zhuǎn)軸。垃圾桶被分區(qū)隔板平均分成四個區(qū)域,可裝四個種類的垃圾,分區(qū)隔板交叉點(diǎn)上設(shè)置一個平臺,用以放置于水平面呈45°角的分揀擋板和兩個舵機(jī),其中擋板由2 號和3 號舵機(jī)控制旋轉(zhuǎn)至設(shè)定的角度。當(dāng)在識別區(qū)投入垃圾后,OpenMV攝像頭模塊會自動拍攝并分析垃圾的種類,STM32 主控則根據(jù)分類的結(jié)果驅(qū)動2 和3 號舵機(jī),將分揀擋板旋轉(zhuǎn)至對應(yīng)的分區(qū)上方,1 號舵機(jī)再翻轉(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ù)集,是為了得到符合實(shí)際情況,更好地模擬現(xiàn)實(shí)。通過OpenMV 多角度拍攝得到的2932 張數(shù)據(jù)集,包含不可回收垃圾、廚余垃圾、可回收垃圾、有害垃圾等四大種類,部分垃圾樣本示例如圖3所示。
圖3 部分垃圾樣本示例圖
將數(shù)據(jù)集上傳,隨機(jī)抽取79%圖片作為訓(xùn)練集,21%圖片作為測試集,并做相應(yīng)類別標(biāo)簽。因所采集的數(shù)據(jù)集較少,為了提高數(shù)據(jù)處理精度,使用幾何處理和數(shù)字信號處理(DSP)技術(shù)進(jìn)行圖像處理,主要功能包括對圖像進(jìn)行尺寸縮放以及使用適合最短軸方法將圖像大小統(tǒng)一處理為96×96 像素。采用DSP 技術(shù)對圖像進(jìn)行預(yù)處理,以獲得RGB 彩色圖像,能夠更好地保留圖像的信息。把圖像轉(zhuǎn)換成一段特征數(shù)據(jù),以便進(jìn)一步進(jìn)行的圖像處理。
自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)確率的前提下,大幅減小模型體積、計算量和運(yù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ù)集對這些層進(jìn)行訓(xùn)練,以便獲得不同種類的垃圾特征。最后,對模型進(jì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]。具體實(shí)現(xiàn)方式是:首先,加載已經(jīng)訓(xùn)練好的MobileNetV2 網(wǎng)絡(luò)模型,在此基礎(chǔ)上添加新的可訓(xùn)練層,一般是全連接層或者卷積層,根據(jù)新問題的需要進(jìn)行設(shè)計。然后,使用新的數(shù)據(jù)集對這些層進(jìn)行訓(xùn)練,以適應(yīng)新問題要求。在訓(xùn)練過程中,常常使用遷移學(xué)習(xí)中的fine-tuning 技術(shù),即保持已有層的參數(shù)不變,只在可訓(xùn)練層進(jì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í)流程圖
為驗(yàn)證本次設(shè)計所提模型的遷移性能及有效性,進(jìn)行了準(zhǔn)確度實(shí)驗(yàn)。實(shí)驗(yàn)數(shù)據(jù)集均為實(shí)際拍攝圖片,并非使用網(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],實(shí)驗(yàn)結(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ù)變化曲線,圓點(diǎn)標(biāo)記藍(lán)色實(shí)曲線表示驗(yàn)證集,紅色實(shí)曲線表示驗(yàn)證集??梢詮膱D中看出訓(xùn)練集的準(zhǔn)確率為0.9765,驗(yàn)證集的準(zhǔn)確率為0.9077,訓(xùn)練集的損失為0.9092,驗(yàn)證集的損失為0.4167,準(zhǔn)確率和損失函數(shù)隨著訓(xùn)練次數(shù)的增加而逐漸趨于平穩(wěn),最終模型驗(yàn)證集的損失分為0.283。
圖7 模型交叉熵?fù)p失函數(shù)變化曲線圖
使用TensorFlow Lite converter 將最優(yōu)模型轉(zhuǎn)換成tflite 格式模型文件,部署在OpenMV 攝像頭模塊上,最后進(jìn)行整機(jī)的調(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ī)也能根據(jù)設(shè)定快速作出相應(yīng)反應(yīng)。
針對傳統(tǒng)的垃圾分類方法需要大量的人力和時間成本,難以滿足大規(guī)模的分類需求,本文提出了一種基于輕量化卷積神經(jīng)網(wǎng)絡(luò)模型,結(jié)合遷移學(xué)習(xí)和STM32F103 單片機(jī)的系統(tǒng)設(shè)計與研究。首先,使用遷移學(xué)習(xí)的方法,將MobileNetV2 預(yù)訓(xùn)練模型提取的垃圾圖像特征遷移到新的可訓(xùn)練層,并采用TensorFlow 框架進(jìn)行模型訓(xùn)練;其次,使用TensorFlow Lite converter 將最優(yōu)模型轉(zhuǎn)換成tflite 格式模型文件,部署在OpenMV 攝像頭模塊上。最后,對該系統(tǒng)整機(jī)調(diào)試及實(shí)驗(yàn)測試,其測試結(jié)果表明,基于MobileNetV2 和遷移學(xué)習(xí)的垃圾分揀系統(tǒng),能夠完成對不可回收垃圾、廚余垃圾、可回收垃圾、有害垃圾這四大類識別并自動分揀,大大提高垃圾分類的效率,減少人工分類帶來的時間損失和資源浪費(fèi),同時還能對環(huán)境保護(hù)做出重要的貢獻(xiàn)。在未來,相信此項技術(shù)將會被廣泛應(yīng)用,并發(fā)揮出更加重要的作用。