張遠琴 肖德琴 陳煥坤 劉又夫
(華南農業大學數學與信息學院, 廣州 510642)
我國堅持水稻質量與產量并重的原則,將培育高產優質的稻米作為水稻生產研究的主要方向[1]。稻穗數是水稻質量與產量評估的重要指標,在水稻病害檢測[2]、營養診斷[3]及生育期檢測[4]等方面具有非常重要的作用。長期以來,在水稻栽培或育種研究中,稻穗數都是通過人工統計的方式來獲得,該過程耗時、耗力、效率低,在大面積生產場景下,由于植株間的相似性和觀察人員的主觀性使稻穗計數非常困難,且容易出錯。因此,無論是快速預估產量還是精準檢測表參數,都迫切需要一種快速、精準的稻穗自動計數方法。
圖像是對作物進行觀測最直接的手段之一,基于數字圖像植株穗的自動計數研究已取得一定的成果。主要分為兩類:一類是基于顏色[5-7]和紋理[8-9]的分割方法,另一類是基于像素水平顏色特征候選區域[10-12]和基于超像素融合生成候選區域[13-14]的分類方法。穗分割方法處理速度較快,但需考慮光照陰影、穗粘連和葉片顏色不均等因素的影響,尤其當目標量與非目標量增加時,提取穗表型特征變得相當困難,計數精度明顯下降;基于候選區域的分類方法的關鍵環節是候選區域的生成,候選區域的質量直接影響分類模型的訓練數據質量、分類能力和穗計數精度。
近年來興起的卷積神經網絡(Convolutional neural networks, CNN)是深度學習的重要產物,應用于農業領域圖像識別已取得了顯著成效[15-18]。在稻穗識別與分割方面,DUAN等[12]從多角度分析水稻植株圖像,提出一種自動確定盆栽水稻植株穗數的方法,但這種方法需要一個專門的光源和圖像背景才能確保其良好的性能。XIONG等[19]提出一種基于超像素分割和CNN的稻穗分割算法,該算法能很好地應用于不同品種及生育期的稻穗分割,但耗時較長。BAI等[20]研究了一種水稻抽穗期自動觀測方法,該方法不僅利用了稻穗的顏色和梯度特征,還利用了CNN自動學習特征,其檢測精度達到75%,但受光照的影響較大,適于處理最佳自然光下拍攝的圖像,而處理日常水稻圖像時會耗費時間,檢測精度也會下降。XU等[21]提出一種基于深度學習和多尺度混合窗口的穩健稻穗計數算法,該算法通過增強稻穗特征來檢測和計算大面積場景中的小尺度稻穗,平均計數精度達87.2%。但該算法只適于成熟期的稻穗。
稻穗自動計數的本質是稻穗的識別與定位,這與目標檢測研究的目標識別與定位相一致,由此可將稻穗計數問題轉化為稻穗檢測問題。圖像目標檢測的檢測方法可分為兩類:一是基于區域生成的檢測方法,即先由算法生成一系列候選框,再通過卷積神經網絡對候選框中的目標進行分類,如Faster R-CNN[22]等網絡模型屬于此類檢測方法,這類方法雖不能做到實時檢測,但識別率高。二是基于回歸的方法,該方法在實現目標定位的同時預測目標分類,屬于一體化卷積網絡的檢測方法,YOLO[23]系列、SSD[24]等都屬于此類,該類方法具有識別速度快的優勢,但準確率往往低于前者。因此,目前已有算法都存在局限性。
本文針對不同生長期和高密度的小尺寸稻穗,提出一種基于改進Faster R-CNN的水稻稻穗檢測方法,其目的是提高小目標稻穗檢測的精度,為水稻關鍵發育期預測與產量預估提供研究基礎,從而進一步服務于水稻育種與栽培。
本文以種植在華南農業大學資源與環境學院樓頂大棚的盆栽金農絲苗水稻為試驗對象。水稻種植在直徑約40 cm的花盆中,每盆分3穴栽種幼苗,幼苗間隔10~12 cm。試驗場地種植的水稻按不同氮元素水平(N0、N90、N180、N270、N360)劃分為5個觀察區域,每個區域有9盆水稻。本試驗中監測的區域為N180,屬于正常范圍內的氮元素水平種植的水稻,9盆水稻圍成一個監測區域模擬大田環境中3行3列的區域塊,在種植間隔和疏密上符合大田種植要求,以盡可能使水稻培育環境與真實大田環境相接近。本試驗采用視頻攝像頭對盆栽水稻進行監測,視頻攝像頭采用海康DS-2DC4420IW-D E系列智能球機,固定在離地面2.5 m的橫梁上。具體試驗設備和現場圖如圖1所示。
試驗時,針對2019年的早稻(5月25日—7月10日)和晚稻(10月26日—12月6日)從抽穗期到成熟期進行定時拍攝。定時抓拍時間設置為每天08:00—18:00,每隔20 min拍攝1次,并自動保存到網絡硬盤中。所拍攝圖像的尺寸為1 920像素×1 080像素,圖像存儲格式為JPG。試驗期間,共獲得了2 580幅圖像。其中,抽穗和揚花期圖像(Ⅰ類)600幅、乳熟期圖像(Ⅱ類)780幅、蠟熟和完熟期圖像(Ⅲ類)1 200幅。圖2為3類不同發育期的稻穗形態。
在真實的工程應用中,實際獲得的數據往往比滿足深度學習模型訓練要求的數據量少得多。為了解決此問題,一般需要對訓練集的樣本進行數據增強來擴充數據集[25]。
本文在模型訓練前,將各類數據集分別按照4∶1的比例隨機劃分為訓練集和測試集。對于訓練集,采用LabelImg軟件進行人工標注。圖3為訓練集樣本的預處理過程,通過對圖像進行水平翻轉、平移、旋轉和裁剪來擴充數據集。表1為各類稻穗圖像數量。

