肖志云 趙曉陳
(1.內蒙古工業大學電力學院,呼和浩特010080;2.內蒙古工業大學內蒙古機電控制重點實驗室,呼和浩特010051)
內蒙古自治區是我國重要的草原畜牧業生產基地,全區草場面積達8 666.7 萬hm2,占內蒙古土地面積的76.5%,約占全國天然草場面積的1/4[1]。深入研究牧草是合理利用草地資源、實現國家可持續發展的重要途徑。實現牧草生長趨勢的精準檢測、研究牧草物種多樣性等都需要對牧草進行準確分類。目前,牧草識別主要由人工完成,費時、費力,且精度較低。
隨著機器視覺技術的發展,眾多研究者以葉片的顏色、紋理、形狀等視覺特征研究植物葉片識別方法[2-7]。首先使用特定的圖像分割算法將葉片與背景分離,然后通過將提取到的葉片的顏色、紋理、邊緣等多個特征相融合的方式研究植物葉片識別方法,利用多種聚類和分類算法建立識別模型,獲得了較好的識別結果。上述方法是從圖像分割與葉片特定特征的提取出發,對植物葉片進行分類識別,而當存在光照變化、背景復雜、葉片重疊等自然因素影響時,圖像分割效果會受到影響,提取到的特征也會發生較大變化。因此,基于圖像分割與提取特征的識別方法在自然環境下效果不理想。
自ALEX 等[8]提出AlexNet 卷積神經網絡模型以來,卷積神經網絡大量應用于圖像分類研究中[9-13]。文獻[14]在對稻飛虱與非稻飛虱進行圖像分類研究時,首先使用遷移學習在ResNet-50 框架上訓練,然后通過Mask R-CNN 對其進行分類識別,平均識別精度達92.3%;文獻[15]在對花卉品種進行分類時,提出一種將卷積神經網絡與隨機森林相結合的方法,相比手工提取特征方法,有效提高了識別率。與手動提取特征的方法相比,基于深度卷積網絡的圖像識別方法無需圖像分割,可自動提取特征,且提取的特征不受光照變化、背景復雜等環境的影響,適于自然背景下的圖像識別。
上述基于卷積神經網絡的識別方法雖然提高了識別精度,但采用的都是一種池化方式,且對特征沒有按重要性進行區分,不能充分利用圖像所包含的信息。本文針對自然背景下牧草圖像難識別的問題,充分利用牧草圖像信息,設計一種基于雙池化與多尺度核特征加權的卷積神經網絡結構,以有效提高網絡的識別精度。
通過兩種方式獲取牧草圖像:首先在自然場景下使用相機對牧草圖像進行采集;其次通過網絡爬蟲爬取互聯網上的圖像對數據集進行補充。通過對上述方法獲得的牧草圖像進行篩選后,共保留紫花苜蓿、紅三葉、雞眼草、紫云英等10 類2 110 幅牧草圖像,且每幅牧草圖像的背景各不相同,牧草區域有大有小,光照強弱也有不同。圖1為本文需識別的10 類牧草圖像,表1 為數據集中各類牧草的數量。

圖1 本文需識別的牧草種類Fig.1 Forage species images to be identified

表1 樣本集中各類樣本數量Tab.1 Number of pastures in sample set
本文網絡是在VGG-Net[16]結構基礎上改進而來,VGGNet-13 結構如圖2 所示,圖中,Conv 代表卷積核,Max Pooling 代表最大值池化,Avg Pooling 代表均值池化,FC 代表全連接層。網絡采用了卷積層堆疊的結構且在每2 個卷積層后接1 個池化層,網絡共包括10 個卷積層和5 個池化層,其中卷積核尺寸為3 ×3,池化層采用Max Pooling。
為提高網絡對特征分布的擬合能力,卷積神經網絡通常在卷積層和全連接層后引入非線性激活函數。常用的激活函數為ReLU 激活函數,其表達式為

式中 x——輸入特征值
f(x)——輸出特征值

