我用飛槳做了一個可回收垃圾材料分類機

 

隨着社會生產力的發展,工業化、城鎮化的興起和人口增加,人類社會產生的垃圾與日俱增,加劇了全球範圍內的資源短缺和環境污染,對自然環境和人體健康帶來了巨大的挑戰。

 

從中國新能源網和中國再生資源回收利用協會的“2018 年城市垃圾處置報告”中瞭解到,城市生活垃圾中的可再生資源的價值非常可觀。在德國、比利時、法國、荷蘭等發達國家使用機械化垃圾分類,可回收垃圾利用率較高,廢舊玻璃回收率高達85%以上,而目前我國廢舊玻璃的回收率不足30%,多數地區回收率只有15%。

 

近年來,深度學習在圖像分類和目標識別領域取得了突破性進展。因此,該項技術也在垃圾處理中進行了研究和應用,也誕生了垃圾分類手機APP和嵌入式邊緣設備。但是,這些研究都是針對單一的可回收垃圾數據集進行的圖像分類,模型缺少對於新的、較爲複雜環境的垃圾數據的分類檢驗,也沒有進行多目標垃圾識別的研究。本文運用百度飛槳深度學習框架,分別構建了ResNet50和以MobileNetv1 爲骨架的SSD深度神經網絡的可回收垃圾分類及檢測模型,對可回收垃圾的圖像進行分類和目標識別,圖像分類識別準確度可以達到95%,目標識別mAP可以達到63%。

 

圖像分類及目標識別模型架構,詳見百度飛槳官方Github:

ResNet50: 

https://github.com/PaddlePaddle/models/tree/release/1.7/PaddleCV/image_classification

以MobileNetv1爲骨架的 SSD:

https://github.com/PaddlePaddle/PaddleDetection

在下文中,我們將爲大家解析可回收垃圾材料分類機圖像分類和目標識別的過程。

圖像分類

01

數據採集與預處理

本設計研究的對象爲可回收垃圾材料,使用的數據來源於斯坦福大學的可回收垃圾集和自行調查拍攝增補的可回收垃圾材料集,包含紙、金屬、玻璃、塑料這4類可回收垃圾材料,共1987張垃圾圖像,每一類均有500張左右的照片。

圖 1  數據集樣圖

應用留出法,將80%的樣本設置爲訓練集,20%的樣本設置爲測試集。爲了增加訓練集的數據量,提高模型的泛化能力,對訓練集進行數據增強處理,應用數據增強技術,對已有圖片做縮放、隨機旋轉、隨機裁剪、對比度調整、色調調整以及飽和度調整,使得總訓練樣本量達到13909張,數據增強後,大幅提升了訓練樣本數量。

 

02

遷移學習

在本研究中,針對目前可回收垃圾數據集資源較少的問題,爲保證模型的魯棒性及泛化能力,採取Fine Tune遷移學習策略。該學習策略採用兩步化方案:第一步是預訓練過程,首先,讓卷積神經網絡載入預訓練參數,並且凍結網絡的隱藏層,阻止全連接層進行反向傳播,接着,以較小的學習率與訓練數據規模,對新數據集的訓練集進行訓練,最終獲得一個新的全連接層;第二步是解除隱藏層的凍結,允許預訓練得到的全連接層進行反向傳播,對隱藏層的權重進行優化並微調(Fine Tune)。

圖 2 Fine Tune遷移學習示意圖

以上述的數據集作爲遷移學習的訓練集,以飛槳開放的ImageNet預訓練參數作爲遷移學習源。構建卷積神經網絡,去除最後一層全連接層(分類器),將預訓練參數載入卷積神經網絡(特徵提取器),同時凍結整個整個卷積神經網絡,阻止其在預訓練過程中進行反向傳播。在完成預訓練後,保存新的分類器參數。

接着,開放分類器上層的卷積神經網絡部分,允許訓練過程中從全連接層到網絡淺層的反向傳播,並且使用新的全連接層對特徵提取器進行微調,使得模型更好的應用於新的數據集。

03

模型性能比較

針對垃圾圖像數據集,在沒有使用Fine Tune遷移學習時,SE_ResNeXt-50在測試集上的準確率爲93%;使用遷移學習方案後, SE_ResNeXt-50在測試集上的準確率95%,不僅如此,使用遷移學習後,模型的訓練次數減少了原本的50%以上,大幅縮短了訓練時間,同時也提升了模型的性能。