表1 各類稻穗圖像數量
Faster R-CNN屬于Two-stage目標檢測網絡的代表,其特點是識別錯誤率、漏識率低。與YOLO、SSD等One-stage目標檢測網絡不同,這類網絡模型的突出特點是快速性,但是精度相對Two-stage目標檢測網絡略低。本文要求稻穗的檢測精度較高,因此選取Faster R-CNN網絡模型實現稻穗的識別與定位是合理的。
在本文的稻穗數據集中,統計標注框(剛好包含目標)的寬/高即稻穗長邊范圍在26 ~ 250像素之間,中位數在150像素左右,此處反映了所需識別的稻穗多為小目標,即目標尺寸未達圖像尺寸的1/10[22]。隨著水稻的生長發育,從抽穗期到成熟期,不僅各時期的稻穗尺寸會有差異,圖像中稻穗的數量也越來越多。
本文考慮到高精度的Faster R-CNN網絡在小目標物體檢測上存在的問題,并結合本文稻穗檢測存在目標小且密集、前后不同生長期目標大小跨度大等問題,對Faster R-CNN網絡進行有針對性的改進。
1.3.1優化的Inception_ResNet-v2特征提取網絡
繼2015年ResNet被提出后,2016年由Google團隊的SZEGEDY 等[26]結合Inception和ResNet的優點,提出基于Inception v4融合殘差單元的Inception_ResNet-v2網絡,其在ILSVRC圖像分類基準測試中取得了當下最好的成績。本文為解決稻穗目標較小的問題,在Inception_ResNet-v2的結構中引入空洞卷積來代替下采樣進行優化解決。優化的Inception_ResNet-v2網絡結構由3部分組成:
(1)Inception v4:Inception v4是Google Inception系列網絡的一種,該網絡借鑒Inception v3的思想在網絡中層(12~20層)使用卷積核1×3、3×1、1×7、7×1代替卷積核3×3、7×7進行卷積分解。相比Inception v3主要不同是添加了3個殘差單元,這樣既加速了訓練速度,又能夠訓練更深的網絡,得到更豐富的空間特征信息。Inception_ResNet-v2與Inception v4結構基本相同,具有相同的Stem模塊,不同的細節在于殘差單元。Stem模塊結構如圖4所示。
(2)ResNet:單純地增加網絡深度會導致梯度消失或梯度爆炸,甚至會使準確率下降。殘差網絡被提出,其核心是解決因增加網絡深度帶來的退化問題,使得通過簡單地增加網絡深度來提高網絡性能是可行的。殘差結構如圖5所示,輸入張量為x,學習殘差函數F(x)=H(x)-x,當模型精度達到飽和時,多余的網絡層訓練目標變為將殘差結果逼近于0,即令F(x)=0,實現恒等映射,使得隨著網絡加深,訓練精度不會下降。
(3)空洞卷積:深度卷積神經網絡提取圖像特征往往通過下采樣的方式縮小圖像尺度同時擴大感受野,輸出特征圖具有更加豐富的高層語義信息,然而過多的下采樣操作會不可逆地丟失高層邊緣信息和小目標的特征信息。空洞卷積的優點是能夠在不做池化操作造成信息損失的情況下,保證特征圖分辨率不改變同時擴大感受野,使卷積輸出包含較豐富的特征信息。不同擴張率的3×3空洞卷積如圖6所示。
圖7為引入空洞卷積優化的Inception_ResNet-v2特征提取網絡,將其作為Faster R-CNN網絡模型的基礎網絡。首先,將Reduction-A、B模塊(Reduction-A、B模塊見圖8)中步長為2的3×3卷積層和最大池化層設置為步長為1;然后,在Inception_ResNet-B模塊引入擴張率為2的空洞卷積,具體的Inception_ResNet-A、B、C模塊結構如圖9所示。最后,將Inceptio_ResNet-B模塊的輸出作為Faster R-CNN中RPN網絡和區域特征聚集方法(ROIAlign)的共享特征圖,而Inception_ResNet-B之后的所有層作為ROIAlign層的后接網絡。于是共享卷積層僅有8倍下采樣,表明提取候選框的基礎尺寸可以設置為8(原本為16),即特征圖上的每一像素點映射到原始圖像上至少有8個像素的對應區域,事實上低于候選框下限的小目標往往會被漏檢。顯然,引入空洞卷積優化解決目標稻穗較小的問題是合適的。
1.3.2基于K-means聚類的RPN網絡
原始候選區域生成網絡(Region proposal network, RPN)中的先驗框的尺寸(32,64,128)和比例(1∶2,1∶1,2∶1)都是人為設定的,在一定程度上帶有主觀性,不利于學習特定對象的位置和大小。如在本文的稻穗數據集中,稻穗尺寸變化范圍較大,這種預先定義的邊框提取策略在定位稻穗上將產生較大的偏差,甚至出現漏檢的情況。而且,由于先驗框的固定生成方式,RPN網絡生成的候選框重疊率過多,故訓練時冗余的邊框將耗費許多不必要的計算資源,增加模型的收斂時間。因此針對先驗框設計問題,本文考慮采用K-means的聚類方法,參考稻穗標注框的尺寸,將訓練集的尺寸先驗性帶入網絡超參數中。這樣,在自己的數據集上聚類計算先驗框將會更合適,最終能夠提高預測框的檢出率。
在開始訓練前,對數據集樣本的標注框尺寸進行K-means聚類。在聚類時,提取標注框的寬、高作為K-means算法的輸入,預設參數K為先驗框(聚類中心框)的數量。K-means算法以相似度為依據將訓練集中相似度較高的標注框歸為同一個類簇,將差異性較高的標注框歸為不同的類簇。最后通過計算K個不同類簇中所有標注框寬、高的平均值,得到先驗框的合適尺寸。聚類結束后,將結果作為RPN網絡的先驗框預設規則。
在聚類的過程中,相似度的計算方法選用標注框與聚類中心框之間的交并比(IoU)作為距離指標,其距離計算公式為
d(box,centre)=1-IoU(box,centre)
式中 box——標注框
centre——聚類中心框
d(box,centre)——標注框與聚類中心框之間的距離
IoU(box,centre)——標注框與聚類中心框的交并比
特別地,計算IoU時每個標注框的中心點都與聚類中心點重合。
1.3.3選擇ROIAlign替代感興趣區域池化層
由于本文稻穗尺寸小,且隨著生長發育圖像中的稻穗也會變得密集,針對小且密的目標對象,感興趣區域的提取精度變得尤為關鍵。Faster R-CNN中的感興趣區域池化層(ROIPooling)可以將RPN生成的候選框映射到共享卷積層輸出的特征圖上,得到候選區域在共享特征圖上的感興趣區域,并產生固定大小的感興趣區域,這里針對小目標稻穗尺寸的特殊性,設置ROIPooling的采樣參數為7×7。
假設原圖中有一候選框尺寸為249×249,映射到共享特征圖上的尺寸為26.75×26.75,在程序計算的時候會進行取整操作,即第1次量化,得到的特征圖尺寸為26×26。根據ROIPooling的采樣參數為7×7,即ROIPooling后固定生成尺寸為7×7的特征圖,所以,將上面在特征圖上映射的26×26的候選區域劃分成7×7個同等面積的小區域,每個小區域的邊長為26/7=3.71,即3.71×3.71,此時,進行第2次量化,故小區域尺寸變成3×3,那么在每個小區域里取出最大的像素作為區域代表,組成7×7的特征圖??梢钥闯?,經過兩次量化操作,即將浮點數取整,把原本映射到共享特征圖上的尺寸為26.75×26.75的候選框縮小成尺寸為21×21的候選框,這樣的像素偏差定會影響到后接網絡的回歸定位,尤其是小目標物體。顯然,這樣會對小尺寸的稻穗檢測造成不利的影響。而ROIAlign使用雙線性內插法來取代ROIPooling的取整操作,保留了浮點數,于是本文選擇ROIAlign來替代ROIPooling,能夠獲得更精準的效果。
具體地,設置ROIAlign的采樣點為4,即把每個3.82×3.82小區域平分為4個小單元,采用雙線性插值算法計算每個小單元的中心位置像素值,得到4個小單元中心點的像素值。然后再取這4個像素值的最大值作為這個小區域的像素值,同樣地,7×7個這樣的小區域得到7×7個像素值,組成7×7的特征圖。圖10所示為ROIAlign采樣獲取小區域像素值的操作過程。
本文自制了3類數據集對提出的模型進行測試。首先,對不同聚類K值(選取6~12)下優化后模型的檢測精度進行試驗,確定最佳聚類參數;然后分析不同優化操作下的網絡檢測性能以及加入聚類對優化后模型檢測精度的影響,最后,為驗證本文提出模型在稻穗檢測上的優勢,與SSD和YOLO等One-stage網絡模型的檢測精度進行對比分析。其中,目標檢測精度以平均精度均值(Mean average precision,mAP)為評估標準,平均精度均值是各類別平均精度(Average precision, AP)的平均值。
試驗運行環境為Inteli9 9900K CPU、主頻3.40 GHz、內存64 GB,GPU為NVIDIA 2080ti,操作系統為Ubuntu 16.04LTS,CUDA版本為10.0,以TensorFlow 14.0為深度學習框架,編程語言為Python 3.7。
本文目標檢測網絡在訓練前,先在ImageNet數據集上進行預訓練,以初始化其參數,然后再在本文數據集上進行遷移學習和微調。訓練階段的網絡超參數設計如表2所示。網絡訓練具體步驟為:

