曹胡鍇,劉致軒,雷丹,肖書浩,孟凡非
(武昌首義學院 機電與自動化學院,湖北武漢, 430064)
目前,中國的垃圾處理和分類過程仍以人工分揀為主,需要工人在流水線上識別垃圾的類型,人工完成垃圾的分揀操作。雖然這種工作方式簡單可行,但卻帶來了突出的環境衛生問題,而且不能保證分類的效率和準確性。
目前,基于模式識別的圖像分類方法已被應用于工業領域,但這種圖像分類方法的魯棒性不足,抗干擾能力弱,導致圖像分類結果準確性不高。此外,由于算法的有效性有限,垃圾自動分類在很長一段時間內沒有取得突破性進展。最近,隨著計算機性能的快速發展,依托大數據和GPU計算的深度學習取得了很大的進展?;谏疃葘W習的圖像分類算法已經取代了傳統的圖像算法,成為工業和學術界的主流。本文提出了一種基于ResNet50_vd_ssld網絡的垃圾分類圖像算法,運用深度學習技術來進行垃圾分類,通過使用PaddlePaddle來學習出可以進行垃圾分類的圖像分類模型?;谧詫W習和泛化能力,從而顯著提高圖像分類的準確性和魯棒性[4~9]。
垃圾分類系統主要由能夠識別不同垃圾類型的嵌入式主控和實現半自動化分揀控制的機械結構組成。分揀機構的垂直結構是在我們平時使用的垃圾桶的基礎上進行改造設計的,充分利用了垃圾桶的空間和外形。具體的垃圾識別以及分揀過程如圖1所示。當垃圾進入系統后,CPU激活攝像頭獲得垃圾圖像,然后運行卷積神經網絡獲得垃圾類別信息,最后控制機械結構根據垃圾類別的分類使垃圾落入相應的垃圾桶。

圖1 系統總體設計圖
1.2.1 基于深度學習的軟件方案
軟件編程平臺選用Python編程平臺,Python在機器學習領域非常體貼開發者,語言簡潔,其生態成熟,開發效率更高。

圖2 軟件方案
paddleX集深度學習核心訓練和推理框架、基礎模型庫、端到端開發套件和豐富的工具組件于一體。
OpenCV可用于檢測識別圖像中的對象,并且包含了眾多圖像處理和視頻分析算法,并廣泛應用于圖像和視頻處理中。
1.2.2 深度學習模型的遷移學習

圖3 遷移學習示意圖
遷移學習自從被提出之后就受到工業及學術界的廣泛關注,遷移學習就是把已經訓練好的模型參數遷移到新的模型當中,來幫助模型進行訓練。而且一般它們的數據和任務是相似的,所以遷移學習是可以通過已經學到的模型參數,通過源領域(圖像)學到的東西應用到目標領域(圖像),加快模型的收斂速度及識別準確率。

圖4 從ImageNet到垃圾分類遷移學習示意圖
ResNeXt-101是一個相對簡單且高度模塊化的圖像分類網絡架構,它在ImageNet分類數據集上的表現優于ResNet-101/152、ResNet200等模型。特別是第101層ResNeXt比ResNet-200有更高的準確性,但復雜度只有其的50%,而且其準確率一直比ResNet好。ResNeXt降低了瓶頸比例,用分組卷積取代了中間的正常卷積。這種結構可以在不增加參數數量的情況下提高精度,同時減少超參數的數量。

圖5 ResNet和ResNeXt的網絡模塊
本文所使用的網絡模型是ResNet50_vd_ssld,該模型使用了知識蒸餾技術,在保證模型結構不變的情況下,進一步提高了模型的識別準確率。我們在參數量不變的情況下,極大地提高了分類精度,并且減少了計算難度,通過知識蒸餾在不減少模型準確率的情況下,去掉一些無關的模型參數,來減輕模型的復雜程度,這提高了模型的訓練速度,且有利于其在實際垃圾分類場景中的應用。
我們使用MobileNetV2來進行垃圾分類的對比訓練,預訓練模型采用標準ImageNet格式的訓練集,最終MobileNetV2垃圾分類驗證集上在第235個Epoch時,acc1的精度最高,最優值為0.3191,top-5準備率為0.6771,不同模型結構的網絡在相同數據集上的性能表現不同,需要根據預測耗時以及存儲的需求選擇合適的模型。

圖6 SSLD流程圖

