張雪芹,余麗君
(華東理工大學 信息科學與工程學院,上海 200237)
目前,植物物種的分類主要依靠植物專業領域專家的人工判別,導致基于圖像的植物識別任務工作量很大而且效率不高。在深度學習算法在圖像領域的興起之后,基于計算機視覺的自動分類得到了很大的發展。Zhang等[1]采用自底向上的區域生成法產生待檢測鳥類目標局部可能的候選框,結合候選區域之間的幾何約束,基于R-CNN訓練3個檢測模型分別提取局部特征,采用將3個模型的全連接層特征級聯,形成整張圖像的細粒度特征用于分類。Lin等[2]提出了深度位置對齊模型對鳥類目標進行部件定位、對齊和分類,提出了閥門連接函數自適應地減小分類和對齊的誤差。馮等[3]針對汽車和飛行器采用了基于注意圖分割的分類模型,先用卷積神經網絡對圖像進行預分類,然后生成注意圖,利用注意圖分割出關鍵的目標區域,通過對分割圖提取CNN特征,再進行細粒度分類。Xiao等[4]基于鳥類目標構建一個兩級模型,第一級模型采用CNN來篩選主要目標,實現去噪,第二級模型利用上一級模型輸出的去噪后的數據,重新訓練模型,來提取特征進行聚類分析和SVM分類。Peng等[5]基于鳥類、汽車和貓狗寵物3種數據集,改進了兩級注意力模型分別用于定位物體在圖像中的位置和學習局部特征,再利用了空間約束模型用于強調局部之間的約束。
上述方法主要都是通過采用某些方法確定圖像中關鍵判定性區域,去除背景干擾,再執行分類任務。但是這些方法在關鍵判定性區域的選擇上,沒有考慮到圖像中目標高階語義的重要性,在篩選關鍵判定性區域時存在著較大的目標定位的不準確性和冗余,從而對后續特征提取和分類造成疊加誤差,造成分類精度不夠高。目前,基于語義分割的植物花型細粒度分類上研究還不多,本文將基于DeepLab的方法實現植物圖像像素級語義分割,找到圖像中具有判別意義的關鍵區域,同時結合全局域,采用CNN模型提取語義特征,采用softmax分類器進行分類,提高細粒度分類的精度。
卷積神經網絡(convolutional neural network,CNN)已被用于很多圖像分類識別任務中[6,7]。典型的CNN模型如圖1所示。AlexNet由卷積層、池化層、全連接層、分類器和ReLU非線性單元構成[8]。GoogLeNet是改進的網絡模型,加入的inception模塊可以有效地提取更多特征來提升訓練結果[9]。原始圖像數據集經輸入層送入網絡,神經元自動提取圖像的局部和全局特征,由全連接層連接所有的特征得到CNN提取的該圖像的特征表示,將輸出值訓練分類器,比如一般常用的softmax分類器等。