表2 模型訓練超參數
(1)采用ImageNet預訓練模型進行參數初始化,獨立訓練RPN網絡。
(2)仍用ImageNet預訓練模型進行參數初始化,但是使用步驟(1)RPN網絡產生的候選區域作為輸入,訓練Fast R-CNN網絡。
(3)使用步驟(2)的Fast R-CNN網絡參數重新初始化RPN網絡,但是把RPN和Fast R-CNN共享的卷積層的學習率設置為0,意味著不更新,僅僅更新RPN特有的網絡層,重新訓練,此時2個網絡已經共享了所有公共的卷積層。
(4)固定RPN和Fast R-CNN共享的網絡層,加入Fast R-CNN特有的網絡層,形成一個統一的網絡,繼續訓練,微調Fast R-CNN特有的網絡層。
K-means聚類中的K代表了先驗框劃分的精細程度,理論上,其值選取得越大,對標注框聚類得到先驗框的尺寸將更加具有代表性,能夠更精細地表征稻穗尺寸,RPN網絡預測的候選區域就越精確,最終的目標檢測精度也會越高,但是聚類過程涉及的計算資源就越多,同時模型復雜度高,網絡訓練所耗費的時間也不斷增加。
在原始的RPN網絡中,共享特征圖上的每個點生成9個先驗框作為初始候選區域。據此本試驗的K以9為中心,取值范圍為6~12,分析不同K值對網絡訓練時間以及檢測精度的影響,試驗結果如圖11所示。
由圖11a可知,當K增大時,聚類時間以接近線性增長的速度越來越大。這是因為在聚類過程中,聚類數K表示把訓練集的所有標注框分類,從K-1類到K類就需要增加計算所有標注框到第K個聚類中心框的距離。
由圖11b可知,隨著K越來越大,平均每幅圖像訓練時間逐步增加。原因是當先驗框的數量逐漸增大時,共享特征圖上每個候選框數量越來越多,候選區域產生的樣本數量增大,增加了網絡回歸層的計算量,導致訓練時間更長。圖中紅色點表示具有原始RPN的Faster R-CNN檢測模型的訓練用時,該模型較K=9時的模型用時更長,這說明在設定相同數量的先驗框時,通過對標注框聚類統計取代人工設計先驗框尺寸的方式,更適合網絡自身學習,驗證了本文方法的有效性。
由圖11c可知,隨著K越來越大,平均精度均值整體呈上升趨勢;當K為11或12時,平均精度均值已趨于穩定或有下降趨勢。原因為:①當K較小時,先驗框集合的數量比較少,不能很好地覆蓋圖像上目標可能出現的區域,造成模型對部分稻穗出現漏檢的情況。②當K增大至10的過程中,尺寸更小的先驗框更能夠表征稻穗的尺寸,精度隨之提升,其中K=9的檢測精度比未加入聚類的模型提高了0.5個百分點。③隨著K繼續增長(11或12),本文認為在共享特征圖上生成的先驗框數量已趨近于飽和,原因在于一方面剔除超過圖像邊界的先驗框更多,另一方面,后續的非極大值抑制過程會篩除大量重疊率高的候選區域。因此,更多的先驗框對提高檢測精度并不起作用。
因聚類獲取先驗框的步驟能夠脫離整個網絡單獨進行,且聚類算法運行時間遠小于Faster R-CNN模型的訓練時間,故本文權衡模型訓練用時和平均精度均值來選定最優的K值。由圖11b、11c可知,訓練時間隨K增大而增大,當K為11或12時,模型的檢測精度已有下降趨勢??紤]模型訓練用時和檢測精度,最終選定K為10。
為了驗證本文提出的優化策略能夠有效地改進基于Inception_ResNet-v2特征提取網絡的Faster R-CNN模型對小目標稻穗檢測的不足,本文采用3類不同時期稻穗的數據集,通過試驗分析了不同優化操作下的網絡檢測性能以及對加入聚類優化后的模型進行測試,結果分別如表3、4所示。