圖7 MobileNetV2驗證集acc1曲線
在使用通過知識蒸餾得到的預訓練模型進行微調時,我們推薦使用相對較小的網絡中間層學習率。為了驗證ResNet50_vd_ssld模型和MobileNetV2模型的大小差異,本組模型訓練策略調整為:cosine_decay_warmup,lr=0.0075,epoch=120,bs=8,保存間隔為2。
最終垃圾分類驗證集上精度指標接近100%,相對于之前模型的物體識別準確率,模型性能指標獲得較大的提升。

圖8 ResNet50_vd_ssld模型誤差

圖9 ResNet50_vd_ssld模型識別準確率
訓練數據集是采用“華為云垃圾分類挑戰杯”賽方依照深圳市頒布的垃圾分類標準制作的數據集, 本文中所使用的數據集全部轉換為了ImageNet格式,數據集一共包括了14802余張垃圾圖片,共分為可回收物、不可回收物、餐廚垃圾和其他垃圾4大類,然后以此再分為40個小類。

圖10 不同類別樣本分布
首先對圖片進行隨機水平翻轉、隨機亮度、高斯噪聲、隨機旋轉角度等預處理操作。進行數據預處理之后,按照7:2:1的比例對數據進行劃分為訓練集、驗證集和測試集。
在垃圾分類的模型處理中,我同時選取了百度的飛槳PaddlePaddle作為深度學習的開發平臺。實驗證明,基于ResNet50_vd_ssld模型進行訓練,在ImageNet1k驗證集上即使我的數據量不高,也能夠進行高精度的圖像分類。
我使用了ResNet50_vd_ssld模型進行訓練,ResNet 50_vd_ssld模型采用了知識蒸餾技術,它的教師模型是ResNeXt101_32x16d_wsl,也是我下文將要使用的模型,該模型的Top1正確率為84.2%。

圖11 數據集圖片展示

圖12 各模型計算速度

表2 訓練模型參數
將在PaddleX上訓練得出的圖像分類網絡模型導出,在Pycharm上進行代碼的修改。該模型對40種日常生活中所常見的垃圾進行分類,實現了最高100%的識別準確率,取得了比較好的效果。模型訓練了120個Epoch,整體模型在108個Epoch時acc1值達到最優,最優值為0.7663。最后的實驗結果也表明:該模型具有很好的魯棒性,部分垃圾種類的識別準確率達到99%以上。

表1 樣本分類標準

圖13 塑料袋的識別

圖14 測試集圖片識別準確率
整個試驗過程所用到的計算機環境配置以及ResNext101內部部分參數設置如表3所示[9]。

表3 環境配置

表4 參數設置
上述參數中,top-1準確率通常作為模型整體準確率的評價指標之一,其計算方法如式(1)所示:

上式中test_pred 表示在經過模型學習過程后,測試集的分類結果。 test_true 表示測試集標注的所有標簽種類,num(test_pred=test_true)表示識別正確的圖片數, num(test)表示測試集中總圖片數。top-1準確率意思就是模型在經過學習之后,識別正確的圖像占所有測試集樣本中的比重,也表示測試數據集平均的識別成功率。
通過對模型進行深度學習并且進行不斷的迭代,模型訓練結束之后,使神經網絡能夠對40類生活垃圾的圖像進行分類。最后我們將模型進行導出,通過調用電腦的攝像頭,這樣可以實時地對垃圾的種類進行識別,并取得了不錯的效果。
本論文將ResNet50_vd_ssld網絡用于垃圾分類,部分種類最高取得了100%的準確度,其特色和創新表現在:①相比傳統圖像分類算法,模型具有比較好的魯棒性,對環境噪聲(如照明、遮擋等)有較強的抵抗能力;②實現了垃圾分類端到端分類模型,輸入圖片,就可得到結果,無需任何人為特征提取和閾值設定;③訓練深度學習模型用到了遷移學習方法,即利用其他已經訓練好的模型來開始訓練垃圾分類模型,而不是從頭開始訓練;④模型訓練過程使用了SSLD知識蒸餾方案(SSLD,Simple Semi-supervised Label Distillation),既保證了模型識別的精度,又控制了模型的規模大小。⑤99%以上的識別準確度,達到工程實用標準。
由于時間的關系,本課題只解決了圖像只含有單一垃圾類別的圖像分類問題,并未考慮圖像中有多個垃圾類別的問題,未來可以用深度學習中的多目標檢測模型來識別多個目標。同時,為了達到工程實用的目的,垃圾圖像數據集還要進一步完善,一方面增加垃圾種類,另一方面增加同一種類垃圾的圖像樣本數量。