邊 緣, 孔小瑩, 張 莉, 邊世正, 李瑞改
(東北林業(yè)大學 信息與計算機工程學院, 哈爾濱 150040)
樹種識別一直是林學的熱門研究內容[1]。由于葉片圖像具有葉片形狀特征多、辨識度高、區(qū)分度大、數據采集容易等優(yōu)點,因此是當前樹種識別領域常用的數據源。但人工樹種識別存在著工作量大、工作效率低等問題,因此,本文采用模式識別與人工智能等領域的技術進行基于葉片圖像的自動分類,具有相當大的應用前景。
由于深度學習領域大量研究者不斷對已有算法進行優(yōu)化,卷積神經網絡算法的性能、準確率以及對不同問題的適應性均有提高,因而被大量應用在各個領域的圖像分類問題上。在以往樹種識別的研究中,有基于傳統(tǒng)特征提取的分類器算法、基于人工神經網絡的深度學習分類器算法以及傳統(tǒng)特征提取與人工神經網絡相結合的復合分類算法。唐欽設計的基于K-means和SVM傳統(tǒng)分類器的復合算法在自采集的22種8 800張樹葉樣本數據集上取得了89.64%的識別率[2]。但是傳統(tǒng)分類器算法需要復雜的特征提取,要求模型的使用者對識別任務的數據有深刻的理解,需要大量的先驗知識和前期反復的數據分析、特征工程工作。且傳統(tǒng)分類器算法可容納的特征維度小、數量少,識別難度遠遠大于深度學習,在準確率方面也更容易遇到瓶頸。楊蒙蒙設計的Hu矩和灰度共生矩陣與BP神經網絡結合的分類算法,在UCI數據庫15種樹葉樣本數據集上取得了80.97的識別率[3]。然而人為提取特征輸入神經網絡的操作,所提取的特征不管從數量還是質量都遠低于卷積神經網絡自動提取的特征,沒有有效發(fā)揮神經網絡模型的優(yōu)勢,在準確率方面仍有較大的提升空間。趙鵬超等設計了一種淺層卷積神經網絡,在自采集的4種樹葉數據集上的識別率在95%以上[4]。由于其處理的分類任務種類少、樣本數量不足、難度低,因此缺乏足夠的說服力;也因為種類和樣本數量的不足使得模型難以被有效應用在現實情境中。上述模型均為淺層網絡模型,有一定的參考意義,也各自有其不足之處。在ILSVRC賽事的影響下,深度學習蓬勃發(fā)展,淺層的卷積神經網絡已逐漸被深層卷積神經網絡所取代[5]。深層卷積神經網絡在模型可容納的原始輸入數據規(guī)模、所需訓練的參數量、模型的訓練難度以及實際的模型準確率等各方面的表現都優(yōu)于淺層網絡。
卷積神經網絡(Convolutional Neural Networks,CNN)是一種特殊的多層前饋神經網絡[6]。卷積神經網絡被廣泛應用在以二維數據為輸入的任務中,有著相對固定的網絡結構。其起源于上世紀60年代Hubel和Wiesel等受貓的大腦視覺皮層系統(tǒng)啟發(fā)[7]。視覺皮層的研究成果,為深入研究神經網絡等相關內容提供了理論研究方向,為卷積神經網絡此后的不斷發(fā)展奠定了基礎,CNN在1990年首次實現。LeCun等建立了反向傳播算法訓練的卷積神經網絡模型LeNet[8]。該網絡模型最初是為了研究識別手寫的郵編數字,被作為經典的卷積神經網絡被后人不斷研究,并在此基礎上優(yōu)化。與傳統(tǒng)分類算法相比,CNN可以不經過人工的預處理或預先提取特征,直接從原始數據中自動提取特征識別圖像種類,對不同種數據都有很強的適應,使得特征提取工作不再完全依賴于相應行業(yè)專家豐富的專業(yè)知識與經驗。同時CNN具有局部連接與權值分享的特點[9]。這二種特點對于降低網絡模型的復雜度起到重要作用,很大程度上減小了模型所需的參數的規(guī)模和訓練過程中的運算量,使得模型擁有更快的訓練速度和較容易的訓練難度。
卷積神經網絡由卷積層、池化層以及全連接層組成,網絡結構示意如圖1所示。不同于輸入一維數據的傳統(tǒng)神經網絡,CNN模型以二維數據(即圖像)作為輸入,通過卷積層提取特征,減少參數數量;通過池化層降低卷積層輸出特征圖像的維數,即降維處理;最后提取到的特征圖像輸入到全連接層中進行分類。CNN具有強大的特征提取能力,參數較少,卷積層與池化層的網絡結構可以被設計得很深。

