柳攀 丁懷寶
摘要:垃圾分類(lèi)是對(duì)垃圾收集處置傳統(tǒng)方式的改革,是對(duì)垃圾進(jìn)行有效處置的一種科學(xué)管理方法。本文以谷歌TensorFlow為框架,設(shè)計(jì)了一款能夠進(jìn)行垃圾分類(lèi)正確識(shí)別的軟件。文中對(duì)垃圾分類(lèi)軟件的設(shè)計(jì)及實(shí)現(xiàn)過(guò)程進(jìn)行了簡(jiǎn)要介紹,重點(diǎn)是對(duì)其中的神經(jīng)網(wǎng)絡(luò)訓(xùn)練系統(tǒng)的設(shè)計(jì)、選擇等進(jìn)行了詳細(xì)說(shuō)明。該軟件在大量測(cè)試數(shù)據(jù)的驗(yàn)證下,證明了其具有較高識(shí)別準(zhǔn)確率,具有良好的市場(chǎng)應(yīng)用前景,同時(shí)也可為同類(lèi)研究提供了一定的借鑒和參考。
關(guān)鍵詞:垃圾分類(lèi);TensorFlow;神經(jīng)網(wǎng)絡(luò)訓(xùn)練
1 引言
2019年9月,為深入貫徹落實(shí)習(xí)近平總書(shū)記關(guān)于垃圾分類(lèi)工作的重要指示精神,國(guó)家機(jī)關(guān)事務(wù)管理局印發(fā)通知,公布了《公共機(jī)構(gòu)生活垃圾分類(lèi)工作評(píng)價(jià)參考標(biāo)準(zhǔn)》。由于人們對(duì)垃圾分類(lèi)意識(shí)的薄弱以及受到知識(shí)的限制,這項(xiàng)工作并沒(méi)能夠很好的完成。基于此,本研究的設(shè)計(jì)思想是完成一個(gè)具有普適性的部署在安卓客戶端的能夠自動(dòng)識(shí)別垃圾種類(lèi)的應(yīng)用程序,以便人們能夠更方便的進(jìn)行日常的垃圾分類(lèi)。
2 設(shè)計(jì)概述
2.1 處理流程設(shè)計(jì)
如圖1所示,按照MVC架構(gòu),軟件大致分為三層:Model層為核心層,主要是通過(guò)TensorFlow Lite接口實(shí)現(xiàn)軟件的模型推理部分;View層是視圖顯示部分,為軟件的UI層,主要呈現(xiàn)分析結(jié)果,參數(shù)設(shè)置等;Controller層為控制層,主要實(shí)現(xiàn)對(duì)本地相機(jī)的調(diào)用并得到實(shí)時(shí)數(shù)據(jù)流,傳回Model層進(jìn)行模型推理。
軟件處理流程設(shè)計(jì)如下:?jiǎn)?dòng)程序后,系統(tǒng)將詢問(wèn)是否開(kāi)啟攝像頭權(quán)限,若拒絕退出程序,同意則進(jìn)入程序;進(jìn)入程序后,調(diào)用攝像頭進(jìn)行拍攝,將拍攝的圖片經(jīng)過(guò)簡(jiǎn)單分析計(jì)算,得到適合TensorFlow Lite識(shí)別的數(shù)據(jù)格式,轉(zhuǎn)而交給推理模塊進(jìn)行深度計(jì)算;在計(jì)算之前,用戶可以選定一些參數(shù)來(lái)控制計(jì)算的導(dǎo)向,最終將分析結(jié)果在顯示模塊中顯示出來(lái);點(diǎn)擊關(guān)閉則退出程序,否則進(jìn)入下一個(gè)物體的識(shí)別,具體見(jiàn)圖2所示。
2.2 神經(jīng)網(wǎng)絡(luò)訓(xùn)練系統(tǒng)的設(shè)計(jì)
該系統(tǒng)是軟件中最重要的部分,能夠?yàn)檐浖峁?zhǔn)確的神經(jīng)網(wǎng)絡(luò)模型,以便軟件能正確分析出垃圾的類(lèi)別,其主要包含數(shù)據(jù)集獲取、模型訓(xùn)練和模型遷移三個(gè)部分。
2.2.1數(shù)據(jù)集獲取
本研究主要是針對(duì)生活垃圾進(jìn)行分類(lèi),但由于生活垃圾的范圍過(guò)于龐大,因此數(shù)據(jù)集的獲取就通過(guò)Python語(yǔ)言從網(wǎng)絡(luò)上大量爬取樣例,預(yù)分類(lèi)后對(duì)每一張數(shù)據(jù)集進(jìn)行人工標(biāo)注,見(jiàn)圖3所示。雖然人工標(biāo)注的步驟比較繁瑣,但可以為T(mén)ensorFlow建立神經(jīng)網(wǎng)絡(luò)模型提供更精準(zhǔn)的識(shí)別條件,從而提高軟件識(shí)別的準(zhǔn)確率。
2.2.2模型訓(xùn)練
該部分又分為四個(gè)小功能,分別是數(shù)據(jù)預(yù)處理、導(dǎo)入數(shù)據(jù)集、產(chǎn)生初步模型、模型訓(xùn)練與優(yōu)化。
(1)數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理包含數(shù)據(jù)增強(qiáng)處理、數(shù)據(jù)標(biāo)準(zhǔn)化處理和數(shù)據(jù)歸一化處理。
數(shù)據(jù)增強(qiáng)可防止在數(shù)據(jù)集較少時(shí)出現(xiàn)過(guò)擬合,主要使用各種函數(shù)對(duì)圖像進(jìn)行相關(guān)調(diào)整,如裁剪、放大、縮小、旋轉(zhuǎn)等。
數(shù)據(jù)標(biāo)準(zhǔn)化處理通過(guò)標(biāo)準(zhǔn)化公式得出,其公式如式1,在該式中,μ為全體圖像數(shù)據(jù)的均值,σ為全體圖像數(shù)據(jù)的方差。
(1);
數(shù)據(jù)歸一化處理由歸一化公式得出,其公式如式2,在該式中,Xmin是數(shù)據(jù)最小值,Xmax是數(shù)據(jù)最大值。
(2)
(2)導(dǎo)入數(shù)據(jù)集
圖像數(shù)據(jù)通過(guò)TensorFlow.data類(lèi)載入。將人工標(biāo)注后的數(shù)據(jù)集處理轉(zhuǎn)化為相應(yīng)CSV數(shù)據(jù),然后得到一個(gè)數(shù)據(jù)庫(kù),應(yīng)用預(yù)處理函數(shù)可以從中得到可供訓(xùn)練的數(shù)據(jù)集。
(3)產(chǎn)生初步模型
該部分設(shè)計(jì)采用MobileNetV2神經(jīng)網(wǎng)絡(luò)模型實(shí)現(xiàn),相較其他版本的神經(jīng)網(wǎng)絡(luò)模型,其具有速度快、參數(shù)少、方便使用等優(yōu)點(diǎn)。
將深度可分離卷積分解為Depthwise Convolution與Pointwise Convolution兩部分,可有效減少參數(shù)量。在傳統(tǒng)卷積運(yùn)算中,總運(yùn)算量為一個(gè)卷積核與一張?zhí)卣鲌D的按位相乘再相加,即DF*DF*DK*DK*M*N,其中DF是特征圖的尺寸,DK是卷積核的尺寸,M是輸入通道數(shù),N是輸出通道數(shù)。而在深度可分離卷積中,一個(gè)卷積核的總運(yùn)算量是DK*DK*M*DF*DF+M*N*DF*DF。
對(duì)比傳統(tǒng)卷積計(jì)算量和深度可分離卷積計(jì)算量可得公式見(jiàn)式3,在該式中,由于輸入通道數(shù)較大,常可忽略不計(jì)。若使用3*3的卷積核,則傳統(tǒng)卷積的運(yùn)
(3)
(4)模型訓(xùn)練與優(yōu)化
設(shè)計(jì)把數(shù)據(jù)集導(dǎo)入并且分成多個(gè)批次,以便內(nèi)存讀取圖像數(shù)據(jù)。優(yōu)化器采用Nadam,損失函數(shù)選擇交叉熵?fù)p失函數(shù),二者均由Keras接口來(lái)實(shí)現(xiàn)。為防止訓(xùn)練停在局部最優(yōu)點(diǎn),將采取余弦退火學(xué)習(xí)率。這種模式能和學(xué)習(xí)率相互配合,以一種十分有效的計(jì)算方式來(lái)產(chǎn)生很好的訓(xùn)練效果。;;;
2.3模型遷移
該部分用于將上述訓(xùn)練得到的最優(yōu)模型進(jìn)行格式轉(zhuǎn)換,提供給適用該軟件的格式進(jìn)行分析與顯示。使用TensorFlow Lite converter轉(zhuǎn)換器將最優(yōu)模型轉(zhuǎn)換為T(mén)ensorFlow Lite能夠識(shí)別的tflite格式,該格式的模型文件可直接應(yīng)用于軟件。
3 軟件的實(shí)現(xiàn)
視圖模塊主要為軟件的UI設(shè)計(jì),由于要顯示的內(nèi)容只有所拍攝物體和識(shí)別結(jié)果以及一些參數(shù)的設(shè)置,因此布局結(jié)構(gòu)并不需要特別復(fù)雜。
攝像頭模塊通過(guò)Camera2 API調(diào)用系統(tǒng)攝像頭權(quán)限,同時(shí)將拍攝的圖像數(shù)據(jù)流傳到推理模塊進(jìn)行推理。系統(tǒng)通過(guò)管道連接到攝像頭,并與之建立會(huì)話連接,之后通過(guò)CaputerRequest和CameraMetadata進(jìn)行會(huì)話。
推理模塊是軟件的重點(diǎn),對(duì)攝像頭拍攝的圖片使用經(jīng)過(guò)訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行處理,然后顯示推理結(jié)論。模型是已經(jīng)訓(xùn)練好的,數(shù)據(jù)的輸入則是攝像頭拍攝的圖像流。而對(duì)模型進(jìn)行預(yù)測(cè)還需要用到TensorFlow Lite提供的interpreter庫(kù),它可以實(shí)現(xiàn)用訓(xùn)練模型對(duì)拍攝物體的類(lèi)別進(jìn)行推理并顯示到視圖模塊。
4 總結(jié)
本文介紹的軟件是基于TensorFlow框架實(shí)現(xiàn)對(duì)模型的訓(xùn)練以及推理識(shí)別過(guò)程,能夠比較有效的識(shí)別垃圾的種類(lèi),降低了垃圾分類(lèi)工作的難度,具有良好的市場(chǎng)應(yīng)用前景。
參考文獻(xiàn)
[1]趙方圓,劉洪浩.基于垃圾分類(lèi)的APP設(shè)計(jì)研究[J].計(jì)算機(jī)產(chǎn)品與流通,2020(07):18+55.
[2]葛程,孫國(guó)強(qiáng).基于卷積神經(jīng)網(wǎng)絡(luò)的圖像分類(lèi)研究[J].軟件導(dǎo)刊,2018,17(10):27-31.
[3]李江昀,趙義凱,薛卓爾,蔡錚,李擎.深度神經(jīng)網(wǎng)絡(luò)模型壓縮綜述[J].工程科學(xué)學(xué)報(bào),2019,41(10):1229-1239.
[4]林景棟,吳欣怡,柴毅,尹宏鵬.卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)化綜述[J].自動(dòng)化學(xué)報(bào),2020,46(01):24-37.
[5]陳麗麗,韓潤(rùn)萍.基于卷積神經(jīng)網(wǎng)絡(luò)的服飾圖像分類(lèi)[J].北京服裝學(xué)院學(xué)報(bào)(自然科學(xué)版),2018,38(04):31-36+58.
基金項(xiàng)目
安徽文達(dá)信息工程學(xué)院校級(jí)科研項(xiàng)目(項(xiàng)目編號(hào):XZR2020A08);安徽文達(dá)信息工程學(xué)院校級(jí)教研項(xiàng)目(No.2019xjy06)。
作者簡(jiǎn)介
柳攀(1997年),男,安徽宿州人,安徽文達(dá)信息工程學(xué)院計(jì)算機(jī)工程學(xué)院軟件工程專業(yè),本科在讀;丁懷寶(1985年),女,安徽懷寧人,安徽文達(dá)信息工程學(xué)院計(jì)算機(jī)工程學(xué)院,講師,碩士,主要研究方向?yàn)檐浖こ獭?/p>