彭書(shū)博 ,陳兵旗 ※,李景彬 ,范鵬宣 ,劉翔業(yè) ,房 鑫 ,鄧紅濤 ,張雄楚
(1. 中國(guó)農(nóng)業(yè)大學(xué)工學(xué)院,北京 100083;2. 石河子大學(xué)機(jī)械電氣工程學(xué)院,石河子 832003)
在農(nóng)田作業(yè)中,自動(dòng)導(dǎo)航技術(shù)的發(fā)展給工作人員帶來(lái)了便利,作業(yè)效率相對(duì)提升,農(nóng)作物產(chǎn)量也隨之增加[1]。20 世紀(jì)90 年代以來(lái),國(guó)內(nèi)外學(xué)術(shù)刊物上有較多的科研成果,主要集中在機(jī)器視覺(jué)導(dǎo)航方面;20 世紀(jì)90 年代中后期,國(guó)內(nèi)外對(duì)農(nóng)田導(dǎo)航的研究多集中在GPS(global positioning system)導(dǎo)航系統(tǒng);經(jīng)過(guò)20 多年的發(fā)展,全球高精度GNSS(global navigation satellite system)農(nóng)田導(dǎo)航技術(shù)已日趨成熟,但其主要應(yīng)用于無(wú)作物耕地的導(dǎo)航[2],而對(duì)于果樹(shù)等被葉片嚴(yán)重遮蓋的農(nóng)田,由于衛(wèi)星信號(hào)的丟失而造成定位精度下降。隨著數(shù)字照相技術(shù)和計(jì)算機(jī)技術(shù)的快速發(fā)展,當(dāng)前的視覺(jué)導(dǎo)航不僅具有更低的硬件成本,而且能夠應(yīng)用于耕作、播種、插秧、植保等農(nóng)事活動(dòng),是農(nóng)田作業(yè)機(jī)械實(shí)現(xiàn)自動(dòng)導(dǎo)航的一個(gè)重要研究方向[3-5]。
本課題組前期對(duì)不同農(nóng)田作業(yè)條件下的導(dǎo)航路徑識(shí)別方法的研究,為本課題的實(shí)施提供了理論基礎(chǔ)、技術(shù)儲(chǔ)備與應(yīng)用經(jīng)驗(yàn)。CHEN 等[6]開(kāi)發(fā)了一種水稻自動(dòng)插秧機(jī)引導(dǎo)系統(tǒng),對(duì)田端田埂和幼苗行列進(jìn)行提取,并且可以檢測(cè)出行列和田間的末端。趙穎等[7]提出了一種改進(jìn)的哈夫變換(Hough transformation)方法,求得所有方向上的候補(bǔ)點(diǎn)連接已知點(diǎn)斜率的最大值,經(jīng)過(guò)轉(zhuǎn)化得到導(dǎo)航線(xiàn)斜率。張紅霞等[8]根據(jù)農(nóng)田圖像特點(diǎn),采用K均值聚類(lèi)算法(K-means)實(shí)現(xiàn)農(nóng)作物與背景的分離,并通過(guò)定位點(diǎn)的位置信息對(duì)定位線(xiàn)進(jìn)行提取。李景彬等[9]先對(duì)圖像進(jìn)行濾波處理,再對(duì)第一幀圖像尋找候補(bǔ)點(diǎn)群、非第一幀圖像與前幀關(guān)聯(lián)尋找候補(bǔ)點(diǎn)群,最后通過(guò)已知點(diǎn)Hough 變換完成棉花種植生產(chǎn)過(guò)程中的導(dǎo)航路線(xiàn)自動(dòng)提取。彭順正等[10]針對(duì)矮化密植棗園環(huán)境,提出“行閾值分割”和“行間區(qū)域”方法,將目標(biāo)和背景分離,并對(duì)行間噪聲進(jìn)行消除,準(zhǔn)確定位了主干與地面的交點(diǎn)。張雄楚等[11]提出在灰棗棗園中將像素值為0 的像素坐標(biāo)平均值作為Hough 變換的已知點(diǎn)坐標(biāo)進(jìn)行導(dǎo)航,在駿棗棗園中將每行像素上R(red,R)分量值最小的像素點(diǎn)平均值作為Hough 變換的已知點(diǎn)坐標(biāo)進(jìn)行導(dǎo)航。以上研究都是基于色彩變換的傳統(tǒng)圖像處理技術(shù),在特定的農(nóng)田環(huán)境有適用性,但對(duì)果園的適應(yīng)性較弱。
神經(jīng)網(wǎng)絡(luò)是一種非常有效的學(xué)習(xí)方法。該算法能夠充分考慮不同場(chǎng)景下的真實(shí)農(nóng)業(yè)場(chǎng)景,具有較強(qiáng)的抗干擾能力,能夠很好地應(yīng)對(duì)光照、陰影等干擾,如今被廣泛地應(yīng)用到各個(gè)領(lǐng)域。吳偉斌等[12]在金字塔場(chǎng)景解析網(wǎng)絡(luò)(pyramid scene parsing network,PSPNet)的基礎(chǔ)上構(gòu)建了MS-PSPNet 語(yǔ)義分割模型,對(duì)山地果茶園道路進(jìn)行分割識(shí)別。韓振浩等[13]使用U-Net 語(yǔ)義分割算法獲取到路徑擬合點(diǎn),接著對(duì)擬合點(diǎn)進(jìn)行多段擬合,最終形成導(dǎo)航路徑。YU 等[14]研究了5 種基于深度學(xué)習(xí)的機(jī)器視覺(jué)方法在不同野外場(chǎng)景下用于導(dǎo)航線(xiàn)的提取,并成功部署在系統(tǒng)上。LIU 等[15]將基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)的Faster R-CNN(faster region convolutional neural networks,F(xiàn)aster R-CNN)和SSD(single shot multiBox detector,SSD)目標(biāo)檢測(cè)模型應(yīng)用于稻田幼苗的識(shí)別和定位,以定位點(diǎn)進(jìn)行擬合提取導(dǎo)航線(xiàn),結(jié)果表明,F(xiàn)aster R-CNN 精度更高但SSD 速度更快。張勤等[16]介紹了一種利用 YOLOv3 對(duì)水稻幼苗進(jìn)行目標(biāo)提取的方法,通過(guò)對(duì)幼苗圖像進(jìn)行灰度化、濾波,提取到幼苗的特征點(diǎn),對(duì)特征點(diǎn)進(jìn)行最小二乘法進(jìn)行苗列中間線(xiàn)的擬合。以上所研究的深度學(xué)習(xí)算法能夠有效地解決一些應(yīng)用場(chǎng)景中傳統(tǒng)圖像處理算法難以處理的問(wèn)題。
蘋(píng)果一般采用寬行距、窄株距的種植模式[17],果園環(huán)境復(fù)雜多變,導(dǎo)致果園內(nèi)的光照和陰影呈現(xiàn)出非均勻分布的特點(diǎn),傳統(tǒng)圖像處理技術(shù)普適性較差。視覺(jué)導(dǎo)航參照點(diǎn)的選擇是獲得正確導(dǎo)航線(xiàn)的關(guān)鍵[18],果樹(shù)樹(shù)干根部中點(diǎn)位置是一個(gè)重要的特征點(diǎn)。在蘋(píng)果樹(shù)生長(zhǎng)期間,果樹(shù)根部易被雜草等遮擋,造成果樹(shù)根點(diǎn)提取不準(zhǔn)確。
本文提出一種基于 YOLOv7 改進(jìn)的果樹(shù)樹(shù)干檢測(cè)算法,利用該模型獲得矩形邊框的底部中心坐標(biāo),并將其作為定位參照點(diǎn),通過(guò)最小二乘法對(duì)兩側(cè)果樹(shù)行線(xiàn)和導(dǎo)航線(xiàn)進(jìn)行擬合,以實(shí)現(xiàn)導(dǎo)航路徑的精準(zhǔn)規(guī)劃。
YOLOv7 網(wǎng)絡(luò)結(jié)構(gòu)主要由3 個(gè)部分組成,即輸入端(Input)、主干網(wǎng)絡(luò)(Backbone)、檢測(cè)頭網(wǎng)絡(luò)(Head),在檢測(cè)速率5~160 幀/s 范圍內(nèi),該模型在速度和精度上有較大的優(yōu)勢(shì)[19]。輸入部分通常為640×640×3 尺寸的圖像,經(jīng)過(guò)預(yù)處理輸入到主干網(wǎng)絡(luò)中。主干網(wǎng)絡(luò)在YOLOv5 的基礎(chǔ)上引入 ELAN(efficient layer aggregation networks)結(jié)構(gòu)和MP1(max pooling,MP1)結(jié)構(gòu),結(jié)合CBS 模塊對(duì)輸入的圖像進(jìn)行特征提取。其中,CBS 模塊由卷積(convolution)、標(biāo)準(zhǔn)化(batch normalization)、激活函數(shù)(SiLU)組成,ELAN 結(jié)構(gòu)由多個(gè)CBS 模塊進(jìn)行堆疊,MP1 結(jié)構(gòu)則通過(guò)最大池化層和卷積塊雙路徑分別對(duì)特征圖進(jìn)行壓縮。檢測(cè)頭網(wǎng)絡(luò)由SPPCSPC(spatial pyramid pooling,cross stage partial channel)結(jié)構(gòu)、引入ELAN-H 和MP2 結(jié)構(gòu)的特征提取網(wǎng)絡(luò)以及RepConv 結(jié)構(gòu)組成。由主干網(wǎng)絡(luò)輸出的3 個(gè)特征層在檢測(cè)頭網(wǎng)絡(luò)得到進(jìn)一步訓(xùn)練,經(jīng)過(guò)整合輸出3 個(gè)不同尺寸的預(yù)測(cè)結(jié)果,實(shí)現(xiàn)對(duì)目標(biāo)的多尺度檢測(cè)。
YOLOv7 模型對(duì)尺度較小或低分辨率的目標(biāo)信息識(shí)別能力不足,容易出現(xiàn)漏檢和誤檢的情況。而在果園圖像中,靠近相機(jī)的物體會(huì)占據(jù)更多的圖像空間,離相機(jī)較遠(yuǎn)的物體圖像空間占據(jù)少,看起來(lái)更小,這種“透視效果”對(duì)于果樹(shù)行遠(yuǎn)處的目標(biāo)樹(shù)干檢測(cè)提出了更高要求。另外,本文以矩形框的底邊中點(diǎn)坐標(biāo)作為果樹(shù)定位參照點(diǎn),矩形框的準(zhǔn)確性對(duì)導(dǎo)航線(xiàn)的提取至關(guān)重要,因此提升矩形框的置信度以及準(zhǔn)確度,可以有效提高導(dǎo)航線(xiàn)的精度。
改進(jìn)YOLOv7 結(jié)構(gòu)如圖1 所示。本文首先在YOLOv7檢測(cè)頭網(wǎng)絡(luò)中引入CBAM 注意力機(jī)制,以提取蘋(píng)果樹(shù)干的關(guān)鍵特征信息,同時(shí)抑制樹(shù)干背景噪聲對(duì)檢測(cè)目標(biāo)的干擾,增強(qiáng)模型對(duì)目標(biāo)的識(shí)別能力,然后在ELAN-H 模塊和Repconv 模塊間增加一個(gè)針對(duì)低分辨率圖像和小目標(biāo)的 CNN 模塊SPD-Conv,以替代甚至消除卷積步長(zhǎng)和池化層帶來(lái)的負(fù)面影響,提高模型對(duì)低分辨率和小目標(biāo)的檢測(cè)能力。
為有效降低果園復(fù)雜環(huán)境的干擾,提升樹(shù)干識(shí)別檢測(cè)模型的魯棒性,本文在YOLOv7 的檢測(cè)頭網(wǎng)絡(luò)中引入CBAM 注意力機(jī)制,和SENet(squeeze-and-excitation networks)[20]只關(guān)注通道的注意力機(jī)制不同,它包括通道注意力模塊(channel attention module)和空間注意力模塊(spatial attention module)兩個(gè)部分。
通道注意力模塊用于計(jì)算每個(gè)通道的重要性。通過(guò)最大池化和平均池化對(duì)特征圖空間向量進(jìn)行池化操作,將池化結(jié)果輸入到多層感知機(jī)(shared multi-layer perception,Shared MLP)模型中,通過(guò)Sigmoid 函數(shù)生成通道注意力權(quán)重向量,從而更好地區(qū)分不同通道之間的特征。
空間注意力模塊用于計(jì)算每個(gè)像素在空間上的重要性,更好地捕捉圖像的空間結(jié)構(gòu)??臻g注意力機(jī)制將通道注意力模塊得到的特征圖作為輸入,對(duì)其在空間維度上進(jìn)行最大池化和平均池化操作,然后進(jìn)行卷積操作,并通過(guò)Sigmoid 函數(shù)將其歸一化到[0,1]的范圍內(nèi),最后與通道注意力模塊得到的特征圖進(jìn)行內(nèi)積運(yùn)算,得到最終的特征圖。
通道注意力和空間注意力的組合,使得網(wǎng)絡(luò)能夠更加準(zhǔn)確地捕捉到目標(biāo)的重要特征,提高網(wǎng)絡(luò)的表示能力和泛化能力[21],從而實(shí)現(xiàn)對(duì)樹(shù)干關(guān)鍵特征的高效提取和特征增強(qiáng),削弱環(huán)境背景干擾。
在蘋(píng)果樹(shù)干圖像中存在著一些小目標(biāo),這些小目標(biāo)分辨率較低,特征學(xué)習(xí)受限;同時(shí)大目標(biāo)通常主導(dǎo)特征學(xué)習(xí)過(guò)程,致使小目標(biāo)無(wú)法檢測(cè)到。傳統(tǒng)CNN 架構(gòu)使用跨步卷積和池化層跳過(guò)具有大量冗余像素的信息,但在圖像分辨率低和小目標(biāo)識(shí)別任務(wù)中存在細(xì)粒度特征損失從而導(dǎo)致學(xué)習(xí)特征困難[22]。如圖1 所示,在YOLOv7 目標(biāo)檢測(cè)模型檢測(cè)頭網(wǎng)絡(luò)的ELAN-H 模塊后引入SPDConv 模塊可有效提升對(duì)低分辨率小目標(biāo)的檢測(cè)能力,減少漏檢、誤檢現(xiàn)象。
SPD-Conv 主要由一個(gè)SPD 層和一個(gè)非跨步卷積構(gòu)成。當(dāng)比例因子為2 時(shí),在SPD 層部分,給定原始特征圖X尺寸為s×s×c1(s代表特征圖的長(zhǎng)和寬,c1為特征圖的通道數(shù)),通過(guò)切片得到4 個(gè)子映射,它們的尺寸均為(s/2,s/2,c1),沿著通道維度將這些子特征映射連接起來(lái),從而得到一個(gè)特征映射X′,它的空間維度減少了一個(gè)比例因子,通道維度增加了一個(gè)比例因子,尺寸為(s/2,s/2,4c1)。在SPD 特征轉(zhuǎn)換層之后,為了盡可能地保留所有的判別特征信息,添加一個(gè)具有c2通道數(shù)的無(wú)卷積步長(zhǎng)層,其中c2<4c1,特征圖尺寸變?yōu)椋╯/2,s/2,c2)。
數(shù)據(jù)集采集于北京市昌平區(qū)的北京興壽農(nóng)業(yè)專(zhuān)業(yè)合作社,果園內(nèi)果樹(shù)樹(shù)形為紡錘形,種植行距約3.5 m,株距約2.5 m。數(shù)據(jù)集由PCBA-P1080P 工業(yè)攝像頭進(jìn)行采集,拍攝時(shí)水平手持?jǐn)z像頭,置于兩行果樹(shù)中央,距離地面1.5 m 左右,緩慢向前移動(dòng),并采集攝像頭正前方的圖像,包括不同光照亮度下的蘋(píng)果樹(shù)行間信息。共采集視頻28 條,平均時(shí)長(zhǎng)在30 s 以上,對(duì)視頻進(jìn)行抽幀處理,得到數(shù)據(jù)集共1 588 張。將數(shù)據(jù)集進(jìn)行劃分,得到訓(xùn)練集1 264 張、驗(yàn)證集158 張、測(cè)試集158 張,使用LabelImg 進(jìn)行標(biāo)注,標(biāo)簽設(shè)置為tree。將完整的樹(shù)干標(biāo)定在矩形邊框內(nèi),1 588 張圖像所標(biāo)記的蘋(píng)果樹(shù)干為11 043 個(gè)。圖像標(biāo)定完成后,所生成的標(biāo)簽以xml 文件保存,文件中包含了標(biāo)簽類(lèi)別和矩形邊框的左上角和右下角坐標(biāo)。
試驗(yàn)采用臺(tái)式計(jì)算機(jī),處理器為Intel(R)Core(TM)i5-12 400 2.50 GHz,內(nèi)存為16 GB,GPU 為NVIDIA GeForce RTX 3 070,運(yùn)行環(huán)境為Windows10(64 位)操作系統(tǒng),配置深度學(xué)習(xí)環(huán)境為Python=3.7.12+torch=1.7.1+torchvision=0.8.2,CUDA 版本為11.0。在訓(xùn)練過(guò)程中,對(duì)網(wǎng)絡(luò)模型使用隨機(jī)梯度下降法(stochastic gradient denset,SGD)進(jìn)行學(xué)習(xí)和更新網(wǎng)絡(luò)參數(shù)[23],并采用余弦退火的學(xué)習(xí)率衰減方式,設(shè)定的部分超參數(shù)如表1 所示。
表1 網(wǎng)絡(luò)訓(xùn)練超參數(shù)Table 1 Network training hyperparameters
本文采用準(zhǔn)確率(precision,P)、召回率(recall,R)、精度均值(average precision,AP)參數(shù)量(parameters,Params)和畫(huà)面每秒傳輸幀數(shù)(frames per second,F(xiàn)PS)來(lái)共同對(duì)改進(jìn)模型進(jìn)行評(píng)價(jià)[24]。其中準(zhǔn)確率指模型正確預(yù)測(cè)為正的占全部預(yù)測(cè)為正的比例,召回率指正確預(yù)測(cè)為正的占全部實(shí)際為正的比例,參數(shù)量代表模型的空間復(fù)雜程度,每秒傳輸幀數(shù)評(píng)價(jià)模型的識(shí)別速度。相關(guān)計(jì)算式如下:
式中TP 為準(zhǔn)確識(shí)別出樹(shù)干的數(shù)量,F(xiàn)P 為非樹(shù)干被檢測(cè)為樹(shù)干的數(shù)量,F(xiàn)N 為未檢測(cè)出樹(shù)干的數(shù)量。
為驗(yàn)證本文改進(jìn)YOLOv7 模型的優(yōu)勢(shì),將其與Faster R-CNN、YOLOv7、YOLOv5、YOLOv4 進(jìn)行對(duì)比。在相同的硬件條件、數(shù)據(jù)集和試驗(yàn)參數(shù)下,試驗(yàn)結(jié)果如表2 所示??梢钥闯?,改進(jìn)后的模型檢測(cè)精度比Faster R-CNN、YOLOv7、YOLOv5、YOLOv4 分別高11.5、2.31、4.02、13.87 個(gè)百分點(diǎn);檢測(cè)速度相對(duì)于YOLOv5、YOLOv4 較低,但高于Faster R-CNN 和原始YOLOv7 模型,滿(mǎn)足實(shí)時(shí)檢測(cè)的需要;在參數(shù)量方面,改進(jìn)YOLOv7 模型相比較原始YOLOv7 模型有一定增加,但遠(yuǎn)低于Faster R-CNN、YOLOv5、YOLOv4 模型。綜合比較,改進(jìn)后模型在蘋(píng)果樹(shù)干識(shí)別方面有較大的優(yōu)勢(shì)。
表2 不同模型試驗(yàn)結(jié)果對(duì)比Table 2 Comparison of different models test results
為進(jìn)一步驗(yàn)證本文改進(jìn)YOLOv7 模型中各改進(jìn)方法的有效性,對(duì)同一數(shù)據(jù)集以原始YOLOv7 模型為基礎(chǔ)進(jìn)行消融試驗(yàn),試驗(yàn)設(shè)置參數(shù)與表1 相同,試驗(yàn)結(jié)果如表3 所示。在檢測(cè)頭網(wǎng)絡(luò)引入CBAM 注意力機(jī)制模塊,優(yōu)化了網(wǎng)絡(luò)結(jié)構(gòu)的特征融合能力,減小了圖像中背景的干擾,增強(qiáng)目標(biāo)果樹(shù)的關(guān)鍵特征;同時(shí)引入SPD-Conv模塊,提高對(duì)低分辨率圖像和小物體的識(shí)別效果,降低模型錯(cuò)檢、漏檢率。如表3 所示,原始YOLOv7 模型精度為92.9%,引入CBAM 注意力機(jī)制模塊后模型精度為93.97%,比原始YOLOv7 模型提升了1.07 個(gè)百分點(diǎn),本文算法精度達(dá)到了 95.21%,比引入 CBAM 注意力機(jī)制模型提升了1.24 個(gè)百分點(diǎn),檢測(cè)速度提升了4.85 幀/s。
表3 消融試驗(yàn)結(jié)果Table 3 Ablation experiment results
為驗(yàn)證本文改進(jìn)算法對(duì)樹(shù)干識(shí)別的有效性和通用性,對(duì)原YOLOv7 模型和改進(jìn)YOLOv7 模型的檢測(cè)效果進(jìn)行比較,如圖2 所示。可以看出,對(duì)于場(chǎng)景1,原YOLOv7模型漏檢了右前方的一棵蘋(píng)果樹(shù),且圖像左下角這棵樹(shù)的目標(biāo)框標(biāo)記不太準(zhǔn)確,改進(jìn)YOLOv7 模型則沒(méi)有出現(xiàn)這些問(wèn)題;對(duì)于場(chǎng)景2,原YOLOv7 模型漏檢了遠(yuǎn)處特征不明顯的一顆小樹(shù),改進(jìn)YOLOv7 模型則檢測(cè)成功且更為準(zhǔn)確;場(chǎng)景3 中棗樹(shù)較密,原YOLOv7 模型識(shí)別數(shù)量少,改進(jìn)YOLOv7 模型識(shí)別出大多數(shù)樹(shù)干。試驗(yàn)結(jié)果表明,改進(jìn)后的算法在蘋(píng)果園以及棗園環(huán)境中能夠更有效更準(zhǔn)確地檢測(cè)出目標(biāo)。此外,改進(jìn)YOLOv7 模型輸出的置信度值通常更高,這說(shuō)明改進(jìn)后的網(wǎng)絡(luò)檢測(cè)能力更強(qiáng),更能關(guān)注目標(biāo)的特征信息。
圖2 果樹(shù)樹(shù)干檢測(cè)效果對(duì)比Fig.2 Comparison of fruit tree trunk detection results
定位參照點(diǎn)的正確提取對(duì)于獲得果園內(nèi)導(dǎo)航線(xiàn)至關(guān)重要[25]。蘋(píng)果樹(shù)干與樹(shù)冠在橫向面積上相差較大,且樹(shù)枝向外部延伸長(zhǎng)短不一,導(dǎo)致樹(shù)干中心點(diǎn)橫坐標(biāo)與樹(shù)冠不同,另外果樹(shù)在種植時(shí)一般以樹(shù)干根點(diǎn)作為定位成行的基點(diǎn),若以整棵樹(shù)的中心作為定位參照點(diǎn),導(dǎo)航線(xiàn)誤差較大,因此選擇以蘋(píng)果樹(shù)干根部中心作為定位參照點(diǎn)。
通過(guò)YOLOv7 訓(xùn)練可得到目標(biāo)樹(shù)干的矩形邊框坐標(biāo),進(jìn)而得到蘋(píng)果樹(shù)干的中心坐標(biāo)。設(shè)矩形邊框的左上角坐標(biāo)為(x1,y1),右下角的坐標(biāo)為(x2,y2),蘋(píng)果樹(shù)干根部中心坐標(biāo)(x,y)可以表示為
對(duì)圖2 中3 個(gè)場(chǎng)景進(jìn)行定位參照點(diǎn)提取,結(jié)果如圖3 所示,提取到的定位參照點(diǎn)用黃色標(biāo)記點(diǎn)表示,紅色標(biāo)記點(diǎn)為人工標(biāo)記樹(shù)干中點(diǎn)。
圖3 人工標(biāo)記樹(shù)干中點(diǎn)與定位參照點(diǎn)提取結(jié)果Fig.3 Extraction results of manual marking of trunk midpoints and locating reference points
在測(cè)試集中隨機(jī)抽取100 張圖像共計(jì)769 棵蘋(píng)果樹(shù)干進(jìn)行定位參照點(diǎn)的誤差分析,以驗(yàn)證本文選擇定位參照點(diǎn)的效果。如圖4 所示,可以看出橫向誤差和縱向誤差大都集中在10 像素以?xún)?nèi),橫向誤差在10 像素以?xún)?nèi)的有750 棵,占比97.5%,縱向誤差在10 像素以?xún)?nèi)的有758 棵,占比98.5%,平均直線(xiàn)誤差為4.43 像素。
圖4 人工標(biāo)記樹(shù)干中點(diǎn)與定位參照點(diǎn)像素誤差Fig.4 Pixel error between manual marking of trunk midpoints and locating reference points
對(duì)相機(jī)進(jìn)行標(biāo)定,使用Matlab 軟件得到相機(jī)的內(nèi)參矩陣,通過(guò)計(jì)算將像素坐標(biāo)轉(zhuǎn)換成相機(jī)坐標(biāo)[26]繼而求出定位參照點(diǎn)與人工標(biāo)記樹(shù)干中點(diǎn)的實(shí)際平均誤差為8.85 cm,證明本文以矩形邊框底部中點(diǎn)代替樹(shù)干根部中點(diǎn)作為導(dǎo)航線(xiàn)定位參照點(diǎn)的有效性。
導(dǎo)航線(xiàn)擬合算法常用的有三次樣條插值[27]、Hough變換[28]和最小二乘法[29]等。三次樣條插值曲線(xiàn)每?jī)蓚€(gè)坐標(biāo)點(diǎn)之間都需要擬合一組參數(shù),復(fù)雜度較高;Hough變換和最小二乘法都可以用于本研究導(dǎo)航線(xiàn)的擬合,但是由于目標(biāo)點(diǎn)較少,最小二乘法相對(duì)簡(jiǎn)單快速,因此本研究選擇以最小二乘法進(jìn)行導(dǎo)航線(xiàn)的擬合。
最小二乘法的擬合原理是:給定一系列(xi,yi),(i=1,2,3…N),假定x和y具有線(xiàn)性關(guān)系,即可以用y=Kx+B的方式進(jìn)行擬合。定義一個(gè)優(yōu)化函數(shù),為了避免正負(fù)相消,使用實(shí)際觀察值與擬合值之間的差的平方和來(lái)定義:
當(dāng)f最小時(shí),擬合效果最好,此時(shí)的K和B值為最優(yōu)參數(shù)。
在獲得左右兩列蘋(píng)果樹(shù)干的定位參照點(diǎn)坐標(biāo)后,進(jìn)行果樹(shù)行線(xiàn)的擬合。設(shè)單側(cè)樹(shù)干生成的20 個(gè)定位參照點(diǎn)坐標(biāo)為 (Xi,Yi),i=1,2,3,···m(Xi,Yi),i=1,2,3···20,通過(guò)最小二乘法對(duì)其進(jìn)行擬合,得到兩側(cè)果樹(shù)行線(xiàn)如圖5所示。在得到的兩側(cè)果樹(shù)行線(xiàn)上分別在垂直方向上等間隔取20 個(gè)點(diǎn),坐標(biāo)記為(Xl,Yl),l=1,2,3…20;(Xr,Yr),r=1,2,3…20;將這左右各20 個(gè)點(diǎn)的x、y坐標(biāo)分別對(duì)應(yīng)求取平均值,可以得到位于兩側(cè)果樹(shù)行線(xiàn)中間的導(dǎo)航擬合線(xiàn)的20 個(gè)定位點(diǎn),其坐標(biāo)為(Xp,Yp),p=1,2,3…20,表達(dá)式為
對(duì)定位點(diǎn)進(jìn)行最小二乘法計(jì)算,得到擬合導(dǎo)航線(xiàn)如圖6 中的黃色線(xiàn)段所示。圖中紅色線(xiàn)段為人工觀測(cè)導(dǎo)航線(xiàn),是對(duì)兩側(cè)果樹(shù)人工標(biāo)記樹(shù)干中點(diǎn)進(jìn)行對(duì)應(yīng)求取平均值,再通過(guò)最小二乘法得到的。
圖6 擬合導(dǎo)航線(xiàn)和人工觀測(cè)導(dǎo)航線(xiàn)Fig.6 Fitting navigation line and manual observation navigation line
為分析擬合導(dǎo)航線(xiàn)與人工觀測(cè)導(dǎo)航線(xiàn)的誤差,引入偏差Xo,指人工觀測(cè)導(dǎo)航線(xiàn)的中點(diǎn)與擬合導(dǎo)航線(xiàn)中點(diǎn)的橫向像素距離。
對(duì)測(cè)試集中隨機(jī)抽取的100 張圖像進(jìn)行分析,得到Xo的統(tǒng)計(jì)結(jié)果,如圖7 所示。結(jié)果顯示,偏差均小于7.88 像素,平均偏差為2.45 像素,實(shí)際平均偏差為4.90 cm,滿(mǎn)足蘋(píng)果園內(nèi)導(dǎo)航的精確度要求。
圖7 導(dǎo)航線(xiàn)偏差分析Fig.7 Navigation line deviation analysis
對(duì)導(dǎo)航線(xiàn)檢測(cè)速度進(jìn)行分析,讀入在不同光照條件下拍攝的3 條視頻,并記錄視頻幀數(shù)。在處理程序中設(shè)置計(jì)時(shí)器,對(duì)程序開(kāi)始和程序結(jié)束時(shí)間進(jìn)行記錄。完成對(duì)讀入視頻的導(dǎo)航線(xiàn)檢測(cè)之后,用程序結(jié)束的時(shí)刻減去程序開(kāi)始的時(shí)刻,即為視頻處理時(shí)長(zhǎng)。將視頻處理時(shí)長(zhǎng)除以視頻幀數(shù),得到處理1 幀圖像的平均耗時(shí)。如表4 所示,3 段視頻平均耗時(shí)分別為0.047、0.040 和0.044 s/幀,總平均耗時(shí)為0.044 s/幀,滿(mǎn)足蘋(píng)果園內(nèi)導(dǎo)航的實(shí)時(shí)性需要。
表4 導(dǎo)航線(xiàn)提取速度分析Table 4 Navigation line extraction speed analysis
本文提出一種改進(jìn)YOLOv7 模型,在模型的檢測(cè)頭網(wǎng)絡(luò)加入CBAM 注意力機(jī)制模塊,使卷積神經(jīng)網(wǎng)絡(luò)能夠去注意圖像中的特殊的和重要的信息;同時(shí)引入了SPD-Conv 模塊,使模型更適合處理低分辨率圖像。使用改進(jìn)YOLOv7 模型,可以更精確地獲得果樹(shù)樹(shù)干的坐標(biāo)信息,進(jìn)而通過(guò)最小二乘法擬合導(dǎo)航線(xiàn)。結(jié)果表明本文所研究方法檢測(cè)出的擬合導(dǎo)航線(xiàn)和人工觀測(cè)導(dǎo)航線(xiàn)誤差較小,可以滿(mǎn)足導(dǎo)航的需要。本文獲得了以下主要結(jié)論:
1)改進(jìn)模型在兼顧檢測(cè)速度的同時(shí)有效提升了檢測(cè)精度,且在蘋(píng)果園和樹(shù)干密集的棗園中都適用。原始YOLOv7 算法精度為92.9%,改進(jìn)后的YOLOv7 算法精度為95.21%,減少了在檢測(cè)過(guò)程中出現(xiàn)的誤檢、漏檢等情況。
2)采用矩形邊框的中點(diǎn)代替樹(shù)干根點(diǎn)作為定位參照點(diǎn),對(duì)測(cè)試集中抽取的100 張圖像中的769 棵樹(shù)干進(jìn)行誤差分析,結(jié)果顯示橫向誤差在10 像素以?xún)?nèi)的占比為97.5%;縱向誤差在10 像素以?xún)?nèi)的占比為98.5%,證明了矩形邊框的中點(diǎn)代替樹(shù)干根點(diǎn)的可行性。
3)通過(guò)對(duì)定位參照點(diǎn)進(jìn)行最小二乘法計(jì)算得到擬合后的導(dǎo)航線(xiàn)。對(duì)測(cè)試集中抽取的100 張圖像進(jìn)行導(dǎo)航線(xiàn)誤差和速度分析,以擬合導(dǎo)航線(xiàn)的中點(diǎn)和人工觀測(cè)導(dǎo)航線(xiàn)中點(diǎn)的橫向像素距離作為依據(jù),結(jié)果顯示偏差在7.88個(gè)像素以?xún)?nèi),平均偏差為2.45 像素,實(shí)際平均偏差為4.90 cm,處理1 幀圖像平均耗時(shí)為0.044 s,證明本文所采用提取導(dǎo)航線(xiàn)的方法具有較高的精確度。