表3 不同優化操作下的網絡檢測平均精度
由表3可知,基于Faster R-CNN框架,僅采用Inception_ResNet-v2為特征提取網絡的原始模型的mAP為77.9%;引入空洞卷積的優化模型較原始模型的mAP提高了1.0個百分點,在此基礎上,采用ROIAlign替代ROIPooling的優化操作使得模型的mAP提高了0.5個百分點;其中分別對Ⅰ、Ⅱ、Ⅲ類的稻穗檢測精度提高了2.1、1.2、1.2個百分點。表明引入空洞卷積和ROIAlign的優化策略能夠彌補Faster R-CNN算法應用于本文數據集在檢測上的不足,在保證了對較大目標稻穗檢測精度有較好提升的情況下,在一定程度上改善了對小目標稻穗的識別精度。
由表4可知,加入聚類后的模型(K=10)其稻穗平均精度均值為80.3%,較未加入聚類模型提升0.9個百分點。試驗結果表明RPN網絡引入K-means聚類的先驗框生成方式能夠更好地識別稻穗,驗證了本文提出的加入聚類優化模型實現稻穗計數問題的可行性。

表4 加入聚類優化后的模型檢測精度對比
如圖12所示,為了突出模型改進前后對稻穗圖像檢測的效果,選取關鍵部分細節圖進行展示。圖12a中從左到右依次為原始模型分別對Ⅰ、Ⅱ、Ⅲ類稻穗圖像檢測結果細節圖。可以看出,原始模型的檢測結果存在檢測框不能完全覆蓋稻穗表面、稻穗漏檢、葉片誤識別的情況。而改進后的模型具有更優的檢測效果。
為進一步驗證改進模型的有效性,本文基于相同的數據集,訓練了SSD和YOLO系列檢測模型,并對其檢測精度進行對比試驗,試驗結果如圖13所示。由圖13可知,One-stage檢測網絡對于以稻穗為對象的數量多且尺度較小的目標識別性能較低,其中SSD500與Faster R-CNN的檢測精度較接近。試驗結果驗證了本文方法對稻穗檢測具有優越性。
提出了一種基于改進Faster R-CNN的水稻稻穗檢測方法。首先,引入空洞卷積來優化Inception_ResNet-v2特征提取網絡,在此基礎上采用ROIAlign替代ROIPooling得到優化模型;然后,對標注框進行聚類分析,選取合適的先驗框尺寸及數量,以優化RPN網絡中先驗框生成方式;最終獲得基于改進Faster R-CNN稻穗檢測模型。將稻穗數據集分為Ⅰ、Ⅱ、Ⅲ類,試驗表明,本文方法對Ⅰ、Ⅱ、Ⅲ類稻穗的檢測精度分別為79.7%、80.0%、81.2%,平均精度均值為80.3%,相較于原模型(僅用Inception_ResNet-v2作為特征提取網絡)的平均精度均值提升了2.4個百分點。與SSD和YOLO系列檢測模型相比,改進Faster R-CNN檢測模型能夠更有效地識別小目標稻穗,提高了檢測精度。