侯向寧,劉華春,侯宛貞
1(成都理工大學工程技術學院,樂山 614000)
2(西華大學 計算機與軟件工程學院,成都 610039)
步入全面小康社會,人們在享受物質生活的同時,也在不斷追求高品質的精神生活,比如對美的欣賞及追求.花卉觀賞可使人心情愉悅,給人恬美的視覺體驗; 然而人們對花卉的分類卻較為迷惑,究其原因主要有兩點: 首先是花卉具有較高的類間相似性,即不同種類的花卉之間存在著難以分辨的相似的顏色及形狀等; 其次是花卉具有較大的類內差異性,即同類花卉之間受氣候和光照等因素的影響,存在著顏色、形狀等方面的不同之處.
我國幅員遼闊,已知的花卉種類約3 萬種. 在植物研究領域,基于人工提取特征的傳統花卉分類方式分類準確率低且耗費人力; 而具有自動提取特征的基于深度學習的花卉分類方法逐漸受到人們的關注. 文獻[1]設計了一個8 層的卷積神經網絡,并在Oxford-102花卉數據集上進行了測試,由于模型的深度較淺,分類效果并不理想. 文獻[2]通過遷移學習,對Inception-v3網絡模型在花卉數據集上進行微調,對分類準確率有少量的提升. 文獻[3]將AlexNet 和VGG16 模型的特征進行串聯,利用mRMR 算法選擇有效特征,最后采用SVM 分類器進行分類,該方法稍顯繁瑣且分類準確率不高. 文獻[4]在VGG16 模型的基礎上將多層深度卷積特征進行融合,并在 Oxford-102 花卉數據集進行了測試,但分類的準確率并不理想. 文獻[5]對LeNet-5 模型進行了適當改造,取得了較好的分類效果,但其對花卉圖像進行了灰度預處理,并未考慮到顏色對識別精度的影響. 文獻[6]采用多層特征融合及提取興趣區域的方法對花卉進行分類,模型較為復雜.
文獻[7]將SE 視覺注意力模塊引入VGG16 網絡模型,用于對行人進行檢測,取得了較好的檢測效果.本文在VGG16-BN 模型的基礎上,引入視覺注意力機制,將SE 視覺注意力模塊嵌入VGG16-BN 網絡模型,對花卉圖片的顯著性區域進行特征提取,充分利用VGG16-BN 模型的寬度和深度優勢,以進一步提高花卉分類的準確率.
SENet 是最后一屆ImageNet 分類任務的冠軍.SENet[8]的本質是采用通道注意力機制,通過深度學習的方式自動獲取圖像各個特征通道的權重,以增強有用特征并抑制無用特征. 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個卷積核所對應的輸出特征.