圖1 卷積神經網絡結構示意圖
卷積運算的原理是用一個卷積核,遍歷原圖像,得到特征圖像。其中卷積核是一個預先設定好大小的權值矩陣w,卷積運算即卷積核與原圖像局部的對應值乘積的和加上偏置b,經過激活函數計算得到輸出的特征值,在卷積核遍歷原圖像后得到特征圖像。
定義輸入矩陣X(n×n),卷積核為W(k×k),輸出矩陣為Y,則卷積運算公式(1)為:
(1)
卷積核的權值通過反向傳播算法訓練,因此CNN具有學習圖像特征的能力。
卷積操作所提取出的原圖像對應的特征圖像實際上不需要經過池化操作即可用于全連接層分類。但礙于計算機能力的限制,直接輸入到全連接層的特征圖像數據量過大,需要訓練大量參數,導致訓練時間過長,訓練難度陡升等問題。
為了解決數據量過大的問題,在卷積神經網絡結構中添加了池化層。
池化層通過池化操作來減小數據量。池化操作利用了圖像數據相鄰像素之間有關聯性的原理,通過預先設定好大小為n×n尺寸的正方形(以像素為單位)遍歷圖像,在原圖像的每個正方形內分別計算其結果,計算方式有求平均值和最大值二種,最后輸出一個由計算結果所組成的特征圖像,圖像的長寬均為原圖像長寬除以n。2×2最大池化原理示意,如圖2所示。

圖2 2×2最大池化原理示意圖
在實際應用中,常見的池化操作分為最大池化與平均池化二種。池化操作可以有效減小網絡所需的參數量,同時最大限度保持特征的質量。在過往的研究中最大池化在很多實驗中都取得了較好的效果。本論文采用的是2×2最大池化,一次池化操作可以將數據的規(guī)模縮小至原來的四分之一。
實驗選用Flavia植物葉片數據集,如圖3所示。該數據集共有32種植物類別,1 907個尺寸均為1600×1200樣本圖像,圖像背景純白無陰影。

圖3 Flavia植物葉片數據集
樹葉主要通過形態(tài)特征區(qū)分種類,顏色影響較小,RGB三通道圖像極大地增多了數據量,增加了神經網絡的負擔,因此實驗將Flavia的RGB葉片圖像轉換為灰度圖,如圖4所示,保留樹葉形態(tài)特征、減少數據量,使數據集可以使用更為復雜的網絡模型。

圖4 RGB葉片圖像轉換灰度圖例
RGB圖像轉換灰度圖為公式(2):
L=R×0.299+G×0.587+B×0.114.
(2)
其中,R、G、B分別代表RGB圖像的紅、綠、藍3個通道的圖像,L代表灰度圖。
對葉片數據標準化處理,使得神經網絡在訓練時加速收斂,如公式(3)所示:
(3)
其中,μ為樣本數據的均值;σ為樣本數據的標準差;x為圖像矩陣;Xscale為標準化處理后得到的圖像矩陣。
本實驗軟件環(huán)境為Windows 10 64位系統(tǒng),采用Keras深度學習框架,使用Python作為編程語言。計算機內存為8GB,搭載Inter(R) Core(TM) i5-7400 CPU @ 3.00GHz x4處理器,同時使用Nvidia GTX1050顯卡加速網絡訓練。
本文設計的網絡模型共有7層卷積層,4層池化層以及2層全連接層,如圖5所示。其中卷積層選用了11×11,5×5和3×33種尺寸的卷積核,池化層均選用2×2最大池化層,第一層全連接層設置了4 096個神經元,第二層全連接層輸出32種植物葉片分類結果。

圖5 本文設計的網絡模型
本實驗使用交叉驗證對模型的性能進行驗證,訓練集與驗證集比例設置為8∶2,共1 525張訓練樣本,以及382張測試樣本,為了保障實驗的準確性,訓練樣本與測試樣本均隨機選取。訓練過程中采用了衰減的學習率,設置初值為0.001,每兩輪若驗證集loss值未下降,則學習率衰減為原來的一半。
經過多次交叉驗證,模型識別的平均準確率為91.16%,最低準確率為90.31%,如圖6所示;最高準確率為92.15%,如圖7所示,模型的平均訓練時間約為36~37 min。準確率受到隨機選取的訓練集樣本因素的影響,同時Flavia數據集中不同示例圖片中葉片方向的不一致也是可能影響模型識別準確率的因素之一。但多次實驗中準確率均高于90%,能夠達到林業(yè)相關應用領域中對樹種識別技術的要求。

圖6 準確率最低模型訓練情況

圖7 準確率最高模型訓練情況
本文基于卷積神經網絡設計了一種植物葉片樹種分類算法,該算法利用不同尺寸的卷積核隨網絡深度由大尺寸到小尺寸進行卷積以識別局部特征,然后利用2×2最大池化核池化操作以降低數據規(guī)模并提高算法的魯棒性,并在Flavia數據集上進行了模擬實驗,模型準確率高于90%。表明本文算法是一種基于植物葉片進行樹種分類的有效方法。