侯向?qū)?劉華春,侯宛貞
1(成都理工大學工程技術(shù)學院,樂山 614000)
2(西華大學 計算機與軟件工程學院,成都 610039)
步入全面小康社會,人們在享受物質(zhì)生活的同時,也在不斷追求高品質(zhì)的精神生活,比如對美的欣賞及追求.花卉觀賞可使人心情愉悅,給人恬美的視覺體驗; 然而人們對花卉的分類卻較為迷惑,究其原因主要有兩點: 首先是花卉具有較高的類間相似性,即不同種類的花卉之間存在著難以分辨的相似的顏色及形狀等; 其次是花卉具有較大的類內(nèi)差異性,即同類花卉之間受氣候和光照等因素的影響,存在著顏色、形狀等方面的不同之處.
我國幅員遼闊,已知的花卉種類約3 萬種. 在植物研究領(lǐng)域,基于人工提取特征的傳統(tǒng)花卉分類方式分類準確率低且耗費人力; 而具有自動提取特征的基于深度學習的花卉分類方法逐漸受到人們的關(guān)注. 文獻[1]設(shè)計了一個8 層的卷積神經(jīng)網(wǎng)絡(luò),并在Oxford-102花卉數(shù)據(jù)集上進行了測試,由于模型的深度較淺,分類效果并不理想. 文獻[2]通過遷移學習,對Inception-v3網(wǎng)絡(luò)模型在花卉數(shù)據(jù)集上進行微調(diào),對分類準確率有少量的提升. 文獻[3]將AlexNet 和VGG16 模型的特征進行串聯(lián),利用mRMR 算法選擇有效特征,最后采用SVM 分類器進行分類,該方法稍顯繁瑣且分類準確率不高. 文獻[4]在VGG16 模型的基礎(chǔ)上將多層深度卷積特征進行融合,并在 Oxford-102 花卉數(shù)據(jù)集進行了測試,但分類的準確率并不理想. 文獻[5]對LeNet-5 模型進行了適當改造,取得了較好的分類效果,但其對花卉圖像進行了灰度預處理,并未考慮到顏色對識別精度的影響. 文獻[6]采用多層特征融合及提取興趣區(qū)域的方法對花卉進行分類,模型較為復雜.
文獻[7]將SE 視覺注意力模塊引入VGG16 網(wǎng)絡(luò)模型,用于對行人進行檢測,取得了較好的檢測效果.本文在VGG16-BN 模型的基礎(chǔ)上,引入視覺注意力機制,將SE 視覺注意力模塊嵌入VGG16-BN 網(wǎng)絡(luò)模型,對花卉圖片的顯著性區(qū)域進行特征提取,充分利用VGG16-BN 模型的寬度和深度優(yōu)勢,以進一步提高花卉分類的準確率.
SENet 是最后一屆ImageNet 分類任務(wù)的冠軍.SENet[8]的本質(zhì)是采用通道注意力機制,通過深度學習的方式自動獲取圖像各個特征通道的權(quán)重,以增強有用特征并抑制無用特征. SENet 的核心模塊是squeezeand-excitation (SE),主要分3 個步驟對特征進行重標定,如圖1 所示.
圖1 SE 模塊
在對特征進行重標定之前先進行一個標準的卷積操作Ftr,如式(1)所示:
其中,輸入特征X∈RH'×W'×C',輸出特征U∈RH×W×C,卷積核V={v1,v2,…,vc},其中vc代表第c個卷積核. *代表卷積操作,vcs表示第s個通道的卷積核,xs表示第s個通道的輸入特征,uc表示第c個卷積核所對應(yīng)的輸出特征.
(1)Squeeze[9]即Fsq操作,該操作較為簡單,主要是對特征圖進行一個全局平均池化,從而獲取各通道的全局特征,如式(2)所示:Fsq操作將H×W×C的輸入轉(zhuǎn)換成1×1×C的輸出,也就是將每個二維的特征通道變成一個實數(shù),這個實數(shù)某種程度上具有全局的感受野,它表征著在特征通道上響應(yīng)的全局分布.
(2)Excitation[10]即Fex操作,通過兩個全連接層先降維后升維對squeeze 操作的結(jié)果進行非線性變換,來為每個特征通道生成權(quán)值,該權(quán)值表示特征通道之間的相關(guān)性,如式(3)所示:
其中,W1z是第一個全連接層操作,W1的維度是C/r×C,z的維度是1×1×C,因此W1z的輸出維度是1×1×C/r,即通過r(維度的縮放因子)進行了降維,然后采用ReLU 激活. 第2 個全連接層是將上個全連接層的輸出乘以W2,其中W2的維度是C×C/r,因此最終輸出的維度為1×1×C,即同squeeze 操作輸出的維度相同,最后再經(jīng)過Sigmoid 函數(shù)用于獲取各通道歸一化后的權(quán)重,得到維度為1×1×C的s,s用來表示通過之前兩個全連接層的非線性變換學習到的第C個特征圖的權(quán)值. Excitation 這種先降維后升維的操作一方面降低模型復雜度,使網(wǎng)絡(luò)具有更好的非線性,另一方面更好的擬合通道間復雜的相關(guān)性,提升了模型泛化能力.
(3)Reweight[11]即Fscale操作,將上一步excitation 操作得到的權(quán)值s通過乘法逐通道加權(quán)到原始的特征上,完成在通道維度上的對原始特征的重標定,如式(4)所示:
總之,SE 模塊通過自動學習,以獲取每個特征通道的重要程度,然后根據(jù)各個通道的重要程度,一方面去提升有用的特征,另一方面抑制對當前任務(wù)不相關(guān)或作用不大的特征.
VGGNet[12]榮膺2014 年ImageNet 圖像分類第2名的好成績,其中VGG16 是VGGNet 中分類性能最好的網(wǎng)絡(luò)之一,其網(wǎng)絡(luò)結(jié)構(gòu)如圖2 所示.
圖2 VGG16 網(wǎng)絡(luò)結(jié)構(gòu)
(1)VGG16 網(wǎng)絡(luò)可分為6 段,即5 段卷積加1 段全連接,其中5 段卷積包含13 個卷積層,1 段全連接指網(wǎng)絡(luò)最后的3 個全連接層,因此VGG16 網(wǎng)絡(luò)總共有13+3=16 層.
(2)5 段卷積用以提取低、中、高各層的圖像特征,每一段有2 或3 個卷積層. 為了增加網(wǎng)絡(luò)的非線性、防止梯度消失、減少過擬合以及提高網(wǎng)絡(luò)訓練的速度,各卷積層后均采用ReLU 激活函數(shù). 為利于捕捉細節(jié)變化,獲得更好的非線性效果并減少參數(shù)數(shù)量,每個卷積層均采用3×3 的卷積核,使得網(wǎng)絡(luò)結(jié)構(gòu)更加簡潔,在必要時3×3 卷積核的堆疊還可以替代5×5、7×7 等較大的卷積核.
(3)5 段卷積的尾部均接有一個最大池化層,該池化層采用2×2 的池化核,能夠減小卷積層參數(shù)誤差造成估計值均值的偏移,更容易捕捉圖像和梯度的變化,有利于保留紋理等細節(jié)信息.
(4)VGG16 網(wǎng)絡(luò)的最后一段是3 個全連接層,全連接層中的每一個節(jié)點都與上一層每個節(jié)點連接,把前一層的輸出特征綜合起來,起到分類器的作用.
總之,VGG16 網(wǎng)絡(luò)的深度為16 層,這種較深的網(wǎng)絡(luò)通過逐層的抽象,能夠不斷學習由低到高各層的特征,具有更強的非線性表達能力,能表達更為豐富的特征,擬合更為復雜的輸入特征. 另外,VGG16 網(wǎng)絡(luò)最開始采用64 個3×3 卷積核,隨著網(wǎng)絡(luò)的加深,卷積核數(shù)量逐漸從64,增加到128、256、512,因此使其具有較大的網(wǎng)絡(luò)寬度,寬度的增加能使網(wǎng)絡(luò)各層學習到更為豐富的顏色、紋理等特征.
SE 模塊的最大特點在于其內(nèi)部采用常見的池化及全連接層,因此具有很強的通用性,可以方便的嵌入到其他常見的網(wǎng)絡(luò)模型中. 在VGG 網(wǎng)絡(luò)模型的卷積層之后加入SE 視覺注意力單元,如圖3 所示.
圖3 SE-VGGConv 模塊
如前所述,在VGG 網(wǎng)絡(luò)的卷積層后,首先經(jīng)過一個GAP 全局平均池化層,即圖1 中的squeeze 操作,用于獲取通道級的全局特征. 然后進入第一個FC 層進行降維操作,用ReLU 函數(shù)激活后進入第2 個FC 層進行升維操作,Sigmoid 函數(shù)用于獲取各通道歸一化后的權(quán)重. Scale[8,13](即reweight 操作)將歸一化后的權(quán)重加權(quán)到每個原始通道的特征之上,實現(xiàn)了在通道維度上的對原始特征的重標定.
VGG16 因其具有較好的深度及寬度,在圖像分類的應(yīng)用具有一定的優(yōu)勢,但對具有類間相似性高,類內(nèi)差異性大以及存在復雜背景干擾的花卉分類,其準確率還有待提高. 因此,在VGG16 的基礎(chǔ)上引入BN 層及SE 視覺注意力單元,可以充分提取花卉分類任務(wù)中類間相似性高、類內(nèi)差異較大的敏感特征,從而提高花卉分類的準確率.
在VGG16 加入BN 層及SE 視覺注意力單元后的網(wǎng)絡(luò)結(jié)構(gòu)如圖4 所示.
圖4 SE-VGG16-BN 網(wǎng)絡(luò)結(jié)構(gòu)
為擴大花卉的類間距離,減少類內(nèi)距離,以進一步提高花卉分類的準確率,采用多損失函數(shù)融合的方式,具體如下:
交叉熵損失函數(shù)(cross-entropy cost function)經(jīng)常用于分類任務(wù)中,起著控制模型的總體走勢的作用,交叉熵損失函數(shù)的定義如下:
其中,n是批處理樣本數(shù),x為輸入,y為標簽值,?表示實際輸出.
中心損失函數(shù)(center loss)優(yōu)勢是可以學習類內(nèi)距離更小的特征,從而減小類內(nèi)的差異,并能在一定程度上增大類間差異性,從而提高分類的準確率,中心損失函數(shù)的定義如下:
其中,n是批處理樣本數(shù),xi表示yi類別的第i個特征,Cyi表示i類特征的中心值.
將交叉熵損失函數(shù)和中心損失函數(shù)進行融合,并將其推廣至多層神經(jīng)網(wǎng)絡(luò),假設(shè)輸出神經(jīng)元的期望值是y={y1,y2,y3,…},,則融合后的計算公式如下:其中,融合系數(shù)λ的取值范圍是0–1,通過多損失函數(shù)的融合,放大了花卉的類間距離,縮小了類內(nèi)距離,加快了網(wǎng)絡(luò)的收斂速度,進一步提高了分類的效率和準確率.
“一日之計在于晨”,早晨是人們精力最充沛的時刻,此時讀書,利于記憶,吟詠背誦,往往事半功倍。學校安排學生晨讀,從時間分配與人體生理方面而言,是合理的,就晨讀內(nèi)容而言,據(jù)本人了解,各校有各校的安排、部署,而我院,則以傳統(tǒng)文化為主要朗讀、背誦的對象。
本實驗的軟硬件環(huán)境如下: 操作系統(tǒng)為Ubuntu 16.04.1 LTS,顯卡為NVIDIA GeForce GTX 1080Ti,CPU是Intel Core i7-9700K,32 GB 內(nèi)存. 采用PyTorch 1.6.0深度學習框架,Python 3.6 編程環(huán)境以及Pycharm 開發(fā)工具.
選用牛津大學公開的Oxford-102 花卉數(shù)據(jù)集,該數(shù)據(jù)集包括102 類花卉,每類由40–258 張圖片組成,共計8189 張花卉圖片. 由于Oxford-102 花卉數(shù)據(jù)集的數(shù)據(jù)量較小,為了防止過擬合,提高網(wǎng)絡(luò)模型的性能,對該數(shù)據(jù)集進行了隨機旋轉(zhuǎn)、翻轉(zhuǎn)、平移、裁剪、放縮等操作,通過數(shù)據(jù)增強,將Oxford-102 數(shù)據(jù)集擴充至8189+8189×5=49134 張.
(1)為提高訓練的效果,加快網(wǎng)絡(luò)模型的收斂,對兩個數(shù)據(jù)集的花卉圖片按照保持長寬比的方式歸一化,歸一化后的尺寸為224×224×3.
(2)將數(shù)據(jù)增強后的每類花卉圖片數(shù)的70%劃分為訓練集,剩余30%作為測試集.
(3)訓練時保留VGG16 經(jīng)ImageNet 預訓練產(chǎn)生的用于特征提取的參數(shù),SE 單元模塊中用于放縮參數(shù)r設(shè)置為文獻[8]的作者所推薦的16,其余參數(shù)均使用正態(tài)分布隨機值進行初始化.
(4)采用隨機梯度下降法來優(yōu)化模型,batchsize 設(shè)置為32,epoch 設(shè)為3000,學習率設(shè)為0.001,動量因子設(shè)為0.9,權(quán)重衰減設(shè)為0.0005.
(5)為了防止過擬合,SE-VGG16 網(wǎng)絡(luò)模型第6 段的兩個全連接層的dropout 設(shè)置為0.5.
(6)多損失函數(shù)融合公式中λ參數(shù)的值設(shè)置為0.5.
(1)數(shù)據(jù)可視化
VGG16 網(wǎng)絡(luò)卷積層前36 個通道特征圖可視化如圖5 所示.
圖5 原圖及特征圖
圖5 中網(wǎng)絡(luò)底層conv1_2 主要提取的是花卉的顏色及邊緣特征,網(wǎng)絡(luò)中間層conv3_3 主要提取的是花卉的簡單紋理特征,網(wǎng)絡(luò)高層conv5_3 主要提取的是花瓣、花蕊等細微的抽象特征.
本文與其他網(wǎng)絡(luò)的可視化類激活圖的效果對比如圖6 所示.
從圖6 中可以看出,與其他模型相比,本文模型的可視化類激活圖所覆蓋的范圍較大,溫度也較高,表明加入SE 視覺注意力單元后,網(wǎng)絡(luò)能夠有效提取花卉的花蕊、花瓣等顯著性區(qū)域.
圖6 可視化類激活圖
(2)分類準確率對比
本文與常見網(wǎng)絡(luò)模型及引用文獻中的網(wǎng)絡(luò)模型,在Oxford-102 花卉數(shù)據(jù)集上做了比較,準確率對比結(jié)果如表1 所示.
表1 Oxford-102 上不同網(wǎng)絡(luò)模型分類準確率對比(%)
本文的模型比所引文獻中在Oxford-102 花卉數(shù)據(jù)集上平均高出近6.2 個百分點,本文的模型比未添加SE 視覺注意力單元的VGG16 高出近15.85 個百分點.這一方面緣于本文對數(shù)據(jù)進行了增強,提高了模型的泛化能力和魯棒性,另一方面本文模型中嵌入了SE 視覺注意力單元,能夠有效學習花瓣、花蕊等部分的細節(jié)的信息,從而提高了模型分類的準確率.
(3)損失函數(shù)效果對比
多損失函數(shù)融合在Oxford-102 花卉數(shù)據(jù)集上,與常用的交叉熵及中心損失函數(shù)對分類準確率影響的對比,實驗的結(jié)果如表2 所示.
表2 Oxford-102 上各損失函數(shù)分類準確率的對比(%)
對比的結(jié)果顯示,采用多損失函數(shù)融合的方法比單獨使用交叉熵及中心損失函數(shù)在Oxford-102 花卉數(shù)據(jù)集上的分類準確率分別高出0.85 及1.11 個百分點.結(jié)果表明通過多損失函數(shù)的融合,放大了花卉的類間距離,縮小了類內(nèi)距離,進一步提高了分類的準確率.
(4)融合系數(shù)效果對比
多損失函數(shù)融合公式中融合系數(shù)λ取值對花卉分類準確率影響的對比,實驗的結(jié)果如表3 所示.
表3 Oxford-102 上融合系數(shù)λ 對分類準確率的影響
實驗結(jié)果顯示隨著融合系數(shù)λ的增長,在Oxford-102花卉數(shù)據(jù)集上,分類的準確率逐漸提高,當λ=0.5 時,準確率達到最高,之后又逐漸下降. 實驗表明交叉熵損失函數(shù)在總體上控制著模型的走勢,中心損失函數(shù)能夠捕捉并學習類內(nèi)距離更小的特征,兩者的適度融合,可以有效提高花卉分類的準確率.
(5)BN 層效果對比
當λ=0.5 時,未加入BN 層及加入BN 層后的分類準確率效果對比分別如圖7、圖8 所示.
圖7 未加入BN 層的分類準確率效果
圖8 加入BN 層后的分類準確率效果
實驗結(jié)果顯示,未加入BN 層的曲線收斂較慢,在2400 個epoch 時才逐漸趨于穩(wěn)定,而加入BN 層的模型曲線收斂的較快,在1200 個epoch 時已經(jīng)基本趨于穩(wěn)定. 實驗表明,在模型中加入BN 層后,能夠利用小批量上的均值和標準差,使網(wǎng)絡(luò)中間層參數(shù)服從于相同的分布,加快了網(wǎng)絡(luò)的訓練和收斂的速度,防止梯度爆炸及梯度消失,使模型變得更加穩(wěn)定.
本文在VGG16 網(wǎng)絡(luò)模型的基礎(chǔ)上,引入視覺注意力機制. 通過將SE 視覺注意力模塊嵌入到VGG16 網(wǎng)絡(luò)模型的各卷積層之后,以提取花卉顯著性區(qū)域的圖像特征; 各卷積層之后分別加入BN 層,有效防止了梯度爆炸及梯度消失,加快了網(wǎng)絡(luò)的訓練和收斂的速度;采用多損失函數(shù)融合的方式對新模型進行訓練,放大了花卉的類間距離,縮小了類內(nèi)距離,進一步提高了花卉分類的準確率. 實驗結(jié)果表明,新模型在Oxford 102數(shù)據(jù)集上的準確率比未引入注意力前有較大的提升.