表 1 Fine Tune遷移學習對模型性能比較

模型

測試準確率

是否遷移學習

SE_ResNeXt-50

93%

SE_ResNeXt-50

95%

 

圖 3 SE_ResNeXt-50訓練損失值以及訓練正確率

圖 4 SE_ResNeXt-50 測試混淆矩陣

結合上述研究,SE_ResNeXt-50在測試集中的表現效果較好,但從其混淆矩陣中發現,對於金屬與玻璃兩種可回收垃圾的分類仍存在誤差,在未來的研究中,希望引入物體光譜的數據集來緩解這一問題。

04

基於Web服務器分類系統設計

爲實現可回收垃圾材料分類機的落地實現,我們設計了一個原型機。原型機設計包括服務器端代碼模塊、樹莓派舵機套件組裝及嵌入式系統代碼模塊。

圖 5 垃圾材料分類器系統設計圖

在服務器端部署在線推理引擎。我們將Base64圖像解碼模塊和飛槳預測模型內嵌在一個基於Flask的Python Web框架中,用於接收熱數據並進行實時的垃圾圖像預測分類。

Flask與飛槳預測模型的執行是完全同步的,即按照接收客戶端請求的順序,順序地處理並將分類結果返回至客戶端。

邊緣端是基於樹莓派配合攝像頭和垃圾桶套件實現的。在樹莓派上配置Python腳本,控制攝像頭進行延遲拍攝並將圖片保存至本地;將圖片轉爲Base64編碼,以Post方式發送給服務器端,服務器端處理後以二進制形式將結果返回給樹莓派;樹莓派接收結果後,腳本調用指定的GPIO端口,控制舵機運作。

圖 6 垃圾材料分類器

目標識別

 

01

數據準備與數據預處理

在本研究中,研究對象爲可回收垃圾,我們將可回收垃圾材料分爲四類,分別是玻璃、塑料、金屬、紙張,將斯坦福大學的可回收垃圾圖像數據集(TrashNet dataset)[1]的1987張可回收垃圾圖像數據和自行採集的253張多目標可回收垃圾圖像進行打標籤,每一個樣本的尺寸均爲512 x 384 px。

圖 7 數據集樣例

爲了進行可回收垃圾的目標識別,使用圖像標註軟件Labelimg1.3.3標註每一幅圖像中可回收垃圾的座標和類別,生成xml格式的標籤文件,再轉換爲coco格式的不同背景下可回收垃圾圖像(圖8)。

圖 8 使用軟件Labelimg 1.3.3標註數據集

將斯坦福大學的可回收垃圾和自行採集的數據集融合並標註完成,我們使用留出法將80%的樣本設置爲訓練集,20%的樣本設置爲測試集。爲了增加訓練集的數據量,提高模型的泛化能力,對訓練集進行數據增強處理,應用數據增強技術,對已有圖片進行縮放、隨機旋轉、隨機裁剪、對比度調整、色調調整以及飽和度調整等數據增強操作,其中表2描述了多目標識別數據集中每類可回收垃圾的數量。

表2 可回收垃圾材料類別數量

 

02

MobileNetv1-SSD目標識別的優勢

Single Shot MultiBox Detector (SSD) 是一種單階段的目標檢測器。與兩階段的檢測方法不同,單階段目標檢測並不進行區域推薦,而是直接從特徵圖迴歸出目標的邊界框和分類概率。SSD 運用了這種單階段檢測的思想,並且對其進行改進:在不同尺度的特徵圖上檢測對應尺度的目標。如下圖所示,SSD在六個尺度的特徵圖上進行了不同層級的預測。每個層級由兩個3x3卷積分別對目標類別和邊界框偏移進行迴歸。SSD可以方便地插入到任何一種標準卷積網絡中,比如 VGG、ResNet 或者 MobileNetv1,這些網絡被稱作檢測器的基網絡。這裏我們使用輕量級的MobileNetv1作爲檢測器的基網絡。

圖9 MobileNetv1 SSD 體系架構

 

SSD[2]方法基於一個前向卷積網絡,該網絡生成一個固定大小的邊界框集合,並根據這些框中物體的包含程度進行評分,然後執行要給非最大抑制步驟,產生最後的檢測結果。