圖2 VGGNet-13 結構Fig.2 Network layer parameter
由式(1)可知,當x <0 時ReLU 函數的輸出為0,訓練時會造成神經元失活,因此本文網絡的非線性激活函數采用ELU[17]函數,其表達式為

式中 α——伸縮因子
α 控制ELU 負值部分何時飽合,在本文中取值為1。
由式(2)可知,ELU 函數在x≤0 部分是一個指數函數,因此不會出現神經元失活問題。
在最后1 個池化層后引入了Global Average Pooling[18]層,可以大量減少網絡參數,有效地防止過擬合,甚至在很多網絡中都使用它來替代全連接層。為提高網絡非線性同時保證識別精度,本文并沒有取消全連接層而是將其參數設為512,之后是Softmax 層用于對牧草圖像分類。
采用Adam 優化器最小化損失函數。由于數據集中的樣本之間存在差異,必然存在網絡容易學習的樣本和難以學得的樣本,因此采用Focal loss[19]代替交叉熵作為網絡的損失函數。以二分類為例,交叉熵表達式為

L——交叉熵損失函數值
Focal loss 的表達式為

式中 Lf——Focal loss 值
γ——指數調控因子
由式(4)可知,Focal loss 在交叉熵的基礎上引入了γ 因子,當γ >0 時^y 值越大的樣本有更小的損失函數值,因此Focal loss 可以使網絡在訓練時更加關注于難以學得的樣本,經實驗測定,當γ =5 時效果最佳。
池化層是卷積神經網絡的基本結構,池化可以在保留主要特征的同時降低特征維度,減少卷積神經網絡的運算量,最常用的有Max Pooling 和Average Pooling。
Max Pooling 選取池化區域內最大值作為特征值,其表達式為

式中 C——池化窗口內(i,j)的取值集合
k(i,j)——池化窗口內位置為(i,j)的像素值
hmax——池化后的值
Average Pooling 選取池化區域內的平均值作為特征值,其表達式為

式中 havg——池化后的值
m——池化窗口尺寸
研究表明Max Pooling 能夠更多地保留圖像紋理等顯著性信息[20],而Average Pooling 則更多地保留了圖像的局部空間信息[21]。目前大多數卷積神經網絡只選取一種池化方式,會造成更大的信息損失,為充分利用特征信息可以同時使用這兩種池化方法。

圖3 雙池化結構Fig.3 Double pool structure
結合SeNet(Squeeze-and-excitation networks)[22]提出了一種雙池化卷積神經網絡結構,其結構如圖3所示。首先對上一個卷積層輸出的特征圖進行1 ×1卷積操作,將特征圖的個數降為原來的1/2,然后對降維后的特征圖分別進行最大池化和平均池化操作得到兩組特征圖,之后將這兩組特征圖進行拼接。
圖4 為兩種池化方式單獨使用時測試集的識別率隨訓練次數的變化曲線,從圖中可知,兩種池化對識別結果的影響不同,因此將拼接后的特征圖直接輸入到下一個卷積層不合理。為解決這個問題,引入SeNet 中的特征重標定策略,即通過學習的方式自動獲取每個特征的重要程度,然后依照這個重要程度對特征進行加權,從而提升有用的特征并抑制對當前任務作用較小的特征。

圖4 兩種池化方式識別率對比Fig.4 Accuracy rate graph of two different pooling methods
如圖3 右半部分所示,首先對拼接后特征圖進行Global Average Pooling 操作,將H ×H ×C 的特征圖變換為1 ×1 ×C 的向量,其中H 為特征圖的尺寸,C 為特征圖的個數。然后將此向量先后輸入到2 個全連接層,第2 個全連接層輸出向量中的元素即為池化層拼接后對應特征圖的權重,之后將該權重與原特征圖相乘得到新的特征圖,最后將新特征圖輸入到下一個卷積層。在此過程中引入全連接層的目的在于使網絡能夠在訓練過程中通過學習不斷地調整特征圖的權重,直到其最大程度地滿足于當前任務。
如圖5 為訓練過程中權重分布圖,由圖可知,在訓練開始階段權重分布變化幅度比較大,隨著訓練的進行權重分布逐漸趨于穩定,說明在本文雙池化結構中引入特征重標定策略后其權重在網絡訓練過程中不斷調整,直到其收斂于最優權重。

