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

圖1 垃圾桶硬件平臺(tái)3D模型
整體的系統(tǒng)設(shè)計(jì)如圖2所示,是攝像頭對(duì)停駐層上的垃圾進(jìn)行數(shù)據(jù)采集,并將圖像信息傳入OpenCV計(jì)算機(jī)視覺(jué)庫(kù),經(jīng)由圖像處理后交由云端的Tensorflow中進(jìn)行整合訓(xùn)練,最終結(jié)果返回給樹莓派,樹莓派主控應(yīng)用Electron控制flask進(jìn)行頁(yè)面交互和舵機(jī)控制,服務(wù)器端負(fù)責(zé)管理數(shù)據(jù)并利用卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練模型,提供應(yīng)用API接口,由flask進(jìn)行調(diào)用,形成了前后端分離的設(shè)計(jì)。

圖2 垃圾分類系統(tǒng)總體設(shè)計(jì)圖
卷積神經(jīng)網(wǎng)絡(luò)(CNN)有較好的非線性形變穩(wěn)定性,即當(dāng)我們將垃圾位置進(jìn)行平移后,仍能得到同樣的檢測(cè)結(jié)果。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)可分為卷積層、最大池化層和全連接層,其結(jié)構(gòu)如圖3所示。

圖3 卷積網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積層:卷積層的作用是對(duì)輸入數(shù)據(jù)進(jìn)行卷積運(yùn)算。卷積神經(jīng)網(wǎng)絡(luò)中每個(gè)卷積層需要使用激活函數(shù)。激活函數(shù)是對(duì)卷積層的數(shù)據(jù)結(jié)果運(yùn)用激活函數(shù)進(jìn)行非線性映射,本文使用ReLU作為激活函數(shù),其函數(shù)定義為:

即輸入<0,輸出=0。輸入>0,輸出=輸入。
與其他函數(shù)相比,ReLU激活函數(shù)的優(yōu)點(diǎn)是收斂快,梯度運(yùn)算簡(jiǎn)單。ReLU激活函數(shù)的函數(shù)圖像如圖4所示:

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

圖5 最大池化層示意圖
全連接層:將二維特征圖轉(zhuǎn)換為一維的向量,該層執(zhí)行最后一個(gè)矩陣乘法器以計(jì)算輸出。

圖6 全連接網(wǎng)絡(luò)圖
圖6所示是一個(gè)簡(jiǎn)單的全連接網(wǎng)絡(luò)圖,表示全連接層上的每個(gè)節(jié)點(diǎn)都與上層的節(jié)點(diǎn)連接,其中x1、x2、x3為全連接層的輸入數(shù)據(jù),a1、a2、a3為輸出數(shù)據(jù),全連接層的計(jì)算公式如下:

本文采用神經(jīng)網(wǎng)絡(luò)ResNet50預(yù)訓(xùn)練模型,該模型利用殘差學(xué)習(xí)來(lái)解決退化問(wèn)題。
Resnet的擬合方程是,如下的公式:

其中H(x)為當(dāng)前網(wǎng)絡(luò)中擬合的殘差映射,F(xiàn)(x)和x分別是一個(gè)block層的輸出和輸入,本文采用三層block結(jié)構(gòu),如圖7所示,可以有效提高模型運(yùn)算速度。

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

圖8 損失函數(shù)變化圖
用測(cè)試集中的圖片,對(duì)其在PC端的識(shí)別精度進(jìn)行測(cè)試,如表1所示,模型在PC端運(yùn)行良好,能基本區(qū)分測(cè)試圖片,測(cè)試準(zhǔn)確率最高可達(dá)到95%。如圖9所示。

圖9 識(shí)別精度變化圖

表1 神經(jīng)網(wǎng)絡(luò)模型在PC端的識(shí)別率數(shù)據(jù)表
將神經(jīng)網(wǎng)絡(luò)模型部署在服務(wù)器端上后,使用測(cè)試圖片進(jìn)行識(shí)別測(cè)試,獲得識(shí)別準(zhǔn)確率,如表2所示,部署后的卷積神經(jīng)網(wǎng)絡(luò)識(shí)別準(zhǔn)確率與在PC端上運(yùn)行時(shí)準(zhǔn)確率一致,移植效果較好。

表2 神經(jīng)網(wǎng)絡(luò)模型在服務(wù)器端的識(shí)別率數(shù)據(jù)表
樹莓派是基于Linux開發(fā)的,我們需要開發(fā)一個(gè)能在Linux環(huán)境下穩(wěn)定運(yùn)行的桌面應(yīng)用。ELECTRON-VUE相當(dāng)于一個(gè)瀏覽器的外殼,可以把網(wǎng)頁(yè)程序嵌入到硬件程序里面,可以運(yùn)行在桌面上的一個(gè)程序,可以把網(wǎng)頁(yè)打包成一個(gè)在桌面運(yùn)行的程序,通俗來(lái)說(shuō)就是軟件,一個(gè)可以構(gòu)建跨平臺(tái)桌面程序。

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