薛繼偉,孫宇銳
(東北石油大學(xué) 計(jì)算機(jī)與信息技術(shù)學(xué)院,黑龍江 大慶 163000)
當(dāng)今世界科學(xué)技術(shù)發(fā)展的同時(shí)也帶來了一系列環(huán)境問題,生態(tài)環(huán)境的破壞將會(huì)給人們的日常生活帶來嚴(yán)重影響,保護(hù)環(huán)境并及時(shí)采取措施已經(jīng)刻不容緩[1]。水壩是影響全球碳循環(huán)和水循環(huán)的一個(gè)重要因素,對其進(jìn)行監(jiān)測是非常有必要的,想要監(jiān)測水壩首先需要了解水壩在圖像中的位置。對高分辨率遙感影像的目標(biāo)分類識(shí)別進(jìn)行研究,是對地觀測系統(tǒng)進(jìn)行圖像分析的一種重要手段[2],目標(biāo)檢測是將圖像數(shù)據(jù)轉(zhuǎn)化為應(yīng)用成果的關(guān)鍵一環(huán)[3]。目前大部分基于深度學(xué)習(xí)的目標(biāo)檢測算法只針對普通圖像,對于遙感圖像的一些特征提取能力有待提升[4]。為了環(huán)境保護(hù)后續(xù)工作的開展,該文針對遙感圖像中的水壩目標(biāo)檢測方法進(jìn)行研究,使用檢測通用目標(biāo)的YOLOv5算法進(jìn)行實(shí)驗(yàn)并結(jié)合CBAM注意力機(jī)制進(jìn)一步提升水壩目標(biāo)檢測的精度。
目標(biāo)檢測技術(shù)如今已經(jīng)逐漸趨于成熟,從最初的SIFT[5]、HOG[6]、DPM[7]等傳統(tǒng)目標(biāo)檢測算法發(fā)展到如今基于深度學(xué)習(xí)的目標(biāo)檢測算法,目標(biāo)檢測的精度和速度都在不斷提高。基于深度學(xué)習(xí)的目標(biāo)檢測方法的發(fā)展主要分為三個(gè)階段,分別是雙階段、單階段和無錨框階段[8]。雙階段方法主要有R-CNN系列[9]、SPP-Net等,單階段方法主要有YOLO[10]系列、SSD[11]、EfficientDet[12]等,無錨框方法主要有CenterNet[13]、FCOS[14]等。
以上方法主要針對普通圖像,而光學(xué)遙感圖像具有背景復(fù)雜、目標(biāo)形狀尺度變化大等特征[15],一些學(xué)者根據(jù)遙感圖像的特征在通用的目標(biāo)檢測算法基礎(chǔ)上進(jìn)行改進(jìn)。R2CNN[16]方法改進(jìn)了Faster R-CNN算法以適應(yīng)遙感圖像中長寬較大的目標(biāo),YOLT[17]方法將YOLOv2模型引入遙感圖像檢測領(lǐng)域,ROI Transformer方法對水平框采用可學(xué)習(xí)參數(shù)訓(xùn)練方式轉(zhuǎn)為旋轉(zhuǎn)框,再對旋轉(zhuǎn)框內(nèi)部區(qū)域特征池化,R3Det[18]方法對特征圖重構(gòu)解決特征不對齊的問題,SCRDet[19]方法針對遙感圖像背景復(fù)雜的問題引入并行的像素級注意力機(jī)制和通道注意力機(jī)制弱化背景信息,提高了檢測性能。
目前在光學(xué)遙感目標(biāo)檢測領(lǐng)域大部分是針對艦船、運(yùn)動(dòng)場以及飛機(jī)和機(jī)場等目標(biāo)的研究[20],針對水壩目標(biāo)的檢測方法較少。在深度學(xué)習(xí)方法成為研究熱點(diǎn)之前,對水壩的檢測基本上使用傳統(tǒng)的目標(biāo)檢測算法。
2020年Zou Caigang等學(xué)者[21]使用深度學(xué)習(xí)的方法提出了基于雙閾值的目標(biāo)檢測網(wǎng)絡(luò)模型,該模型在基本的單級目標(biāo)檢測網(wǎng)絡(luò)基礎(chǔ)上增加雙閾值結(jié)構(gòu),對檢測結(jié)果進(jìn)行二次決策,提高了網(wǎng)絡(luò)檢測的準(zhǔn)確性,并在水壩遙感數(shù)據(jù)集中進(jìn)行測試證明了該網(wǎng)絡(luò)的有效性。
針對水壩目標(biāo)的特性,該文使用深度學(xué)習(xí)目標(biāo)檢測方法YOLOv5模型結(jié)合CBAM注意力機(jī)制,對水壩目標(biāo)進(jìn)行訓(xùn)練及驗(yàn)證,可以使得檢測精度在只使用YOLOv5模型的基礎(chǔ)上有所提高。
YOLOv5算法是單階段目標(biāo)檢測方法,網(wǎng)絡(luò)結(jié)構(gòu)主要分為四個(gè)部分,分別是輸入端、骨干網(wǎng)絡(luò)(Backbone)、Neck結(jié)構(gòu)和Head輸出層。
輸入端為用戶輸入的圖像,YOLOv5在輸入端對數(shù)據(jù)進(jìn)行縮放、歸一化、Mosaic數(shù)據(jù)增強(qiáng)等預(yù)處理。Backbone結(jié)構(gòu)的作用是提取目標(biāo)的通用特征,最新版本YOLOv5的Backbone包含CSPDarkNet53結(jié)構(gòu)。Neck部分位于Backbone結(jié)構(gòu)和Head結(jié)構(gòu)之間,可以進(jìn)一步提取特征,提升特征的多樣性和魯棒性。最新版本YOLOv5的Neck結(jié)構(gòu)使用了SPPF和C3模塊。SPPF模塊通過多個(gè)大小為5*5的最大池化層串行傳遞輸入特征大小。
YOLOv5最新版本中的激活函數(shù)使用SiLU,該損失函數(shù)沒有上界,有下界,平滑且不單調(diào),如公式(1)所示。
f(x)=x·sigmoid(x)
(1)
Head結(jié)構(gòu)也是網(wǎng)絡(luò)的輸出層,包含三個(gè)預(yù)測分支,三個(gè)預(yù)測分支的總損失乘以batchsize可以得到用于更新梯度的損失。
YOLOv5的損失函數(shù)包括定位損失、置信度損失以及分類損失三個(gè)部分, 總的損失為三種損失之和。其中置信度損失采用二分類交叉熵?fù)p失函數(shù)(BCELoss),如公式(2)所示。
(2)
邊界框(Boundingbox)回歸損失使用CIoU Loss[22]。CIoU Loss考慮了重疊面積、中心點(diǎn)距離、長寬比三種幾何參數(shù)的計(jì)算,如公式(3)~公式(5)所示。
(3)
(4)
(5)
其中,α和v為邊界框的長寬比,w和h表示預(yù)測框的寬和高,wgt和hgt分別表示GroundTruth的寬和高。b表示預(yù)測框中心坐標(biāo)的參數(shù),bgt表示GroundTruth中心坐標(biāo)參數(shù)。ρ2表示兩個(gè)中心點(diǎn)之間距離的平方。
在計(jì)算機(jī)視覺領(lǐng)域中適當(dāng)應(yīng)用注意力機(jī)制可以在一定程度上增強(qiáng)對圖像信息的處理。注意力模塊能夠在大量的信息中提取出重要信息從而增強(qiáng)對重點(diǎn)目標(biāo)的關(guān)注,這種關(guān)注是根據(jù)不同的分配權(quán)重獲得。基于深度學(xué)習(xí)的目標(biāo)檢測中常用的注意力機(jī)制模塊有SE[23]、ECA[24]、CA[25]、CBAM[26]等。該文在YOLOv5模型的網(wǎng)絡(luò)結(jié)構(gòu)中添加通道注意力模塊與空間注意力模塊相結(jié)合的注意力機(jī)制Convolutional Block Attention Module(CBAM)模塊,可以進(jìn)一步提高網(wǎng)絡(luò)特征的表達(dá)能力。
CBAM模塊在SE注意力機(jī)制的基礎(chǔ)上對通道注意力模塊進(jìn)行了改進(jìn),并且增加了空間注意力模塊。通道注意力在前,空間注意力在后,這種排列方式增強(qiáng)了模塊的特征提取能力。通道注意力機(jī)制將輸入的特征圖經(jīng)過全局最大池化(Global Max Pooling)和全局平均池化(Global Average Pooling)后,分別經(jīng)過多層感知機(jī)(MLP)得到通道注意力的權(quán)重,再經(jīng)過一個(gè)激活函數(shù)Sigmoid將注意力權(quán)重進(jìn)行歸一化,最后通過乘法加權(quán)到原始特征圖上,生成空間注意力需要的輸入特征。AveragePooling和MaxPooling共用一個(gè)MLP可以減少學(xué)習(xí)參數(shù)。
通道注意力模型如圖1所示。
圖1 通道注意力模型
空間注意力模塊在得到的通道注意力權(quán)重基礎(chǔ)上進(jìn)一步操作,與通道注意力部分相似,首先同樣需要經(jīng)過MaxPooling和AveragePooling,將結(jié)果進(jìn)行concat連接,再經(jīng)過一個(gè)卷積層將特征圖降維為一個(gè)通道。最后同樣使用Sigmoid函數(shù)乘法加權(quán)相應(yīng)特征,獲得最終的空間注意力特征。
空間注意力模型如圖2所示。
圖2 空間注意力模型
文中將CBAM注意力模塊插入YOLOv5模型backbone結(jié)構(gòu)中最后一個(gè)C3模塊與SPPF模塊之間,結(jié)合CBAM后的模型如圖3所示。
圖3 YOLOv5+CBAM網(wǎng)絡(luò)結(jié)構(gòu)
針對目標(biāo)檢測三個(gè)階段中的經(jīng)典算法在水壩遙感目標(biāo)檢測數(shù)據(jù)集上進(jìn)行對比實(shí)驗(yàn),并選用其中精度最高的YOLOv5方法進(jìn)行改進(jìn),結(jié)合CBAM注意力機(jī)制模塊進(jìn)一步提高檢測精度。該文使用包含水壩目標(biāo)的高分辨率遙感圖像目標(biāo)檢測數(shù)據(jù)集DIOR,并對數(shù)據(jù)集進(jìn)行預(yù)處理,提取需要的圖像,舍棄冗余圖像,最后對算法進(jìn)行訓(xùn)練和驗(yàn)證,得到目標(biāo)檢測模型。
現(xiàn)有的常用光學(xué)遙感目標(biāo)檢測數(shù)據(jù)集中僅有DIOR[27]數(shù)據(jù)集含有水壩目標(biāo),該數(shù)據(jù)集使用LabelMe工具標(biāo)注,共有23 463張圖像和190 288個(gè)實(shí)例,包含了20個(gè)目標(biāo)類,每個(gè)類別包含約1 200張圖像,其中包含水壩目標(biāo)的圖像987幅。DIOR數(shù)據(jù)集具有四個(gè)特征,圖像和實(shí)例數(shù)量規(guī)模較大,目標(biāo)的尺寸變化范圍在不同空間分辨率以及物體類間和類內(nèi)都較大。以水壩目標(biāo)為例,在僅含有一個(gè)水壩目標(biāo)的圖像中,水壩目標(biāo)尺寸為大目標(biāo),但在含有其他目標(biāo)的圖像中,如在含有高爾夫球場目標(biāo)和水壩目標(biāo)共存的圖像中,水壩相對來講是一個(gè)小目標(biāo),如圖4。對數(shù)據(jù)集中目標(biāo)大小進(jìn)行分析,散點(diǎn)圖分布如圖5,其中左圖表示數(shù)據(jù)集中所有目標(biāo)標(biāo)注框中心點(diǎn)的xy坐標(biāo),右圖表示標(biāo)注框的高(height)和寬(width),越接近右上角說明目標(biāo)越大,越接近左下角說明目標(biāo)越小。
圖4 DIOR數(shù)據(jù)集水壩目標(biāo)圖像示例
圖5 DIOR數(shù)據(jù)集水壩目標(biāo)分布散點(diǎn)圖
DIOR數(shù)據(jù)集的標(biāo)注格式為VOC格式,為了避免DIOR數(shù)據(jù)集中其他類別目標(biāo)對水壩目標(biāo)檢測精度的影響,需要將images文件夾中含有水壩標(biāo)注信息的圖像篩選出來。
由于依舊存在部分圖像中含有多個(gè)類別的標(biāo)注信息,需要對標(biāo)注信息進(jìn)行二次處理。刪除初篩集多類別標(biāo)注圖像中除水壩類別外的其他類別標(biāo)注,最終得到僅含有水壩類別標(biāo)注的xml文件。
將數(shù)據(jù)集進(jìn)行劃分,20%作為驗(yàn)證集,80%作為訓(xùn)練集,網(wǎng)絡(luò)的輸入層將圖像大小由800 px*800 px Resize為640 px*640 px并進(jìn)行一系列縮放、翻轉(zhuǎn)等操作。
在將圖像輸入到網(wǎng)絡(luò)之前,需要對數(shù)據(jù)進(jìn)行歸一化處理,使得數(shù)據(jù)經(jīng)過處理后的限制區(qū)間為[0,1]。在對比實(shí)驗(yàn)中,除了YOLOv5,其他方法在歸一化的基礎(chǔ)上進(jìn)行了標(biāo)準(zhǔn)化,使得處理后的數(shù)據(jù)限制區(qū)間為[-1,1]?;跀?shù)據(jù)的均值和方差進(jìn)行標(biāo)準(zhǔn)化,即在R、G、B三個(gè)維度減去均值并除以方差。在對比實(shí)驗(yàn)中除YOLOv5方法外,其他幾種方法使用的均值在R、G、B上分別為0.485、0.456、0.406,方差分別為0.229、0.224、0.225。YOLOv5在文中只進(jìn)行歸一化,不進(jìn)行標(biāo)準(zhǔn)化。
CPU:Intel Core i7-11800H;
GPU: NVIDIA GeForce RTX3070;
語言:Python3.7;
深度學(xué)習(xí)框架:Pytorch1.11.0;
CUDA:11.3.0;
編譯器:Pycharm2021。
單類別目標(biāo)檢測中的評價(jià)指標(biāo)主要為AP、AP50。目標(biāo)檢測的精確率(Precision)是指一組圖像中模型檢測出真正例占所有目標(biāo)的比例,召回率(Recall)表示所有真實(shí)目標(biāo)中被模型檢測出的目標(biāo)比例。根據(jù)精確率與召回率的值可以繪制PR曲線,AP即為PR曲線下的面積值,可以用積分計(jì)算,如公式(6),其中p表示PR曲線中作為縱坐標(biāo)的精確率值,R表示作為橫坐標(biāo)的召回率值。對目標(biāo)檢測模型性能的評估通常需要與IoU閾值聯(lián)系起來,而AP50表示的是IoU閾值為0.5時(shí),AP的測量值。
(6)
該文分別使用雙階段模型FasterR-CNN、單階段模型YOLOv5、EfficientNet以及AnchorFree模型CenterNet、FCOS進(jìn)行訓(xùn)練,并選擇AP50相對較高的YOLOv5模型進(jìn)行改進(jìn)實(shí)驗(yàn)。
訓(xùn)練設(shè)置batchsize為8,epoch為300,學(xué)習(xí)率為0.01,YOLOv5模型使用Backbone為DarkNet53,FasterR-CNN、FCOS和CenterNet使用ResNet50作為Backbone,EfficientNet使用RetinaNet作為Backbone。對比實(shí)驗(yàn)結(jié)果如表1。
在YOLOv5的基礎(chǔ)上結(jié)合CBAM注意力機(jī)制對水壩單目標(biāo)進(jìn)行訓(xùn)練,訓(xùn)練設(shè)置同上。結(jié)果表明添加CBAM注意力機(jī)制模塊可以提高對水壩目標(biāo)的檢測精度。YOLOv5和YOLOv5-CBAM的PR曲線對比如圖6所示,結(jié)合CBAM訓(xùn)練得到的best.pt最佳模型在驗(yàn)證集中的AP50可以達(dá)到86.4%,未結(jié)合CBAM的模型AP50為83.2%。
表1 水壩目標(biāo)檢測算法實(shí)驗(yàn)結(jié)果對比
圖6 PR曲線對比
在驗(yàn)證過程中發(fā)現(xiàn),有部分圖像產(chǎn)生漏檢情況如圖7左,與其他圖像相比水壩在圖中目標(biāo)較小,在下一步的改進(jìn)中考慮提高算法對小目標(biāo)的檢測能力。圖7右中產(chǎn)生了誤檢情況,檢測器將與水壩特征相似的湖泊邊沿誤檢為水壩進(jìn)行了標(biāo)記,說明未來算法改進(jìn)應(yīng)考慮到與水壩具有相似特征的目標(biāo)影響,如橋梁等。
圖7 漏檢和誤檢情況
測試集為根據(jù)全球水壩地理位置信息數(shù)據(jù)集GOODD在谷歌地圖中靶向搜索國內(nèi)水壩圖像并進(jìn)行標(biāo)注,共100張,將上述訓(xùn)練得到的模型應(yīng)用于測試集中,測試結(jié)果如圖8所示,其中上為標(biāo)簽,下為檢測結(jié)果。
圖8 YOLOv5-CBAM檢測結(jié)果
該文主要針對光學(xué)遙感圖像中的水壩目標(biāo)進(jìn)行檢測,在單階段目標(biāo)檢測模型YOLOv5的基礎(chǔ)上在Backbone階段引入了CBAM注意力模型,該方法結(jié)合了通道注意力和空間注意力,增強(qiáng)模型對水壩目標(biāo)的關(guān)注進(jìn)而提高對水壩目標(biāo)的檢測精度。在驗(yàn)證集上,可以將YOLOv5的AP50從83.2%提升至86.4%,有針對性地單獨(dú)訓(xùn)練水壩目標(biāo)可以降低誤檢率。后續(xù)可以根據(jù)此模型建立水壩目標(biāo)檢測系統(tǒng),擴(kuò)展該模型在遙感圖像目標(biāo)檢測范圍內(nèi)的應(yīng)用。