圖5 網絡訓練過程中權重分布變化Fig.5 Weight distribution change diagram duringnetwork training
網絡訓練完成后,若最大池化層產生的特征圖的最小權重大于平均池化計算出的特征圖的最大權重,則說明相對最大池化,平均池化層產生的特征圖對當前任務的貢獻很小,這種情況下引入平均池化將失去意義。
表2 為網絡訓練完成輸入1 幅圖像后,提取的第1 個雙池化結構中Max Pooling 和Average Pooling各特征圖的權重,即各特征圖對當前任務的重要程度,結合圖4 可知,雖然在2 種池化單獨使用時Max Pooling 的整體效果優于Average Pooling,但并不是Max Pooling 中所有特征圖對當前任務的重要程度都高于Average Pooling,說明本文方法是可行的。

表2 兩種池化方式所得各特征圖權重Tab.2 Weight values of each feature map obtainedby two pooling methods
在卷積神經網絡中,不同尺寸的卷積核對圖像的感受野是不同的,小尺寸的卷積核與圖像進行卷積操作得到的特征能更好地反映圖像的局部特征,大尺寸的卷積核則能更好地反映圖像的全局特征[23],為增強網絡適應性,本文使用兩種尺寸卷積核的組合來對牧草進行識別,但網絡的運算量是隨著卷積核尺寸的增大而增大的,卷積核太大則會造成海量的運算量。因此本文只對比了尺寸為3 ×3、5 ×5、7 ×7 的卷積核與3 ×3 卷積核組合后對網絡識別率的影響,實驗結果顯示3 種組合的識別率分別為92.76%、94.10%、92.81%。
由以上結論可知,在3 ×3 卷積核中引入5 ×5 的卷積核后識別率提升了1. 34 個百分點,而在3 ×3 卷積核中引入7 ×7 的卷積核后網絡識別率提升并不明顯,因此本文使用3 ×3卷積核與5 ×5卷積核組成Conv block 結構對牧草圖像進行識別。
為充分利用特征信息,引入了Densenet[24]中的特征復用思想,即網絡任意兩層之間都有直接的連接,每一層的輸入都是前面所有層輸出的并集,而該層所學習的特征圖也會被直接傳遞給其后面所有層作為輸入。其表達式為

式中 xl——第l 層特征圖
H(·)——ELU 激活函數
這樣在提高特征利用率的同時減少了參數量[25];網絡更容易訓練,并且稠密連接的正則化作用在少量的訓練集中能夠有效降低過擬合[26];加速卷積神經網絡反向傳播時梯度的傳遞,在一定程度上緩解了隨著網絡的加深而產生的梯度消失問題和模型退化問題。上述Conv block 和復用特征組成的結構如圖6 所示,具體操作如下。
Conv block 操作:首先將上一層得到的特征圖輸入到1 ×1 卷積層,目的是減少特征圖的數量,以減少運算量;然后將降維后的特征圖分別輸入到3 ×3 卷積層和5 ×5 卷積層,同樣為減少計算量將3 ×3 卷積核分解為1 ×3 卷積核和3 ×1 卷積核,5 ×5 卷積核分解為1 ×5 卷積核和5 ×1 卷積核。
特征復用操作:將經上一個Pooling block 層或輸入層輸出的特征圖和與當前Conv block 之間所有Conv block 輸出的特征圖進行拼接,之后經過一組1 ×1 的卷積核進行降維。
經過上述操作后,共產生3 組特征圖,之后的操作是將這3 組特征圖進行拼接。同樣,在此也引入特征重標定策略,對拼接后的特征圖進行加權以增強有用特征,抑制無用特征。

