史 浩, 馮 全*, 陳佰鴻
(1.甘肅農(nóng)業(yè)大學(xué)機電工程學(xué)院,甘肅 蘭州 730070;2.甘肅農(nóng)業(yè)大學(xué)園藝學(xué)院,甘肅 蘭州 730070)
白鳳桃樹作為一種優(yōu)質(zhì)的果樹資源,是甘肅省蘭州市的著名桃樹品種。但從21世紀(jì)開始,隨著城市建設(shè)的推進,白鳳桃的種植面積逐年減少,桃樹資源受到了很大的威脅,保護桃資源、桃文化和桃品牌迫在眉睫。進行白鳳桃果樹資源的常態(tài)性調(diào)查與監(jiān)測,針對當(dāng)?shù)卣畢f(xié)調(diào)發(fā)展與保護的矛盾,制定科學(xué)合理的規(guī)劃非常必要。目前對于白鳳桃果樹的種植面積一直都是依靠人力進行實地調(diào)查,效率低,費人費工,無法持續(xù)、動態(tài)地開展該項工作。而無人機遙感作為一種新型的調(diào)查工具,能夠在復(fù)雜地形條件下獲取遙感數(shù)據(jù),具有高效、靈活的特點,能節(jié)省大量的人力和物力[1-2]。
對無人機拍攝的果樹遙感影像中的果樹進行準(zhǔn)確地檢測計數(shù)是非常具有挑戰(zhàn)性的工作,研究者通常采用分割或目標(biāo)檢測的方法。目前在計算機圖像處理中分割和目標(biāo)檢測任務(wù)中普遍采用基于深度學(xué)習(xí)的方法。在圖像分類、物體識別、行人檢測、人臉識別等領(lǐng)域,都引入了深度學(xué)習(xí)技術(shù)且取得了很好的應(yīng)用效果。在農(nóng)林領(lǐng)域,深度學(xué)習(xí)廣泛用于分類識別、病害識別與預(yù)測、生長信息監(jiān)測等方面,大大提升了生產(chǎn)效率和產(chǎn)量[3-5]。也有研究者將深度學(xué)習(xí)應(yīng)用在林果資源調(diào)查方面[6-8],李越帥等[9]利用U-net卷積神經(jīng)網(wǎng)絡(luò)對胡楊樹株數(shù)進行提取,精度達93.29%,L等[10]利用CNN對研究區(qū)油棕樹株數(shù)檢測的準(zhǔn)確率達到96%以上。
筆者將深度學(xué)習(xí)與無人機遙感技術(shù)相結(jié)合應(yīng)用于果樹資源調(diào)查,探索新型的資源調(diào)查方法。選取蘭州市安寧區(qū)仁壽山白鳳桃示范基地作為研究區(qū),以白鳳桃株樹作為調(diào)查對象,利用無人機拍攝大量的影像數(shù)據(jù),采用深度學(xué)習(xí)的方法,目標(biāo)檢測網(wǎng)絡(luò)在圖像中用邊框給出果樹的位置,判斷其是否是白風(fēng)桃,對判斷類型正確的邊框計數(shù),從而獲得研究區(qū)內(nèi)桃樹的具體數(shù)量。該方法是一種低成本、快速、準(zhǔn)確的白鳳桃株數(shù)統(tǒng)計方法,展示了深度學(xué)習(xí)和無人機遙感技術(shù)相結(jié)合在白風(fēng)桃樹資源調(diào)查領(lǐng)域中的強大潛力,該方法也可以推廣到其他樹種的資源調(diào)查,以減輕調(diào)查人員負擔(dān),提高工作效率。
甘肅省蘭州市安寧區(qū)位于甘肅省中部,地處黃河蘭州段河谷,地勢南低北高,大陸性氣候顯著,區(qū)內(nèi)森林覆蓋率達43.4%,不僅擁有秀麗的自然風(fēng)光和眾多的人文景觀,而且還是全國十大產(chǎn)桃基地之一,享有“十里桃鄉(xiāng)”的美譽,其中國白鳳桃示范基地(36°8′21.41″N~36°8′24.74″N,36°8′21.41″N~36°8′24.74″N)位于安寧區(qū)仁壽山風(fēng)景區(qū),基地屬于淺山溫和半干燥氣候區(qū),四季分明,光照較充足,降水少,蒸發(fā)量較大,氣候干燥,年降水量350 mm,年蒸發(fā)量1 664 mm,年日照時數(shù)2 476.4 h,如圖1所示。
采用大疆MAVIC AIR無人機作為數(shù)據(jù)采集平臺,其上搭載一顆1 200萬像素的攝像頭,CMOS尺寸為1/2.3英寸,等效焦距為24 mm,像幅尺寸為4 048×2 272。數(shù)據(jù)采集時間為2020年10月16~23日。
YOLOv3[11]是一種基于深度學(xué)習(xí)的目標(biāo)檢測網(wǎng)絡(luò),結(jié)構(gòu)如圖2所示。該算法的骨干網(wǎng)絡(luò)為darknet53,由一系列1×1和3×3的卷積層組成,共有53個卷積層,并且在每個卷積層后面都有一個batch normalization層和Leaky Relu層。darknet53取消了全連接層和最大池化層,利用卷積和步長的改變來達到最大池化的目的,并且借鑒了FPN(feature pyramid networks)網(wǎng)絡(luò)中對于多尺度融合的結(jié)構(gòu),引入了殘差網(wǎng)絡(luò)解決在訓(xùn)練模型時梯度消失和梯度爆炸的發(fā)生[12-13]。YOLOv3采用K-means聚類獲取先驗框的大小,在圖片大小為416×416時,對于每種下采樣尺寸預(yù)先設(shè)計了三種特征圖尺寸13×13、26×26和52×52,并通過聚類得出COCO數(shù)據(jù)集上9種尺寸的先驗框。這九種先驗框分別是10×13、16×30、33×23、30×61、62×45、59×119、116×90、156×198和373×326,當(dāng)檢測目標(biāo)具有較大的視野感時,優(yōu)先采用較大的先驗框,如116×90、156×198和373×326,當(dāng)檢測目標(biāo)具有中等左右的視野感時,優(yōu)先采用中等的先驗框,如30×61、62×45和59×119,當(dāng)檢測目標(biāo)具有較小的視野感時,優(yōu)先采用較小的先驗框,如10×13、16×30和33×23,然后通過多尺度融合結(jié)構(gòu)使訓(xùn)練模型可以學(xué)習(xí)到更深層次的特征信息,利用YOLO層將學(xué)習(xí)到的特征信息進行類別判定和邊界框預(yù)測,使用非極大值抑制(NMS)合并三種尺度下的預(yù)測結(jié)果,最后輸出檢測結(jié)果。
圖2 YOLOv3網(wǎng)絡(luò)結(jié)構(gòu)
圖2中,A×B×C表示長*寬*通道數(shù),res代表殘差網(wǎng)絡(luò)塊,后面的數(shù)字表示每個殘差網(wǎng)絡(luò)塊具有的殘差單元數(shù)量,concat表示連結(jié),upsample表示上采樣。
YOLOv3檢測時首先將輸入圖片分成K×K個網(wǎng)格(grid),并且每個網(wǎng)格有三個預(yù)測框,若檢測目標(biāo)ground truth的中心坐標(biāo)落在某個網(wǎng)格內(nèi),則這個網(wǎng)格就會對該目標(biāo)進行檢測,Darknet53中的卷積層將特征提取出來,每一個網(wǎng)格會預(yù)測多個邊界框,每個邊界框包含框的相對位置信息、相對尺寸信息和置信度評分。
Adam在 YOLOv3的基礎(chǔ)上對網(wǎng)絡(luò)結(jié)構(gòu)做修改,提出了YOLT3[14-15]。原來的YOLO網(wǎng)絡(luò)結(jié)構(gòu)是以32倍的比例下采樣,并且返回了13×13的預(yù)測網(wǎng)格,如果檢測對象之間的距離小于32個像素,則會導(dǎo)致檢測目標(biāo)的區(qū)分有問題,為了解決部分檢測目標(biāo)過于密集的問題,YOLT3下采樣的比例由32變?yōu)?6,當(dāng)416×416的圖像輸入到網(wǎng)絡(luò)中時,產(chǎn)生26×26的預(yù)測網(wǎng)格。為了提升對小目標(biāo)檢測的準(zhǔn)確性,借鑒了Resnet中的表示映射,在網(wǎng)絡(luò)中添加一個直通層,該層與倒數(shù)第二的卷積層連接起來,允許檢測器訪問擴展特征映射的細粒度特征,每一個卷積層后都是一個批歸一化層,該層的激活函數(shù)是帶泄露的修正線性單元,在網(wǎng)絡(luò)的最后一層輸出的是邊框預(yù)測以及目標(biāo)的類別,大小為:
Nf=Nboxes×(Nclasses+5)
(1)
式中:Nboxes為每個網(wǎng)格中所含框數(shù)量;Nclasses為檢測目標(biāo)的類別數(shù)。
在檢測時,YOLT3使用OpenCV將測試圖像分割成固定尺寸的切片,該尺寸是任意的,可以在程序中根據(jù)自己的實際進行調(diào)節(jié),該切片過程通過滑動窗口實現(xiàn),每張切片圖像具有固定的重疊度,該重疊度也可由用戶自己設(shè)置,程序?qū)τ诿繌埱衅瑘D像進行檢測。在每張切片圖像檢測完后,將所有的切片按照原來的位置拼接起來,但在重疊區(qū)域會出現(xiàn)檢測重復(fù)的情況,為解決這個問題,YOLT3通過非極大值抑制方法減少重復(fù)檢測現(xiàn)象。
本次試驗中計算機的CPU配置為Intel(R)Core(TM)i5-9400F CPU @ 2.90GHz,GPU為NVIDIA GeForce 2060Super 8 GB,內(nèi)存為32 G,操作系統(tǒng)為Ubuntu16.04,軟件環(huán)境為python3.6、CUDA Toolkit9.0、CUDNN7.3.0.29。
果樹目標(biāo)檢測試驗數(shù)據(jù)集是在40 m左右高度拍攝的,選取在白鳳桃種植基地拍攝的1 000張圖片,每張的圖片都為4 048×2 272像素,按照4:1的比例,從1 000張圖片中隨機抽取750張圖片作為訓(xùn)練集,剩下的250張圖片作為測試集,并通過旋轉(zhuǎn)、改變對比度、添加噪聲、改變色相飽和度、改變曝光值等方式對數(shù)據(jù)集進行增廣,使用Lableimg軟件對數(shù)據(jù)集進行標(biāo)注,標(biāo)記的桃樹圖片數(shù)據(jù)集如圖3所示。
用來測試白鳳桃種植基地中桃樹株數(shù)的圖片分別在四個高度采集,分別是40 m、70 m、100 m和260 m的高度,利用DJI GS Pro軟件對航線進行規(guī)劃,每個高度布控的航點數(shù)分別為113個、40個、22個,最后使用Pix4Dmapper軟件對圖片進行正射校正,將40 m、70 m和100 m拍攝的圖像拼接為三張全景圖,260 m的圖像已經(jīng)能夠覆蓋到整片種植基地,不需要拼接就已經(jīng)是一張全景圖。其中,40 m高度的圖像為18 877×17 409像素,分辨率為1.41 cm;70 m高度的圖像為10 673×9 136像素,分辨率為2.49 cm;100 m高度的圖像為7 861×6 147像素,分辨率為3.38 cm;260 m高度的圖像為4 048×2 272像素,分辨率為6.57 cm。
本研究分別對YOLOv3和YOLT3模型進行訓(xùn)練。訓(xùn)練前先修改配置文件,對輸入圖像進行預(yù)處理,解決訓(xùn)練數(shù)據(jù)集較小的問題,預(yù)處理方法有旋轉(zhuǎn)、改變對比度、添加噪聲、改變色相飽和度、改變曝光值等。YOLOv3和YOLT3均使用了在COCO數(shù)據(jù)集上的預(yù)訓(xùn)練權(quán)重,因為只有一類的原因,根據(jù)YOLO官方的建議,迭代次數(shù)為Nclass×2 000,其中Nclass為類別數(shù),所以本次訓(xùn)練模型迭代次數(shù)設(shè)置為2 000次,其中batchsize設(shè)為32,subssion為8,初始學(xué)習(xí)率為0.001,并在epoch到達1 600和1 800時,學(xué)習(xí)率分別衰減為0.000 1和0.000 01,動量為0.9,權(quán)重衰減為0.000 5。
設(shè)計了兩種場景對檢測效果進行評估:①按照通用目標(biāo)檢測常采用的AP(Average Precision)指標(biāo)進行評價;②直接計數(shù)。
第1種場景的目的是對YOLOv3和YOLT3模型的檢測效果進行對比研究。輸入檢測器的測試圖像尺寸與訓(xùn)練圖像一致,均為4 048×2 272像素。但由于YOLT3可以通過設(shè)置參數(shù)將圖像切片,能在更高分辨率上做檢測,而YOLOv3不行。為了公平起見,首先設(shè)置S1測試,YOLT3不做切片,與YOLOv3進行對比。其次,為了比較YOLT3切片方法比不做任何處理時檢測性能的提升程度,設(shè)置了S2測試,每個切片圖像尺寸為896×896,重疊度為50%。
第2種場景的目的是為了提供直觀的果樹計數(shù)效果,該測試在全景圖上檢測白粉桃樹的株數(shù),并與種植基地中實際的株數(shù)做比較。
AP是通用目標(biāo)檢測任務(wù)的常規(guī)評價指標(biāo),綜合了召回率和檢測精度兩個方面對檢測效果進行評估,AP按照COCO的定義計算如下:
(2)
式中:R和P分別代表召回率和準(zhǔn)確率;Ri和Pi分別為檢測模型在測試數(shù)據(jù)集上測得P-R曲線上的點對,i∈{0,0.01,0.02…0.00,1.00 }。
準(zhǔn)確率和召回率的公式分別為:
(3)
(4)
式中:P為準(zhǔn)確率;R為召回率;TP為真實的正樣本數(shù);FP為虛假的正樣本數(shù);FN為虛假的負樣本數(shù)。
在第1種場景下,對YOLOv3和YOLT3網(wǎng)絡(luò)進行了果樹檢測效果對比研究,測試時兩個網(wǎng)絡(luò)的IoU都設(shè)置為0.5,Threshold(閾值)都為0.6,測試圖片為250張。測試結(jié)果表明,在S1條件下,YOLOv3和YOLT3的AP分別是0.857、0.861,YOLT3高于YOLOv3,說明在無切片時,YOLT3對于較大尺寸圖的目標(biāo)檢測改進方法有效。在S2條件下,YOLT3的AP值為0.890,即在設(shè)置896×896切片時,AP值提升了3.4%。S1條件下用YOLOv3、YOLT3對某局部區(qū)域桃樹目標(biāo)檢測結(jié)果分別如圖4和圖5所示,圖6為S2條件下使用YOLT3對同一區(qū)域中桃樹檢測的結(jié)果。
圖4 基于YOLOv3的桃樹檢測
圖5 基于YOLT3的桃樹檢測(S1)
圖6 基于YOLT3的桃樹檢測(S2)
S1條件下用YOLOv3、YOLT3對某局部區(qū)域進行桃樹目標(biāo)檢測,在圖4橢圓圈出部分和圖5中上部橢圓圈出部分,YOLOv3并沒有檢測出該部分的桃樹,而YOLT3的檢測效果明顯優(yōu)于YOLOv3,橢圓中的桃樹與該局部區(qū)域中其他桃樹相比,這部分桃樹所占像素更少,即YOLT3對于小目標(biāo)的檢測更加優(yōu)秀。在S1和S2條件下使用YOLT3對同一區(qū)域中桃樹檢測的結(jié)果進行對比,在圖5下部和圖6橢圓圈出部分,當(dāng)果樹之間距離較近、樹冠重疊面積較大時,YOLT3在S2的條件下具有更好的檢測效果,更加適合檢測桃樹之間比較擁擠的情況,圖6箭頭所指桃樹部分,在S2條件下檢出了比S1條件時更多的桃樹。
鑒于上述結(jié)果,在第2種場景(全景圖)的測試時,采用YOLT3(896×896圖像切片)對研究區(qū)的桃樹株樹進行計數(shù)。分別對40 m、70 m、100 m以及260 m高度上拍攝的圖像進行檢測,比較不同分辨率對于桃樹計數(shù)精度的影響。表1給出了整個桃樹種植基地桃樹株數(shù)的計數(shù)結(jié)果。
表1 不同高度種植基地全景圖中桃樹的計數(shù)結(jié)果
經(jīng)過人工計數(shù),該片白鳳桃種植基地共種植2 518棵白鳳桃樹,使用YOLT3神經(jīng)網(wǎng)絡(luò)在40 m高度的全景圖上檢測的株數(shù)和準(zhǔn)確率分別為2 237棵和88.84%。在資源調(diào)查實踐中,通常樹木的計數(shù)精度在80%~85%以上就可以滿足要求,因此本方法對于樹木資源調(diào)查是適用的。與40 m高度的檢測效果相比,在70 m高度的全景圖上檢測的株數(shù)和檢測率分別降低了376棵和14.93%,在100 m高度的全景圖上檢測的株數(shù)和檢測率分別降低了848棵和33.68%,而在260 m高度的全景圖上檢測的株數(shù)和檢測率分別降低了1 916棵和76.09%。
由于40 m高度的全景圖擁有最高的分辨率,相應(yīng)的YOLT3網(wǎng)絡(luò)可以提取到的信息也是最多的,檢測效果最好。隨著飛行高度的增加,單株果樹在圖像中的分辨率逐步下降,計數(shù)精度也逐漸降低。在260 m高度時,全景圖只有4 048×2 272像素,單株桃樹最小面積約10個像素,只有40 m圖像中最小果樹面積的1/6,檢測網(wǎng)絡(luò)能夠提取的信息很少,導(dǎo)致計數(shù)精度非常不理想。
本試驗由于拍攝時間為深秋時分,有些桃樹的葉子已經(jīng)掉了大半多,而且葉片發(fā)黃發(fā)紅,部分桃樹的葉子甚至掉完,只剩枝干,樹木與地表顏色接近,導(dǎo)致樹木與背景區(qū)分性降低。此外,該種植區(qū)為梯田,地形起伏較大,處于下層的果樹分辨率較低,也是導(dǎo)致檢測精度下降的原因。
本文基于深度學(xué)習(xí)的目標(biāo)檢測模型YOLT3對蘭州市安寧區(qū)某桃樹種植基地中白鳳桃株數(shù)進行計數(shù)試驗。該方法的最高精度達到了88.84%,可以滿足實際應(yīng)用的要求。試驗表明,飛行高度對檢測精度影響很大,要達到較高的計數(shù)精度,飛行高度不易過高。相對于傳統(tǒng)的人工方法,本方法節(jié)省了大量的時間,提高了工作效率。該方法使用消費級無人機的相機拍攝圖像,與激光雷達和高光譜相機相比,成本很低。
這種將深度學(xué)習(xí)和無人機遙感技術(shù)結(jié)合的方法,也可以推廣到其他果樹資源調(diào)查中,例如蘋果樹、橘子樹、椰樹等,可以快速、精準(zhǔn)地掌握果樹株數(shù),對果園的精準(zhǔn)化管理提供支持。