劉順利,劉昌華,張 雷,彭詞清,薛冬冬
(1.河南理工大學(xué) 測繪與國土信息工程學(xué)院,河南 焦作 454150;2.廣東省嶺南綜合勘察設(shè)計院,廣州 510700)
松材線蟲病是毀滅性森林病害,具有傳染性強、發(fā)病周期短,以松墨天牛為主要傳播媒介進行擴散傳播,整片松林從發(fā)病到毀滅僅需3~5年[1]。根據(jù)國家林業(yè)和草原局公布的數(shù)據(jù)[2],截至2022年,松材線蟲病已在中國19個省(市)發(fā)生,導(dǎo)致大量松樹枯死對松林造成嚴(yán)重破壞。松材線蟲病的防治手段主要是以實地調(diào)查方式,確定變色木的株數(shù)和位置信息,但存在費時費力,受主觀因素影響[3]。高分辨率遙感影像雖可提取變色木的位置信息,但易受云霧等天氣影響,存在時間滯后性、成本高以及分辨率難以達(dá)到單株識別等問題[4]。無人機影像具有分辨率高、時效性強、成本低等優(yōu)勢,廣泛應(yīng)用于染病松樹單株檢測[5-6]。
李衛(wèi)正等[7]采用目視判讀方法,實現(xiàn)對無人機影像染病松樹檢測,但該方法存在判讀效率低和檢測精度低的問題。陶歡等[8]基于HVS閾值劃分方法檢測染病松樹,相比目視判讀方法,人工判讀的效率得到提高;劉遐齡等[9]提出模板匹配和面向?qū)ο蠓诸惙椒ㄏ嘟Y(jié)合識別染病松樹變色木,提高變色木的檢測效率,卻也存在檢測精度較低的問題。針對采用面向?qū)ο蠓椒z測松材線蟲病變色木時,存在效率低下、檢測精度低的問題,研究人員開始應(yīng)用深度學(xué)習(xí)算法,提升松材線蟲病變色木的檢測效率和檢測精度。張瑞瑞等[10]基于U-Net網(wǎng)絡(luò)對松材線蟲病變色木進行識別,相比面向?qū)ο蟮碾S機森林方法提高變色木的識別精度;徐信羅等[11]基于Faster R-CNN算法進行松材線蟲病變色木檢測,并根據(jù)變色木冠幅尺寸調(diào)整算法錨框尺度,變色木的檢測效率和檢測精度得到有效提升;李鳳迪等[12]和黃麗明等[13]基于YOLO算法進行改進,提升算法檢測松材線蟲病變色木的檢測效率。目前,基于深度學(xué)習(xí)算法進行松材線蟲病變色木檢測的研究,能有效解決采用面向?qū)ο蠓椒ǖ男实拖隆z測精度低的問題。然而現(xiàn)有的基于深度學(xué)習(xí)的松材線蟲病變色木檢測的檢測速度較慢、識別精度較低,難以滿足大范圍區(qū)域的松材線蟲病檢測。
SSD算法是以VGG-16網(wǎng)絡(luò)為主干特征提取網(wǎng)絡(luò),能夠同時獲取物體的所屬類別和位置信息,相比Faster R-CNN算法有著更快的檢測速度,比YOLO v4有著更高的檢測精度,即SSD算法能夠保持較高檢測精度,同時有著較快的檢測速度。SSD算法在遙感影像小目標(biāo)檢測[14]、軌道扣件[15]等研究方向有著良好的檢測效果。為進一步提升松材線蟲病變色木的檢測效率和檢測精度,本文提出一種結(jié)合特征融合模塊(Feature Fusion Module,FF Module)和通道擠壓和激勵模塊(Squeeze-and-Excitation Block,SE Block)的方法改進SSD網(wǎng)絡(luò),加強對深層特征語義信息挖掘,將其融合到淺層特征,使淺層特征同時具有豐富的語義信息和紋理信息,提升對松材線蟲病變色木的檢測能力和檢測精度,進而提升松材線蟲病變色木的總體檢測精度。
研究區(qū)位于廣東省陽山縣,地理位置24°29′26″~24°29′50″N,112°36′29″~112°37′07″E。該區(qū)屬于亞熱帶季風(fēng)氣候,雨量充沛,全年平均溫度17.9℃,全年平均降雨量1 850mm,氣候環(huán)境適宜松材線蟲的生存,是松材線蟲病高發(fā)區(qū)。選取陽山縣局部區(qū)域作為研究區(qū),面積1.902 km2,海拔落差179.3m,樹種是以馬尾松為主的人工林,松材線蟲病十分嚴(yán)重。將研究區(qū)劃分為訓(xùn)練區(qū)和驗證區(qū),訓(xùn)練區(qū)圖像用于算法模型的訓(xùn)練與測試,驗證區(qū)用于驗證算法模型檢測松材線蟲病變色木的檢測精度。
使用精靈Phantom 4 Pro v2.0型無人機獲取試驗區(qū)的無人機光學(xué)影像,內(nèi)置相機的傳感器為1英寸CMOS,有效像素為2 000萬,相機焦距為35mm。數(shù)據(jù)獲取時間為2020年11月18日,飛行高度設(shè)置為380m,飛行的航向重疊率和旁向重疊率分別設(shè)為80%和60%,共獲取研究區(qū)影像184張,影像分辨率為65mm。
使用Pix-4D mapper軟件進行圖像校準(zhǔn)和鑲嵌,獲取研究區(qū)的數(shù)字正射影像圖(Digital orthophoto map,DOM)。使用ArcGIS軟件中的Split Raster工具將DOM按訓(xùn)練區(qū)范圍和驗證區(qū)范圍進行柵格數(shù)據(jù)分割,生成像素大小為256×256的柵格數(shù)據(jù)集。依據(jù)王震等[16]和徐華潮等[17]對松材線蟲病變色木光譜特征的研究,變色木在無人機光學(xué)影像上黃褐色、紅褐色,與健康松樹的墨綠色存在明顯區(qū)別。分別對訓(xùn)練區(qū)柵格數(shù)據(jù)集和驗證區(qū)柵格數(shù)據(jù)集進行變色木檢查,剔除缺少變色木的柵格圖片,分別獲取訓(xùn)練區(qū)和驗證區(qū)含有變色木圖片600張和64張。通過圖像旋轉(zhuǎn)、圖像增強等方法實現(xiàn)對訓(xùn)練區(qū)的柵格數(shù)據(jù)集進行數(shù)據(jù)擴充,最終獲取訓(xùn)練區(qū)的柵格圖片1800張,變色木的株數(shù)為2100株,驗證區(qū)的柵格圖片64張,變色木的株數(shù)為87株。使用LabelImg軟件制作與訓(xùn)練區(qū)柵格圖像的變色木區(qū)域一一對應(yīng)的可擴展標(biāo)記語言文件,標(biāo)簽數(shù)據(jù)集的制作流程如圖所示,生成Pascal VOC數(shù)據(jù)集,并將其按9∶1的比例用于算法的訓(xùn)練和測試。
SSD算法是由Wei等[18]提出的One-stage的目標(biāo)檢測算法,SSD算法的主干特征提取網(wǎng)絡(luò)為VGG-16[19]。相比普通VGG-16網(wǎng)絡(luò),SSD算法修改內(nèi)容如下:1)將VGG-16的FC6和FC7這兩個全連接層替換為卷積層;2.)去掉Dropout層和全連接層FC8,新增Conv8,Conv9,Conv10和Conv11這4個卷積層。SSD算法首先使用VGG-16網(wǎng)絡(luò)將輸入圖片生成不同尺度大小的特征圖,然后使用卷積預(yù)測器對特征圖上的目標(biāo)物進行檢測生成一系列包含目標(biāo)類別和預(yù)測分?jǐn)?shù)的預(yù)測框,最后使用非極大值抑制算法對預(yù)選框進行篩選得到目標(biāo)物所屬類別及分?jǐn)?shù)。然而,由于SSD算法VGG-16網(wǎng)絡(luò)較為簡單,使得在小尺度變色木檢測時有漏檢和誤檢現(xiàn)象。
針對SSD算法檢測小尺度變色木時存在漏檢和誤檢,提出一種結(jié)合特征融合模塊和通道擠壓和激勵模塊的方法改進SSD算法。特征融合模塊通過對不同尺度的特征圖進行融合,加強深層特征的語義信息與淺層特征的紋理信息的聯(lián)系,用于重新生成具有深層語義信息的不同層次的特征圖;通道擠壓和激勵模塊調(diào)整淺層特征圖的通道權(quán)重,提升重要通道的權(quán)重,進而提升SSD算法對小尺度變色木的檢測能力。
特征融合模塊通過對Conv4_3,FC7和Conv8_2這3個不同尺度特征圖進行特征融合,生成融合不同層次特征信息的新特征圖。首先,使用卷積核大小為1×1、通道數(shù)大小為256的卷積層,對這3個特征圖進行卷積運算,實現(xiàn)不同特征圖有著相同的通道數(shù);其次,分別使用卷積核大小為3×3、通道數(shù)大小為256的卷積層,卷積核大小為3×3、通道數(shù)大小為256、步長大小為2×2的反卷積層以及卷積核大小為3×3、通道數(shù)大小為256、步長為4×4的反卷積層進行卷積運算,實現(xiàn)不同特征圖有著相同的尺寸大??;再次,使用批標(biāo)準(zhǔn)化層(Batch Normalization,BN)對這3個特征圖進行批標(biāo)準(zhǔn)化處理以及使用LeakyReLU激活函數(shù)增加模型的泛化能力;最后,使用Concatenate對特征圖通道數(shù)進行疊加,得到融合不同層次特征信息的特征圖。
通道擠壓和激勵模塊是對新特征提取層中的特征圖進行通道權(quán)重調(diào)整,分為擠壓操作和激勵操作。擠壓操作通過全局平均池化操作將特征圖各通道中的全局空間特征作為該通道的通道特征。激勵操作首先使用兩個全連接層學(xué)習(xí)全局空間特征的依賴程度,并根據(jù)其依賴程度對各通道特征進行調(diào)整,通過Multiply相乘操作將全局空間特征和通道特征調(diào)整后特征圖進行逐元素相乘,得到調(diào)整尺寸的特征圖,然后使用Add相加操作將新提取的特征圖與調(diào)整尺寸的特征圖進行相加,實現(xiàn)對特征圖通道權(quán)重的調(diào)整;最后使用ReLU激活函數(shù)增強模型的表達(dá)能力和泛化能力,得到用于分類預(yù)測的特征圖。
采用的評價指標(biāo)有精確率(P)、召回率(R)、總體精度(Fl)、每秒檢測圖片張數(shù) (Frames Per Second,FPS)和準(zhǔn)確率(Average Precision,AP)等指標(biāo),對網(wǎng)絡(luò)模型的檢測精度進行評估;其中:P,R,Fl和AP的值越高,代表算法的檢測性能越好;FPS值越高,代表算法的檢測速度越快。
P=Pt/(Pt+Pf)
(1)
R=Pt/(Pt+Nf)
(2)
F1=2×(P×R)/(P+R)
(3)
(4)
FPS=1/T
(5)
式中:Pt表示檢測結(jié)果和真實情況相符,而且都是變色木的區(qū)域;Pf表示檢測結(jié)果和真實情況不相符,誤將其他區(qū)域當(dāng)作變色木的區(qū)域;Nf表示檢測結(jié)果和真實情況不相符,誤將變色木的區(qū)域當(dāng)作其他區(qū)域;T表示每張圖片檢測所需時間。
根據(jù)不同算法網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜程度,合理設(shè)置訓(xùn)練參數(shù)可以加快模型的訓(xùn)練速度。其中,批處理量(Batch size)大小決定單次訓(xùn)練迭代時間和迭代梯度(Iteration)的平滑程度;學(xué)習(xí)率(Learning rate)大小影響模型的收斂速度。通過對不同算法進行參數(shù)調(diào)試,批處理量,學(xué)習(xí)率,迭代次數(shù)的最優(yōu)值分別為8,0.000 1,100。
不同算法對松材線蟲病變色木模型訓(xùn)練時,隨著迭代次數(shù)的增加,模型的訓(xùn)練損失(Train Loss)和驗證損失(Validation Loss)都逐漸下降,最終趨于平穩(wěn),獲取最佳權(quán)重文件,訓(xùn)練過程如圖1所示。訓(xùn)練開始時,SSD算法的訓(xùn)練損失和驗證損失分別為7.114和4.918,改進SSD 的訓(xùn)練損失和驗證損失分別為4.098和3.236,改進SSD算法比SSD算法的訓(xùn)練損失和驗證損失分別降低了3.017和1.681。在模型訓(xùn)練的整個過程中,改進SSD算法的迭代次數(shù)70次才能完成訓(xùn)練,而SSD算法則需要迭代85次,表明改進SSD算法對變色木模型最佳權(quán)重文件獲取的迭代次數(shù)更少、收斂速度更快。算法訓(xùn)練結(jié)束時,改進SSD算法的訓(xùn)練損失和驗證損失分別為2.154和2.179;SSD算法的訓(xùn)練損失和驗證損失分別為2.371和2.360。改進SSD算法相比SSD算法的訓(xùn)練損失和驗證損失分別降低0.217和0.181,表明本文提出的改進方法能夠有效降低SSD算法針對變色木訓(xùn)練時的訓(xùn)練損失和驗證損失。
圖1 不同算法的訓(xùn)練損失圖
為了對比改進SSD算法檢測松材線蟲病變色木的性能,引入YOLO v4[20]算法和Faster R-CNN[21]算法檢測松材線蟲病變色木。首先,利用不同算法對訓(xùn)練數(shù)據(jù)集中的變色木進行訓(xùn)練獲取其最佳權(quán)重文件;然后,利用測試數(shù)據(jù)集進行算法檢測變色木的性能評估。在IOU閾值取0.50時,不同算法針對松材線蟲病變色木的評價結(jié)果如表1所示。針對不同算法檢測變色木的平均精度和總體精度由高到低分別為改進SSD算法、SSD算法、YOLO v4算法和Faster R-CNN算法;SSD算法的平均精度和總體精度分別為79.43%和75.00%,相比Faster R-CNN分別高出5.45%和7.77%,相比YOLO v4算法分別高出1.99%和1.89%,表明SSD算法相比YOLO v4算法和Faster R-CNN算法對于松材線蟲病變色木檢測有著更好的檢測效果;此外,改進SSD算法檢測松材線蟲病變色木的平均精度和總體精度分別為80.40%和79.00%,相比SSD算法分別提升0.99%和4.00%,由于本文改進方法加強SSD算法對小尺度變色木檢測能力,表明改進SSD算法相比SSD算法對于小尺度變色木的檢測效果更好,更適合于松材線蟲病變色木檢測。針對各個算法的每秒檢測圖片張數(shù)量而言,改進SSD算法相比YOLO v4算法和Faster R-CNN算法有著更高的每秒檢測圖片數(shù)量,對于松材線蟲病變色木的檢測速度更快;相比SSD算法的每秒檢測圖片數(shù)量有所下降,但其檢測速度也能滿足于松材線蟲病變色木檢測。針對各個算法的精確率而言,改進SSD算法僅低于YOLO v4算法4.44%;相比SSD算法提升7.23%,表明改進SSD算法提升SSD算法檢測松材線蟲病變色木的檢出率。針對各個算法的召回率而言,改進SSD算法僅低于Faster R-CNN算法3.35%;相比SSD算法提升1.48%,表明改進SSD算法降低SSD算法檢測松材線蟲病變色木的誤檢率。
表1 不同算法檢測松材線蟲病變色木的評價結(jié)果
為了驗證改進SSD算法對松材線蟲病變色木的檢測效果,在相同驗證數(shù)據(jù)集進行變色木檢測驗證。在驗證數(shù)據(jù)集的檢測結(jié)果中,選取涵蓋不同尺寸變色木的檢測結(jié)果,如圖2所示。對于較小尺度變色木而言,改進SSD算法相比Faster R-CNN算法、SSD算法和YOLO v4算法有著更好的檢測效果,表明改進SSD算法相比其他算法提升檢測較小尺度變色木的能力,有著更好的檢測效果。對于較大尺度變色木而言,Faster R-CNN算法、改進SSD算法和SSD算法都有良好的檢測結(jié)果,只有YOLO v4算法進行松材線蟲病變色木檢測時有漏檢現(xiàn)象,檢測效果最差。
圖2 真彩色圖像在不同算法的檢測結(jié)果
為更好地為松材線蟲病防控提供數(shù)據(jù)支持,對驗證數(shù)據(jù)集的松材線蟲病變色木檢測結(jié)果進行株數(shù)統(tǒng)計,驗證數(shù)據(jù)集中松材線蟲病變色木的真實目標(biāo)株數(shù)為87株,不同算法檢測松材線蟲病變色木的統(tǒng)計結(jié)果如表4所示。 YOLO v4算法、Faster R-CNN算法、SSD算法和改進SSD算法的檢測株數(shù)分別為61,85,81,87,其中,改進SSD算法檢測株數(shù)相比YOLO v4算法、Faster R-CNN算法和SSD算法分別多出16,2和6,表明改進SSD算法的檢出率更高。而YOLO v4算法、Faster R-CNN算法、SSD算法和改進SSD算法的誤檢株數(shù)分別為2,15,10,6,改進SSD算法誤檢株數(shù)相比SSD算法減少4株,表明本文提出的改進思路能夠有效降低SSD算法檢測松材線蟲病變色木的誤檢率。此外,改進SSD算法的正確檢測株數(shù)最多有81株,準(zhǔn)確率最高位93.1%。
表4 驗證集松材線蟲病變色木檢測的統(tǒng)計結(jié)果
1)提出的改進思路雖能提升SSD算法檢測松材線蟲病變色木的檢測精度,然而卻增加算法模型的參數(shù)量,使得變色木檢測的速度下降,難以實現(xiàn)變色木檢測的實時化。接下來可以考慮引入輕量化的網(wǎng)絡(luò)結(jié)構(gòu),如MobileNet或者Xception替代VGG16網(wǎng)絡(luò)。在確保檢測精度的前提下,減少模型的參數(shù)量,進而提升算法的檢測速度,實現(xiàn)染病松樹檢測的實時化。
2)使用SSD算法檢測松材線蟲病變色木的總體精度為75.00%,相比YOLO v4算法和Faster R-CNN算法分別高出7.77%和1.98%,有著更好的檢測效果;提出的特征融合模塊和通道注意力模塊相結(jié)合的方法改進SSD算法能夠豐富淺層特征的語義信息,可提升對較小尺度松材線蟲病變色木的檢測能力。改進SSD算法檢測松材線蟲病變色木的總體精度為79.00%,相比SSD算法提升4.00%,表明提出的改進方法能夠有效提升SSD算法檢測松材線蟲病變色木的精度。
3)通過對驗證數(shù)據(jù)集中松材線蟲病變色木的檢測結(jié)果進行株數(shù)統(tǒng)計,結(jié)果表明,改進SSD算法正確檢測株數(shù)為81株,能夠提升SSD算法針對松材線蟲病變色木的檢出率;改進SSD算法誤檢株數(shù)為6株,相比SSD算法減少4株,能夠有效降低松材線蟲病變色木的誤檢率,由于改進SSD算法在提高檢出率的同時,能夠有效降低誤檢率,進而使得改進SSD算法檢測松材線蟲病變色木的準(zhǔn)確率得到提升高達(dá)93.1%。