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

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

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

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

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

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

表1 不同學習率時模型的準確率
根據表1可知,學習率設置為0.0005,迭代次數為20時,訓練效果最佳[8]。即此次模型訓練的學習次數設置為20 次,學習率設置為0.0005,其模型訓練結果如圖6、7 所示。

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

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

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