圖10目標識別邊界框集合

MobileNetv1[3]是一種針對資源受限環境的網絡結構,能夠輕鬆部署運算能力較弱的設備,由深度可分離卷積代替標準卷積建立的,深度可分離卷積是把標準卷積分解成深度卷積和逐點卷積,這樣可以大幅度降低參數量和計算量。

圖11 左圖爲標準卷積,右圖爲深度可分離卷積

MobileNetv1完整結構如下表所示:

03

實驗過程及實驗結果

由於我們團隊比較缺乏算力,因此使用了AI Studio平臺免費提供的高級版(GPU:Tesla V100,Video Mem:16GB;CPU:8Cores,RAM:32GB, Disk:100GB)。

訓練過程首先定義GPU計算場所,創建一個executor,對program進行參數初始化。設置迭代次數,用訓練集進行訓練。在訓練過程中,模型每完成1次迭代 ,保存模型並輸出pass_id, loss, mAP,損失率逐漸下降,mAP逐漸提高,模型逐漸優化。保存參數模型,生成預測模型,評估模型。在訓練過程中,每完整地訓練10個epoch後,將輸出當輪的參數模型,方便從中間節點重新訓練模型。完成訓練後,將輸出預測模型。利用測試集對訓練的網絡進行評估,輸出mAP 63%,實驗結果如下。

圖12目標識別測試結果

然後,嘗試使用樹莓派模擬可回收垃圾材料分類機的落地實現,服務器端使用飛槳深度學習框架訓練MobileNetv1 SSD 目標識別模型,利用Paddle Lite提供的工具編譯模型,將模型部署在樹莓派等邊緣設備,樹莓派獲取攝像頭照片並執行編譯後的模型,輸出結果,控制舵機,在樹莓派上的實驗結果如圖14。

圖 13 邊緣端設備執行模型過程

 

圖 14 邊緣端設備執行結果

 

Paddle Lite詳解及使用,詳見百度飛槳官方Github:

https://github.com/PaddlePaddle/Paddle-Lite

https://github.com/PaddlePaddle/Paddle-Lite-Demo

總結與展望

經過實驗和分析,該原型機設計基本達到了設計目標,實現了在小區垃圾回收站的可回收垃圾自動分類的效果,單目標垃圾分類準確率爲95%,多目標垃圾識別準確率達63%,說明基於飛槳框架的垃圾圖像分類具有較好的應用效果。

增加可回收垃圾的數據集、提高可回收垃圾模型的識別率進而達到模型落地應用的程度是該項目後期需要努力的方向。根據可回收垃圾處理方式的不同,精細化垃圾的種類,將識別模型運用於:瓶子的瓶蓋是否已經打開;原紙印刷品、牛奶盒、雞蛋盒、再生紙等更加精細的分類;對於不同顏色玻璃的分類,對於不同金屬顏色的分類等。

在智能垃圾箱的設計中,配合積分獎勵制度及實名制度,鼓勵用戶對可回收垃圾分類事業作出努力與貢獻,那麼從可回收垃圾的源頭就可以實現粗分類,有效緩解可回收垃圾在源頭上進行分類,提高再生資源回收率;多目標垃圾識別的可行性僅在高性能PC端得到驗證,具體的模型提升和機械設計仍需進一步努力實現。

最終,將深度學習模型與機械自動化技術融合,將其運用於真正的再生資源全品類分類處理的第一線,實現基於目標識別和圖像分類的可回收垃圾材料分類機的完整系統,提高我國垃圾處理的自動化設備率和可回收垃圾的利用率。

參考文獻

[1].   Gary Thung, Mindy Yang. Classification of Trash for Recyclability Status.

[2].   Wei Liu1, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy,Scott Reed, Cheng-Yang Fu, and Alexander C. Berg. SSD: Single Shot MultiBox Detector

[3].   Andrew G. Howard  Menglong Zhu Bo Chen Dmitry Kalenichenko Weijun Wang Tobias Weyand Marco Andreetto Hartwig Adam.MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications.arXiv:1704.04861v1 [cs.CV] 17 Apr 2017

 

如果想與更多深度學習同學交流,歡迎加入飛槳官方QQ羣:703252161

如果在端側部署中遇到問題,歡迎加入Paddle Lite官方QQ羣與開發人員進行技術交流及問題反饋:696965088

 

END

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章