王 艷,張游杰
1(太原科技大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,太原 030024)
2(中國電子科技集團(tuán)公司第三十三研究所,太原 030032)
隨著我國經(jīng)濟(jì)迅速的發(fā)展,環(huán)境的問題也變得越來越明顯,其中揚塵污染也越來越成為環(huán)境污染的重要來源.揚塵污染的存在方式是多種的,在土質(zhì)和碎石道路上存在,在建筑工地和水泥等路面上也會存在.同時,因為重型車輛和一些大型設(shè)備對路面的影響,揚塵量也變得越來越多,揚塵污染也將會變得更加嚴(yán)重.因此,對于揚塵識別的研究具有重大的實際意義.
傳統(tǒng)的揚塵識別方法中大多采用物理信號進(jìn)行監(jiān)測.李晉惠等[1]充分利用了Mie 散射原理,在這一基礎(chǔ)上研究出了一種多光路揚塵監(jiān)測方法.雷俊花[2]提出了一種高層建筑裝修施工揚塵污染遠(yuǎn)程監(jiān)測方法.牛志云等[3]設(shè)計了基于 STM32 微控制器的光散射式揚塵監(jiān)測儀.Yu 等[4]根據(jù)實驗室和教室實際環(huán)境中空氣質(zhì)量的監(jiān)測要求,設(shè)計了粉塵濃度監(jiān)測系統(tǒng).為了能夠?qū)崟r監(jiān)測大氣揚塵,張所容[5]利用 Mie 散射原理和激光散射法,導(dǎo)出了計算揚塵物質(zhì)量濃度的方法.隨后搭建監(jiān)測系統(tǒng)的實物架構(gòu),并采用基于 B/S的結(jié)構(gòu)進(jìn)行了相應(yīng)的軟件系統(tǒng)設(shè)計.袁冬琴[6]設(shè)計了基于遙感技術(shù)的工地?fù)P塵污染自動監(jiān)測方法.傳統(tǒng)方法的缺點在于比較依賴環(huán)境,而且識別的距離是非常有限的,需要大量人力和物力.
除了傳統(tǒng)方法外,應(yīng)用圖像處理技術(shù)監(jiān)測揚塵污染也是一個很好的思路.王建鵬[7]提出一種融合了無線傳感器技術(shù)、激光前散射粉塵監(jiān)測技術(shù)、圖像識別技術(shù)和云平臺技術(shù)的揚塵監(jiān)測系統(tǒng).馬國鑫等[8]充分使用了無人機(jī)和圖像識別技術(shù),將HSV 特征提取,直方圖對比以及非零像素點計算作為核心,設(shè)計了施工揚塵污染源自動監(jiān)測系統(tǒng),并且測試了該系統(tǒng)的運行效果.任婷婷[9]運用圖像處理技術(shù)中的圖像濾波去噪,圖像分割,圖像特征提取和分類識別的方法,對道路揚塵污染監(jiān)測與識別算法做了研究.這類方法相對于傳統(tǒng)方法來講,可以降低人力和物力的需求,提升識別精度和穩(wěn)定性,但這一類方法的缺點是比較針對于某一個特定的場景,訓(xùn)練出的模型具有很大的局限性.
基于深度學(xué)習(xí)的揚塵識別方法能夠很好地解決上述存在的問題.因此,提出一種基于改進(jìn)殘差網(wǎng)絡(luò)的揚塵識別方法,將圖像通過改進(jìn)的ResNet-50 網(wǎng)絡(luò)進(jìn)行特征提取,更好的表達(dá)圖像信息,提高識別精確度.
卷積神經(jīng)網(wǎng)絡(luò)[10-12]是一類包含卷積計算并且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò),是深度學(xué)習(xí)的代表算法之一.它具有表征學(xué)習(xí)的能力,它能夠以原始圖像作為輸入,通過卷積網(wǎng)絡(luò)結(jié)構(gòu)來形成更加抽象的高層次特征,從而可以獲得更深層次的數(shù)據(jù)特征表示,避免了人工提取圖像特征的復(fù)雜[13].其中的經(jīng)典網(wǎng)絡(luò)有LeNet-5,AlexNet,ZFNet,VGG-16,ResNet 等.
模型使用的基礎(chǔ)網(wǎng)絡(luò)ResNet是2015年由He 等[14]提出的,在ImageNet 測試集上的誤差達(dá)到3.57%,這個結(jié)果在ILSVRC 2015 分類任務(wù)中取得第一名.ResNet網(wǎng)絡(luò)主要是為了解決網(wǎng)絡(luò)中的梯度消失和退化問題,有利于網(wǎng)絡(luò)更快的收斂.目前,殘差網(wǎng)絡(luò)主要應(yīng)用于圖像分類,物體識別,自然語言處理,目標(biāo)檢測等領(lǐng)域.
ResNet-50 結(jié)構(gòu)圖如圖1(a)所示.
圖1 網(wǎng)絡(luò)結(jié)構(gòu)圖
圖1中輸入圖像是大小為224×224×3的三維數(shù)組,第一個卷積層是獨立卷積層Conv1,使用64 個大小為7×7,步長為2的卷積核,輸出的大小為112×112.之后是一個最大池化層,池化窗口和步長分別為3×3和2,輸出大小為56×56.接著是4 個不同的卷積殘差塊Conv2_x,Conv3_x,Conv4_x和Conv5_x,每個卷積殘差塊由2~3 個卷積層和跨越它們的連接組成,并且每個塊的輸出大小分別為56×56,28×28,14×14,7×7.最后是平均池化層,全連接層和損失函數(shù)Softmax.ResNet-50 網(wǎng)絡(luò)中的殘差塊主要采用的是1×1+3×3+1×1的卷積層形式,相比常規(guī)網(wǎng)絡(luò)的2 個3×3 卷積層形式,使用三層殘差塊結(jié)構(gòu)不僅可以保持網(wǎng)絡(luò)精度,同時還能減少網(wǎng)絡(luò)的計算量.兩種殘差塊的結(jié)構(gòu)如圖2(a)和圖2(b)所示.
圖2 殘差塊
通過一個假設(shè)將殘差的概念引入進(jìn)來:假設(shè)可以通過恒等映射的方式來構(gòu)建所增加的層,這樣就可以把一個深層網(wǎng)絡(luò)變成了一個淺層的網(wǎng)絡(luò).至少可以保證深層網(wǎng)絡(luò)的訓(xùn)練誤差不會大于所基于的較淺模型.將H(x)假設(shè)為所需的底層映射,第一層的輸入為x,讓堆疊的非線性層來擬合另一個映射:F(x)=H(x)-x.因此原來的映射轉(zhuǎn)化為:F(x)+x.
在殘差網(wǎng)絡(luò)中,對于網(wǎng)絡(luò)中每一個堆疊層都將采用殘差學(xué)習(xí)的方式.殘差塊如圖2所示.并將殘差塊定義為:
其中,x和y是考慮層的輸入和輸出向量,f(x,{Wi})是要學(xué)習(xí)的殘差映射,Wi是i層的權(quán)重.在式(1)中x和f的維度是必須要相等的.如果維度不同,可以通過快捷連接方式執(zhí)行線性投影Ws以匹配維度:
ResNet-50 網(wǎng)絡(luò)在許多領(lǐng)域都得到了廣泛的應(yīng)用,比如在人臉識別等比較成熟的領(lǐng)域應(yīng)用較為理想,但應(yīng)用于揚塵識別時,識別準(zhǔn)確率較低.因此,對ResNet-50 網(wǎng)絡(luò)進(jìn)行改進(jìn),形成新的網(wǎng)絡(luò)模型,以適應(yīng)揚塵圖像識別,改進(jìn)如下:(1)將網(wǎng)絡(luò)中最后一次空間下采樣操作的卷積層步長從原來的2 設(shè)置為1;(2)移去了網(wǎng)絡(luò)中最后的平均池化層.同時,在該網(wǎng)絡(luò)的基礎(chǔ)上引入了多尺度的金字塔池化方法;(3)在全連接層后加入改進(jìn)的Softmax 損失函數(shù),進(jìn)一步提高模型的識別性能.整體的網(wǎng)絡(luò)結(jié)構(gòu)如圖1(b)所示.
在ResNet-50 網(wǎng)絡(luò)中,網(wǎng)絡(luò)中的每個塊都會有一個空間下采樣的操作,為了增大揚塵特征圖的空間大小,去除網(wǎng)絡(luò)最后一次空間下采樣.當(dāng)輸入一張224×224的揚塵圖像后,網(wǎng)絡(luò)會輸出一個7×7的特征圖.將網(wǎng)絡(luò)中最后一次空間下采樣卷積層的步長從2 設(shè)置為1,將特征圖的輸出尺寸擴(kuò)大為14×14.這樣不僅不會增加模型的參數(shù)量,而且還能夠使得模型的參數(shù)結(jié)構(gòu)得以保持,增大特征圖的空間大小有利于提取到更加細(xì)粒度的揚塵圖像特征,進(jìn)而提升揚塵識別模型的性能.
在針對揚塵識別的ResNet-50 網(wǎng)絡(luò)中,卷積層接受任意大小的輸入,但它們產(chǎn)生的輸出大小不一,而全連接層需要固定長度的向量作為輸入.那么對于結(jié)構(gòu)已經(jīng)確定的ResNet-50 網(wǎng)絡(luò),就需要對揚塵圖像進(jìn)行裁剪或縮放等操作,這么做會降低揚塵識別的精度.在2015年He 等[15]提出的金字塔池化(SPP)方法解決了這一問題.金字塔池化方法能夠讓網(wǎng)絡(luò)適應(yīng)不同大小尺寸的揚塵圖片,不僅增加了揚塵識別模型的尺度不變性,而且還可以抑制訓(xùn)練過程中過擬合現(xiàn)象的發(fā)生.它可以通過將空間信息集中在本地的空間容器中來維護(hù)空間信息,這些空間存儲單元的大小與揚塵圖像大小成比例,無論圖像大小,存儲單元的數(shù)量都是固定的.因此,改進(jìn)的ResNet-50 網(wǎng)絡(luò)模型去掉全連接層之前的平均池化層,并將金字塔池化的方法引入到揚塵識別中.金字塔池化層如圖3所示,具體操作是將經(jīng)過ResNet-50 網(wǎng)絡(luò)輸出的特征映射采用不同的池化尺度(1×1,2×2,4×4),得到 21 個固定的特征向量,然后把這些向量平鋪組成一個新的特征向量并送入全連接層.
金字塔池化層就是在最后一個殘差塊conv5_x 卷積層的揚塵特征圖的每個圖片上進(jìn)行了3 個卷積操作.最下邊為原圖像特征圖,中間的是分成大小為4的特征圖,最上邊的是分成大小為16的特征圖.因此,每一個特征圖就變?yōu)?+4+16=21 個特征圖.其中每一個卷積操作的本質(zhì)都是平均池化,不同的只是窗口大小和步長.參數(shù)設(shè)置如圖4所示.
圖3 金字塔池化層
圖4 金字塔池化參數(shù)設(shè)置
為了充分發(fā)揮ResNet-50 網(wǎng)絡(luò)體系結(jié)構(gòu)學(xué)習(xí)表示的識別能力,受人臉識別中損失函數(shù)的啟發(fā),在揚塵識別模型訓(xùn)練階段加入了改進(jìn)的Softmax 損失函數(shù).Softmax對于類間距離的優(yōu)化效果很明顯,對于所學(xué)習(xí)的特性,Softmax 損失函數(shù)公式為:
其中,m是訓(xùn)練過程中的樣本的數(shù)目,p是訓(xùn)練數(shù)據(jù)集中的類數(shù).xi是第i個樣本的特征,yi是對應(yīng)于xi的標(biāo)簽,W和b是Softmax 損失之前的最后內(nèi)積層的權(quán)重矩陣和偏置向量,x是網(wǎng)絡(luò)最后一層輸出的特征,經(jīng)過一個全連接的分類層,即乘以權(quán)重W并加上偏置b,輸出score.Wj是W的第j行,對應(yīng)于j類.Softmax 可以有效區(qū)分類間差異,但是對于類內(nèi)的分布沒有很好的約束,因此監(jiān)督效果不夠.
原始的Softmax 損失在空間分布比較隨意,輸出的score為式(4),即神經(jīng)元的權(quán)重向量的模||Wj||乘以特征向量的模||x||,再乘以兩個向量夾角的余弦值cosθj,因此,在分類過程中score 會受到模和夾角的影響.
為了消除在揚塵識別過程中模和夾角的影響,將權(quán)重向量Wj和特征向量x歸一化,從而消除模的影響.如式(5)所示,歸一化之后的Softmax 只需要比較兩個角度的大小,這樣可以減少損失函數(shù)優(yōu)化參數(shù)的數(shù)量,只需要考慮角度,大大提升了Softmax 分類器的分類性能,提高了揚塵識別的準(zhǔn)確率.
由于揚塵圖像識別目前沒有公開的數(shù)據(jù)集.因此,通過在互聯(lián)網(wǎng)上收集各類有關(guān)揚塵場景的圖片,整理形成訓(xùn)練集和測試集,然后使用數(shù)據(jù)增強(qiáng)在訓(xùn)練集和測試集中生成更多的數(shù)據(jù),解決了該研究中沒有數(shù)據(jù)集以及數(shù)據(jù)量不足的問題.為了增強(qiáng)模型的泛化能力,采用數(shù)據(jù)增強(qiáng)的操作擴(kuò)充所需的數(shù)據(jù)樣本,讓網(wǎng)絡(luò)模型更好的適應(yīng)各種應(yīng)用場景.
首先收集含有揚塵以及非揚塵的圖像制作訓(xùn)練和測試數(shù)據(jù)集,并使用數(shù)據(jù)擴(kuò)增技術(shù)增加數(shù)據(jù)量,部分實驗圖像如圖5,圖6所示.實驗數(shù)據(jù)集分為訓(xùn)練集和測試集,每個集合均含有揚塵圖像與非揚塵圖像.將10 000張揚塵圖像與5000 張非揚塵圖像作為實驗數(shù)據(jù),將其中的13 000 張作為訓(xùn)練集,2000 張作為測試集.
實驗使用的操作系統(tǒng)是64 位的Ubuntu18.04 操作系統(tǒng),在訓(xùn)練和測試過程中使用了NVIDIA GTX 1660Ti GPU 進(jìn)行加速,算法使用深度學(xué)習(xí)框架PyTorch實現(xiàn),Python 版本為3.6.
實驗的主干網(wǎng)絡(luò)采用了在ImageNet[16]上預(yù)訓(xùn)練好的ResNet-50 模型,完成模型的權(quán)重初始化,這樣可以減少訓(xùn)練時間.揚塵圖片的輸入尺寸將其調(diào)整為224×224.在訓(xùn)練過程中,設(shè)定初始學(xué)習(xí)率為0.001,迭代次數(shù)為120 次,batch 大小設(shè)置為32.
圖5 非揚塵圖像
圖6 揚塵圖像
為了說明改進(jìn)ResNet-50 網(wǎng)絡(luò)的有效性,選擇了3 種方法進(jìn)行對比,方法1是使用原始的ResNet-50 網(wǎng)絡(luò),方法2是將最后一次空間下采樣操作的卷積層步長從原來的2 設(shè)置為1,不使用金字塔池化的ResNet-50網(wǎng)絡(luò),方法3是只使用金字塔池化,最后一次空間下采樣操作的卷積層步長不變的ResNet-50 網(wǎng)絡(luò),方法4是使用改進(jìn)的ResNet-50 網(wǎng)絡(luò).此外,在訓(xùn)練中4 種方法均使用Softmax 損失函數(shù)進(jìn)行優(yōu)化.4 種方法的實驗對比結(jié)果如表1所示.各個實驗的訓(xùn)練曲線如圖7所示.
表1 不同網(wǎng)絡(luò)實驗對比結(jié)果
通過對這4 種網(wǎng)絡(luò)結(jié)構(gòu)的實驗結(jié)果進(jìn)行比較可以看出,使用初始ResNet-50 網(wǎng)絡(luò)的準(zhǔn)確率最低.與方法1 相比,通過增大特征圖尺寸來提高識別效果的方法可以提高2.5%,使用金字塔池化后可以提高5.1%,而方法4 要比方法1 提高8%,說明了將增大特征圖尺寸和金字塔池化的方法加入到ResNet-50 網(wǎng)絡(luò)中是有效的,證明了改進(jìn)ResNet-50 網(wǎng)絡(luò)的有效性.
從圖7可以看出,準(zhǔn)確率提高和損失率下降最快的是方法4,相比其他3 種方法,方法4的收斂速度更快,在訓(xùn)練次數(shù)達(dá)到60 次時趨于穩(wěn)定在0.94 左右.方法2和方法3的收斂速度有交叉的部分,方法1的速度是最慢的.
圖7 訓(xùn)練曲線
為了驗證ResNet-50 網(wǎng)絡(luò)的性能,選取了其他兩種卷積神經(jīng)網(wǎng)絡(luò)Vgg16[17]和Alexnet[18]訓(xùn)練揚塵數(shù)據(jù)集,并和ResNet-50 網(wǎng)絡(luò)的訓(xùn)練準(zhǔn)確率作比較,比較結(jié)果如表2所示.通過表中數(shù)據(jù)可以發(fā)現(xiàn),在這3 種網(wǎng)絡(luò)結(jié)構(gòu)模型中ResNet-50的準(zhǔn)確率最高.
為了說明模型的泛化能力,采用改進(jìn)ResNet-50 網(wǎng)絡(luò)和ResNet-50 網(wǎng)絡(luò)分別在公共數(shù)據(jù)集CIFAR-10 上進(jìn)行了實驗.CIFAR-10是一個和普適物體相近,由Hinton的學(xué)生整理的一個用于識別普適物體的小型彩色圖像數(shù)據(jù)集,共包含10 個類別的RGB 彩色圖像,每個類別有6000 張圖像,每張圖像的尺寸大小為32×32.該數(shù)據(jù)集有50 000 張圖像用于訓(xùn)練集,10 000 張圖像用于測試集.實驗準(zhǔn)確率對比結(jié)果如表3所示.
表2 3 種網(wǎng)絡(luò)模型準(zhǔn)確率對比
表3 CIFAR-10 數(shù)據(jù)集準(zhǔn)確率對比
基于改進(jìn)ResNet-50 網(wǎng)絡(luò)的揚塵識別方法在該數(shù)據(jù)集下的準(zhǔn)確率為91.3%,相比基礎(chǔ)的ResNet-50 網(wǎng)絡(luò)提高了10.8%,說明了改進(jìn)的網(wǎng)絡(luò)模型有較好的泛化能力.
深度學(xué)習(xí)在圖像識別中具有重要意義,相比傳統(tǒng)的圖像識別方法,基于深度學(xué)習(xí)的識別方法具有自學(xué)習(xí)和適應(yīng)能力,可以更好地對目標(biāo)進(jìn)行特征提取.改進(jìn)的網(wǎng)絡(luò)模型將ResNet-50 網(wǎng)絡(luò)應(yīng)用到揚塵識別中,并對其進(jìn)行了改進(jìn).經(jīng)實驗驗證,改進(jìn)ResNet-50 網(wǎng)絡(luò)對揚塵圖像有較高的識別率,同時也有很好的泛化能力,可以有效地識別各種類揚塵圖像以及其他非揚塵圖像,在實際中有很大的應(yīng)用價值.