倪中付
(江蘇科大匯峰科技有限公司 江蘇省鎮(zhèn)江市 212000)
近年來(lái),國(guó)民經(jīng)濟(jì)水平逐年提高,居民消費(fèi)質(zhì)量明顯改善,隨之帶來(lái)的生活垃圾增長(zhǎng)率也逐年遞增。2017年以前,國(guó)內(nèi)大多城市的垃圾分類只分為可回收和不可回收兩類,居民的垃圾分類意識(shí)不夠,缺乏垃圾分類基本常識(shí),垃圾分類現(xiàn)狀混亂。2019年6月初,國(guó)家發(fā)改委宣布全國(guó)從2019年開(kāi)始全面啟動(dòng)垃圾分類,一些上門(mén)回收垃圾APP 和智能分類垃圾桶應(yīng)運(yùn)而生[1]。然而,上門(mén)回收垃圾的APP 需要投入大量的上門(mén)回收人員;而智能分類垃圾桶則存在大面積更換所需成本很高的弊端。
針對(duì)當(dāng)前國(guó)內(nèi)居民垃圾分類意識(shí)不夠、基本垃圾分類常識(shí)缺乏,而國(guó)內(nèi)針對(duì)垃圾分類的軟件較少的現(xiàn)狀,本文開(kāi)展基于改進(jìn)VGGNet 的城市生活垃圾分類研究,改進(jìn)了VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)和激活函數(shù),基于TensorFlow 框架,進(jìn)行了VGGNet 網(wǎng)絡(luò)在垃圾圖片分類上的準(zhǔn)確率測(cè)試。
本文垃圾分類數(shù)據(jù)集的構(gòu)建,基于上海市生活垃圾分類標(biāo)準(zhǔn),通過(guò)網(wǎng)上搜集的方式搜集符合要求的圖像共計(jì)79478 張。其中,包含可回收垃圾49251 張、干垃圾5056 張、濕垃圾20356 張及有害垃圾4815 張,各類垃圾圖片的數(shù)量比例如圖1 所示。
常見(jiàn)的VGGNet 網(wǎng)絡(luò)包括VGG16 和VGG19。以VGG16 為例,其網(wǎng)絡(luò)結(jié)構(gòu)的特點(diǎn)為:輸入層為224×224 的RGB 模式圖片;包含13 個(gè)卷積層、3 個(gè)全連接層、5 個(gè)最大池化層和1 個(gè)分類器層;卷積層中的卷積核大小為3×3;所有隱藏層都采用ReLU 作為激活函數(shù);池化層采用最大池化方法[2-3]。
VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)的網(wǎng)絡(luò)層數(shù)多,訓(xùn)練時(shí)計(jì)算量大,收斂速度慢,需要的訓(xùn)練樣本數(shù)據(jù)量大,同時(shí),網(wǎng)絡(luò)參數(shù)較多,以VGG16為例,其訓(xùn)練參數(shù)達(dá)到1.38 個(gè)億,對(duì)計(jì)算機(jī)內(nèi)存的要求較高,同時(shí)訓(xùn)練時(shí)間也比較長(zhǎng)。
圖1:垃圾圖片數(shù)據(jù)集
圖2:改進(jìn)后的VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)
圖3:LReLU-Softplus 函數(shù)示意圖
針對(duì)VGGNet 計(jì)算量大、內(nèi)存占用大等缺點(diǎn),對(duì)VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),從減少網(wǎng)絡(luò)參數(shù)方面著手。為了保留VGGNet 網(wǎng)絡(luò)的特征提取優(yōu)勢(shì),在保證底層網(wǎng)絡(luò)很少改變的基礎(chǔ)上,盡可能地修改上層網(wǎng)絡(luò)。VGGNet 會(huì)消耗很多計(jì)算機(jī)資源,究其原因,VGGNet有3個(gè)全連接層,每一個(gè)全連接層都會(huì)產(chǎn)生很多參數(shù)。因此,VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)的第一步即是將3 個(gè)全連接層減少為1 個(gè)。
VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)中,每一段卷積的后面都會(huì)連接一個(gè)池化層。池化層的作用是在保留原有重要特征的前提下盡可能減少網(wǎng)絡(luò)參數(shù)。VGGNet 網(wǎng)絡(luò)在每段卷積之后采用最大池化形式,相比平均池化操作,最大池化會(huì)產(chǎn)生更多的網(wǎng)絡(luò)參數(shù)。因此,VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)的第二步是將全連接層前面的最大池化層改為平均池化層,在最大程度保留VGGNet 網(wǎng)絡(luò)圖像特征提取優(yōu)勢(shì)的前提下,減少網(wǎng)絡(luò)參數(shù)。改進(jìn)后的VGGNet 網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示。
常用的激活函數(shù)包括:Sigmoid 函數(shù)、Tanh 函數(shù)、ReLU 函數(shù)、LReLU 函數(shù)及Softplus 函數(shù)等[4]。其中,LReLU 函數(shù)能夠有效解決數(shù)值偏移現(xiàn)象和神經(jīng)元死亡的問(wèn)題,但是它不具有光滑性;而Softplus 函數(shù)雖然具有光滑性,但是它存在數(shù)值偏移現(xiàn)象和神經(jīng)元死亡的問(wèn)題。因此,將這兩種激活函數(shù)相結(jié)合,綜合這兩種激活函數(shù)的優(yōu)缺點(diǎn),提出一種新的激活函數(shù)LReLU-Softplus 函數(shù):先將Softplus 函數(shù)向下平移ln2 個(gè)單位,然后將x ≤0 的輸出值換為L(zhǎng)ReLU 函數(shù)部分,其表達(dá)式如公式(1)所示,與LReLU 函數(shù)相同的是公式(1)中a 是一個(gè)很小的常數(shù)。
表1:LReLU - Softplus 激活函數(shù)常數(shù)a 不同取值的測(cè)試結(jié)果
表2:網(wǎng)絡(luò)改進(jìn)前后的識(shí)別準(zhǔn)確率
表3:網(wǎng)絡(luò)改進(jìn)前后的訓(xùn)練時(shí)長(zhǎng)
圖4:部分代碼截圖
如圖3 所示為L(zhǎng)ReLU-Softplus 函數(shù)示意圖。通過(guò)改進(jìn),LReLU-Softplus 激活函數(shù)兼具了LReLU 函數(shù)和Softplus 函數(shù)的優(yōu)點(diǎn),既具備了光滑性,又解決了數(shù)值偏移和神經(jīng)元死亡問(wèn)題。
VGGNet 的所有隱藏層都采用ReLU 作為激活函數(shù),因此,改進(jìn)的激活函數(shù)設(shè)計(jì)是將隱藏層的ReLU 激活函數(shù)替換為L(zhǎng)ReLUSoftplus 激活函數(shù)。
圖5:訓(xùn)練準(zhǔn)確率及測(cè)試準(zhǔn)確率
圖6:訓(xùn)練丟失率及測(cè)試丟失率
圖7:網(wǎng)絡(luò)改進(jìn)前后的識(shí)別準(zhǔn)確率
以上述構(gòu)建的垃圾分類數(shù)據(jù)集為實(shí)驗(yàn)數(shù)據(jù)庫(kù),基于改進(jìn)前后的網(wǎng)絡(luò)結(jié)構(gòu)模型,開(kāi)展垃圾分類實(shí)驗(yàn),將改進(jìn)前后的網(wǎng)絡(luò)識(shí)別準(zhǔn)確率、計(jì)算機(jī)性能要求進(jìn)行對(duì)比,根據(jù)對(duì)比分析的結(jié)果來(lái)判定改進(jìn)前后的卷積神經(jīng)網(wǎng)絡(luò)模型的執(zhí)行效率。
本文所使用的卷積神經(jīng)網(wǎng)絡(luò)垃圾圖片分類模型的評(píng)價(jià)標(biāo)準(zhǔn)為準(zhǔn)確率(英文為Accuracy rate),其計(jì)算公式如公式(2)所示:
式中:
Numbertrue表示垃圾圖像測(cè)試集中能夠進(jìn)行正確預(yù)測(cè)的垃圾圖像總數(shù);
Numberall表示垃圾圖像測(cè)試集樣本總數(shù),包括預(yù)測(cè)正確的垃圾圖像數(shù)和預(yù)測(cè)錯(cuò)誤的垃圾圖像數(shù)兩部分;
Accuracy rate 表示垃圾圖像分類準(zhǔn)確率。
選用LReLU-Softplus 作為激活函數(shù)時(shí),首先要進(jìn)行函數(shù)中常數(shù)a 的取值。本文分別選取常數(shù)a 為0.01、0.02、0.05、0.1、0.2、0.5、1 和2 進(jìn)行測(cè)試,測(cè)試結(jié)果如表1 所示。根據(jù)表1 的測(cè)試結(jié)果可知:當(dāng)a 的取值為0.1 時(shí),誤差最小。因此,當(dāng)選用LReLU - Softplus作為激活函數(shù)時(shí),函數(shù)中常數(shù)a 的取值為0.1。
構(gòu)建好模型結(jié)構(gòu)后,設(shè)置數(shù)據(jù)集的加載路徑,在搭建好的環(huán)境中進(jìn)行模型訓(xùn)練,將訓(xùn)練過(guò)程中每輪迭代的Train Loss、Valid Loss、Train Acc、Valid Acc 等數(shù)據(jù)保存到log日志文件中,然后使用matplotlib 庫(kù)繪制在訓(xùn)練集和測(cè)試集上的Accuracy 跟Loss 的變化曲線,部分代碼的截圖如圖4 所示。訓(xùn)練結(jié)果是以Train Loss、Valid Loss、Train Acc、Valid Acc 數(shù)值繪制的曲線,如圖5、圖6 所示。
基于最佳性能的常數(shù)a 的取值0.1,針對(duì)改進(jìn)前后的網(wǎng)絡(luò)模型,進(jìn)行垃圾分類實(shí)驗(yàn),改進(jìn)前后的識(shí)別準(zhǔn)確率對(duì)比結(jié)果如表2 和圖7所示,改進(jìn)前后的訓(xùn)練時(shí)長(zhǎng)對(duì)比結(jié)果如表3 所示。
由表2 和圖7 可知,網(wǎng)絡(luò)改進(jìn)后,其識(shí)別準(zhǔn)確率比改進(jìn)前高,訓(xùn)練50 次時(shí)的識(shí)別率為95.22%,同時(shí)其收斂速度也比改進(jìn)前快。因此,對(duì)比分析網(wǎng)絡(luò)結(jié)構(gòu)改進(jìn)前后的結(jié)果,可以看出,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu),能在保證識(shí)別準(zhǔn)確率的基礎(chǔ)上,有效地提高網(wǎng)絡(luò)收斂速度。由表3 可知,網(wǎng)絡(luò)模型改進(jìn)前,訓(xùn)練時(shí)長(zhǎng)大約為18.5 分鐘,網(wǎng)絡(luò)模型改進(jìn)后,其訓(xùn)練時(shí)長(zhǎng)大約為17.3 分鐘,比改進(jìn)前有所降低。
綜上所述,改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)具有一定的實(shí)用性,在保證識(shí)別準(zhǔn)確率的基礎(chǔ)上,能夠有效地提高網(wǎng)絡(luò)收斂速度,同時(shí)能夠適當(dāng)?shù)亟档陀?xùn)練時(shí)長(zhǎng),降低對(duì)硬件計(jì)算能力的要求。
本文構(gòu)建了基于上海市生活垃圾分類標(biāo)準(zhǔn)的垃圾分類數(shù)據(jù)集,改進(jìn)了VGGNet 網(wǎng)絡(luò)的結(jié)構(gòu)和激活函數(shù),并進(jìn)行了訓(xùn)練驗(yàn)證,對(duì)比分析了改進(jìn)前后的識(shí)別準(zhǔn)確率和訓(xùn)練時(shí)長(zhǎng),得出改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)能在保證識(shí)別準(zhǔn)確率的基礎(chǔ)上有效降低訓(xùn)練時(shí)長(zhǎng)的結(jié)論。