秦 浩 王曉峰 喻 駿 黃飛龍 文冠鑫 蘇盈盈
(1. 重慶科技學院 電氣工程學院, 重慶 401331; 2. 重慶科技學院 數(shù)理與大數(shù)據(jù)學院, 重慶 401331)
對生活垃圾進行分類收集和處理,有利于保護環(huán)境、節(jié)約資源。利用圖像識別分類技術對生活垃圾進行分類,目的是實現(xiàn)對生活垃圾類別的高效、快速、精準識別。目前,在這方面的研究已取得了一些成果。吳健等人設計了基于計算機視覺的實驗室垃圾分析與識別方案[1];吳碧程等人提出了基于卷積神經網絡的智能垃圾分類系統(tǒng)[2];汪洋等人提出的基于卷積神經網絡的垃圾分類系統(tǒng),對7種生活垃圾進行分類,準確率可達91.71%[3]。本次研究,我們針對圖像出現(xiàn)陰影遮擋、暗光、模糊等復雜情況,引入Retinex算法[4],并通過改進VGG-16[5]卷積神經網絡模型,構建了一種可適應多種類生活垃圾的智能分類模型。
據(jù)《生活垃圾分類標志》(GB/T 19095 — 2019),生活垃圾分為4個大類:可回收物、有害垃圾、廚余垃圾(濕垃圾)和其他垃圾(干垃圾)。目前,還沒有公開的垃圾分類識別實驗數(shù)據(jù)集。我們研究使用的生活垃圾圖像數(shù)據(jù),主要通過網絡爬取和攝像機拍攝2個途徑獲得。數(shù)據(jù)集中共有77 656張圖片,其中將有害垃圾分為12個小類,可回收垃圾分為136個小類,廚余垃圾分為48個小類,其他垃圾分為47個小類,共計243種生活垃圾類別。每張圖片的格式全部處理為JPEG格式。同時,對獲得的數(shù)據(jù)進行標記、整理,制作成一個多種類的生活垃圾圖像數(shù)據(jù)集(見圖1)。
圖1 生活垃圾圖像樣本
在訓練集的處理上,采用十折交叉驗證(10-fold cross-validation),測試改進模型的準確性。將77 656張生活垃圾圖片分成均等的10份,對其編號;輪流將其中的9份作為訓練集,1份作為測試集。每進行一輪實驗都會得到相應的正確率,將10次實驗測得的正確率平均值作為分類模型的精準度評價指標。
在驗證集的處理上也實行交叉驗證,從10份數(shù)據(jù)集中輪流抽出1份作為驗證集,其他9份作為訓練集。循環(huán)驗證,直到每份都被作為驗證集使用過。對每次訓練結果的精度做精準記錄,通過計算精準度平均值,保留精準度最高的模型,并將該模型的權重、超參數(shù)作為最終模型的權重和超參數(shù)。十折交叉驗證過程如圖2所示。
圖2 十折交叉驗證劃分
在測試集的處理上,用了7 059張圖片對改進的VGG-16卷積神經網絡模型分類精準度進行檢測,進一步驗證模型的準確率和泛化能力。
為了保證模型檢測結果的穩(wěn)定性和準確性,針對拍攝采集圖像過程中由于光線、視角等因素導致的陰影遮擋、暗光、模糊等復雜情況,引入Retinex算法,在圖像動態(tài)范圍壓縮、邊緣增強和顏色恒定3個方面進行處理,增強圖像自適應性。將照射圖像估計為空間平滑圖像,以(x,y)為像素點坐標,原始圖像為S(x,y),輸出圖像為R(x,y),亮度圖像為L(x,y)。以exp表示指數(shù)函數(shù)。將對數(shù)域r(x,y)圖像輸出轉化為實數(shù)域R(x,y)圖像輸出。Retinex算法流程如圖3所示。
圖3 Retinex算法流程
由圖3可知,原始圖像、反射圖像、亮度圖像滿足式(1)。
S(x,y)=R(x,y)*L(x,y)
(1)
對式(1)進行兩邊同時取對數(shù)變換,得初始圖像對數(shù)域輸出表達形式:
(2)
為了對原始圖像進行增強處理,引入中心環(huán)繞函數(shù)F(x,y)即高斯核函數(shù),如式(3)。
(3)
式中:λ為歸一化常數(shù);c是高斯環(huán)繞尺度因子。由于高斯核函數(shù)的二重積分為1,λ滿足式(4)即可。
?F(x,y)dxdy=1
(4)
通過式(3)的高斯核函數(shù)和式(2)中的初始圖像,可得改進后的圖像對數(shù)域和實數(shù)域輸出形式:
(5)
(6)
式中:R(x,y)為輸出圖像實數(shù)域形式;K指中心環(huán)繞函數(shù)的個數(shù),取值為3,意將原始圖像從小、中、大3個尺度分別對圖像邊緣細節(jié)、色彩范圍、平衡色彩進行處理;⊕指卷積操作;wk為中心環(huán)繞函數(shù)的權重系數(shù)。
實驗結果表明,當中心環(huán)繞函數(shù)的權重系數(shù)w=0.11,高斯環(huán)繞尺度因子c=15時,對處理圖像暗光環(huán)境有較好的效果;當w=0.06,c=80時,對處理模糊圖像的效果較為明顯;當w=0.05,c=120時,對處理陰影遮擋圖像的效果較好。通過Retinex算法處理陰影遮擋、模糊、暗光圖像的效果如圖4所示。
圖4 以Retinex算法對圖像的處理效果
在訓練過程,利用改進后的VGG-16卷積神經網絡對輸入的生活垃圾圖像特征進行提取。通過遷移學習,利用ImageNet上預訓練的VGG-16模型前4個卷積塊的權重參數(shù),初始化本次研究模型的前4個卷積塊的卷積核大小、卷積核數(shù)量、神經元、權重參數(shù),同時使用大量生活垃圾圖像數(shù)據(jù)對模型進行訓練,更新權重參數(shù),得到針對生活垃圾智能分類的最優(yōu)權重參數(shù)。模型訓練過程如圖5所示。
圖5 模型訓練過程
在測試過程中,首先加載訓練的最優(yōu)權重參數(shù),然后將測試集作為模型輸入,預測得到與有害垃圾、廚余垃圾、其他垃圾、可回收垃圾對應的分類結果。模型測試過程如圖6所示。
圖6 模型測試過程
VGG-16卷積神經網絡包含13個卷積層、5個卷積塊、1個池化層、1個全連接層,通過相互交叉堆疊的方式連接在一起(見圖7)。這樣的方式,既使得網絡參數(shù)在一定的可控范圍之類,又使得網絡達到了一個較為深層次的深度,提升了網絡模型針對圖像分類的準確度。
圖7 VGG-16卷積神經網絡結構
現(xiàn)以一張224×224像素的可回收垃圾圖像為例,說明其在VGG-16模型中的處理流程。首先,圖像依次經過VGG-16模型的5個卷積塊,在每個卷積塊中通過5×5和3×3的卷積核以及2×2池化核進行卷積、池化操作,對其特征進行提取。此時,圖像的像素由224×224縮小為7×7。然后,經過全連接層將提取到的所有特征圖融合,同時將第5個卷積塊池化后的圖像數(shù)據(jù)壓平為一維向量,計算出分類的評估值。最后,通過Softmax分類器將全連接層的圖像數(shù)據(jù)進行映射,得出圖像類別的概率得分,從而實現(xiàn)對圖像的識別分類。
對于有4個大類243個小類的多種類生活垃圾圖像,為了防止分類模型出現(xiàn)過擬合情況,導致分類準確率下降,我們對VGG-16卷積神經網絡的分類交叉熵損失函數(shù)進行了改進。原來的損失函數(shù)定義形式如式(7)。
(7)
式中:Lorg表示分類交叉熵損失函數(shù);N代表樣本總數(shù);αnm為標注真實值的第n個樣本的第m個屬性的值,采用one-hot編碼;ynm是網絡預測值第n個樣本的第m個屬性值;i表示樣本上限值;j表示樣本屬性上限值。
為了增強模型泛化性能,防止模型出現(xiàn)過擬合的情況,引入L1正則化和L2正則化,構建針對生活垃圾分類的新?lián)p失函數(shù)。
僅使用L1正則化構造損失函數(shù),即是在原損失函數(shù)后面加上一個L1正則化項,如式(8)。僅使用L2正則化構造損失函數(shù),即是在后面加上一個L2正則化項,如式(9)。
(8)
(9)
式中:β是損失函數(shù)和正則項之間的調節(jié)系數(shù);n為模型訓練集的樣本數(shù)量;δ為模型的所有權重參數(shù)。
從公式上看,僅使用L1正則化構建的損失函數(shù),為了保證損失函數(shù)快速收斂,是對所有的權重參數(shù)給予相同的懲罰力度,將導致趨于0的權重參數(shù)在被懲罰時變成0;僅使用L2正則化構建的損失函數(shù),是對權重參數(shù)較大的給予了很大的懲罰力度,而對權重參數(shù)較小的給予很小的懲罰力度,將導致趨于0的權重參數(shù)不被懲罰。為提高模型分類精準率,防止模型過擬合,對式(7)的損失函數(shù)Lorg進行改進,提出新的分類交叉熵損失函數(shù)Lnew。
(10)
(11)
(12)
在改進后的損失函數(shù)中,如果p=0,則退化為L2正則化;如果p=1,則退化為L1正則化。測試表明,當t=0.76,p=0.54時,能夠同時兼顧L1和L2正則化,降低模型的過擬合,提高分類精準率。
在模型訓練過程中,有很多訓練的圖像數(shù)據(jù)特征具有共線性,它們對于分類來說都非常重要。而L1正則化隨機提取其中一個特征,丟棄其他特征;L2正則化只是在圖像特征呈現(xiàn)高斯分布時進行均值選擇。因此,通過實驗對比,我們在原始損失函數(shù)Lorg上,先引入L1正則化進行特征選擇,再引入L2正則化處理共線性的圖像特征。通過這種級聯(lián)的方式,將其權值平分給各種圖像特征,保留有用的圖像特征,從而防止模型出現(xiàn)過擬合情況,提升模型準確率和泛化性能。
為避免實驗環(huán)境因素造成分類模型效果的差異,所有對比實驗均在相同的軟硬件配置條件下進行:采用Windows10系統(tǒng),顯卡為GeForce GTX 1650 with Max-Q,開發(fā)環(huán)境為Pycharm2020、Python3.7,深度學習框架為Tensorflow2.0,圖像加速器為CUDA10.0/CUDNN7.6.5。
為了驗證設計的垃圾圖像分類方法的分類效果,將數(shù)據(jù)增強前后、損失函數(shù)修改前后與原VGG-16模型的準確率和損失值進行對比。分類模型評估結果如表1所示。
表1 分類模型評估結果
使用原VGG-16網絡模型對垃圾圖像進行分類,準確率為94.43%,損失值為0.53;引入Retinex算法,對圖像進行增強處理后,準確率為95.56%,提升了1.13個百分點。在損失函數(shù)中加入L1或者L2正則化后,分類準確率較原網絡模型有較小幅度的提升。采用改進后的交叉熵損失函數(shù)之后,分類準確率達97.67%,較原網絡模型在圖像數(shù)據(jù)增強后的準確率又提升了2.11個百分點;損失值為0.18,也下降了一半。通過引入數(shù)據(jù)增強算法和改進損失函數(shù),模型防止了過擬合情況,提升了泛化性能和分類準確率。
在生活垃圾分類中,采集的垃圾圖像難免存在模糊不清、暗光蔭蔽、陰影遮擋等情況。采用基于深度學習的VGG-16卷積神經網絡模型對垃圾圖像進行識別分類,可以取得較高的準確率,但該模型原用的交叉熵損失函數(shù)會導致模型過擬合,降低了模型性能。針對垃圾圖像數(shù)據(jù)的多樣性,引入Retinex算法,對存在遮擋、暗光、模糊問題的圖像進行增強處理;同時改進損失函數(shù),加入正則化項,提升了模型在垃圾圖像檢測分類上的準確率和泛化性能。