南航金城學院機電工程與自動化學院 李朝宇 田 莉 劉偉康 閆文龍 吳家潤
隨著人們的生活水平越來越高,生活垃圾的處理變成了社會的一大難題,為解決居民日常生活中的垃圾分類問題,提出了基于圖像識別的垃圾分類系統。將卷積神經網絡部署在服務器里,并通過API接口移植到樹莓派主控板中,實現前后端分離的設計,設計了垃圾分類器的機械結構,最終實現了垃圾自動分類功能,系統具有較高識別率,維護成本低,方便實用的特點,為實現智慧城市,提高居民宜居感,提高資源利用率提供一種解決方案。
目前城市里每天會產生2.55萬t左右的生活垃圾,人均每天產生1.1kg,而且數量還在上漲,如此多的垃圾,如果不對其進行垃圾分類,將會造成資源的大量浪費以及對環境的巨大破壞。目前多個城市已經強制推行垃圾分類,但是由于配套設施的不完善和人們的垃圾分類意識不足,垃圾分類的成效不太理想。本文通過搭建云服務器,設計并不斷優化卷積神經網絡、對生活垃圾中的可回收垃圾、有害垃圾、廚余垃圾、其他垃圾進行了高效智能識別,設計出可自動進行垃圾分類的智能垃圾桶,為構建生態文明城市提供一種智能化解決方案。
本系統的硬件設計采用樹莓派作為控制器,垃圾桶的桶體為圓柱形,等分為4個分類桶,分類桶的桶蓋向內凹陷成錐形槽,在垃圾桶左方架設一個支撐架用于支撐人工操作顯示屏,并且在錐形槽正上方安裝攝像頭及燈泡,調整角度使其能夠最大范圍內識別垃圾,架設四個舵機撥片操作云臺,通過樹莓派發出指令,使對應的舵機箱蓋打開,對各種垃圾進行精確的分類處理。機械裝置的3D示意圖如圖1所示。

圖1 垃圾桶硬件平臺3D模型
整體的系統設計如圖2所示,是攝像頭對停駐層上的垃圾進行數據采集,并將圖像信息傳入OpenCV計算機視覺庫,經由圖像處理后交由云端的Tensorflow中進行整合訓練,最終結果返回給樹莓派,樹莓派主控應用Electron控制flask進行頁面交互和舵機控制,服務器端負責管理數據并利用卷積神經網絡訓練模型,提供應用API接口,由flask進行調用,形成了前后端分離的設計。

圖2 垃圾分類系統總體設計圖
卷積神經網絡(CNN)有較好的非線性形變穩定性,即當我們將垃圾位置進行平移后,仍能得到同樣的檢測結果。卷積神經網絡結構可分為卷積層、最大池化層和全連接層,其結構如圖3所示。

圖3 卷積網絡結構圖
卷積層:卷積層的作用是對輸入數據進行卷積運算。卷積神經網絡中每個卷積層需要使用激活函數。激活函數是對卷積層的數據結果運用激活函數進行非線性映射,本文使用ReLU作為激活函數,其函數定義為:

即輸入<0,輸出=0。輸入>0,輸出=輸入。
與其他函數相比,ReLU激活函數的優點是收斂快,梯度運算簡單。ReLU激活函數的函數圖像如圖4所示:

圖4 ReLU激活函數
池化層:池化層的主要作用是通過對上一層輸出做降維處理,即取特征圖的最大值使其降低維度,如圖5所示。

圖5 最大池化層示意圖
全連接層:將二維特征圖轉換為一維的向量,該層執行最后一個矩陣乘法器以計算輸出。

圖6 全連接網絡圖
圖6所示是一個簡單的全連接網絡圖,表示全連接層上的每個節點都與上層的節點連接,其中x1、x2、x3為全連接層的輸入數據,a1、a2、a3為輸出數據,全連接層的計算公式如下:

