祁 洋,李亞楠,孫 明,徐文霞
(1.武漢工程大學(xué)計算機科學(xué)與工程學(xué)院、人工智能學(xué)院,武漢 430205; 2.武漢工程大學(xué)智能機器人湖北省重點實驗室,武漢 430073)
中國是世界第一大棉花消費國和進口國,也是世界第二大棉花生產(chǎn)國,棉花高質(zhì)量生產(chǎn)與經(jīng)濟發(fā)展息息相關(guān)。幼苗作為棉花生長期內(nèi)的一個重要階段,幼苗數(shù)量直接關(guān)系到其播種成活率、出苗率等苗情信息的獲取,間接影響棉花的發(fā)育監(jiān)測與產(chǎn)量估計。然而,目前幼苗數(shù)量的統(tǒng)計手段還主要依賴于人工觀測。這種方式不僅效率低,主觀性強,而且很難滿足現(xiàn)代化大型農(nóng)業(yè)的發(fā)展需要。因此,有必要利用智能化技術(shù)代替繁雜的人工觀測,助力棉花高質(zhì)量生產(chǎn)。得益于深度學(xué)習(xí)技術(shù)的快速發(fā)展,基于計算機視覺的目標(biāo)計數(shù)方法為獲取田間幼苗數(shù)量提供了新的技術(shù)手段。
在農(nóng)業(yè)領(lǐng)域,目標(biāo)計數(shù)方法常被用來解決農(nóng)作物的空間分布、種植密度、以及產(chǎn)量預(yù)估等問題。傳統(tǒng)的目標(biāo)計數(shù)方法主要包括基于檢測和基于回歸兩類?;跈z測的方法通過累加圖像中檢測框的數(shù)量獲取計數(shù)結(jié)果,或通過視頻序列統(tǒng)計前景目標(biāo)的數(shù)量得到計數(shù)結(jié)果。陳鋒軍等在無人機航拍圖像的云杉計數(shù)問題上,提出了基于改進YOLOv3的檢測方法,梁習(xí)卉子等在棉花行數(shù)的計數(shù)問題上嘗試了基于視頻序列圖像,利用方向梯度直方圖(Histogram of Oriented Gradient, HOG)特征和支持向量機(Support Vector Machine, SVM)分類器來檢測棉花行數(shù)。上述基于檢測的方法在應(yīng)對清晰的大尺寸目標(biāo)取得較好效果,然而卻不能有效解決尺度變化大的小目標(biāo)計數(shù)問題。并且,該方法需要繁瑣的邊界框標(biāo)注或像素級注釋。因此,基于檢測的方法并不適用于棉花幼苗這種小目標(biāo)的計數(shù)問題?;诨貧w的計數(shù)方法通過學(xué)習(xí)目標(biāo)顏色、紋理等淺層特征與數(shù)量間的映射關(guān)系,建立回歸模型直接輸出計數(shù)結(jié)果。Ramos等通過對單面圖像中的咖啡豆顏色形態(tài)等特征構(gòu)建一個線性回歸模型,估計出整條枝干上的咖啡豆數(shù)量。盡管基于回歸的方法能在一定程度上解決小目標(biāo)以及尺度變化帶來的問題,但是卻忽略了目標(biāo)的空間位置信息。在針對棉花幼苗圖像這種高分辨率以及空間分布具有一定規(guī)律性的計數(shù)問題上,忽略位置信息可能導(dǎo)致計數(shù)精度的降低。
近年來,一種基于密度圖的計數(shù)方法能通過學(xué)習(xí)特征與密度圖之間的映射關(guān)系,生成高質(zhì)量密度圖以獲取目標(biāo)數(shù)量,大幅提升了計數(shù)精度。在人群計數(shù)領(lǐng)域,Zhang等提出多列卷積神經(jīng)網(wǎng)絡(luò)(Multi-column Convolutional Neural Network, MCNN)方法,利用大小不同的濾波器獲取不同的感受野,以適應(yīng)人群的尺度變化,估計出人群密度圖。Li等提出擁擠場景識別網(wǎng)絡(luò)(Congested Scene Recognition Network, CSRNet)方法,使用VGG-16的前十層提取圖像特征,用膨脹卷積層代替池化層和全連接層,在不增加計算量的情況,擴大感受野,提取更細(xì)致的特征。以及其他一些典型的基于密度圖的方法都取得了較好的效果。在農(nóng)作物計數(shù)領(lǐng)域,這種方法也表現(xiàn)出良好的性能。鮑文霞等先對田間麥穗圖像進行均衡化和分割處理,通過遷移學(xué)習(xí)訓(xùn)練田間麥穗密度圖估計模型,實現(xiàn)了灌漿期田間麥穗的數(shù)量估計。黃紫云等通過對圖像中棉鈴密度等級進行分類,將分類信息與特征相結(jié)合,生成高質(zhì)量密度圖解決了復(fù)雜背景下棉鈴的計數(shù)問題。Lu等通過對圖像劃分區(qū)塊,從區(qū)塊密度圖中得到的局部計數(shù),最后合并歸一化獲取整幅圖像中玉米須的數(shù)量。盡管基于密度圖的方法在解決小目標(biāo)、多尺度等問題上取得了較好的計數(shù)效果,但是卻忽略了目標(biāo)對象特征之間的關(guān)聯(lián)性,一定程度上限制了計數(shù)性能。
綜上所述,本文在CSRNet密度圖生成框架下,結(jié)合幼苗圖像全局特征信息與特征之間的關(guān)聯(lián)性,提出了一種基于特征融合的棉花幼苗計數(shù)算法。該算法通過注意力模塊對棉花幼苗全局特征信息進行增強,并將丟棄(Dropout)方法用于特征融合過程,最后通過去冗余和歸一化操作生成密度圖獲取計數(shù)結(jié)果。此外,本文對不同時間圖像進行了測試,并且對比了不同的計數(shù)方法,以驗證本文算法的有效性。
本文的棉花幼苗圖像采集試驗田位于新疆烏蘭烏蘇、阿瓦提和庫爾勒等地。從2017-2018年,連續(xù)采集了所有棉花生長期內(nèi)的可見光圖像(分辨率為3 088像素×2 056像素)。本文在上述圖像中選取了從出苗期到三真葉期的部分圖像序列構(gòu)成棉花幼苗數(shù)據(jù)(Cotton Seedling Counting Dataset,CSC數(shù)據(jù)集),其中幼苗圖像示例如圖1a和圖1b所示。CSC數(shù)據(jù)集大小為1.36 GB,一共包含399張棉花幼苗圖像,使用labelme3.16.2對每幅棉花幼苗圖像進行了手工標(biāo)注點標(biāo)簽,得到真值圖(ground-truth image,人工標(biāo)記好的數(shù)據(jù),用于測試試驗結(jié)果),如圖1c與圖1d所示。CSC數(shù)據(jù)集共標(biāo)注了212 572株棉花幼苗,其中,單幅圖像最多幼苗標(biāo)注數(shù)量為1 541,最少為196,平均每幅圖像標(biāo)注數(shù)量為532.76。此外,為了說明本文算法的有效性,將數(shù)據(jù)集劃分為訓(xùn)練集和測試集,其中,訓(xùn)練集包含300幅圖像,測試集包含99幅圖像。
圖1 棉花幼苗圖像與真值圖像示例 Fig.1 Samples of cotton seedling image and ground-truth image
本文的計數(shù)算法由VGG基礎(chǔ)模塊、注意力模塊、特征融合模塊以及去冗余歸一化操作4個部分組成,如圖2所示。首先,輸入圖像經(jīng)過VGG基礎(chǔ)模塊生成特征圖像。之后,注意力模塊對通道和空間維度上的特征圖像空間位置信息進行增強。特征融合模塊將增強后的特征與基礎(chǔ)模塊中的特征進行融合,最后去除冗余信息和歸一化操作,輸出計數(shù)結(jié)果。
圖2 棉花幼苗計數(shù)算法框架 Fig.2 The framework of cotton seedling counting algorithm
經(jīng)過上述4層卷積層,特征圖變?yōu)樵瓐D的1/64,通道維數(shù)升至512,為了避免幼苗空間關(guān)系特征以及顏色、紋理等細(xì)節(jié)特征的丟失,并提高計數(shù)精度,本文采用了注意力模塊CBAM。該模塊包含通道注意力模塊CAM(Channel Attention Module)和空間注意力模塊SAM(Spatial Attention Module),如圖3所示。
圖3 CBAM結(jié)構(gòu)圖 Fig.3 CBAM structure diagram
其中,CAM對輸入的特征圖進行通道維度上的重新整合和優(yōu)化。SAM采用自適應(yīng)的平均池化和最大池化,將圖像中棉花幼苗空間特征連接起來。因此,CBAM模塊從通道和空間維度上對幼苗全局特征信息進行增強。需要強調(diào)的是,該模塊的輸出特征圖與輸入特征圖保持相同的大小和通道數(shù)。為了細(xì)化基礎(chǔ)模塊生成的特征圖以及為后續(xù)融合模塊保留更多更重要的融合信息,本文將CBAM模塊置于特征提取基礎(chǔ)模塊與特征融合模塊之間。 活函數(shù)ReLU(修正線性單元,Rectified Linear Unit)。其中,為了實現(xiàn)通道維度上的信息交互,以及保證特征融合時的通道數(shù)量一致性,本文將此處的1×1卷積的輸出通道數(shù)量設(shè)置為輸入通道數(shù)量的二分之一。值得注意的是,在完成上一次的特征融合后,1×1卷積塊會對融合的特征圖進行預(yù)處理,將語義信息和細(xì)節(jié)信息凸顯化,進而準(zhǔn)備下一階段的融合。之后,對經(jīng)過卷積塊操作的特征圖像通過雙線性插值進行上采樣(Upsample),上采樣率設(shè)置為2,即與淺層特征圖保持相同的尺寸,保證在特征融合時的大小一致性。
一般來說,淺層特征圖具有復(fù)雜的細(xì)節(jié)信息,而深層特征圖包含豐富的語義信息。深層特征與淺層特征的融合不僅可以避免細(xì)節(jié)信息的丟失,還能加快模型訓(xùn)練損失的收斂。因此,在MobileCount的啟發(fā)下,本文提出一種特征融合模式,如圖2特征融合模塊所示。對經(jīng)過注意力模塊增強后的特征與VGG基礎(chǔ)模塊提取的前3層(Conv1-Conv3)特征進行3個階段的融合,增強幼苗特征信息表達。然而,盡管淺層特征圖具有復(fù)雜的細(xì)節(jié)信息,但同時也包含較多的噪聲。此前,Lin等提出了較為成熟的特征融合方法,但這種方法并不能有效避免淺層特征圖中的噪聲。為解決這一問題,本文設(shè)計了一種特征融合方法,具體過程如圖4所示。需要注意的是,在特征融合時,應(yīng)保證兩端輸入的特征圖具有一致的尺寸大小和通道數(shù)量。
圖4 特征融合方法的過程 Fig.4 The process of feature fusion method
特征融合方法首先采用1×1卷積塊對深層特征圖進行操作。該卷積塊包括一層1×1卷積(1×1Convolution),一層批量歸一化(Batch Normalization,BN)和一層激
其次,對于噪聲較大的淺層特征圖,在進行融合之前,使用Dropout隨機丟棄其中一部分信息(只用于訓(xùn)練,且Dropout概率設(shè)置為50%),從而避免噪聲的干擾,同時也防止模型在訓(xùn)練時過擬合。之后,再對保留下來的特征進行1×1卷積塊的操作,完成與深層特征圖的融合,并進入下一階段。此時,1×1卷積塊中的卷積操作只是對保留的特征信息進行重新整合,并沒有改變特征圖的通道數(shù)目。
經(jīng)過多層融合后得到的特征圖像的通道數(shù)為64,包含了大量的通道冗余信息,直接進行預(yù)測輸出很大程度上會影響最終的計數(shù)精度。因此,本文先使用三個3×3卷積對融合后的特征信息進行歸納和整合,然后再用一個1×1卷積對特征圖每一像素位置通道維度上的特征向量進行壓縮,生成一張單通道的特征圖,以去除冗余信息。受尺度融合計數(shù)分類網(wǎng)絡(luò)(Scale-Fusion Counting Classification Network, SFC Net)的啟發(fā),去冗余之后,本文對單通道特征圖進行計數(shù)歸一化(Normalization),將每一個像素位置的計數(shù)數(shù)量與該位置被計數(shù)次數(shù)相除,生成密度圖像輸出并獲取最終計數(shù)結(jié)果。
本文算法試驗環(huán)境為:Ubuntu20.04系統(tǒng)、Pytorch1.7.1開源框架、Python3.8編程語言、Intel Core i9-10900X CPU@3.70GHz以及GeForce RTX 3090。訓(xùn)練時,為了減少計算量以及擴大訓(xùn)練樣本數(shù)量,將訓(xùn)練圖像進行隨機裁剪(尺寸為256像素×1 024像素)、翻轉(zhuǎn)以及標(biāo)準(zhǔn)化預(yù)處理(均值減法和標(biāo)準(zhǔn)差除法),之后與ground-truth一起被加載訓(xùn)練。設(shè)置訓(xùn)練時的批樣本大?。╞atch size)為10,即每批次從訓(xùn)練集中加載10幅圖像。測試時batch size設(shè)置為1,每批次從測試集中加載1幅圖像。迭代訓(xùn)練次數(shù)(epoch)設(shè)置為500,從圖5可以看出,在模型迭代訓(xùn)練100次之前,訓(xùn)練損失下降明顯,之后逐漸趨于平穩(wěn),并在第200次和第400次時,將學(xué)習(xí)率進行調(diào)整為當(dāng)前學(xué)習(xí)率的十分之一,以保證模型收斂且接近于最優(yōu)。采用Adam算法對模型參數(shù)進行優(yōu)化,使用L1損失函數(shù)對模型訓(xùn)練進行監(jiān)督。損失函數(shù)L1Loss定義如式(1)~式(2)所示。
圖5 模型訓(xùn)練損失曲線 Fig.5 Model training loss curve
本文使用平均絕對誤差(Mean Absolute Error,MAE)和均方根誤差(Root Mean Square Error,RMSE)來評估算法模型的性能。定義如下:
式中代表測試集中圖像的總數(shù)量,y表示第張圖像中幼苗的真實數(shù)量,y′表示第張圖像中幼苗的估計數(shù)量。平均絕對誤差與均方根誤差越低,從某種程度上可以反映出算法的性能越強。
本文在棉花幼苗圖像上進行實際計數(shù)估計,并輸出密度圖及計數(shù)結(jié)果。圖6列舉了一些拍攝于不同時間段的棉花幼苗圖像計數(shù)預(yù)測結(jié)果。其中,真值密度圖是對標(biāo)注的真值圖利用熱力圖顯示得到,其幼苗數(shù)量通過點標(biāo)簽的數(shù)量確定。預(yù)測密度圖中的幼苗數(shù)量是通過對模型輸出密度圖中的所有像素點(包括稀疏像素點)進行積分求和得到的。值得注意的是,在圖6的列舉結(jié)果中,拍攝于2018年5月6日14:00的圖像,即使在噪聲(圖中電線桿和攝像頭的陰影區(qū)域)的干擾下,算法預(yù)測的幼苗數(shù)量與實際幼苗數(shù)量相差僅為1株,較為準(zhǔn)確的估計出了幼苗的數(shù)量,另外3幅圖像的預(yù)測數(shù)量與真實數(shù)量之間相差均不超過10株,這說明本文算法表現(xiàn)出較好的性能。并且,算法預(yù)測的密度圖不僅能夠獲取棉花幼苗數(shù)量,也能在一定程度上反應(yīng)出棉花幼苗的種植密度。此外,在圖6的列舉結(jié)果中,拍攝于2018年5月6日14:00的圖像,即使在陰影噪聲的干擾下,本文算法依然能夠較為準(zhǔn)確的估計出幼苗的數(shù)量,也能反映出該算法具有一定的有效性。
圖6 不同時間計數(shù)結(jié)果 Fig.6 Counting results at different times
此外,本文將測試集圖像分為中午組和早晚組。中午組為拍攝于12:00和14:00的圖像,此段時間陽光充足,光照條件較好,共計52張。早晚組為拍攝于8:00、9:00、10:00以及16:00、18:00的圖像,這些時間光線斜射,光照條件相對較弱,共計47張。不同組別的驗證結(jié)果如表1所示,可以看出,在不同的光照條件下,本文算法模型的性能變化并不大,說明了本文算法具有較強的魯棒性和穩(wěn)定性。
表1 不同光照條件的幼苗計數(shù)對比結(jié)果 Table 1 Comparison results of seedling counting under different lighting conditions
為了進一步說明本文方法的有效性,選擇了4種典型的基于密度圖的目標(biāo)計數(shù)方法進行對比,對比試驗的訓(xùn)練數(shù)據(jù)、測試數(shù)據(jù)(全部測試集)以及訓(xùn)練細(xì)節(jié)均保持一致。
在目標(biāo)計數(shù)領(lǐng)域,MCNN和CSRNet這兩種方法非常具有典型性,雖然其研究對象為人群,但是其基于CNN的計數(shù)模型與本文算法具有一定的相似性。TasselNet是Lu等提出的針對田間玉米穗計數(shù)方法,本文對比試驗使用TasselNet中具有最佳計數(shù)性能的基于AlexNet-Like架構(gòu)的方法作為對比。MobileCount是Wang提出的方法,其在Lin等提出的輕量級模型方法的基礎(chǔ)上,利用多層知識蒸餾和特征融合,進一步提高了計數(shù)性能。因本文特征融合的思想來源于它,所以將其加入對比試驗。
本文方法與其他方法進行對比的結(jié)果如表2所示。為了合理的進行對比,所有結(jié)果均取自測試集上的最優(yōu)數(shù)據(jù)。從表2的數(shù)據(jù)中可以看出,MCNN和CSRNet這兩種典型的目標(biāo)計數(shù)方法表現(xiàn)出的性能并不好,這可能與沒有考慮目標(biāo)的空間信息有關(guān),并不適用于田間棉花幼苗的計數(shù)。MobileCount利用知識蒸餾融合特征,從而達到了較好的計數(shù)效果,與TasselNet相比,MAE和RMSE下降幅度(計算方式參考Liu等的方法)均超過40%。與MobileCount方法相比,本文算法MAE和RMSE分別降低了10.89%和10.34%。相較于MCNN、CSRNet、TasselNet和MobileCount 4個對比方法,本文算法MAE和RMSE分別為63.46、81.33, MAE平均下降了48.8%,RMSE平均下降了45.3%,這證明了本文所提方法的有效性。
表2 不同計數(shù)算法的定量分析 Table 2 Quantitative analysis of different counting algorithms
為了驗證本文算法設(shè)計的合理性和有效性,分別從Dropout對特征融合的影響和不同模塊對本文算法的影響兩方面進行消融試驗,試驗結(jié)果分別如表3和表4所示。
表4 不同模塊對本文算法的影響 Table 4 The effect of different modules on the algorithm of this article
表3中,無Dropout的融合方法是保持原有的融合策略,直接使用VGG基礎(chǔ)模塊中的特征進行融合。反之,則為本文提出的融合方法,即在融合過程中添加了Dropout,隨機丟棄一部分噪聲較大的淺層特征圖。從表3中可以看出,Dropout在融合過程中發(fā)揮了積極的作用。相比于無Dropout的融合方法,本文融合方法的MAE和RMSE都下降約16%。
表3 Dropout對特征融合的影響 Table 3 The effect of Dropout on the feature fusion
表4驗證了不同模塊對本文算法的影響,其結(jié)果表明,相較于單獨使用CBAM和歸一化中任意一個模塊,本文算法MAE平均下降47.8%,RMSE平均下降44.8%。因此,將注意力模塊CBAM與去冗余(Normalization)操作引入本文算法是有效的。
本文提出的棉花計數(shù)算法,采用VGG-16作為骨干網(wǎng)絡(luò)提取圖像特征,引入注意力機制模塊CBAM增強基礎(chǔ)特征,隨后將這些特征一并融合,進一步強化幼苗特征表示,最后通過去冗余和使用歸一化模塊獲得較為精確的計數(shù)結(jié)果。與目標(biāo)計數(shù)方法MCNN、CSRNet、TasselNet以及MobileCount的對比試驗結(jié)果表明,本文算法MAE和RMSE分別為63.46、81.33,相較于對比方法,MAE平均下降了48.8%,RMSE平均下降了45.3%,驗證了本文算法的有效性。即使存在陰影噪聲干擾和光照強弱變化,該算法仍然能夠較為準(zhǔn)確地估計出圖像中的幼苗數(shù)量,進一步說明該算法具有較強的魯棒性。此外,消融試驗結(jié)果表明:添加Dropout特征融合方法、引入注意力模塊CBAM以及歸一化操作是有效的。
由于本文棉花幼苗數(shù)據(jù)采集于實際農(nóng)田環(huán)境,幼苗在生長過程中呈現(xiàn)多樣的姿態(tài)和尺度,這可能是導(dǎo)致少數(shù)測試圖像的預(yù)測數(shù)量與實際數(shù)量相差較大的原因。在今后的研究中,將從上述不足和算法的可遷移性等方向進一步優(yōu)化算法,以提升其計數(shù)性能和適用性。