郭智超,叢林虎,劉愛東,鄧建球,應(yīng)新永
(1.海軍航空大學(xué)岸防兵學(xué)院,山東 煙臺(tái) 264001; 2. 91115部隊(duì))
目標(biāo)檢測(cè)技術(shù)是當(dāng)前計(jì)算機(jī)視覺領(lǐng)域的核心技術(shù)之一,當(dāng)前目標(biāo)檢測(cè)技術(shù)逐漸發(fā)展并趨于成熟,其中隨著遙感技術(shù)而發(fā)展起來的遙感圖像目標(biāo)檢測(cè)技術(shù)具有執(zhí)行效率高、檢測(cè)范圍大的優(yōu)點(diǎn),在應(yīng)用方面存在著重要的價(jià)值。在軍事應(yīng)用領(lǐng)域,實(shí)時(shí)地掌握敵我雙方軍事目標(biāo)的位置與類別信息可以讓決策者根據(jù)現(xiàn)有信息及時(shí)做出軍事部署;在民用領(lǐng)域,實(shí)時(shí)準(zhǔn)確地檢測(cè)遙感衛(wèi)星拍攝的海上、陸上以及空中的目標(biāo)信息可以更好地對(duì)其管理,在搜索救援、海上貿(mào)易、交通疏導(dǎo)、打擊犯罪等方面具有重要作用[1]。
在遙感圖像目標(biāo)檢測(cè)領(lǐng)域,基于深度學(xué)習(xí)的檢測(cè)算法相比于傳統(tǒng)檢測(cè)算法(如DPM、ViolaJones)更有優(yōu)勢(shì)。它主要分為兩類,一類是基于候選區(qū)的檢測(cè)算法,最具有代表性的是Girshick于提出的Faster R-CNN算法[2],該算法首次引入RPN候選區(qū)提取模塊,2016微軟研究院的何凱明團(tuán)隊(duì)在其基礎(chǔ)上提出了Mask-RCNN[3]、R-FCN[4]等算法,此類算法精度較高,檢測(cè)速率較慢。另一類是基于回歸的目標(biāo)檢測(cè)算法,最具代表性的是YOLO系列檢測(cè)算法和SSD系列的檢測(cè)算法,其中YOLO最初于2016年由Redmon提出[5],檢測(cè)精度較差,在其基礎(chǔ)上逐漸發(fā)展出的YOLOV2[6]、YOLOV3[7]性能逐步取得提升。雖然精度和速度都有所提升,但收斂速度較慢;SSD算法于2016年由Liu[8]提出,在檢測(cè)精度和檢測(cè)速度方面均表現(xiàn)良好,但對(duì)于小目標(biāo)檢測(cè)效果較差且容易出現(xiàn)重復(fù)框。馮家明等提出了一種YOLOv3-fass[9]算法,通過對(duì)Darknet-53網(wǎng)絡(luò)的殘差結(jié)構(gòu)和卷積層的通道數(shù)進(jìn)行刪減使得檢測(cè)速度提高近一倍,檢測(cè)精度提升效果卻很小。鄭志強(qiáng)通過特征進(jìn)行復(fù)用改進(jìn)YOLOV3的特征融合方式[10],雖然提升了對(duì)遙感目標(biāo)檢測(cè)的精度,同時(shí)也使得參數(shù)量變大,增大了計(jì)算難度。傳統(tǒng)的contact特征融合方式中采用簡(jiǎn)單的方式對(duì)不同層的特征信息進(jìn)行簡(jiǎn)單堆疊,無(wú)法體現(xiàn)不同特征通道與不同卷積核的相關(guān)性和權(quán)重,即使性能較優(yōu)的FSSD和YOLOV3通過FPN對(duì)相鄰?fù)ǖ捞卣鬟M(jìn)行contact融合,其檢測(cè)精度有所提升,但仍有優(yōu)化的空間[11]。軟注意力機(jī)制(如SENet、SKNet、CBAM等),可通過神經(jīng)網(wǎng)絡(luò)計(jì)算出梯度并通過前向傳播與后向反饋的方式得到注意力權(quán)重,目前已被應(yīng)用在眾多算法的優(yōu)化改造中,對(duì)提升目標(biāo)分辨率有著重要作用。
當(dāng)前遙感圖像目標(biāo)檢測(cè)中存在的問題是:檢測(cè)速率相對(duì)較慢,受氣候環(huán)境影響因素較大,圖像中的目標(biāo)容易出現(xiàn)目標(biāo)較小、模糊、遮擋、陰影,圖像目標(biāo)分辨率差等現(xiàn)象,容易發(fā)生目標(biāo)漏檢或誤檢[12],在實(shí)際檢測(cè)中難免面臨各種不利因素。
針對(duì)以上問題,本文提出一種基于SK-YOLOV3的目標(biāo)檢測(cè)方法,將從網(wǎng)絡(luò)上搜集的光學(xué)衛(wèi)星圖像制作成數(shù)據(jù)集進(jìn)行網(wǎng)絡(luò)訓(xùn)練,以YOLOV3算法為主體,并通過引入SKNet視覺注意力機(jī)制對(duì)其網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),同時(shí)優(yōu)化錨框聚類算法,實(shí)現(xiàn)對(duì)各類遙感目標(biāo)的精確檢測(cè)。
YOLOV3是YOLO和YOLOV2的升級(jí)版本,其采用全卷積神經(jīng)網(wǎng)絡(luò)并引入殘差網(wǎng)絡(luò),共包含75個(gè)卷積層,以Darknet-53為基礎(chǔ)網(wǎng)絡(luò),Darknet-53由卷積層和殘差網(wǎng)絡(luò)組成,每個(gè)卷積層包括1×1的卷極塊CB1和3×3的卷極塊CB2,用于提取圖像特征。YOLOV3在Darknet-53的基礎(chǔ)上添加了YOLO層,用于輸出3個(gè)不同的尺度,當(dāng)輸入圖片大小為416×416時(shí),輸出尺度分別為(52,52)(26,26)(13,13),但其通道數(shù)均相同,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)框圖
為了提升對(duì)小目標(biāo)的檢測(cè)效果,YOLOV3通過借鑒FPN特征網(wǎng)絡(luò)的思想進(jìn)行多尺度特征融合, 通過添加上采樣層(upsample)和連接層(contact),融合了3個(gè)不同尺度的特征,在多個(gè)尺度的融合特征圖上分別獨(dú)立做檢測(cè)。采樣過程中采用步幅為2的卷積層對(duì)特征圖進(jìn)行卷積,從而減小池化步驟導(dǎo)致的小目標(biāo)信息丟失。13×13尺度輸出用于檢測(cè)大型目標(biāo),對(duì)應(yīng)的26×26為中型的,52×52用于檢測(cè)小型目標(biāo)。
YOlOV3算法把輸入的特征圖劃分為S×S個(gè)網(wǎng)格,輸出的3個(gè)尺度特征圖中的每個(gè)網(wǎng)格都會(huì)預(yù)測(cè)3個(gè)邊界框,共聚類出9種尺寸的先驗(yàn)框。對(duì)于一個(gè)416×416的輸入圖像,總共有 13×13×3+26×26×3+52×52×3=10647 個(gè)預(yù)測(cè)。每個(gè)邊界框輸出特征圖的通道數(shù)包括(位置信息、置信度、類別預(yù)測(cè)),所以輸出張量的維度為N×N×3×(4+1+M),1代表置信度,4表示目標(biāo)位置輸出,M為類別數(shù)目。以本文4類待檢測(cè)的遙感目標(biāo)為例,通道數(shù)為3×(4+1+1)=18,輸出特征圖尺度分別為(13×13×18)、(26×26×18)、(52×52×18)。
信息分類時(shí)在NMS算法中通過logistic回歸對(duì)9個(gè)先驗(yàn)框包圍的部分進(jìn)行一個(gè)目標(biāo)性評(píng)分,即置信度,找到置信度最高的先驗(yàn)框,將其設(shè)定為與真實(shí)框相對(duì)應(yīng)的最終預(yù)測(cè)框,置信度超過閾值卻不是最高的先驗(yàn)框則被忽略。置信度即為先驗(yàn)框與真實(shí)框之間的交并比(IOU),其計(jì)算公式如下:
(1)
以圖2的中間網(wǎng)格為例,虛線框表示先驗(yàn)框,其寬高分別為pw和ph,(cx,cy)為中間網(wǎng)格相對(duì)于圖像左上角偏移量,(tx,ty,tw,th)是網(wǎng)絡(luò)為先驗(yàn)框預(yù)測(cè)的坐標(biāo),其中(σ(tx),σ(ty)) 中間網(wǎng)格的輸出對(duì)應(yīng)于網(wǎng)格的相對(duì)中心坐標(biāo),實(shí)線框表示中間網(wǎng)格輸出的值經(jīng)過運(yùn)算后得到的最終預(yù)測(cè)框,其預(yù)測(cè)框位置信息為(bxbybwby),運(yùn)算公式如下:
圖2 YOLOV3檢測(cè)原理框圖
(2)
YOLOV3損失函數(shù)主要由位置誤差(中心坐標(biāo)誤差和寬高誤差)、置信度誤差、分類誤差3部分組成。
Loss=λ1Lconf(o,c)+λ2Lcla(O,C)+λ3Lloc(l,g)
(3)
λ1λ2λ3均為平衡權(quán)重系數(shù)
位置損失函數(shù)Lloc為:
(4)
置信度損失函數(shù)Lconf為:
(5)
分類損失函數(shù)Lcla為:
(6)
SKNet是SENet的升級(jí)版本,是Attention注意力機(jī)制中視覺注意力機(jī)制中的一種。不同大小的卷積核對(duì)于不同尺度(遠(yuǎn)近、大小)的目標(biāo)會(huì)有不同的效果,盡管比如 Inception 這樣的增加了多個(gè)卷積核來適應(yīng)不同尺度圖像,但是一旦訓(xùn)練完成后,參數(shù)就固定了,這樣多尺度信息就會(huì)被全部使用了(每個(gè)卷積核的權(quán)重相同)。SKNet 提出了一種機(jī)制,除了考慮到通道間的關(guān)系,還考慮到了卷積核的重要性,即不同的圖像能夠得到具有不同重要性的卷積核,使網(wǎng)絡(luò)可以獲取不同感受野的信息[13]。
圖3 SK卷積操作示意圖Fig.3 Schematic diagram of SK convolution operation
SK卷積單元中不僅使用了注意力機(jī)制,還使用了多分支卷積、組卷積和空洞卷積。
圖4表示了SK-YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)。CBRK表示使用了SK卷積模塊的卷積單元,其中M表示要聚合不同卷積核中核的選擇路徑數(shù),G為控制每條路徑基數(shù)的組數(shù),r表示用來控制fuse操作中的參數(shù)量的reduction ratio。
圖4 SK-YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)框圖
YOLOV3網(wǎng)絡(luò)中的(shortcutn)殘差模塊表示使用了N個(gè)由1×1大小卷積CBR1和3×3大小卷積CBR3組成的子結(jié)構(gòu)。本文在YOLOV3骨干網(wǎng)絡(luò)Darknet-53的殘差模塊中將CBR3卷積單元替換為GBRK卷積單元,在每個(gè)殘差模塊中進(jìn)行完1×1卷積后進(jìn)行SK卷積,通過kernel size不同大小的卷積核卷積后將得到的不同的特征圖進(jìn)行融合,就可以獲取輸入圖片不同感受野的信息,再通過線性變換完成對(duì)不同通道維度信息提取,在給予每個(gè)通道不同權(quán)重后對(duì)其再次融合。SK-shortcutn表示將模塊中CBRK替掉CBR3后,優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)后組成的新的重復(fù)單元,由n個(gè)(CBR1+CBRK)組成。
表1 SKNet特征信息表
在檢測(cè)中,為了更加精確地對(duì)目標(biāo)定位,使真實(shí)框和預(yù)測(cè)框取得更好的交并比(IOU),需要預(yù)先標(biāo)定錨點(diǎn)框來對(duì)數(shù)據(jù)進(jìn)行聚類。傳統(tǒng)的k-means算法中,通過計(jì)算所有對(duì)象和預(yù)先設(shè)定的k個(gè)聚類中心之間的歐式距離來分配對(duì)象并聚類,并得到先驗(yàn)框的寬和高,k值一般為9。通過歐氏距離作為評(píng)價(jià)指標(biāo)會(huì)使大尺寸目標(biāo)比小尺寸目標(biāo)聚類時(shí)產(chǎn)生更大的誤差。
YOLOV3所使用的k-means算法中最終聚類結(jié)果通過IOU作為距離度量(即最短距離)進(jìn)行判定,聚類距離隨著預(yù)測(cè)框與聚類中心的IOU值得增大而減小。距離公式如下:
(7)
boxi為第i個(gè)樣本的預(yù)測(cè)框,centroidj為第j個(gè)聚類中心,d為表示二者之間的距離。
YOLOV3為多尺度特征預(yù)測(cè),在輸出的3個(gè)不同尺度特征圖上所需先驗(yàn)框在尺寸上也存在較大差異,傳統(tǒng)的k-means聚類中忽略了特征圖和先驗(yàn)框的關(guān)系,在數(shù)據(jù)集樣本差異較大時(shí)容易造成聚類后產(chǎn)生的先驗(yàn)框無(wú)法與特征圖相匹配的現(xiàn)象,進(jìn)而影響檢測(cè)效果。
為了改善這類問題,本文對(duì)k-means聚類算法進(jìn)行優(yōu)化,對(duì)每個(gè)樣本點(diǎn)都給予一個(gè)權(quán)重wij以區(qū)分不同樣本的重要性[14]。經(jīng)改進(jìn)后距離公式如下:
(8)
(9)
該實(shí)驗(yàn)軟件環(huán)境包括CUDA10.0、cuDNN7.4.1、OpenCV等軟件包,編程語(yǔ)言采用python3.6.3,硬件環(huán)境如表2所示。
表2 實(shí)驗(yàn)硬件環(huán)境表
該自建的遙感圖像數(shù)據(jù)集共有1 250張,大部分從谷歌遙感圖像數(shù)據(jù)集中挑選而來,并加入了少量網(wǎng)絡(luò)上搜索的相關(guān)遙感圖像。為了增強(qiáng)訓(xùn)練效果,其中包含了不同天氣條件不同高度、不同角度、不同清晰度下衛(wèi)星拍攝的多個(gè)樣本。數(shù)據(jù)集包括有飛機(jī)、艦船、汽車、儲(chǔ)油罐四類目標(biāo),通過labelimg工具將挑選的圖片加以標(biāo)注并以VOC格式存儲(chǔ),通過xml文件記錄目標(biāo)的類別信息和位置信息,按照4:1的比例劃分為訓(xùn)練集和測(cè)試集。
本網(wǎng)絡(luò)結(jié)構(gòu)的性能通過IoU指標(biāo)、AP指標(biāo)、mAP指標(biāo)、FPS指標(biāo)來進(jìn)行綜合評(píng)價(jià)。其中IoU(交并比)用來評(píng)價(jià)是否能對(duì)目標(biāo)成功定位;AP表示單類目標(biāo)在不同召回率條件下準(zhǔn)確率的均值,其值是Precision-Recall曲線下方的面積;mAP指標(biāo)(平均精確度)指所有目標(biāo)平均精度的均值,用于評(píng)價(jià)算法檢測(cè)精度;FPS(每秒內(nèi)檢測(cè)的圖像幀數(shù))用于評(píng)價(jià)檢測(cè)速度。其計(jì)算公式分別如下:
(9)
(10)
(11)
TP:預(yù)測(cè)為正,實(shí)際為正;FP:預(yù)測(cè)為正,實(shí)際為負(fù);TN:預(yù)測(cè)為負(fù),實(shí)際為負(fù);FN:預(yù)測(cè)為負(fù),實(shí)際為正。
(12)
(13)
(14)
num(picture)表示處理圖片的總幀數(shù);total(time)表示處理所有圖片所需時(shí)間。
將SK-YOLOV3與YOLOV3進(jìn)行對(duì)比訓(xùn)練,為保證公平性,在同樣的數(shù)據(jù)集上進(jìn)行150次epoch迭代,前6個(gè)epoch采用warm-up的方式進(jìn)行“熱身”訓(xùn)練,6到150個(gè)epoch學(xué)習(xí)率設(shè)定為0.001,Batch size設(shè)定為16,且均采用Pytorch深度學(xué)習(xí)框架,圖5為YOLOV3和SK-YOLOV3的損失率變換曲線。由圖可知兩模型經(jīng)過了150次epoch后損失值趨于穩(wěn)定。
圖5 損失值變化曲線
4.5.1YOLOV3與SK-YOLOV3檢測(cè)效果對(duì)比
分別通過原版YOLOV3算法和改進(jìn)的SK-YOLOV3算法對(duì)測(cè)試集圖片測(cè)試,部分結(jié)果如圖6所示。
圖6 YOLOV3改進(jìn)前后效果圖
圖6中,圖6(a)和圖6(b)為YOLOV3對(duì)遙感目標(biāo)的檢測(cè)效果圖,圖6(c)和圖6(d)為SK-YOLOV3的檢測(cè)效果圖。圖6(a)和圖6(b)中對(duì)小目標(biāo)檢測(cè)效果不好,均出現(xiàn)了漏檢現(xiàn)象,且檢測(cè)到的目標(biāo)準(zhǔn)確率較低;相比之下,圖6(c)漏檢現(xiàn)象有很大改善,圖6(d)未發(fā)生漏檢現(xiàn)象,SK-YOLOV3可以檢測(cè)到大量YOLOV3漏檢的目標(biāo),提升了對(duì)遙感圖像目標(biāo)的分辨率。
4.5.2SK-YOLOV3在各種復(fù)雜環(huán)境下檢測(cè)效果
在現(xiàn)實(shí)情況中,由于各種原因如天氣狀況差、檢測(cè)目標(biāo)較小、拍攝場(chǎng)景光線較差等情況會(huì)影響遙感圖像拍攝的質(zhì)量進(jìn)而影響檢測(cè)效果。為了進(jìn)一步驗(yàn)證SK-YOLOV3模型在復(fù)雜環(huán)境下的表現(xiàn),選取一些特殊條件下的圖片進(jìn)行檢測(cè),選取有代表性的如圖7~圖9所示。圖7為陰影場(chǎng)景,圖7中目標(biāo)經(jīng)測(cè)試,準(zhǔn)確率仍處于較高水平,檢測(cè)模型受光線影響較?。粓D8中為小飛機(jī)目標(biāo),由檢測(cè)效果來看,目標(biāo)大小模型影響有限;圖10為大霧場(chǎng)景,對(duì)檢測(cè)有部分影響,一部分小型船只沒有檢測(cè)出來。綜上可知,該檢測(cè)模型在復(fù)雜環(huán)境中檢測(cè)效果較好,個(gè)別處于復(fù)雜環(huán)境下的物體檢測(cè)率不高,但惡劣情況畢竟居于少數(shù),使得對(duì)于檢測(cè)模型影響有限。
圖7 陰影條件檢測(cè)圖
圖8 小型目標(biāo)檢測(cè)圖
圖9 霧天目標(biāo)檢測(cè)圖
為了對(duì)模型進(jìn)行直面與客觀的分析,分別將SK-YOLOV3與YOLOV3、SSD等幾種常用目標(biāo)檢測(cè)算法實(shí)驗(yàn)對(duì)比,使用相同的訓(xùn)練數(shù)據(jù)集和訓(xùn)練方法進(jìn)行訓(xùn)練,并從中抽取100張測(cè)試集進(jìn)行測(cè)試,每種模型進(jìn)行10次測(cè)試后取其平均值,最后通過平均精度mAP以及檢測(cè)速率FPS進(jìn)行性能對(duì)比,結(jié)果如表3所示。
表3 模型性能對(duì)照表(%)
從實(shí)驗(yàn)性能對(duì)照表可知,在檢測(cè)速率方面YOLOV3算法檢測(cè)速率最高,可達(dá)29.3 FPS,mAP可達(dá)80.87%,和其他幾種常用檢測(cè)算法相比無(wú)論在精度還是速度均具有優(yōu)勢(shì)。SK-YOLOV3算法相對(duì)于YOLOV3檢測(cè)精度提升了7.46%,雖然在檢測(cè)速率上略低于YOLOV3,但也達(dá)到了27.7FPS,處于較高水平,對(duì)檢測(cè)時(shí)間影響不大。綜合來看,基于SK-YOLOV3的遙感圖像目標(biāo)檢測(cè)方法可以較好地完成檢測(cè)任務(wù)。
提出了一種基于SK-YOLOV3的遙感目標(biāo)檢測(cè)方法,為了提高檢測(cè)效果,彌補(bǔ)傳統(tǒng)特征融合方式的局限性,對(duì)YOLOV3的基本框架進(jìn)行改進(jìn)。在原YOLOV3網(wǎng)絡(luò)基礎(chǔ)上引入SKNet視覺注意力機(jī)制,對(duì)特征圖在不同感受野下的特征進(jìn)行融合從而提高分辨率;并對(duì)錨框聚合算法進(jìn)行優(yōu)化,將傳統(tǒng)k-means錨框聚合方法替代為加權(quán)k-means聚合方法以便于加強(qiáng)檢測(cè)效果。通過在谷歌地圖上采集到的遙感圖像數(shù)據(jù)集進(jìn)行模型訓(xùn)練,實(shí)現(xiàn)了對(duì)不同環(huán)境下圖像中多種目標(biāo)的精確檢測(cè)。從實(shí)驗(yàn)對(duì)比結(jié)果分析可知,相比于原版YOLOV3,SK-YOLOV3對(duì)于惡劣環(huán)境下目標(biāo)和小型目標(biāo)的檢測(cè)有著更好的效果;相對(duì)于其他檢測(cè)算法無(wú)論是檢測(cè)精度還是檢測(cè)速率,優(yōu)勢(shì)十分明顯。綜合來看,該方法是一種良好的遙感目標(biāo)檢測(cè)方法。