圖6 多尺度特征加權結構圖Fig.6 Multi-scale feature weighted structure
圖7 為網絡訓練完成后提取的各層輸出的特征圖,由于相鄰2 層提取的特征圖區別較小,因此每2個Conv block 模塊提取1 次特征圖。由圖可以看出,網絡Conv block2 模塊輸出的特征圖包含了牧草圖像空間、顏色等混合信息,但圖像的背景部分仍然存在;Conv block4 和Conv block6 的特征圖更多地包含了牧草圖像的紋理和輪廓等不變性特征,而圖像背景部分已經基本消除;Conv block8 層則更多保留了各類牧草之間有區分性的特征,而Conv block10 輸出的特征圖則代表了與類別相關的信息。以上分析表明,隨著網絡層數的加深,特征的抽象程度和稀疏程度也越來越高,且提取到的圖像特征主要是牧草特征而非背景,因此本文網絡能夠有效提取牧草特征。
對紫花苜蓿、針茅、狼尾草、紫云英等10 種典型牧草進行識別研究,所選軟件平臺為Anaconda3 中的spyder,使用Python 語言和Tensorflow 深度學習框架進行圖像預處理和卷積神經網絡的搭建;硬件平臺為計算機,處理器為IntelCore i5-8400,GPU 為GTX1060,6GB 顯存。

圖7 網絡各層提取的特征圖Fig.7 Feature map extracted from each layer of network
首先將獲得的樣本尺寸調整到128 像素×128 像素,然后按4∶1的比例將初始數據集隨機分為訓練集和測試集。由于卷積神經網絡參數較多,在訓練過程中極易發生過擬合,因此在對網絡訓練之前需要對初始樣本的訓練集進行擴充。常用的數據擴充方法有平移、旋轉、亮度變換、添加噪聲等。數據擴充應結合具體研究目標的特點,不能隨意擴充,例如形狀是牧草主要表征之一,在數據擴充時不應改變牧草形狀。另外擴充的圖像與原圖像之間應有一定差距,但同時要盡多地保留原始圖像中牧草的相關特征。例如在對圖像進行平移時,若平移的像素點太少,則平移后的圖像與原圖無異,在這種情況下反而會加重網絡過擬合,若平移過多則會丟失較多的牧草信息。因此在對圖像進行平移變換時,將平移的范圍限制在10 ~30 像素,在旋轉變換時只進行了90°、180°、270°的旋轉,其他數據擴充方式也遵循以上思想。數據擴充分3 次進行:第1 次,通過旋轉、平移、裁剪和填充將數據擴充為原訓練集的7倍。第2 次,考慮到在自然條件下光照強度對識別結果影響較大,因此對上述擴充后的圖像進行亮度變換擴充至原訓練集的14 倍。第3 次,對原始訓練集進行添加噪聲和水平鏡像變換。最終擴充后的訓練集是原訓練集的16 倍,且每次擴充后網絡識別率均有提升。對樣本集進行編號分類并制作標簽,擴充后各類牧草數量及各類牧草的標簽如表3 所示。

表3 擴充后的訓練集中各類樣本數量Tab.3 Number of samples in expanded training set
在使用卷積神經網絡對圖像進行處理之前首先對圖像進行標準化操作,表達式為

式中 X——圖像樣本 μ——樣本均值
σ——樣本標準差
X*——標準化的樣本
采用Adam 優化器對網絡進行訓練,批處理容量為60,采用指數衰減的學習率,基礎學習率0.002 2,學習率衰減系數為0.99,L2正則化系數為0.000 7,模型迭代次數為100 000。
圖8 為使用VGG-13 對牧草數據集訓練時的相關曲線,由圖8a 可知,訓練集識別率在訓練10 000 次時已經達到100%,而測試集識別率僅為70%。由圖8b 可知,訓練集上的損失值在訓練50 000 次后已經接近0,而測試集上的損失值在0.3附近,由此得知在直接將VGG-13 在牧草圖像數據集上訓練時會發生過擬合,為驗證本文網絡的有效性,本文對VGG-13 網絡各層參數進行了調整,使其適應于牧草數據集。

圖8 VGG-13 在牧草圖像數據集上相關曲線Fig.8 Correlation curves of VGG-13 on pasture image dataset

