馬志龍 倪佳忠
(1. 杭州天圖地理信息技術(shù)公司, 浙江 杭州 310007;2. 浙江省測(cè)繪科學(xué)技術(shù)研究院, 浙江 杭州 311100)
遙感圖像可高效、快速地獲得部分區(qū)域的地面數(shù)據(jù),是區(qū)域規(guī)劃、地表測(cè)量、軍事偵測(cè)等重要數(shù)據(jù)來(lái)源[1-3]。借助遙感圖像檢測(cè)區(qū)域內(nèi)車(chē)輛,是遙感圖像應(yīng)用的重要研究方向,主要是借助衛(wèi)星遙感圖像快速確定車(chē)輛的類(lèi)型和位置;借助人工智能目標(biāo)檢測(cè)方法檢測(cè)遙感圖像,可節(jié)約大量人力物力。
傳統(tǒng)遙感圖像目標(biāo)檢測(cè)算法效率低、精度較差,如何借助人工智能算法快速判定遙感車(chē)輛信息已成為熱點(diǎn)研究方法。張曼等人[4]提出改進(jìn)YOLO-V2算法(you only look once V2)[5],減少YOLO-V2模型主干網(wǎng)絡(luò)的卷積層數(shù)和維度,并結(jié)合特征金字塔算法,增加目標(biāo)檢測(cè)模型的多尺度檢測(cè)能力。舒軍等人[6]提出在YOLO-V3網(wǎng)絡(luò)(you only look once V3)[7]加入104×104特征分辨率的檢測(cè)模塊,同時(shí)增加主干特征提取網(wǎng)絡(luò)的層數(shù)。方青云等人[8]提出使用輕型主干特征提取網(wǎng)絡(luò)替代YOLO-V3模型的主干網(wǎng)絡(luò)[7],同時(shí)借助聚類(lèi)算法計(jì)算錨框的交并比,有效地提高了模型檢測(cè)效率。謝俊章等人[9]等人提出改進(jìn)YOLO-V4算法(you only look once V4)[10]檢測(cè)遙感圖像,首先使用K均值聚類(lèi)算法計(jì)算檢測(cè)目標(biāo)錨框,然后對(duì)主干特征提取網(wǎng)絡(luò)引入殘差結(jié)構(gòu)提高模型特征提取能力,最后在雙向融合骨干網(wǎng)絡(luò)(path aggregation network,PAnet)[11]結(jié)構(gòu)使用光滑非單調(diào)激活函數(shù)[12],增強(qiáng)模型的非線(xiàn)性特征提取能力。鐘志峰等人[13]提出一種輕型化的改進(jìn)YOLO-V4網(wǎng)絡(luò),借助手機(jī)深度學(xué)習(xí)網(wǎng)絡(luò)[14]替代原YOLO-V4主干網(wǎng)絡(luò),并用加權(quán)雙向特征金字塔結(jié)構(gòu)替換原YOLO-V4的特征融合網(wǎng)絡(luò)。竇其龍等人[15]對(duì)YOLO-V5模型(you only look once V5)[16]的主干提取網(wǎng)絡(luò)進(jìn)行優(yōu)化,并對(duì)自適應(yīng)錨點(diǎn)框重新設(shè)定錨點(diǎn)框尺寸,加快模型訓(xùn)練和檢測(cè)速度。
為了降低單批次訓(xùn)練數(shù)據(jù)大小對(duì)歸一化層的影響和非極大值抑制算法錨框?qū)φ趽踯?chē)輛漏檢等問(wèn)題,本文提出一種改進(jìn)的YOLO-V5算法。首先群歸一化層(group normalization,GN)[17]代替原YOLO-V5的歸一化層(batch normalization,BN),有效地消除了單批次訓(xùn)練數(shù)據(jù)尺寸對(duì)模型的影響;然后使用軟非極大值抑制算法(soft non-maximum suppression, Soft-NMS)[18]替換YOLO-V5中非極大值抑制算法,防止因遮擋漏檢車(chē)輛。
目標(biāo)檢測(cè)比較流行的目標(biāo)檢測(cè)方法主要分為兩大類(lèi):一階和二階目標(biāo)檢測(cè)算法,二階目標(biāo)檢測(cè)主要是基于區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(region-based convolutional neural networks,RCNN)改進(jìn)方法,該類(lèi)方法檢測(cè)精度高,但算法效率較差;一階目標(biāo)檢測(cè)主要基于YOLO改進(jìn)方法,該類(lèi)方法檢測(cè)速度較快,具有更好的范化性。在綜合吸收YOLO系列前四代網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)缺點(diǎn)后,YOLO-V5算法徹底解決了YOLO系列算法的高效率、低精度的問(wèn)題。YOLO-V5網(wǎng)絡(luò)主要分為4個(gè)部分:輸入端網(wǎng)絡(luò)、骨干網(wǎng)絡(luò)、多尺度特征融合網(wǎng)絡(luò)和預(yù)測(cè)網(wǎng)絡(luò)。
YOLO-V5算法的輸入端也可分為3個(gè)部分:馬賽克數(shù)據(jù)增強(qiáng)、自適應(yīng)錨框構(gòu)建和自適應(yīng)圖像縮放。
1.1.1馬賽克數(shù)據(jù)增強(qiáng)
馬賽克數(shù)據(jù)庫(kù)增強(qiáng)主要是通過(guò)對(duì)訓(xùn)練數(shù)據(jù)集圖像進(jìn)行隨機(jī)縮放、隨機(jī)剪裁和隨機(jī)排布等方式拼接,以增加數(shù)據(jù)集的數(shù)量,提高模型的適應(yīng)性。
1.1.2自適應(yīng)錨框計(jì)算
通過(guò)遺傳算法與K均值算法相結(jié)合,迭代計(jì)算得到最大可能召回率的錨框,以此得到自適應(yīng)錨框,可更好地檢測(cè)目標(biāo),提高模型的檢測(cè)精度。
1.1.3自適應(yīng)圖片縮放
為了增加目標(biāo)檢測(cè)算法推理效率,YOLO-V5算法提出自適應(yīng)圖像縮放方法,該方法根據(jù)圖像長(zhǎng)寬值縮放,并對(duì)圖像添加黑邊,以減少計(jì)算量。
骨干網(wǎng)絡(luò)主要包括焦距模塊和跨級(jí)局部網(wǎng)絡(luò)模型(cross stage partial network,CSPNet),焦距模塊對(duì)輸入YOLO-V5骨干網(wǎng)絡(luò)前的訓(xùn)練圖像進(jìn)行切片操作,把訓(xùn)練圖像中每隔一個(gè)像素拿到一個(gè)值,單張訓(xùn)練圖像可得到4張降采樣圖像,如圖1所示。焦距操作不僅擴(kuò)展了通道空間,而且二倍降采樣了特征圖。
圖1 Focus模塊
YOLO-V5算法的多尺度特征特融合網(wǎng)絡(luò),采用了特征金字塔和特征融合網(wǎng)絡(luò)結(jié)構(gòu),并且借鑒了CSPNet網(wǎng)絡(luò)的交叉階段融合結(jié)構(gòu),有效地增加了網(wǎng)絡(luò)特征融合能力,具體如圖2所示。
圖2 多尺度特征融合網(wǎng)絡(luò)
預(yù)測(cè)包括邊界框損失函數(shù)和非極大值抑制(non-maximum suppression, NMS),YOLO-V5使用范化性交并比損失函數(shù)作為邊界框的損失函數(shù),有效解決了邊界框不重合的問(wèn)題,并且提高了預(yù)測(cè)框回歸的速度和精度。在目標(biāo)檢測(cè)預(yù)測(cè)階段使用加權(quán)非極大值抑制,對(duì)多目標(biāo)和有遮擋的目標(biāo)增強(qiáng)了識(shí)別能力,獲得了最優(yōu)目標(biāo)檢測(cè)框。
為了防止訓(xùn)練模型中,出現(xiàn)梯度消失和梯度爆炸等現(xiàn)象,以及增加模型的訓(xùn)練速度,需在每層中添加歸一化層。BN算法是最為常用的歸一化方法,主要對(duì)單批次訓(xùn)練數(shù)據(jù)歸一化,該方法簡(jiǎn)單,效果較好,但對(duì)GPU資源要求較高。由于單張航拍圖像數(shù)據(jù)較大,過(guò)多張單批次訓(xùn)練航拍圖像會(huì)消耗大量的GPU資源,為此本文提出借助GN算法歸一化YOLO-V5模型訓(xùn)練數(shù)據(jù)。
GN歸一化方法在計(jì)算均值和標(biāo)準(zhǔn)差時(shí),僅對(duì)每個(gè)樣本特征圖通道分為G組,然后每組有C/G個(gè)通道,C為特征通道數(shù)量,然后分別計(jì)算每組通道的均值和標(biāo)準(zhǔn)差,分別為
式中,C為每個(gè)樣本特征通道數(shù)量;H、W分別為特征圖的長(zhǎng)和寬,由均值和標(biāo)準(zhǔn)差可得到歸一化特征層為
式中,ε為偏重;γ和β分別是縮放和平移因子,為可學(xué)習(xí)參數(shù)。
非極大值抑制算法是目標(biāo)檢測(cè)的重要組成部分,首先按照錨框得分從高到低排序,然后選中得分最高的錨框,并與被選中錨框重疊的檢測(cè)框抑制。非極大值抑制算法會(huì)導(dǎo)致相鄰且具有重疊部分的目標(biāo)丟失,嚴(yán)重影響YOLO-V5算法的穩(wěn)定性。為了防止目標(biāo)重疊影響YOLO-V5算法的魯棒性,本文提出使用軟性非極大值抑制算法篩選錨框,具體過(guò)程如下:
輸入:B={b1,b2,…,bN},S={s1,s2,…,sN},Nt;
B集合為檢測(cè)到所有預(yù)測(cè)框,S集合為各個(gè)預(yù)測(cè)框得分,Nt為閾值。
輸入:預(yù)選框集合B={b1,b2,…,bN},預(yù)選框得分集合S={s1,s2,…,sN},非極大值抑制算法閾值Nt;
開(kāi)始:
While B集合不為空 do
對(duì)預(yù)選框的得分S排序
預(yù)選框B根據(jù)得分大小排序
Forbi屬于B則
si=sif(iou(M,bi))
結(jié)束
結(jié)束
返回 預(yù)選框和預(yù)選框得分
結(jié)束
通過(guò)衰減與檢測(cè)框M有重疊的相鄰檢測(cè)框的檢測(cè)分?jǐn)?shù)是對(duì)NMS算法的有效改進(jìn)。越是與M高度重疊的檢測(cè)框,越有可能出現(xiàn)假陽(yáng)性結(jié)果,它們的分?jǐn)?shù)衰減應(yīng)該更嚴(yán)重。因此,我們對(duì)NMS原有的分?jǐn)?shù)重置函數(shù)做如下改進(jìn):
Soft-NMS的改進(jìn)有兩種形式,一種是線(xiàn)性加權(quán)的
(5)
一種是高斯加權(quán)的
(6)
本文使用DOTA航拍遙感數(shù)據(jù)集[19]訓(xùn)練模型,搭建Opencv+Pytroch1.2深度學(xué)習(xí)軟件平臺(tái),具體測(cè)試環(huán)境:英偉達(dá)2080Ti顯卡,CUDA版本10.1,編譯語(yǔ)言Python3.6,Batchsize大小為4。
常借助召回率(Recall)、精準(zhǔn)率(Precesion)、平均精確度(average precision,AP)和各類(lèi)別平均精確度(mean average precision,mAP)判斷目標(biāo)檢測(cè)方法的優(yōu)劣性,召回率和精準(zhǔn)率分別表示為
式中,R為召回率;P為精準(zhǔn)率;T為測(cè)試集中正樣本被預(yù)測(cè)為正樣本的數(shù)量;F為測(cè)試集中遺漏樣本的數(shù)量,F為錯(cuò)誤預(yù)測(cè)樣本的數(shù)量。很多情況下,僅借助召回率和精準(zhǔn)率很難評(píng)價(jià)檢測(cè)算法的優(yōu)劣性,故需結(jié)合這兩個(gè)參數(shù)計(jì)算AP值,計(jì)算公式如下:
(9)
式中,N為測(cè)試集中樣本數(shù)量;P(k)為精準(zhǔn)率;R(k)為召回率;C為檢測(cè)目標(biāo)種類(lèi)數(shù);AP通過(guò)計(jì)算召回率和精準(zhǔn)率折線(xiàn)圖的面積得到。mAP為目標(biāo)檢測(cè)的平均識(shí)別準(zhǔn)確度,由AP計(jì)算平均值得到。幀率(frames per second, FPS)為目標(biāo)檢測(cè)模型每秒鐘檢測(cè)圖像數(shù)量,可衡量不同算法的檢測(cè)效率。
本文算法目標(biāo)檢測(cè)效果如圖3所示,不同尺度的車(chē)輛均被檢測(cè)出來(lái),目標(biāo)體積雖小,仍可準(zhǔn)確定位車(chē)輛位置和種類(lèi)信息。在訓(xùn)練階段,本文使用GN歸一化層替代原YOLO-V5中的BN層,可有效消除單批次訓(xùn)練訓(xùn)練數(shù)據(jù)大小對(duì)模型訓(xùn)練的影響,避免出現(xiàn)梯度消失和梯度爆炸;使用Soft-NMS算法替代NMS算法,更有效地定位車(chē)輛,防止因樹(shù)蔭或大樓遮擋造成目標(biāo)丟失。由表1知,本文所提改進(jìn)YOLO-V5算法相較原YOLO-V5算法mAP提高了1.53,FPS增加0.17。
(a)目標(biāo)1
表1 各種目標(biāo)檢測(cè)算法識(shí)別結(jié)果
本文根據(jù)遙感圖像車(chē)輛目標(biāo)檢測(cè)研究現(xiàn)狀,提出一種改進(jìn)YOLO-V5算法。對(duì)YOLO-V5歸一化層改進(jìn),有效消除了模型對(duì)單批次訓(xùn)練數(shù)據(jù)大小的影響,增加模型訓(xùn)練速度;使用Soft-NMS算法框選車(chē)輛目標(biāo)預(yù)選框,可增加YOLO-V5算法抗車(chē)輛目標(biāo)遮擋能力。改進(jìn)后YOLO-V5算法穩(wěn)定性更好,漏檢率下降,可更好地部署在遙感車(chē)輛檢測(cè)場(chǎng)景中。但對(duì)較大尺寸航拍圖像訓(xùn)練難度較大,消耗顯卡資源較多,進(jìn)一步改進(jìn)中將借助分割法訓(xùn)練航拍圖像模型。