圖1 AlexNet網絡模型結構
CNN具有局部感受野、權值共享和下采樣3種結構特征。通過這些特征來保證輸入信號目標在一定程度上的平移、放縮和扭曲后的不變性。基于局部感受野和權值共享,在減少權值矩陣的同時保證網絡的學習能力不受影響,下采樣提高了模型逐層學習全局特征得到高階語義的能力。
1.1.1 前向傳播階段
前向傳播用于迭代更新網絡的參數,在前向傳播中,特征的運算公式為
(1)
其中,y(l)表示第l層的輸出,x(i)是上一層的輸出作為這一層的輸入向量,?表示卷積運算,bl是偏置,Wi表示該層包含的卷積核的權值,m表示輸入特征圖的集合,f(x) 表示非線性激活函數,通常用的是Sigmoid、Tanh和ReLU,以及最新的一些PReLU、Maxout等。
1.1.2 反向傳播階段
在m個樣本參與的前向傳播過程后,會輸出對應的每個類別的預測結果,根據樣本的標簽,即網絡的期望輸出定義網絡的優化目標為
(2)
其中,L(zi) 是定義的網絡的損失函數,網絡通過迭代訓練最小化損失函數來降低網絡的分類誤差,zi是網絡反向傳播的輸入,在式(1)中的最后一層網絡的輸出,W表示網絡的權值,λ表示對應的歸一項所占的比重。通常網絡的損失函數要根據具體的目標函數來定,在多分類任務中通常采用Softmax分類器的輸出來最小化交叉熵損失函數。Softmax的歸一化后的概率函數如下
zi=zi-max(z1,z2,…,zm)
(3)
(4)
其中,zi是網絡對樣本的預測類別,減去最大值來保持計算的穩定性,由于網絡最后的歸一化所以此操作不會造成影響,根據σi(z) 來預測zi屬于每個類別的概率。
定義交叉熵損失函數為
L(zi)=-logσi(z)
(5)
利用隨機梯度下降法來對式(1)中每一層的參數W和bl求導,更新網絡的參數。
語義圖像分割旨在為圖像中的每個像素生成分類標簽。卷積神經網絡雖然在提取局部特征和利用小感受野進行良好預測方面取得了良好的效果,但它們缺乏利用全局上下文信息的能力,無法直接建模預測之間的相互作用。DeepLab采用全卷積網絡(fully convolutional networks,FCN)改進了標準的卷積操作,利用空洞卷積擴展感受野,獲得更多上下文信息,利用完全連接的條件隨機場優化分割邊緣,提高了模型捕獲細節的能力[10,11]。
1.2.1 全卷積網絡
FCN是在CNN的基礎上改進得到的,可以實現對圖像進行像素級別的分割。它將卷積神經網絡中的全連接層全部換成卷積層,利用反卷積操作對最后一個卷積層得到的特征圖進行上采樣,最終得到一個與原圖大小相同的像素級預測。FCN避免了CNN重復進行的池化和下采樣操作導致的特征圖分辨率下降,保留了原始輸入圖像的空間信息。它通過對上采樣的特征圖進行逐像素分類,計算softmax分類損失,最終獲得像素級別的分割結果。
1.2.2 空洞卷積(atrous convolution)
由于圖像分割預測是像素級的輸出,因此FCN中有兩個關鍵,一個是池化減小特征尺寸增大感受野,另一個是上采樣擴大特征尺寸。在先減小再增大尺寸的過程中,造成了空間信息損失。為了解決下采樣帶來的空間信息損失問題,DeepLab采用空洞卷積對卷積操作進行改進。
不同于反卷積,空洞卷積不通過上采樣擴大特征分辨率,而是通過改變卷積核增大感受野。在空洞卷積中有個重要的參數rate,這個參數代表了空洞的大小。從原圖角度,所謂空洞就是在原圖上做采樣。采樣的頻率是根據rate參數來設置的,當rate為1時候,就是原圖不丟失任何信息采樣,如圖2(a)所示,此時卷積操作就是標準的卷積操作,當rate>1,比如2的時候,就是在原圖上每隔(rate-1)個像素采樣,如圖2(b)所示。采樣后的圖像與kernel做卷積,就變相增大了感受野。如果從kernel角度去看空洞,就是擴大kernel的尺寸,在kernel中,相鄰點之間插入rate-1個零,然后將擴大的kernel和原圖做卷積,同樣是增大了感受野。