圖9 本文網絡與調整后的VGG-13 相關曲線Fig.9 Comparison of network and adjusted VGG-13 correlation curves
圖9 為調整后的VGG-13 與本文網絡在測試集上的識別率和在訓練集上的損失值曲線對比圖,結合圖8a 知,調整后的VGG-13 相比調整前識別率有了明顯提高,而相比調整后的VGG-13,本文網絡的識別率更高。由圖9b 可知,本文網絡的損失值在迭代20 000 次時已經接近0,而調整后的VGG-13 在迭代近40 000 次才接近0,因此本文網絡明顯收斂更快。
為驗證本文方法的有效性,將調整后的VGG-13、調整后的VGG-13 +雙池化結構和本文網絡在單類樣本測試集上進行了對比,其識別率如表4 所示。由表4 可得知,調整后的VGG-13 結構只有5 類牧草識別率超過90%;VGG-13 +雙池化結構有8 類牧草圖像識別率超過90%,其中有3 類牧草地識別率超過了95%,紫云英的識別率達到100%;本文網絡除雞眼草外,識別率均超過了90%,其中有5 類牧草超過了95%,針茅的識別率達到100%。由以上分析可知,3 種網絡中本文網絡在對單類樣本識別中表現最好,其次是調整后的VGG-13+雙池化結構,調整后的VGG-13 網絡表現最差。結果表明本文提出的牧草識別方法在單類樣本上是有效的。

表4 各網絡在訓練集中各類樣本上的識別率Tab.4 Recognition rates of various networks on various samples in training set
為進一步分析識別率差異的原因,本文提取了部分分類正確和分類錯誤的圖像類激活熱力圖,分別如圖10、11 所示。
由圖10 可知,對于能夠正確分類的樣本,其對分類有貢獻的區域主要集中在牧草所在區域,尤其是與各牧草有顯著差異的部分,如紅三葉圖像中“V”形白色紋理部分,紫云英葉基部分,紫花苜蓿的葉尖部分。
由圖11 可知,對于錯分樣本,可以分為3 種情況:第1 種情況是圖像對分類起作用的區域是背景而不是牧草本身,如圖11b、11e、11f、11g、11i,原因是在原圖像中背景葉片的特征更為明顯,網絡在分類時誤將背景葉片作為目標葉片,進而導致錯分。第2 種情況是圖像中牧草葉片個數過多,單個葉片區域過小,使網絡無法提取有效特征,如圖11a、11h。第3 種情況是圖像對分類起作用的區域是牧草葉片部分,但卻將類別錯分,如圖11c、11d,原因是原圖像中牧草區域專有特征不明顯,對分類起作用的區域與其他牧草相似,從而導致分類錯誤。由以上分析可知,歪頭菜識別率較低主要由第1 和第2種情況造成,紫花苜蓿則由第1 種情況造成,而在雞眼草被錯分的樣本中均存在這3 種情況。

圖10 分類正確圖像的類激活熱力圖Fig.10 Class activation thermal maps of correct image classification

圖11 分類錯誤圖像的類激活熱力圖Fig.11 Class activation thermal map of classification error image
表5 為各網絡在單幅圖像運行時間和在測試集上平均識別率對比。由表5 可知,VGG-13 網絡的識別率最低且所用時間最長。本文網絡比調整后的VGG-13 網絡在訓練集上的平均識別率高5.7 個百分點,但運行時間卻只多了0.035 s,證明本文提出的方法是有效可行的。網絡各層參數設置如

表5 各網絡測試集平均識別率與運行時間對比Tab.5 Comparison of average recognition rate and running time of each network test set

表6 網絡各層參數設置Tab.6 Network layer parameters
(1)提出的方法能夠更充分地利用圖像包含的信息,且在測試集上的平均識別率達到了94.1%,明顯優于VGG-13 網絡。
(2)提出的網絡結構在訓練時,網絡的收斂速度是VGG-13 網絡的2 倍以上,說明本文網絡可以大幅提高網絡收斂速度。
(3)對10 類牧草進行單獨識別時,本文提出的方法識別率優于VGG-13 網絡,且有9 類牧草識別率超過90%,其中有5 類牧草識別率在95%以上,證明本文所提出的方法能夠對牧草圖像進行準確識別。