王浩雪,曹 杰,邱 誠,劉耀輝
(南京航空航天大學(xué),a.電子信息工程學(xué)院;b.中小型無人機(jī)先進(jìn)技術(shù)工信部重點實驗室,南京 210000)
目標(biāo)檢測作為計算機(jī)視覺的熱門研究方向之一[1],在交通監(jiān)測、軍事監(jiān)控、火災(zāi)預(yù)警、海域安全等領(lǐng)域得到廣泛應(yīng)用。相對地面目標(biāo)檢測視野單一、轉(zhuǎn)場困難和物體間橫向遮擋的缺點,無人機(jī)目標(biāo)檢測具有空中視野良好、檢測場景變換自由、檢測范圍廣的優(yōu)勢。無人機(jī)目標(biāo)檢測作為空中電子眼,代替人類進(jìn)行空中作業(yè),能夠更加方便和安全地應(yīng)用于目標(biāo)檢測各領(lǐng)域。
傳統(tǒng)目標(biāo)檢測一般由區(qū)域選擇、特征提取和分類器構(gòu)成[1],其局限性在于,一方面,基于滑窗的區(qū)域選擇僅適用于背景簡單且特征明顯的圖像檢測,另一方面,手工提取特征的魯棒性較差,時間成本高。相較傳統(tǒng)算法,基于深度學(xué)習(xí)的目標(biāo)檢測采用候選區(qū)域生成算法進(jìn)行區(qū)域選擇,使用卷積神經(jīng)網(wǎng)絡(luò)直接提取更加復(fù)雜多變的抽象特征信息,增強(qiáng)了算法的魯棒性,同時提高了算法的實時性。
YOLO算法[2]自2015年被提出以來,因其獨(dú)樹一幟的檢測速度對深度學(xué)習(xí)下的目標(biāo)檢測算法提出了新的標(biāo)準(zhǔn)和要求。相對于R-CNN系列[3]的兩階段目標(biāo)檢測器,YOLO算法作為單階段目標(biāo)檢測器的典例,去除了提取區(qū)域候選框的步驟,直接在卷積神經(jīng)網(wǎng)絡(luò)中進(jìn)行特征提取和回歸目標(biāo)信息,輸入檢測對象在模型中學(xué)習(xí)后通過模型輸出檢測結(jié)果,實現(xiàn)了端到端的檢測方式。更新到第四代的YOLOv4[4]已經(jīng)具有65 幀/s的檢測速度及43.5%的mAP(MS COCO數(shù)據(jù)集),具有比肩R-CNN系列算法[5]的精確度和SSD算法[6]的檢測速度,實現(xiàn)了速度與精度上的平衡。S-YOLOv4[7]是在保持原YOLOv4框架不變的基礎(chǔ)上對其網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行復(fù)合縮放后的網(wǎng)絡(luò)模型,模型參數(shù)和占用內(nèi)存大小都更適用于中低端設(shè)備。綜合考慮,將其應(yīng)用于無人機(jī)航拍圖像目標(biāo)檢測。
針對無人機(jī)圖像場景復(fù)雜,檢測目標(biāo)尺度變化性大且小目標(biāo)數(shù)量多的特點,本文在原算法的基礎(chǔ)上新增一層針對小目標(biāo)的回歸檢測層,以更好地進(jìn)行多尺度檢測;對主干特征提取網(wǎng)絡(luò)部分改進(jìn),引入SENet(Squeeze and Excitation Networks)[8]提高模型的專注能力;此外,對分類損失應(yīng)用類平滑標(biāo)簽[9]軟化分類標(biāo)簽,提高模型的泛化能力。
YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)主要由CSPDarknet53特征提取模塊,空間金字塔池化(Spatial Pyramid Pooling,SPP)[10]和路徑聚合網(wǎng)絡(luò)(Path Aggregation Network,PANet)[11]特征融合模塊以及進(jìn)行回歸目標(biāo)信息的YOLO檢測層模塊組成,考慮將算法部署于無人機(jī)系統(tǒng),本文使用簡化版YOLOv4網(wǎng)絡(luò)結(jié)構(gòu)——S-YOLOv4,該結(jié)構(gòu)是對YOLOv4進(jìn)行局部跨階段(Cross Stage Partial,CSP)化[12]后,再采用復(fù)合縮放的方法,對其進(jìn)行壓縮所得。
CSP網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 CSP網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 CSP network structure
CSP網(wǎng)絡(luò)結(jié)構(gòu)將卷積網(wǎng)絡(luò)結(jié)構(gòu)拆分成兩部分,一部分在卷積塊后進(jìn)行殘差模塊或者卷積堆疊,另一部分則進(jìn)行少量卷積處理,然后通過張量拼接等方式將兩部分結(jié)合。CSP網(wǎng)絡(luò)能夠在輕量化網(wǎng)絡(luò)模型的同時保持模型的精度,增強(qiáng)卷積神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)能力。
首先對輸入圖像進(jìn)行縮放、翻轉(zhuǎn)、色域變換等數(shù)據(jù)增強(qiáng)步驟,隨機(jī)抽取其中4張數(shù)據(jù)增強(qiáng)后的圖片按照上下左右4個方位拼接在一起,固定拼接圖像尺寸并將圖像輸入網(wǎng)絡(luò)模型主干網(wǎng)絡(luò)中進(jìn)行特征提取,提取后的特征圖部分進(jìn)入路徑聚合網(wǎng)絡(luò)進(jìn)行上采樣融合和8倍、16倍和32倍下采樣,部分進(jìn)入空間金字塔網(wǎng)絡(luò)中使用1×1,5×5,9×9,13×13的卷積層進(jìn)行空間池化后張量拼接,將經(jīng)過空間金字塔網(wǎng)絡(luò)和路徑聚合網(wǎng)絡(luò)充分融合后的特征圖在YOLO檢測層中進(jìn)行預(yù)測,特征圖的輸出維度為S×S×3×(4+1+cclasses),YOLO檢測層每層設(shè)置3個錨框,每個框有4維預(yù)測框數(shù)值,即tx,ty,tw,th,分別表示目標(biāo)中心點坐標(biāo)x,y和寬w、高h(yuǎn)對偏移量進(jìn)行相應(yīng)處理后的數(shù)據(jù),1代表1維預(yù)測框置信度,表示所有置信度閾值組成1維數(shù)據(jù),cclasses代表cclasses維檢測目標(biāo)類別數(shù),S×S表示輸入圖像劃分的網(wǎng)格尺寸。在YOLO層中通過預(yù)測值與真實值比對進(jìn)行損失計算,然后通過反向傳播更新梯度進(jìn)行學(xué)習(xí),最后通過非極大值抑制法進(jìn)行后處理,剔除不合適的錨框從而選出最合適的預(yù)測框。
目標(biāo)檢測通用評價標(biāo)準(zhǔn)主要有精確率(Precision)、召回率(Recall)和平均精確率均值(mean Average Precision,mAP)等,其算式分別為
PPrecision=PT/(PT+PF)
(1)
RRecall=PT/(PT+NF)
(2)
(3)
式中:PT表示正確檢測目標(biāo)數(shù);PF表示錯誤檢測目標(biāo)數(shù);NF表示漏檢目標(biāo)數(shù);m表示所有類別數(shù);PA表示召回率在[0,1]范圍內(nèi)的精確率均值(即AP值);PmAP表示所有類別的平均AP值,是精確率和召回率的統(tǒng)籌考慮。
S-YOLOv4特征提取網(wǎng)絡(luò)主體結(jié)構(gòu)是CSP殘差網(wǎng)絡(luò)結(jié)構(gòu),它在每個階段融合局部感受野內(nèi)的空間和通道間特征信息來構(gòu)建特征映射,并且默認(rèn)每個通道是同等重要的,但是在特征提取網(wǎng)絡(luò)結(jié)構(gòu)中,不同通道的重要性應(yīng)該是有差異的。在特征提取模塊中加入通道域的SE注意力機(jī)制,利用卷積網(wǎng)絡(luò)通道之間的相互作用和彼此依賴的特性來建立模型,并對網(wǎng)絡(luò)通道特征進(jìn)行重標(biāo)定,使卷積網(wǎng)絡(luò)自動學(xué)習(xí)全局特征信息并突出有用特征信息,抑制其他不太重要的特征信息[8],使模型判斷更加準(zhǔn)確。
SE注意力機(jī)制結(jié)構(gòu)如圖2所示,主要包括壓縮、激勵和重標(biāo)定3個過程。其中,W和H分別代表輸入網(wǎng)絡(luò)中整個特征圖的寬和高。
圖2 SE注意力機(jī)制結(jié)構(gòu)圖Fig.2 Structure of squeeze and excitation attention mechanism
1)壓縮。對于一個輸入維度為W×H×C的特征圖,首先通過全局平均池化將其壓縮為1×1×C,即
(4)
式中:sc表示壓縮后的輸出映射;xc∈RW×H,為輸入的特征映射。
2)激勵。擠壓后的特征圖進(jìn)入兩個全連接層通過先降維(輸出為1×1×C/r)再升維(輸出為1×1×C)的處理方式增加非線性過程,再通過Sigmoid層得到1×1×C的特征圖。
ec=σ(w2δ(w1sc))
(5)
3)重標(biāo)定。將輸入的W×H×C的特征圖與激勵后的1×1×C的特征圖進(jìn)行矩陣全乘以得到一個新的W×H×C特征圖。通過兩個全連接層和相應(yīng)的激活函數(shù)構(gòu)建通道間的相關(guān)性,即
yc=ec·xc
(6)
式中,yc=[y1y2…yC],表示輸入特征映射與其對應(yīng)通道權(quán)重參數(shù)相乘的結(jié)果。
S-YOLOv4分別在8倍、16倍和32倍下采樣處設(shè)有YOLO檢測層,檢測不同尺度的目標(biāo)。原算法擬合COCO數(shù)據(jù)集在每個檢測層設(shè)置3個不同尺度的錨框,大小分別為(12,16),(19,36),(40,28),(36,75),(76,55),(72,146),(142,110),(192,243),(459,401),單位為像素。針對無人機(jī)航拍圖像高度高、目標(biāo)尺度偏小,且小型目標(biāo)數(shù)量偏多的特點,本文在原網(wǎng)絡(luò)結(jié)構(gòu)的基礎(chǔ)上,在4倍下采樣處新增小目標(biāo)檢測層。新增檢測層后算法原預(yù)設(shè)錨框的尺寸與航拍圖像數(shù)據(jù)集的適配度不高,因此再根據(jù)K-means++[13]聚類算法,對航拍圖像數(shù)據(jù)集重新聚類生成12個預(yù)設(shè)錨框尺度。其中,新增負(fù)責(zé)檢測極小目標(biāo)的錨框尺度為(8,14),(11,6),(13,24),負(fù)責(zé)檢測小目標(biāo)的尺度為(16,16),(21,27),(22,10),負(fù)責(zé)檢測檢測中目標(biāo)的尺度為(26,20),(28,50),(30,13),負(fù)責(zé)檢測大目標(biāo)的尺度為(46,31),(55,58),(101,121)。
新增檢測層網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 新增檢測層網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Network structure of the newly added detection layer
S-YOLO在處理目標(biāo)檢測分類問題時,將輸入圖像切分為S×S的網(wǎng)格,判斷檢測目標(biāo)中心點是否在當(dāng)前網(wǎng)格中,若在,則當(dāng)前網(wǎng)格負(fù)責(zé)檢測該目標(biāo),然后對比預(yù)測框和真實框進(jìn)行損失計算。對于多目標(biāo)檢測,分類損失使用交叉熵?fù)p失函數(shù)
(7)
(8)
式中:ε為平滑因子;Nclass表示類別數(shù)量。當(dāng)n分類的獨(dú)熱標(biāo)簽平滑后,會降低對正確分類的獎勵和錯誤分類的懲罰,在計算損失時減小過擬合的可能性,從而提高模型的泛化能力。
圖4為標(biāo)簽平滑示例。
圖4 標(biāo)簽平滑示例Fig.4 An example of label smoothing
本實驗訓(xùn)練操作系統(tǒng)為Windows10,圖像處理器(GPU)為NVIDIA GeForce RTX 2060,使用開發(fā)框架為PyTorch。無人機(jī)目標(biāo)檢測平臺為掠食者680無人機(jī),配置飛螢8s攝像頭。訓(xùn)練數(shù)據(jù)集采用航拍開源數(shù)據(jù)集DOTAv1.0,由于數(shù)據(jù)集尺寸長寬比差大,對數(shù)據(jù)集進(jìn)行切分,切分后數(shù)據(jù)集樣本輸入尺度大小統(tǒng)一為640×640,樣本數(shù)量為7710。設(shè)置訓(xùn)練集樣本與驗證集樣本比例為5960∶1750,同時測試集樣本即驗證集樣本。
設(shè)置初始學(xué)習(xí)率為0.002 61,使用學(xué)習(xí)率余弦退火策略進(jìn)行學(xué)習(xí)率更新,使用Adam優(yōu)化器,設(shè)置第一個動量衰減因子為0.937。改進(jìn)算法訓(xùn)練總損失見圖5。
圖5 改進(jìn)算法訓(xùn)練損失Fig.5 Training loss of the improved algorithm
訓(xùn)練300次迭代后,損失函數(shù)趨于平穩(wěn),變化幅度較小,說明學(xué)習(xí)率設(shè)置合理,loss值最終穩(wěn)定在0.21~0.22,訓(xùn)練最終處于收斂狀態(tài)。
為評價模型好壞,對測試集樣本進(jìn)行測試,測試類別為小型車輛、大型車輛、飛機(jī)、船、網(wǎng)球場。改進(jìn)前、后指標(biāo)對比如表1所示。
表1 S-YOLOv4與改進(jìn)S-YOLOv4性能指標(biāo)對比Table 1 Performance comparison between S-YOLOv4 and Improved-S-YOLOv4
改進(jìn)算法在原算法的基礎(chǔ)上平均精確率提高了3.4%,其中:小型車輛的召回率提高12%,平均精確率提高6.3%;大型車輛、飛機(jī)和船的召回率和平均精確率均有所提升;大型目標(biāo)網(wǎng)球場的召回率和平均精確率只分別下降了0.3%和0.4%。因為新增一層針對小目標(biāo)的分辨率為160×160的檢測層,在該檢測層上會產(chǎn)生76 800個預(yù)測錨框,是原算法產(chǎn)生錨框數(shù)量的3倍,小型錨框的數(shù)量過多會輕微干擾大型目標(biāo)的檢測結(jié)果。從實驗總體結(jié)果上看,改進(jìn)算法在保證大型目標(biāo)較高平均精確率的前提下,提升了所有小目標(biāo)和中小目標(biāo)的平均精確率,并且檢測速度達(dá)到42 幀/s,達(dá)到了實時性要求。改進(jìn)前、后檢測情況對比如圖6所示。
圖6 改進(jìn)前、后檢測結(jié)果對比Fig.6 Result of S-YOLOv4 and Improved-S-YOLOv4
由圖6可見,改進(jìn)算法相較原算法檢測出更多的小目標(biāo),召回率和平均精確率都有所提升。無人機(jī)航拍圖像檢測如圖7所示,由圖可知,目標(biāo)檢測情況良好。
圖7 無人機(jī)圖像檢測結(jié)果Fig.7 Result of UAV image detection
針對無人機(jī)航拍圖像場景復(fù)雜,檢測目標(biāo)數(shù)量多且尺度小導(dǎo)致檢測精確度不高的問題,本文在所提出的S-YOLOv4算法基礎(chǔ)上,在主干特征提取網(wǎng)絡(luò)階段中增加SE注意力機(jī)制,使網(wǎng)絡(luò)學(xué)習(xí)全局信息選擇性地強(qiáng)調(diào)有用信息,增強(qiáng)通道間注意力;在4倍下采樣處新增一層分辨率為160×160的檢測層來檢測更小尺度的目標(biāo);在分類損失上應(yīng)用類平滑標(biāo)簽防止過擬合提高模型的泛化能力。改進(jìn)算法在保證航拍圖像目標(biāo)檢測的實時性的同時,mAP提高了3.4%。