本文采用神經網絡ResNet50預訓練模型,該模型利用殘差學習來解決退化問題。
Resnet的擬合方程是,如下的公式:

其中H(x)為當前網絡中擬合的殘差映射,F(x)和x分別是一個block層的輸出和輸入,本文采用三層block結構,如圖7所示,可以有效提高模型運算速度。

圖7 ResNet50網絡結構
數據集是神經網絡訓練的基礎,系統目標是將可回收材料從居民的日常垃圾中區別出來,所以根據居民垃圾的可回收分類標準,本項目從網上收集了17350張開源照片,對圖片進行人工標注并將圖片分為可回收垃圾、有害垃圾、廚余垃圾和其他垃圾。可把數據集分為訓練集和測試集用于神經訓練,分別得到各自的損失值和精度值,將訓練集上的損失值和精度值用于更新參數,而測試集用于評估模型。
2.4.1 訓練環境
訓練環境搭建在服務器中,選擇Tensorflow1.6作為深度學習的框架,代碼的實現環境是Python3.6,Keras2.3.1作為代碼的深度學習庫,Keras是基于Python編寫的高級神經網絡,它能夠以Tensoflow作為后端運行。
2.4.2 模型訓練
首先導入需要的包和庫,并定義神經網絡參數,如學習效率λ=0.0001,防過擬合參數dropout=0.5,加載數據集,并對其進行預處理,將圖片統一設置成(224,224,3)的三通道RGB圖片,對圖片隨機剪切、翻轉和旋轉等操作,最后引入Resnet50預訓練模型。定義卷積層,設置卷積核大小,步幅strides=1,對圖像進行低級特征提取,邊界填充=0,激活函數選用Relu,加入卷積核權重weight decay=0.0001和偏置送入激活函數中。定義最大池化層,對輸入特征降維縮小最后全連接節點個數,定義全連接層,dropout層與Relu激活函數能有效降低過擬合概率,提高數據訓練時間,使用SVM支持向量機對輸出進行分類,將垃圾分為可回收垃圾、有害垃圾、廚余垃圾和其他垃圾。
2.4.3 模型優化
Tensorflow的模型在運行時,需要優化參數,使損失函數達到最小,故需引入Adam優化器,優化器的任務是在每一個Epoch中計算損失函數的梯度,并更新參數。本系統設置學習率,矩估計指數衰減率,步長。
將Tensorflow訓練中的數據保存,并可視化之后,發現損失函數值最低為0.78,識別精度最高為95.52%。如圖8所示。

圖8 損失函數變化圖
用測試集中的圖片,對其在PC端的識別精度進行測試,如表1所示,模型在PC端運行良好,能基本區分測試圖片,測試準確率最高可達到95%。如圖9所示。

圖9 識別精度變化圖

表1 神經網絡模型在PC端的識別率數據表
將神經網絡模型部署在服務器端上后,使用測試圖片進行識別測試,獲得識別準確率,如表2所示,部署后的卷積神經網絡識別準確率與在PC端上運行時準確率一致,移植效果較好。

表2 神經網絡模型在服務器端的識別率數據表
樹莓派是基于Linux開發的,我們需要開發一個能在Linux環境下穩定運行的桌面應用。ELECTRON-VUE相當于一個瀏覽器的外殼,可以把網頁程序嵌入到硬件程序里面,可以運行在桌面上的一個程序,可以把網頁打包成一個在桌面運行的程序,通俗來說就是軟件,一個可以構建跨平臺桌面程序。

圖10 人機交互界面設計圖
在人機交互軟件上,除自動運行方式外,還可讓用戶在軟件上手動選擇垃圾種類,啟動分類裝置動作。如圖10所示。
本系統針對垃圾分類問題,提出了通過搭建云服務器,設計并不斷優化卷積神經網絡,可對生活垃圾中的可回收垃圾、有害垃圾、廚余垃圾、其他垃圾進行智能識別。垃圾識別精度達到了95.52%,滿足設計的應用需求,具有良好的應用前景。