圖2 空洞卷積
1.2.3 全連接條件隨機場
條件隨機場(conditional random field,CRF)方法通常在用于改進語義分割效果。CRF方法是一種基于底層圖像像素強度進行“平滑”分割的圖模型,在運行時會將像素強度相似的點標記為同一類別。DeepLab中CRF模型采用能量函數
E(x)=∑iφ(xi)+∑i (6) 其中,變量xi是像素i的標簽 φ(xi)=-logP(xi) (7) P(xi) 是由CNN計算的像素i的輸出標簽的分配概率 (8) 滿足 (9) km(fi,fj) 是 (fi,fj) 之間的高斯核,fi像素i的特征向量,由參數ωm加權。DeepLab中高斯核采用雙邊位置和顏色作為參考項 (10) 其中,前一個內核考慮像素位置p和顏色I,后一個內核只取決于像素位置。超參數σα,σβ,σγ表示高斯核的尺度。二元勢函數表征像素與像素之間的關系,對相似的像素,分配的標簽也更有可能分配相同的標簽,這樣可以細化邊緣。 本文提出的基于DL-CNN的細粒度分類方法包括3個部分: (1)判別關鍵域生成。通過DeepLab對植物圖像進行像素級分割,得到圖像中待檢測植物圖像目標及其輪廓區域,作為待測目標的判別關鍵域; (2)構建訓練數據集。受限于算法的性能,對植物圖像進行語義分割后,生成的判別關鍵域不可避免的存在過分割、不連通和不完整等情況。為了減少分割誤差對后續分類模型的影響,把由判別關鍵域圖像與原始圖像混合,構成既包含局部信息又包含有全局信息的訓練集; (3)基于遷移學習訓練基于GoogLeNet的分類模型。對于深度神經網絡,采用較小的數據集學習所有參數會導致模型過擬合和梯度彌散問題,本文在ImageNet的基礎上,采用遷移學習方式,利用構建的混合數據集,訓練GoogLeNet分類模型。 訓練語義分割模型的主要流程如圖3所示,訓練分類模型的主要流程如圖4所示。 圖3 DeepLab分割模型訓練過程 圖4 CNN分類模型訓練過程 算法的主要步驟描述如下: 步驟1 整理分割數據,將對應的標注信息作為標簽; 步驟2 輸入植物圖像及其對應的分割標注信息,利用多層空洞卷積和池化方法提取每張圖像的得分圖; 步驟3 對得分圖上采樣得到與原圖尺寸相同的圖像像素分類結果; 步驟4 使用全連接CRF利用底層細節信息對分割圖進行優化; 步驟5 輸入驗證圖像,對DeepLab模型參數進行優化,得到最優分割模型; 步驟6 利用DeepLab模型得到一對一映射的分割處理結果圖; 步驟7 對照分割處理結果圖,處理原始圖像得到的圖像判別關鍵域; 步驟8 將圖像判別關鍵域與原始數據集混合,得到新的分類訓練數據集; 步驟9 基于GoogLeNet訓練得到分類模型; 步驟10 輸入測試圖像,統計模型分類top-1的準確度。 本文實驗中采用的分割數據集來源于從百度爬蟲的植物圖片和Oxford 17中隨機挑選的圖片,總共1273張,記為MyData數據集。通過手工分割標注,得到1273張標注圖。將MyData拆分為訓練集600張,驗證集423張,測試集250張。分類數據集采用牛津大學公開植物圖像數據集Oxford 17和Oxford 102,Oxford 17共有17類植物,每個類別各有80張圖片,總1360張圖片數據集。Oxford 102中有102類植物圖像,每個類別分別包含40張~258張圖片,總共8189張圖片。分類訓練過程中,訓練集與驗證集圖片數量比例采用3∶1。所有圖片均經過重新處理為256*256尺寸大小。 本文實驗的分割和分類訓練過程均在基于GPU的并行計算條件下進行。操作系統為Ubuntu16.04,運行內存8 G,GeForce1060,顯存6 G,CUDA 8.0,cudnn 5.0,caffe。 (1)圖像分割指標 像素精度PA(pixel accuracy) (11) 假設共有k+1類(背景算一類),Pij表示本屬于類i但被預測為類j的像素數量,Pji表示本屬于類j但被預測為類i的像素數量,Pii表示被正確預測的數量。 均像素精度MPA(mean pixel accuracy) (12) 均交并比MIoU(mean intersection over union) (13) (2)圖像分類指標 top-N正確率是指圖像識別算法給出前N個答案中有一個是正確的概率。本文選取top-1作為此次分類任務的評價指標。 3.3.1 實驗一 本實驗的目的是尋找分割模型的最優參數。實驗采用MyData數據集,實驗對DeepLab分割模型中最重要的兩個參數batch_size和weight_decay進行調優。其余參數采用默認值(Base_lr為0.001,Lr_policy為poly, power=0.9)。 實驗首先固定weight_decay為0.0005,尋找batch_size的最優參數,實驗結果如表1所示可以看出,當batch_size為8時分割指標最好。其次,固定batch_size為8,尋找weight_decay的最優參數,實驗結果見表2。 表1 不同batch_size下的分割指標 表2 batch size固定,不同weight_decay下的分割指標 可見,當batch_size為8,weight_decay為0.0005時達到了PA為0.98、MPA為0.98、MIoU為 0.96,達到最優的分割準確率。 3.3.2 實驗二 本實驗用于驗證文中所基于DL-CNN的細粒度方法的有效性。實驗將比較判別域構成的5種方式,以及兩種分類模型。 5種判別域構建方法: (1)oriData:采用原始圖像作為全局判別域; (2)segData:根據分割圖,對相應的原始圖像做一對一像素級映射,得到只保留前景目標、背景均全黑的圖像,構成局部關鍵判別域; (3)KeyobjData:根據像素級分割圖,選取最小外接矩形的方法對原圖進行框選和裁剪,得到局部關鍵判別域。和處理方式(2)相比,采用該方法得到的裁剪圖會包含前景目標以及前景目標邊緣處的少部分背景,但是可以減少過分割和由于不連通造成的分割誤差; (4)SegData_oriData:將segData與oriData數據集混合,得到既含有圖像局部判別關鍵域,又包含全局判別域的雙判別域; (5)Keyobj_oriData:將KeyobjData與oriData數據集混合,得到既含有圖像判別關鍵域,又包含全局判別域的雙判別域。 采用oriData、segData和KeyobjData得到的判別域圖像示例見表3。可以看出,序號為A的花得到了正常分割,B則出現了過分割,C由于花型比較分散,出現了不連通和缺失,D為花型較小的簇類花型,出現了缺失和欠分割。 表3 圖像示例 同時,實驗采用Oxford 17和Oxford 102兩個數據集,比較了AlexNet和GoogLeNet兩種分類模型,在4種判別域構成方案下的top-1分類準確度見表4。 表4 模型Top-1分類結果/% 可以看到,基于GoogLeNet的分類模型總體檢測精度高于基于AlexNet的分類模型。采用segData方案得到的局部關鍵判別域用于分類,top-1精度低于采用原圖作為全局判別域的分類結果,這是由于分割過程中出現的分割誤差(如過分割、由于植物花型分散不連通造成分割后花型部分丟失等造成的)。采用KeyobjData方案得到的局部關鍵判別域用于分類,在GoogLeNet模型下,top-1精度略高于采用原圖作為全局判別域的分類結果。采用本文提出的雙判別域用于分類,在GoogLeNet模型下,相對于采用原圖作為全局判別域的分類結果,top-1精度在Oxford 17和Oxford 102分別提高2.74%和4.26%。 表5給出了分類檢測中單幀圖像的處理時間,可以看到基于GoogLeNet,在Oxford 17數據集上,單張圖像的檢測時間僅為27 ms,在Oxford 102數據集上,單張圖像的檢測時間僅為15.8 ms。 表5 分類中單張圖像的處理時間/s 3.3.3 實驗三 本實驗用于驗證文中所提方法在類別更加相似的植物圖像上的有效性。實驗選取了18種不同的菊花,來自于互聯網,總共1352張。菊花類別序號、類別名稱和圖片數量信息如下:1萬壽菊(99)、2矢車菊(65)、3日光菊(74)、4金盞菊(72)、5瓜葉菊(99)、6大麗菊(59)、7波斯菊(71)、8金光菊(98)、9禮花菊(84)、10雛菊(141),11乒乓菊(74),12幌菊(19),13杭菊(40),14芙蓉菊(45),15荷蘭菊(63),16蛇目菊(75),17金絲皇菊(39),18麥稈菊(135)。括號內的數字為圖片數量,實驗中按3∶1劃分為訓練集和測試集。 實驗結果見表6和表7。 表6 菊類圖像的分類結果/% 表7 GoogLeNet模型下每個類別分類的結果 從表6可以看出,本文提出的方案對相似植物仍然能夠以較高的準確率實現細分。從表7可以看出,除大麗菊和幌菊識別準確率較低外,其余種類top-1識別率都在90%以上。分析原因,其中,幌菊識別率低的主要原因是訓練樣本較少,只有12張。大麗菊識別率低主要因為訓練樣本圖像中的花型都很大,占據了畫面的主要部分,因此提取的局部判別域和全局判別域基本沒有差異,因此改進效果不明顯。 3.3.4 實驗四 本實驗用于驗證本文方法與SIFT+K-means+SVM、GrabCut+CNN的其它植物分類方法比較下的有效性。 SIFT+K-means+SVM方法對讀取的原始圖像提取SIFT特征點進行K-means聚類,然后訓練SVM,在測試集上得出分類精度。GrabCut是一種基于圖論的圖像分割方法,利用了K-means聚類、高斯混合模型建模和最大流最小割算法,對使用GrabCut分割得到的圖像前景圖經過AlexNet和GoogLeNet訓練,得到的分類結果見表8。 表8 本文方法與SIFT+K-means+SVM、 GrabCut+CNN的分類結果/% 由表8,對比SIFT+KMeans+SVM和GrabCut+CNN的方法可以看出,本文DL-CNN方法在提高分類精度上效果更加明顯,驗證了本文算法的有效性。 目前,基于語義分割的植物花型細粒度分類上研究還不多。本文針對植物圖像進行分類,具有重要的應用價值。針對植物圖像分類中準確率不高的問題,提出了一種基于判別關鍵域和深度學習的植物圖像細粒度分類方法(DL-CNN)。該方法通過對圖像進行語義分割,獲得待測目標的判別關鍵域。同時為了減小分割誤差對分類誤差的影響,提出構建包含待測目標全局和局部判別域的分類訓練數據集,采用卷積神經網絡提取特征,softmax分類器進行分類。在Oxford 17和Oxford 102兩個公開數據集以及植物子類數據集上,均取得了較高的top-1識別準確率。
2 基于DL-CNN的細粒度分類方法


3 實驗數據與分析
3.1 實驗數據與環境
3.2 評價指標
3.3 實驗結果與分析








4 結束語