(1)Squeeze[9]即Fsq操作,該操作較為簡單,主要是對特征圖進行一個全局平均池化,從而獲取各通道的全局特征,如式(2)所示:Fsq操作將H×W×C的輸入轉換成1×1×C的輸出,也就是將每個二維的特征通道變成一個實數,這個實數某種程度上具有全局的感受野,它表征著在特征通道上響應的全局分布.
(2)Excitation[10]即Fex操作,通過兩個全連接層先降維后升維對squeeze 操作的結果進行非線性變換,來為每個特征通道生成權值,該權值表示特征通道之間的相關性,如式(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 操作輸出的維度相同,最后再經過Sigmoid 函數用于獲取各通道歸一化后的權重,得到維度為1×1×C的s,s用來表示通過之前兩個全連接層的非線性變換學習到的第C個特征圖的權值. Excitation 這種先降維后升維的操作一方面降低模型復雜度,使網絡具有更好的非線性,另一方面更好的擬合通道間復雜的相關性,提升了模型泛化能力.
(3)Reweight[11]即Fscale操作,將上一步excitation 操作得到的權值s通過乘法逐通道加權到原始的特征上,完成在通道維度上的對原始特征的重標定,如式(4)所示:

總之,SE 模塊通過自動學習,以獲取每個特征通道的重要程度,然后根據各個通道的重要程度,一方面去提升有用的特征,另一方面抑制對當前任務不相關或作用不大的特征.
VGGNet[12]榮膺2014 年ImageNet 圖像分類第2名的好成績,其中VGG16 是VGGNet 中分類性能最好的網絡之一,其網絡結構如圖2 所示.

圖2 VGG16 網絡結構
(1)VGG16 網絡可分為6 段,即5 段卷積加1 段全連接,其中5 段卷積包含13 個卷積層,1 段全連接指網絡最后的3 個全連接層,因此VGG16 網絡總共有13+3=16 層.
(2)5 段卷積用以提取低、中、高各層的圖像特征,每一段有2 或3 個卷積層. 為了增加網絡的非線性、防止梯度消失、減少過擬合以及提高網絡訓練的速度,各卷積層后均采用ReLU 激活函數. 為利于捕捉細節變化,獲得更好的非線性效果并減少參數數量,每個卷積層均采用3×3 的卷積核,使得網絡結構更加簡潔,在必要時3×3 卷積核的堆疊還可以替代5×5、7×7 等較大的卷積核.
(3)5 段卷積的尾部均接有一個最大池化層,該池化層采用2×2 的池化核,能夠減小卷積層參數誤差造成估計值均值的偏移,更容易捕捉圖像和梯度的變化,有利于保留紋理等細節信息.
(4)VGG16 網絡的最后一段是3 個全連接層,全連接層中的每一個節點都與上一層每個節點連接,把前一層的輸出特征綜合起來,起到分類器的作用.
總之,VGG16 網絡的深度為16 層,這種較深的網絡通過逐層的抽象,能夠不斷學習由低到高各層的特征,具有更強的非線性表達能力,能表達更為豐富的特征,擬合更為復雜的輸入特征. 另外,VGG16 網絡最開始采用64 個3×3 卷積核,隨著網絡的加深,卷積核數量逐漸從64,增加到128、256、512,因此使其具有較大的網絡寬度,寬度的增加能使網絡各層學習到更為豐富的顏色、紋理等特征.
SE 模塊的最大特點在于其內部采用常見的池化及全連接層,因此具有很強的通用性,可以方便的嵌入到其他常見的網絡模型中. 在VGG 網絡模型的卷積層之后加入SE 視覺注意力單元,如圖3 所示.

圖3 SE-VGGConv 模塊
如前所述,在VGG 網絡的卷積層后,首先經過一個GAP 全局平均池化層,即圖1 中的squeeze 操作,用于獲取通道級的全局特征. 然后進入第一個FC 層進行降維操作,用ReLU 函數激活后進入第2 個FC 層進行升維操作,Sigmoid 函數用于獲取各通道歸一化后的權重. Scale[8,13](即reweight 操作)將歸一化后的權重加權到每個原始通道的特征之上,實現了在通道維度上的對原始特征的重標定.
VGG16 因其具有較好的深度及寬度,在圖像分類的應用具有一定的優勢,但對具有類間相似性高,類內差異性大以及存在復雜背景干擾的花卉分類,其準確率還有待提高. 因此,在VGG16 的基礎上引入BN 層及SE 視覺注意力單元,可以充分提取花卉分類任務中類間相似性高、類內差異較大的敏感特征,從而提高花卉分類的準確率.
在VGG16 加入BN 層及SE 視覺注意力單元后的網絡結構如圖4 所示.

圖4 SE-VGG16-BN 網絡結構
為擴大花卉的類間距離,減少類內距離,以進一步提高花卉分類的準確率,采用多損失函數融合的方式,具體如下:
交叉熵損失函數(cross-entropy cost function)經常用于分類任務中,起著控制模型的總體走勢的作用,交叉熵損失函數的定義如下:

其中,n是批處理樣本數,x為輸入,y為標簽值,?表示實際輸出.
中心損失函數(center loss)優勢是可以學習類內距離更小的特征,從而減小類內的差異,并能在一定程度上增大類間差異性,從而提高分類的準確率,中心損失函數的定義如下:

其中,n是批處理樣本數,xi表示yi類別的第i個特征,Cyi表示i類特征的中心值.

將交叉熵損失函數和中心損失函數進行融合,并將其推廣至多層神經網絡,假設輸出神經元的期望值是y={y1,y2,y3,…},,則融合后的計算公式如下:其中,融合系數λ的取值范圍是0–1,通過多損失函數的融合,放大了花卉的類間距離,縮小了類內距離,加快了網絡的收斂速度,進一步提高了分類的效率和準確率.
“一日之計在于晨”,早晨是人們精力最充沛的時刻,此時讀書,利于記憶,吟詠背誦,往往事半功倍。學校安排學生晨讀,從時間分配與人體生理方面而言,是合理的,就晨讀內容而言,據本人了解,各校有各校的安排、部署,而我院,則以傳統文化為主要朗讀、背誦的對象。
本實驗的軟硬件環境如下: 操作系統為Ubuntu 16.04.1 LTS,顯卡為NVIDIA GeForce GTX 1080Ti,CPU是Intel Core i7-9700K,32 GB 內存. 采用PyTorch 1.6.0深度學習框架,Python 3.6 編程環境以及Pycharm 開發工具.
選用牛津大學公開的Oxford-102 花卉數據集,該數據集包括102 類花卉,每類由40–258 張圖片組成,共計8189 張花卉圖片. 由于Oxford-102 花卉數據集的數據量較小,為了防止過擬合,提高網絡模型的性能,對該數據集進行了隨機旋轉、翻轉、平移、裁剪、放縮等操作,通過數據增強,將Oxford-102 數據集擴充至8189+8189×5=49134 張.
(1)為提高訓練的效果,加快網絡模型的收斂,對兩個數據集的花卉圖片按照保持長寬比的方式歸一化,歸一化后的尺寸為224×224×3.
(2)將數據增強后的每類花卉圖片數的70%劃分為訓練集,剩余30%作為測試集.
(3)訓練時保留VGG16 經ImageNet 預訓練產生的用于特征提取的參數,SE 單元模塊中用于放縮參數r設置為文獻[8]的作者所推薦的16,其余參數均使用正態分布隨機值進行初始化.
(4)采用隨機梯度下降法來優化模型,batchsize 設置為32,epoch 設為3000,學習率設為0.001,動量因子設為0.9,權重衰減設為0.0005.
(5)為了防止過擬合,SE-VGG16 網絡模型第6 段的兩個全連接層的dropout 設置為0.5.
(6)多損失函數融合公式中λ參數的值設置為0.5.
(1)數據可視化
VGG16 網絡卷積層前36 個通道特征圖可視化如圖5 所示.

圖5 原圖及特征圖
圖5 中網絡底層conv1_2 主要提取的是花卉的顏色及邊緣特征,網絡中間層conv3_3 主要提取的是花卉的簡單紋理特征,網絡高層conv5_3 主要提取的是花瓣、花蕊等細微的抽象特征.
本文與其他網絡的可視化類激活圖的效果對比如圖6 所示.
從圖6 中可以看出,與其他模型相比,本文模型的可視化類激活圖所覆蓋的范圍較大,溫度也較高,表明加入SE 視覺注意力單元后,網絡能夠有效提取花卉的花蕊、花瓣等顯著性區域.

圖6 可視化類激活圖
(2)分類準確率對比
本文與常見網絡模型及引用文獻中的網絡模型,在Oxford-102 花卉數據集上做了比較,準確率對比結果如表1 所示.

表1 Oxford-102 上不同網絡模型分類準確率對比(%)
本文的模型比所引文獻中在Oxford-102 花卉數據集上平均高出近6.2 個百分點,本文的模型比未添加SE 視覺注意力單元的VGG16 高出近15.85 個百分點.這一方面緣于本文對數據進行了增強,提高了模型的泛化能力和魯棒性,另一方面本文模型中嵌入了SE 視覺注意力單元,能夠有效學習花瓣、花蕊等部分的細節的信息,從而提高了模型分類的準確率.
(3)損失函數效果對比
多損失函數融合在Oxford-102 花卉數據集上,與常用的交叉熵及中心損失函數對分類準確率影響的對比,實驗的結果如表2 所示.

表2 Oxford-102 上各損失函數分類準確率的對比(%)
對比的結果顯示,采用多損失函數融合的方法比單獨使用交叉熵及中心損失函數在Oxford-102 花卉數據集上的分類準確率分別高出0.85 及1.11 個百分點.結果表明通過多損失函數的融合,放大了花卉的類間距離,縮小了類內距離,進一步提高了分類的準確率.
(4)融合系數效果對比
多損失函數融合公式中融合系數λ取值對花卉分類準確率影響的對比,實驗的結果如表3 所示.

表3 Oxford-102 上融合系數λ 對分類準確率的影響
實驗結果顯示隨著融合系數λ的增長,在Oxford-102花卉數據集上,分類的準確率逐漸提高,當λ=0.5 時,準確率達到最高,之后又逐漸下降. 實驗表明交叉熵損失函數在總體上控制著模型的走勢,中心損失函數能夠捕捉并學習類內距離更小的特征,兩者的適度融合,可以有效提高花卉分類的準確率.
(5)BN 層效果對比
當λ=0.5 時,未加入BN 層及加入BN 層后的分類準確率效果對比分別如圖7、圖8 所示.

圖7 未加入BN 層的分類準確率效果

圖8 加入BN 層后的分類準確率效果
實驗結果顯示,未加入BN 層的曲線收斂較慢,在2400 個epoch 時才逐漸趨于穩定,而加入BN 層的模型曲線收斂的較快,在1200 個epoch 時已經基本趨于穩定. 實驗表明,在模型中加入BN 層后,能夠利用小批量上的均值和標準差,使網絡中間層參數服從于相同的分布,加快了網絡的訓練和收斂的速度,防止梯度爆炸及梯度消失,使模型變得更加穩定.
本文在VGG16 網絡模型的基礎上,引入視覺注意力機制. 通過將SE 視覺注意力模塊嵌入到VGG16 網絡模型的各卷積層之后,以提取花卉顯著性區域的圖像特征; 各卷積層之后分別加入BN 層,有效防止了梯度爆炸及梯度消失,加快了網絡的訓練和收斂的速度;采用多損失函數融合的方式對新模型進行訓練,放大了花卉的類間距離,縮小了類內距離,進一步提高了花卉分類的準確率. 實驗結果表明,新模型在Oxford 102數據集上的準確率比未引入注意力前有較大的提升.