梁棟,高賽,孫涵,劉寧鐘
1.南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211106 2.模式分析與機(jī)器智能工業(yè)和信息化部重點(diǎn)實(shí)驗(yàn)室,南京 211106 3.軟件新技術(shù)與產(chǎn)業(yè)化協(xié)同創(chuàng)新中心,南京 211106
對(duì)于快速運(yùn)動(dòng)的小型無(wú)人機(jī),在檢測(cè)時(shí)有兩個(gè)挑戰(zhàn):① 無(wú)人機(jī)與相機(jī)的相對(duì)快速運(yùn)動(dòng),容易產(chǎn)生成像運(yùn)動(dòng)模糊,導(dǎo)致無(wú)人機(jī)外觀特征改變或丟失;② 小型無(wú)人機(jī)或者距離較遠(yuǎn)的無(wú)人機(jī),其外觀特征不明顯,容易與飛鳥等類別產(chǎn)生混淆。
在視覺檢測(cè)問題中,以Faster RCNN(Regions with CNN feature)[1]為代表的兩階段檢測(cè)方法準(zhǔn)確率高于以YOLO(You Only Look Once)[2]和SSD(Single Shot MultiBox Detector)[3]為代表的單階段檢測(cè)方法。兩階段檢測(cè)方法首先提取出候選區(qū)域,然后對(duì)候選框進(jìn)行分類和回歸。因此,通常兩階段檢測(cè)方法比單階段檢測(cè)方法運(yùn)算速度慢。RetinaNet[4]作為單階段檢測(cè)方法,采用Focal loss損失函數(shù),有效解決了類不平衡帶來(lái)的準(zhǔn)確度低的問題,同時(shí)也保持了較高的檢測(cè)速度。
在視覺跟蹤問題中,跟蹤主要有判別類和生成類兩種跟蹤方式。核相關(guān)濾波器(Kernelized Correlation Filters,KCF)[5]是一種典型的判別類跟蹤方法。初始化KCF時(shí),由目標(biāo)區(qū)域生成循環(huán)矩陣,利用循環(huán)矩陣在傅里葉域可對(duì)角化的性質(zhì),將空域上的卷積運(yùn)算轉(zhuǎn)化為頻域上的相關(guān)運(yùn)算,以此持續(xù)修正跟蹤框位置。該方法巧妙利用了循環(huán)矩陣對(duì)角化特性,大幅降低了計(jì)算量,提高了跟蹤速度。
然而,對(duì)于小型無(wú)人機(jī)的檢測(cè)任務(wù),由于目標(biāo)微小、觀測(cè)距離遠(yuǎn)、背景復(fù)雜且運(yùn)動(dòng)速度快,常出現(xiàn)外觀信息缺失和運(yùn)動(dòng)模糊的問題,現(xiàn)有目標(biāo)檢測(cè)方法往往難以確保無(wú)人機(jī)目標(biāo)的逐幀檢測(cè)[6-9]。而對(duì)于上述情況,目標(biāo)軌跡的持續(xù)跟蹤可以彌補(bǔ)目標(biāo)檢測(cè)的不足。然而,現(xiàn)有目標(biāo)跟蹤算法的不足在于,對(duì)下一幀目標(biāo)的位置點(diǎn)估計(jì)通常局限于指定鄰域范圍內(nèi)。一旦無(wú)人機(jī)和相機(jī)的相對(duì)快速運(yùn)動(dòng)導(dǎo)致了下一幀目標(biāo)所在位置偏移過大時(shí),將產(chǎn)生錯(cuò)誤的跟蹤結(jié)果。因此,需要對(duì)場(chǎng)景進(jìn)行運(yùn)動(dòng)補(bǔ)償或者對(duì)無(wú)人機(jī)進(jìn)行重定位,以避免跟蹤錯(cuò)誤。
文獻(xiàn)[6-7]首次針對(duì)運(yùn)動(dòng)相機(jī)下的無(wú)人機(jī)檢測(cè)問題開展了專門研究。利用在視頻幀序列中的運(yùn)動(dòng)信息提取出時(shí)空立方體[10],進(jìn)一步篩選時(shí)空立方體中的候選區(qū)域,再對(duì)目標(biāo)候選框進(jìn)行類別分類和軌跡回歸。在候選框軌跡回歸時(shí),引入了運(yùn)動(dòng)補(bǔ)償機(jī)制,增強(qiáng)了回歸器的精度和魯棒性。上述工作的實(shí)驗(yàn)結(jié)果表明,幀間運(yùn)動(dòng)信息的有效引入對(duì)無(wú)人機(jī)檢測(cè)算法的性能提升至關(guān)重要。
本文提出了RetinaNet與KCF結(jié)合的無(wú)人機(jī)檢測(cè)算法[11-12]。KCF跟蹤軌跡提供幀間目標(biāo)運(yùn)動(dòng)信息,利用跟蹤軌跡抑制RetinaNet檢測(cè)器的虛警率,跟蹤結(jié)果同時(shí)彌補(bǔ)RetinaNet漏警而造成的目標(biāo)丟失。另一方面,RetinaNet檢測(cè)結(jié)果間歇性提供可以持續(xù)修正跟蹤結(jié)果。針對(duì)觀測(cè)場(chǎng)景中小型無(wú)人機(jī)或者距離較遠(yuǎn)的無(wú)人機(jī)其外觀特征不明顯的問題,在RetinaNet模型中引入低層特征信息,彌補(bǔ)高層特征層所忽略的圖像細(xì)節(jié),使RetinaNet對(duì)小目標(biāo)具有更強(qiáng)的檢測(cè)能力。針對(duì)KCF在特定場(chǎng)景下不適用的問題,引入對(duì)觀測(cè)場(chǎng)景紋理自適應(yīng)的相機(jī)運(yùn)動(dòng)補(bǔ)償策略選擇對(duì)相機(jī)進(jìn)行運(yùn)動(dòng)補(bǔ)償或?qū)o(wú)人機(jī)重定位,增強(qiáng)了跟蹤器在極端場(chǎng)景下的魯棒性。
RetinaNet采用單階段檢測(cè)器[3,13-14]的思想,考慮到檢測(cè)精度和速度的均衡,主干網(wǎng)絡(luò)選用深度殘差卷積神經(jīng)網(wǎng)絡(luò)ResNet[15]中的ResNet-50網(wǎng)絡(luò)結(jié)構(gòu)。由于卷積運(yùn)算過程中特征層的尺寸隨著網(wǎng)絡(luò)層的增加而減小,高層特征更注意全局信息而低層特征更注意細(xì)節(jié)信息。此方法采用高低層特征融合的特征金字塔結(jié)構(gòu),并在多層特征圖后接目標(biāo)類別分類和檢測(cè)框位置回歸2個(gè)子網(wǎng)絡(luò),使該檢測(cè)模型具有多尺度檢測(cè)的能力。
傳統(tǒng)的兩階段目標(biāo)檢測(cè)算法在分類和檢測(cè)框回歸之前需要完成候選區(qū)域提取,單階段檢測(cè)算法無(wú)需候選區(qū)域提取過程,往往運(yùn)行速度較快。然而,目標(biāo)檢測(cè)問題是典型的類不平衡問題,由于開放場(chǎng)景下視頻背景的多樣性,訓(xùn)練所需的負(fù)樣本(即視頻背景)的樣本數(shù)量往往遠(yuǎn)大于正樣本數(shù)量(無(wú)人機(jī)目標(biāo))。然而,在以最小化損失函數(shù)為目的的模型訓(xùn)練過程中,大量負(fù)類樣本的引入往往造成訓(xùn)練過程中負(fù)類權(quán)重過大(即分類器更傾向于將樣本預(yù)測(cè)為負(fù)類),導(dǎo)致檢測(cè)精度下降。為了解決類不平衡造成的檢測(cè)器性能下降問題,RetinaNet采用了如式(1)和式(2)的Focal loss作為損失函數(shù):
(1)
loss=-α(1-Pt)γlgPt
(2)
式中:p為網(wǎng)絡(luò)預(yù)測(cè)是否為正類的概率值,p∈(0,1)。正類樣本標(biāo)簽y=1,p的優(yōu)化目標(biāo)為趨近于1。負(fù)類樣本標(biāo)簽y=-1,p的優(yōu)化目標(biāo)為趨近于0。通過Pt來(lái)描述p,等同于將所有樣本的Pt優(yōu)化為1。
在式(2)中,α是正負(fù)樣本參數(shù),在本系統(tǒng)中,因?yàn)槟繕?biāo)檢測(cè)算法中負(fù)類樣本數(shù)量遠(yuǎn)大于正類樣本,對(duì)于正類樣本,取α=1,對(duì)于負(fù)類樣本,取α=0.25,從而使得正樣本對(duì)于模型損失函數(shù)的影響大于負(fù)類樣本,解決正負(fù)樣本失衡的問題。γ是調(diào)節(jié)難易樣本對(duì)于損失函數(shù)貢獻(xiàn)的參數(shù),對(duì)于困難樣本,Pt越小,那么(1-Pt)γ越大,從而產(chǎn)生相對(duì)大的損失。同理,對(duì)于簡(jiǎn)單樣本,Pt越大,則(1-Pt)γ越小,從而產(chǎn)生小的損失,將模型訓(xùn)練的重點(diǎn)放在困難的樣本上。
RetinaNet結(jié)構(gòu)如圖1,C1~C5是ResNet網(wǎng)絡(luò)下采樣生成的特征圖,P3~P7是特征金字塔網(wǎng)絡(luò)。P5層由C5層得到,P4層由C5層上采樣結(jié)果與C4層相加得到,P3層由C4層上采樣結(jié)果與C3層相加得到,P6層則由P5層下采樣得到,P7層則由P6層下采樣得到。P3層和P4層通過2層特征相加的方式得到,既保留了高層特征,又融合了低層特征。P3~P7層都連接著檢測(cè)框分類子網(wǎng)和回歸框位置回歸子網(wǎng),其中分類子網(wǎng)和回歸子網(wǎng)是2個(gè)全卷積層網(wǎng)絡(luò)[16],輸入的特征圖有256個(gè)通道,與256個(gè)濾波器做4次卷積。在分類子網(wǎng)中,卷積4次后的特征圖與K×A個(gè)濾波器做卷積,得到K×A個(gè)通道特征圖;在回歸子網(wǎng)中,卷積4次后的特征圖與4×A個(gè)濾波器做卷積,得到4×A個(gè)通道特征圖。其中A表示每個(gè)點(diǎn)映射到原圖的候選框(稱之為anchor)數(shù)量,K表示目標(biāo)種類。
圖1 RetinaNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 RetinaNet structure
KCF是一種判別式跟蹤方法,這類方法在跟蹤過程中訓(xùn)練一個(gè)目標(biāo)檢測(cè)器,使用目標(biāo)檢測(cè)器去檢測(cè)下一幀預(yù)測(cè)位置是否是目標(biāo),然后再使用新檢測(cè)結(jié)果去更新訓(xùn)練集進(jìn)而更新目標(biāo)檢測(cè)器。KCF使用目標(biāo)周圍區(qū)域的循環(huán)矩陣采集正負(fù)樣本,利用脊回歸[17]訓(xùn)練目標(biāo)檢測(cè)器,并利用循環(huán)矩陣在傅里葉空間可對(duì)角化的性質(zhì)將矩陣的運(yùn)算轉(zhuǎn)化為向量的基本積,大大降低了運(yùn)算量,提高了運(yùn)算速度,使算法滿足實(shí)時(shí)性要求。
脊回歸模型:
f(x)=WTx
(3)
式中:x為輸入數(shù)據(jù);W為回歸模型的參數(shù)矩陣。脊回歸的損失函數(shù)就是在最小二乘回歸的基礎(chǔ)上加上W的F范數(shù)作為懲罰項(xiàng),即
(4)
式(4)對(duì)W求導(dǎo),令導(dǎo)數(shù)等于0,得到脊回歸器:
W=(XHX+λI)-1XHy
(5)
式中:X為輸入數(shù)據(jù),由循環(huán)矩陣得到;λ為懲罰項(xiàng)系數(shù),不小于0;y為真值。
由基向量x生成循環(huán)矩陣X的過程為
循環(huán)矩陣基向量x:
x=[x1,x2,…,xn]
(6)
位移量q:
(7)
生成循環(huán)矩陣X:
m=0,1,…,n-1
(8)
(9)
通過核相關(guān)將線性回歸拓展到非線性回歸的回歸模型:
(10)
式中:β為在傅里葉域下的回歸系數(shù),基于式(3)的最終回歸模型為
(11)
KCF利用循環(huán)矩陣在傅里葉域可對(duì)角化的性質(zhì),將空域上的卷積運(yùn)算轉(zhuǎn)化為頻域上的相關(guān)運(yùn)算,以此持續(xù)修正跟蹤框位置。該方法利用循環(huán)矩陣對(duì)角化特性,大幅降低了計(jì)算量,提高了跟蹤速度。
相機(jī)運(yùn)動(dòng)補(bǔ)償?shù)幕舅悸肥窃O(shè)法求出相機(jī)在當(dāng)前幀與歷史幀之間的運(yùn)動(dòng)偏移量。目前常用的相機(jī)運(yùn)動(dòng)補(bǔ)償方法包括隨機(jī)抽樣一致(Random Sample Consensus)算法[18]與相位相關(guān)[19-20]等。
圖2(a)中綠色框表示第n幀目標(biāo)區(qū)域,黑色框表示目標(biāo)區(qū)域2.5倍Padding的候選區(qū)域。候選區(qū)域中心點(diǎn)坐標(biāo)為(x1,y1)。圖2(b)中黑色框由圖2(a)中候選區(qū)域得到,如果不進(jìn)行運(yùn)動(dòng)補(bǔ)償,在第n+1幀處提取出與第n幀相同的候選區(qū)域時(shí),無(wú)人機(jī)只有一部分在候選區(qū)域中。
圖3展示了修正圖2中候選區(qū)域位置的過程:第n幀圖片與第n+1幀圖片計(jì)算出偏移矩陣,偏移矩陣中包括水平方向和豎直方向平移量以及旋轉(zhuǎn)量等信息。利用偏移矩陣計(jì)算出第n幀候選區(qū)域中心點(diǎn)坐標(biāo)(x1,y1)經(jīng)過補(bǔ)償后對(duì)應(yīng)于第n+1幀的坐標(biāo)(x2,y2),以(x2,y2)為中心點(diǎn)提取候選區(qū)域,無(wú)人機(jī)將全部位于候選區(qū)域內(nèi)。
圖4展示了Ransac和相位相關(guān)方法計(jì)算偏移量的過程。如圖4(b)所示,提取出相鄰2幀圖片的特征點(diǎn),完成2幀圖片的匹配并計(jì)算出偏移量。如圖4(c)所示,相位相關(guān)首先利用傅里葉變換,將相鄰2幀從圖像灰度域變換到頻域,利用相關(guān)定理,計(jì)算出頻域最大響應(yīng)點(diǎn),該點(diǎn)便是前后2幀位置差的響應(yīng),據(jù)此得到相機(jī)幀間運(yùn)動(dòng)偏移量。其中X和Y表示圖片坐標(biāo)點(diǎn),對(duì)應(yīng)的Z表示該點(diǎn)處的狄拉克函數(shù)值。
但是,上述2種方法在空天背景下可能存在以下問題:Ransac進(jìn)行特征點(diǎn)擬合時(shí),對(duì)特征點(diǎn)數(shù)量有要求。然而當(dāng)空天背景紋理較少時(shí),提取的特征點(diǎn)數(shù)量往往不足,Ransac計(jì)算出的偏移量將存在較大誤差。相位相關(guān)算法通過全局圖像信息獲得幀間偏移量,避免了特征點(diǎn)提取,但也因此計(jì)算復(fù)雜度較高。
圖2 無(wú)人機(jī)只有一部分在取樣框內(nèi)Fig.2 Only part of UAV in Padding_bbox
圖3 利用偏移矩陣修正候選區(qū)域位置Fig.3 Correction of candidate regions with offset matrix
圖4 Ransac與相位相關(guān)計(jì)算2幀偏移量Fig.4 Offset calculation of two frames by Ransac and phase correlation
RetinaNet有著較快的檢測(cè)速度和較高的精確率,但是針對(duì)小目標(biāo)的檢測(cè),如果不進(jìn)行改進(jìn),則存在較高漏警率的問題。KCF是相對(duì)快速魯棒的跟蹤算法,對(duì)背景雜亂和旋轉(zhuǎn)等視頻都有較好的跟蹤結(jié)果。但是KCF跟蹤局限于上一幀目標(biāo)鄰域內(nèi),如果相機(jī)或無(wú)人機(jī)快速運(yùn)動(dòng),導(dǎo)致下一幀目標(biāo)不在上一幀目標(biāo)鄰域內(nèi),則無(wú)法跟蹤到目標(biāo),因此需要對(duì)相機(jī)進(jìn)行運(yùn)動(dòng)補(bǔ)償或?qū)o(wú)人機(jī)重定位。RetinaNet與KCF結(jié)合,可以發(fā)揮兩者的優(yōu)點(diǎn)同時(shí)又能互相彌補(bǔ)不足。面對(duì)小目標(biāo)或者特征丟失嚴(yán)重的目標(biāo),RetinaNet無(wú)法正確檢測(cè)時(shí),可利用KCF實(shí)現(xiàn)持續(xù)軌跡跟蹤,避免目標(biāo)漏警;當(dāng)目標(biāo)被遮擋,KCF將失去跟蹤目標(biāo),RetinaNet檢測(cè)到目標(biāo)后可為KCF重新初始化,恢復(fù)跟蹤軌跡。
在檢測(cè)小目標(biāo)無(wú)人機(jī)時(shí),細(xì)節(jié)信息起到了關(guān)鍵作用。傳統(tǒng)RetinaNet對(duì)P3~P7層做分類和回歸。由于每個(gè)特征層的感受野不同,在設(shè)計(jì)anchor時(shí),P3~P7層對(duì)應(yīng)最佳原始尺寸為{32,64,128,256,512}, 每個(gè)尺寸的anchor對(duì)應(yīng)3種不同的長(zhǎng)寬比{1∶1,1∶2,2∶1},同時(shí)又有3種不同的面積比例{20,21/3,22/3},因此每層共有9種anchor。P3層anchor尺寸為32像素×32像素,因此難以檢測(cè)成像遠(yuǎn)小于32像素×32像素的小目標(biāo)無(wú)人機(jī)。每個(gè)特征層的anchor尺寸主要由感受野決定,如果強(qiáng)制將P3層anchor尺寸設(shè)置為16像素×16像素,則會(huì)出現(xiàn)在原圖中整個(gè)無(wú)人機(jī)提取得到的特征,經(jīng)過P3層anchor回歸后只能得到整個(gè)無(wú)人機(jī)1/4區(qū)域的情況。P2層網(wǎng)絡(luò)有著比P3層更豐富的細(xì)節(jié)特征信息,如果對(duì)P2層也做分類和回歸,能彌補(bǔ)高層網(wǎng)絡(luò)丟失的細(xì)節(jié)特征信息。P2層anchor尺寸為16像素×16像素,加入P2層訓(xùn)練的網(wǎng)絡(luò),對(duì)小于32像素×32像素的無(wú)人機(jī)也有較高的識(shí)別率。在第4節(jié)中,將詳細(xì)探討使用不同特征層對(duì)小目標(biāo)檢測(cè)的性能影響。實(shí)驗(yàn)中驗(yàn)證了加入P2特征層后能明顯提升對(duì)小目標(biāo)無(wú)人機(jī)的檢測(cè)率。
KCF與RetinaNet結(jié)合工作時(shí),將RetinaNet設(shè)置一個(gè)較高的閾值,因此認(rèn)為RetinaNet檢測(cè)到的結(jié)果是可靠的,利用檢測(cè)的結(jié)果去初始化KCF跟蹤器,檢測(cè)結(jié)果持續(xù)修正跟蹤器,跟蹤結(jié)果填補(bǔ)漏警的檢測(cè)結(jié)果,檢測(cè)與跟蹤結(jié)合流程如圖5所示,圖中:n表示圖片的序列號(hào),總共有N幀;IOU(Rn+1,Kn+1)表示檢測(cè)結(jié)果與跟蹤結(jié)果的目標(biāo)區(qū)域交并比;Luav表示無(wú)人機(jī)的位置區(qū)域;Area(Rn-1)表示檢測(cè)結(jié)果的目標(biāo)區(qū)域面積;Area(Kn-1)表示跟蹤結(jié)果的目標(biāo)區(qū)域面積。
初始化當(dāng)RetinaNet檢測(cè)器過于敏感,可能出現(xiàn)虛警檢測(cè)結(jié)果,即背景中的其他目標(biāo)被檢測(cè)為無(wú)人機(jī),采用虛警的結(jié)果對(duì)KCF跟蹤器進(jìn)行初始化,KCF后續(xù)的跟蹤都是不可信的。因此,RetinaNet采用較高的檢測(cè)閾值(在本文實(shí)驗(yàn)中,采用置信度高于0.90的檢測(cè)結(jié)果),以降低虛警的可能。同時(shí),在對(duì)KCF初始化后,將KCF跟蹤結(jié)果與RetinaNet檢測(cè)結(jié)果作比較:
1) RetinaNet沒有檢測(cè)結(jié)果,則取KCF跟蹤結(jié)果作為最終無(wú)人機(jī)目標(biāo)。
2) RetinaNet有檢測(cè)結(jié)果,則計(jì)算KCF跟蹤結(jié)果與檢測(cè)結(jié)果的交并比,判斷兩者的結(jié)果是否一致。如果檢測(cè)和跟蹤的結(jié)果高度一致,最終無(wú)人機(jī)目標(biāo)取面積最大的結(jié)果;如果檢測(cè)結(jié)果與跟蹤結(jié)果不一致,最終無(wú)人機(jī)目標(biāo)采用檢測(cè)結(jié)果,并用檢測(cè)結(jié)果對(duì)KCF跟蹤器進(jìn)行初始化。
圖5 檢測(cè)與跟蹤結(jié)合工作流程圖Fig.5 Flow chart of detection and tracking combination
如圖2所示,初始化KCF時(shí),對(duì)第n幀目標(biāo)框進(jìn)行了2.5倍的Padding操作,跟蹤時(shí),在第n+1幀相同位置提取出和上一幀Padding框一樣大小的區(qū)域,并將圖像灰度域變換到頻域,利用相關(guān)定理找出最大響應(yīng)點(diǎn),從而確定目標(biāo)位置。但是如果由于無(wú)人機(jī)快速運(yùn)動(dòng)或者相機(jī)快速運(yùn)動(dòng),導(dǎo)致了無(wú)人機(jī)不在Padding框內(nèi)或者只有一部分在Padding框內(nèi),則最大響應(yīng)點(diǎn)處將不是無(wú)人機(jī)或者只包含一部分無(wú)人機(jī)。上述情況將導(dǎo)致跟蹤失敗,因此需要以合理方式實(shí)現(xiàn)相機(jī)運(yùn)動(dòng)補(bǔ)償和無(wú)人機(jī)重定位。
對(duì)相機(jī)進(jìn)行運(yùn)動(dòng)補(bǔ)償或者對(duì)無(wú)人機(jī)重新定位,可以有效解決因無(wú)人機(jī)或相機(jī)快速運(yùn)動(dòng)使下一幀目標(biāo)不在上一幀目標(biāo)鄰域內(nèi),從而導(dǎo)致跟蹤失敗的問題。
針對(duì)無(wú)人機(jī)快速運(yùn)動(dòng)造成的跟蹤丟失情況,可以采用光流法[21]對(duì)無(wú)人機(jī)重新定位。
如圖6所示,通過輸入相鄰2幀圖片,計(jì)算出光流場(chǎng),根據(jù)光流場(chǎng)計(jì)算出每個(gè)像素點(diǎn)處運(yùn)動(dòng)速度的大小,該像素點(diǎn)的值表示速度的大小,將由速度大小組成的圖片二值化,利用最小外接矩形將運(yùn)動(dòng)區(qū)域切割出來(lái)。
在所有矩形區(qū)域中,找到無(wú)人機(jī)所在運(yùn)動(dòng)區(qū)域的步驟為首先找出在上一幀目標(biāo)區(qū)域7.5倍Padding后的區(qū)域內(nèi)的所有矩形(KCF在對(duì)上一幀目標(biāo)區(qū)域進(jìn)行2.5倍Padding,重定位時(shí)在此基礎(chǔ)上進(jìn)行3倍Padding),如圖7所示。其次,對(duì)滿足上述條件的矩形區(qū)域計(jì)算出每個(gè)矩形區(qū)域的運(yùn)動(dòng)角度Drect、每個(gè)矩形區(qū)域的運(yùn)動(dòng)速度大小Srect和原始目標(biāo)的bbox 7.5倍Padding區(qū)域的運(yùn)動(dòng)角度Dframe;假設(shè)7.5倍Padding區(qū)域內(nèi)共有m個(gè)矩形,用D[i]~D[m]存儲(chǔ)m個(gè)矩形的運(yùn)動(dòng)信息。
先找出m個(gè)矩形中運(yùn)動(dòng)角度與整個(gè)Padding區(qū)域運(yùn)動(dòng)角度不一致的矩形存儲(chǔ)在B[]中;接著在B[]中找出運(yùn)動(dòng)速度最大的矩形判定為無(wú)人機(jī)所在矩陣;如果所有矩形運(yùn)動(dòng)角度與整個(gè)Padding區(qū)域運(yùn)動(dòng)角度一致,則直接在D中找出運(yùn)動(dòng)角度最大矩形判定為無(wú)人機(jī)所在矩形。偽代碼為
圖6 光流法找出無(wú)人機(jī)所在區(qū)域Fig.6 Detection of UAV area with optical flow
無(wú)人機(jī)重定位偽代碼程序輸入:連續(xù)2幀 輸出:第2幀目標(biāo)所在矩形區(qū)域1. 計(jì)算光流場(chǎng),圖像二值化后求最小外接矩形。2. 計(jì)算出Drect、 Srect和Dframe。3. int i=0, j=04. for i in range(m)5. if(|Dframe-D[i]. Drect|>15)6. B[j]=D[i]7. j+=18. if (B[] 不為空)9. let B[k].Srect=max(B.Srect)10. uav=B[k]11. if (B[] 為空)12. let D[k].Srect=max(D.Srect)13. uav=D[k]
圖7 7.5倍Padding找出候選區(qū)域示意圖Fig.7 Detection of candidate area by 7.5 Padding
Ransac算法需要對(duì)圖片特征點(diǎn)進(jìn)行匹配,如果圖片背景紋理少,則提取的特征點(diǎn)不滿足最低擬合條件,不能計(jì)算出偏移矩陣,無(wú)法進(jìn)行運(yùn)動(dòng)補(bǔ)償。對(duì)于背景紋理多的場(chǎng)景,Ransac算法可以計(jì)算出偏移量從而對(duì)相機(jī)進(jìn)行運(yùn)動(dòng)補(bǔ)償。
相位相關(guān)不需要提取圖片特征點(diǎn),即使是紋理較少的場(chǎng)景,也能在頻域中找到最大相關(guān)峰值,計(jì)算出偏移矩陣,完成運(yùn)動(dòng)補(bǔ)償。但相位相關(guān)存在計(jì)算量較大的問題。
在背景紋理較多的場(chǎng)景中,采用光流法對(duì)目標(biāo)重定位時(shí),由于背景運(yùn)動(dòng)的干擾,最終得到的矩形區(qū)域中,無(wú)人機(jī)很可能與運(yùn)動(dòng)的背景混淆。當(dāng)采用最小外接矩形進(jìn)行運(yùn)動(dòng)區(qū)域分割時(shí),無(wú)人機(jī)與背景存在被一個(gè)矩形區(qū)域包圍的可能性,從而導(dǎo)致錯(cuò)誤的無(wú)人機(jī)重定位結(jié)果。
因此,上述基于光流法實(shí)現(xiàn)無(wú)人機(jī)重定位算法更適用于背景紋理少的場(chǎng)景,而在背景紋理豐富的場(chǎng)景中Ransac算法和相位相關(guān)法更為適用。
在第4節(jié)實(shí)驗(yàn)中將進(jìn)一步探討3種算法的性能。
針對(duì)上述運(yùn)動(dòng)補(bǔ)償算法的不足,本節(jié)提出了通過對(duì)紋理豐富度的觀測(cè),自適應(yīng)的選取運(yùn)動(dòng)補(bǔ)償或目標(biāo)重定位的策略,具體的,在紋理較少的場(chǎng)景使用光流法對(duì)無(wú)人機(jī)重定位,在紋理較多的場(chǎng)景使用相位相關(guān)進(jìn)行相機(jī)運(yùn)動(dòng)補(bǔ)償,在提高整體精確率的同時(shí)確保算法的穩(wěn)定性。
為解決紋理豐富度的觀測(cè)問題,引入差分盒子計(jì)數(shù)法[22-23]統(tǒng)計(jì)出圖片紋理特征。對(duì)于一幅M×M的圖像,可以看成三維空間的一個(gè)曲面。長(zhǎng)為M、寬為M、高為L(zhǎng),其中L為圖像的像素級(jí)數(shù),一取L=256。將其所在平面(M×M)分為R×R大小的網(wǎng)格,在高度上也進(jìn)行相同的劃分,不過劃分的單位為R×L/M。這樣,圖像所在三維空間就被劃分為很多盒子。這樣劃分的目的是使長(zhǎng)寬方向和高度方向的劃分次數(shù)相同。在被劃分成的每個(gè)R×R個(gè)網(wǎng)格內(nèi),找出最大像素值u和最小像素值b,u處于高度方向上第m個(gè)盒子,b處于高度方向上第n個(gè)盒子,則該R×R區(qū)域需要(m-n+1)個(gè)盒子覆蓋所有灰度值。統(tǒng)計(jì)出所有盒子N,分形維數(shù)B=lgN/lgR。由于B是N和R對(duì)應(yīng)直線的斜率,所以需要多次改變R,即網(wǎng)格大小,獲得多個(gè)樣本點(diǎn),最后通過直線擬合求得最終的B。最終的補(bǔ)償方案便是通過差分盒子計(jì)數(shù)法統(tǒng)計(jì)圖片紋理復(fù)雜度:圖片紋理較少的使用光流法對(duì)無(wú)人機(jī)重定位;圖片紋理較多的使用相位相關(guān)對(duì)相機(jī)進(jìn)行運(yùn)動(dòng)補(bǔ)償。
在進(jìn)行實(shí)驗(yàn)時(shí),標(biāo)注了15個(gè)視頻3 500幀VOC格式的無(wú)人機(jī)訓(xùn)練集,在測(cè)試時(shí),選取了5種 不同場(chǎng)景的無(wú)人機(jī)飛行視頻用來(lái)做測(cè)試。這5種場(chǎng)景分別是:① 相機(jī)和無(wú)人機(jī)運(yùn)動(dòng)方向相反; ② 相機(jī)快速運(yùn)動(dòng),無(wú)人機(jī)運(yùn)動(dòng)較慢; ③ 無(wú)人機(jī)快速運(yùn)動(dòng),相機(jī)靜止; ④ 背景紋理較多; ⑤ 背景紋理較少。
文獻(xiàn)[6-7]是專門研究檢測(cè)小目標(biāo)無(wú)人機(jī)的工作,YOLOv3[14]是單階段檢測(cè)方法。因此本文也與上述3種檢測(cè)方法做了對(duì)比實(shí)驗(yàn)。
SiamRPN[24]、ECO(Efficient Convolution Operators for tracking)[25]、DiMP(Discriminative Model Prediction for tracking)[26]是基于深度學(xué)習(xí)的跟蹤方法,本文也與之做了對(duì)比實(shí)驗(yàn)。
RetinaNet、文獻(xiàn)[6]方法、文獻(xiàn)[7]方法、YOLOv3、SiamRPN、ECO和DiMP算法都采用15個(gè)視頻的3 500幀數(shù)據(jù)集進(jìn)行訓(xùn)練。其中RetinaNet、SiamRPN、ECO和DiMP都采用ResNet50作為骨干網(wǎng)絡(luò),其余參數(shù)為原文獻(xiàn)中推薦值。
設(shè)置的消融實(shí)驗(yàn)如下:
方法1只用RetinaNet檢測(cè)。
方法2只用KCF跟蹤。
方法3RetinaNet與KCF結(jié)合的工作方式。
方法4RetinaNet與KCF結(jié)合并且采用相位相關(guān)做運(yùn)動(dòng)補(bǔ)償?shù)墓ぷ鞣绞健?/p>
方法5RetinaNet與KCF結(jié)合并且采用Ransac做運(yùn)動(dòng)補(bǔ)償?shù)墓ぷ鞣绞健?/p>
方法6RetinaNet與KCF結(jié)合并且采用光流法對(duì)目標(biāo)重定位的工作方式。
方法7YOLOv3檢測(cè)方法。
方法8文獻(xiàn)[6]檢測(cè)方法。
方法9文獻(xiàn)[7]檢測(cè)方法。
方法10SiamRPN跟蹤方法。
方法11ECO跟蹤方法。
方法12DiMP跟蹤方法。
方法13本文方法。
為了測(cè)試算法在不同場(chǎng)景下的表現(xiàn),設(shè)計(jì)了分場(chǎng)景實(shí)驗(yàn)如下:
場(chǎng)景1相機(jī)和無(wú)人機(jī)運(yùn)動(dòng)方向相反。
場(chǎng)景2相機(jī)快速運(yùn)動(dòng),無(wú)人機(jī)運(yùn)動(dòng)較慢。
場(chǎng)景3無(wú)人機(jī)快速運(yùn)動(dòng),相機(jī)靜止。
場(chǎng)景4背景紋理較多。
場(chǎng)景5背景紋理較少。
5種場(chǎng)景下的各方法的精確率如表1所示,召回率如表2所示。
精確率和召回率計(jì)算方式為
精確率(precision) = TP/(TP+FP)
召回率(recall) = TP/(TP+FN)
式中:TP為將正類預(yù)測(cè)為正類的數(shù);FP為將負(fù)類預(yù)測(cè)為正類的數(shù);TN為將負(fù)類預(yù)測(cè)為負(fù)類的數(shù);FN為將正類預(yù)測(cè)為負(fù)類的數(shù);
由表1可知,在上述5個(gè)場(chǎng)景中,其中的4個(gè)場(chǎng)景方法13(本文方法)有著最高的檢測(cè)精確率。由于Ransac算法做補(bǔ)償?shù)奶匦?,?duì)于背景紋理較少的場(chǎng)景5,方法5不能正常工作,沒有結(jié)果。
對(duì)比方法3~方法6實(shí)驗(yàn)結(jié)果,由表1和表2可知,在場(chǎng)景1和場(chǎng)景3中方法6精確率和召回率最高,在場(chǎng)景4中方法4精確率和召回率最高。場(chǎng)景4中方法3召回率只有0.341,說明存在檢測(cè)與跟蹤都失效的情況,而對(duì)比方法4~方法6結(jié)果,精確率和召回率都有很大提升。綜上表明在相機(jī)快速運(yùn)動(dòng)(場(chǎng)景1)或無(wú)人機(jī)快速運(yùn)動(dòng)的場(chǎng)景中(場(chǎng)景3、場(chǎng)景4),運(yùn)動(dòng)補(bǔ)償算法或?qū)δ繕?biāo)重定位的引入有助于增強(qiáng)檢測(cè)算法的穩(wěn)定性。注意到在場(chǎng)景1、場(chǎng)景2、場(chǎng)景3和場(chǎng)景5中場(chǎng)景紋理相對(duì)較少,使用光流法對(duì)無(wú)人機(jī)進(jìn)行重定位時(shí),相較2種背景補(bǔ)償方法(方法4和方法5)有著更高的精確率與召回率。在場(chǎng)景紋理最多的場(chǎng)景4中,由于背景運(yùn)動(dòng)的干擾,方法6結(jié)果最差,方法4結(jié)果最好。在3種方法中,方法5場(chǎng)景適應(yīng)性相對(duì)較差,當(dāng)場(chǎng)景紋理較少時(shí),方法5失效(參見方法5場(chǎng)景5結(jié)果)。因此,考慮到檢測(cè)結(jié)果的精確率與召回率,以及對(duì)場(chǎng)景的適應(yīng)性,本文提出的通過觀測(cè)場(chǎng)景紋理自適應(yīng)選擇相位相關(guān)和光流法的工作方式結(jié)果最優(yōu)。
在場(chǎng)景2和場(chǎng)景3中,由于相機(jī)或無(wú)人機(jī)快速運(yùn)動(dòng),導(dǎo)致了無(wú)人機(jī)成像模糊,表1中檢測(cè)方法在這2個(gè)場(chǎng)景中有著較高的精確率,但在表2中檢測(cè)方法有著最低的召回率。實(shí)驗(yàn)表明針對(duì)成像模糊的場(chǎng)景,結(jié)合幀間運(yùn)動(dòng)信息輔助檢測(cè)有助于提高檢測(cè)率。
在場(chǎng)景1中,無(wú)人機(jī)和相機(jī)反向快速運(yùn)動(dòng),引入相機(jī)運(yùn)動(dòng)補(bǔ)償后抵消了相機(jī)運(yùn)動(dòng)帶來(lái)的影響,但無(wú)人機(jī)快速運(yùn)動(dòng)仍影響了少部分跟蹤結(jié)果,因此本文方法比結(jié)果最好的方法11低5%的精確率和召回率。在場(chǎng)景2中,引入相機(jī)運(yùn)動(dòng)補(bǔ)償?shù)窒讼鄼C(jī)運(yùn)動(dòng)帶來(lái)的影響,但由于成像模糊,少部分無(wú)人機(jī)已經(jīng)完全失去無(wú)人機(jī)特征,出現(xiàn)了部分跟蹤失敗的情況,本文方法比結(jié)果最好的方法11低3.33%的精確率和召回率。場(chǎng)景3、場(chǎng)景4和場(chǎng)景5中,無(wú)人機(jī)快速運(yùn)動(dòng),本文方法使用光流法重定位時(shí)有著最高的精確率和召回率。
表1 不同場(chǎng)景下精確率Table 1 Precision in different scenarios
表2 不同場(chǎng)景下召回率Table 2 Recall rates in different scenarios
圖8為不同場(chǎng)景下本文方法與RetinaNet和KCF及其不同結(jié)合方法的軌跡圖比較。其中X和Y表示圖片中的坐標(biāo)位置,T表示時(shí)間信息,對(duì)于連續(xù)的幀序列,幀的序號(hào)表示其處于的時(shí)間點(diǎn)。軌跡圖包含了無(wú)人機(jī)運(yùn)動(dòng)的時(shí)間信息和空間信息。通過對(duì)比檢測(cè)結(jié)果的軌跡與無(wú)人機(jī)真實(shí)運(yùn)動(dòng)的軌跡,可以直觀地判斷不同方法的檢測(cè)性能。
對(duì)RetinaNet進(jìn)行改進(jìn)時(shí),對(duì)比了使用不同網(wǎng)絡(luò)層對(duì)小于32像素×32像素的小目標(biāo)無(wú)人機(jī)的檢測(cè)精確率和召回率,如表3所示。
表3 不同網(wǎng)絡(luò)層組合的精確率和召回率
實(shí)驗(yàn)表明,隨著不斷地加入低層網(wǎng)絡(luò),小目標(biāo)無(wú)人機(jī)的檢測(cè)率逐漸提高。P4層anchor為64像素×64像素,檢測(cè)小于32像素×32像素的無(wú)人機(jī)目標(biāo)時(shí)有很高的漏警率。這一情況在加入P3層后得到了有效改善,P3層anchor為32像素×32像素,能檢測(cè)到32像素×32像素的小目標(biāo)。但是如果無(wú)人機(jī)目標(biāo)小于16像素×16像素則會(huì)出現(xiàn)漏警的情況,并且如果訓(xùn)練集中的小目標(biāo)數(shù)據(jù)較少,即使采用Focal loss損失函數(shù)也不能有效解決小目標(biāo)類不平衡的問題。加入P2層網(wǎng)絡(luò)后,對(duì)小目標(biāo)的檢測(cè)率進(jìn)一步提高。
本文提出了一種檢測(cè)與跟蹤結(jié)合的無(wú)人機(jī)檢測(cè)算法,探究了不同網(wǎng)絡(luò)層組合對(duì)小目標(biāo)的檢測(cè)率,證明了低層網(wǎng)絡(luò)信息的加入的確能提高對(duì)小目標(biāo)的召回率。同時(shí)也提供了針對(duì)特定場(chǎng)景,采用特定網(wǎng)絡(luò)層組合的思路。改進(jìn)的RetinaNet與KCF結(jié)合,RetinaNet檢測(cè)結(jié)果持續(xù)修正KCF跟蹤結(jié)果。針對(duì)RetinaNet產(chǎn)生的虛警結(jié)果,借助跟蹤結(jié)果的軌跡加以抑制。KCF跟蹤的結(jié)果彌補(bǔ)RetinaNet漏警的可能。
針對(duì)KCF跟蹤時(shí)可能遇到的極端情況,提出通過觀測(cè)場(chǎng)景紋理自適應(yīng)的選擇對(duì)相機(jī)進(jìn)行運(yùn)動(dòng)補(bǔ)償或?qū)o(wú)人機(jī)進(jìn)行重定位的策略,增強(qiáng)了KCF在極端情況下的魯棒性。即使在無(wú)人機(jī)或者相機(jī)快速運(yùn)動(dòng)的場(chǎng)景中,補(bǔ)償后的KCF算法依然能進(jìn)行可靠的跟蹤。未來(lái)的工作將是采用更為魯棒有效的跟蹤方式,提高快速運(yùn)動(dòng)小目標(biāo)的檢測(cè)精度。