鄭佑 順 ,林珊玲 ,林 志 賢 ,周雄圖 ,郭 太 良
(1.福州大學 物理與信息工程學院,福建 福州350116;2.中國福建光電信息科學與技術創(chuàng)新實驗室,福建 福州350116;3.福州大學 先進制造學院,福建 泉州362200)
根據(jù)中國城鄉(xiāng)建設統(tǒng)計年鑒統(tǒng)計,我國城市生活垃圾的產(chǎn)生量由1979 年的0.25 億噸增至2018年的2.28 億噸[1]。 隨著人民生活水平的提高,垃圾產(chǎn)生量仍在上升。有效回收生活垃圾成為急需解決的問題,這對于可持續(xù)發(fā)展具有重大的意義。 垃圾分類是回收的前提。 目前,我國垃圾分類主要以人工分揀為主,存在勞動強度大、效率低等缺點。 實現(xiàn)垃圾分揀的智能化與自動化具有重要的意義。垃圾圖片分類算法有助于實現(xiàn)垃圾分揀的智能化與自動化。
近年來,越來越多的專家學者對垃圾分類算法進行了研究與實踐。吳建等人使用傳統(tǒng)的計算機視覺方法,手動提取特征,識別實驗室廢物垃圾[2]。 黃惠玲等人提出基于HSV 的閾值分割算法和K 均值聚類算法識別建筑垃圾圖像[3]。 黃興華等人提出基于紋理特征融合的道路垃圾圖像識別算法[4]。 向偉等人提出改進的CaffeNet 網(wǎng)絡識別水面垃圾[5]。 但是缺乏針對生活垃圾圖片分類算法的研究。 目前,我國各城市全面推行垃圾分類制度,基本建立相應的法律法規(guī)和標準體系,將生活垃圾細分,大致可分為可回收垃圾、有害垃圾、廚余垃圾和其他垃圾四大類。 針對我國垃圾分類現(xiàn)狀,收集制作了小型生活垃圾數(shù)據(jù)集,選取經(jīng)典網(wǎng)絡ResNet18[6]作為基礎網(wǎng)絡,使用GhostNet[7]的幻象模塊代替殘差學習單元中的普通卷積,減少網(wǎng)絡的參數(shù)量,提出基于幻象殘差結構的垃圾圖片分類算法。
卷積神經(jīng)網(wǎng)絡是由腦結構啟發(fā)的特殊類型的神經(jīng)網(wǎng)絡,使用了多層次的特征提取的方法,能夠從數(shù)據(jù)中自動學習特征的表示,具有強大的學習能力,在深度學習的相關領域應用廣泛。 LeNet-5[8]是最早的卷積神經(jīng)網(wǎng)絡之一,被用于手寫字符的識別,奠定了卷積神經(jīng)網(wǎng)絡結構設計時卷積層、下采樣層、全連接層的拓撲結構,產(chǎn)生了深遠的影響。但是由于當時缺乏大規(guī)模訓練數(shù)據(jù)以及硬件條件有限,LeNet-5 對于復雜問題的處理結果并不理想。如今大數(shù)據(jù)和硬件的發(fā)展加速了卷積神經(jīng)網(wǎng)絡的研究,卷積神經(jīng)網(wǎng)絡的性能也在不斷的提升。AlexNet[9]大獲成功,掀起了卷積神經(jīng)網(wǎng)絡的研究熱潮。VGGNet[10]提出一種簡單有效的卷積網(wǎng)絡結構設計的原則。 同時使用多層的小尺寸濾波器代替大尺寸的濾波器,在達到相同感受野效果的同時減少參數(shù)數(shù)量。 這種使用小尺寸的卷積核并增加網(wǎng)絡深度的思想一直被沿用至今。
通過增加網(wǎng)絡的深度可以引入更多的非線性特征,但也使得網(wǎng)絡變得更復雜,難以訓練。何愷明等人提出的深度殘差網(wǎng)絡ResNet 在卷積層外部加入捷徑連接支路執(zhí)行一個簡單的恒等映射構成基本殘差學習單元,通過順序堆疊殘差學習單元解決卷積神經(jīng)網(wǎng)絡過深時網(wǎng)絡退化難以訓練的問題,使得訓練深層卷積神經(jīng)網(wǎng)絡成為可能。基本殘差學習單元如圖1 所示,這既沒有引入新的參數(shù),也沒有增加計算復雜度,ResNet 及其思想具有很強的推廣性。
圖1 殘差學習單元
神經(jīng)網(wǎng)絡中通常用大量卷積操作生成豐富、相似甚至冗余的特征圖,以保證對輸入數(shù)據(jù)有全面的理解。 華為諾亞方舟實驗室在GhostNet 中提出并非所有特征圖都要用卷積操作得到,相似的特征圖可以用更廉價的操作生成。 作者把這些相似的特征圖稱為彼此的幻象并設計了一種全新的神經(jīng)網(wǎng)絡基本單元Ghost Module(幻象模塊),如圖3 所示。 相比于圖2 所示的傳統(tǒng)卷積,幻象模塊分三步走。 首先采用普通卷積操作生成部分真實的特征層,然后通過對真實特征層進行線性變換獲得幻象特征層,再將真實特征層與幻象特征層拼接到一起組成完整的特征層。假設輸入為h×w×c,輸出為h′×w′×n,卷積核尺寸為k,幻象模塊使用深度卷積對真實特征層進行線性變換。則輸入經(jīng)過普通卷積的參數(shù)量為n×k×k×c,輸入經(jīng)過幻象模塊的參數(shù)量為:cost=n/s×k×k×c+(s-1)×n/s×k×k,幻象模塊參數(shù)量的壓縮率為:s×c/(c+s-1)≈s,本文經(jīng)過實踐發(fā)現(xiàn)s=2,k=3 時,引入幻象模塊后網(wǎng)絡性能較好。
圖2 普通卷積
圖3 幻象模塊
鑒于數(shù)據(jù)集規(guī)模較小以及ResNet18 良好的網(wǎng)絡性能和其在殘差網(wǎng)絡中的參數(shù)量較少,本文選用該網(wǎng)絡進行改進。 將ResNet18 殘差學習單元中的普通卷積用幻象模塊替換,構成幻象殘差學習單元,減少網(wǎng)絡的參數(shù)量。 通過順序堆疊幻象殘差學習單元構成G-ResNet18 網(wǎng)絡。 幻象模塊的網(wǎng)絡結構如圖4 所示,幻象殘差學習單元如圖5 和圖6 所示。G-ResNet18 網(wǎng)絡結構如表1 所示。
圖4 幻象模塊網(wǎng)絡結構
圖5 幻象殘差學習單元(strides=1)
圖6 幻象殘差學習單元(strides=2)
表1 G-ResNet18 網(wǎng)絡結構
針對我國垃圾分類規(guī)范,通過網(wǎng)上下載和手機拍攝部分常見的生活垃圾圖片構成數(shù)據(jù)集, 共10類,4 874 張圖片。 每一類圖片數(shù)量差別不大,盡量保證數(shù)據(jù)均衡。 數(shù)據(jù)集的分布和標簽如表2 所示。由于數(shù)據(jù)集規(guī)模不大,過多的網(wǎng)絡參數(shù)會擬合訓練數(shù)據(jù)的所有特點,而非數(shù)據(jù)之間的共性,導致過擬合。為了防止過擬合,采用隨機水平翻轉、隨機垂直翻轉、隨機縮放、隨機旋轉、逆時針方向裁剪、水平偏移和豎直偏移的數(shù)據(jù)增強方法擴充訓練數(shù)據(jù)。 效果圖如圖7 所示。
實驗采用Keras 2.2.2 深度學習開源框架,在64 位Windows 10 操作系統(tǒng)下,通過Python 3.5 編程語言開發(fā)。 硬件平臺為CPU:Intel i7-9700F,內(nèi)存:16 GB,GPU:RTX 2070 8 GB。 實驗將數(shù)據(jù)集隨機打亂后按4:1 劃分為訓練集和測試集。一共訓練了300 個epoch,訓練批次樣本數(shù)為32,優(yōu)化器選用Adam,采用SGDR(Stochastic Gradient Descent with Warm Restarts)[11]學習率進行網(wǎng)絡訓練,通過softmax 分類器進行分類。
表2 數(shù)據(jù)集分布和標簽
圖7 數(shù)據(jù)增強效果圖
學習率是網(wǎng)絡最重要的超參數(shù)之一,當學習率設置過大時會導致模型難以收斂,過小時會導致模型收斂速度過慢。 SGDR 即帶重新啟動的隨機梯度下降的學習率,使用余弦函數(shù)作為周期函數(shù),并在每個周期最大值時重新開始學習速率。 通過突然提高學習率,來“跳出”局部最小值并找到通向全局最小值的路徑,可以加快網(wǎng)絡收斂,找到精度的最優(yōu)值。 SGDR 的公式為:
圖8 SGDR 學習率曲線
圖9 為ResNet18 模型訓練的精度曲線,圖10 為G-ResNet18 模型訓練的精度曲線。 從圖中可以看出,G-ResNet18 模型收斂更快,且識別精度比ResNet18精度提高了1%,最終測試正確率達到了89%。 本文從識別精度和參數(shù)量兩個方面對比了經(jīng)典網(wǎng)絡 模型ResNet18、ResNet34、ResNet50 和G-ResNet18在實驗數(shù)據(jù)集下的表現(xiàn),如表3 所示。 可以看出,本文的網(wǎng)絡模型在保證模型性能的同時大大減少了參數(shù)量,與ResNet18 相比,參數(shù)量減少了46% ,識別精度提高了1% 。 實驗結果表明,本文的網(wǎng)絡模型對于小型生活垃圾數(shù)據(jù)集上的表現(xiàn)效果較好,幻象模塊有助于減少網(wǎng)絡的參數(shù)量。
圖9 ResNet18 精度曲線
圖10 G-ResNet18 精度曲線
表3 本文網(wǎng)絡模型與經(jīng)典網(wǎng)絡模型對比
本文針對我國垃圾分類現(xiàn)狀,收集制作了小型生活垃圾數(shù)據(jù)集,并提出了基于幻象殘差結構改進的ResNet18 生活垃圾圖片分類算法。 對比原網(wǎng)絡,該算法在保證性能的同時將參數(shù)量減少了46%,并在自制的生活垃圾數(shù)據(jù)集上取得了89%的識別精度,識別精度提高了1%,有效增加了垃圾分揀的智能化和自動化水平。