李 郁,朱 偉
(西安明德理工學(xué)院 智能制造與控制技術(shù)學(xué)院,西安 710124)
近年來(lái),隨著人工智能和無(wú)人機(jī)的快速發(fā)展和廣泛應(yīng)用,基于無(wú)人機(jī)的目標(biāo)跟蹤引起了計(jì)算機(jī)視覺(jué)學(xué)者的研究熱潮。無(wú)人機(jī)場(chǎng)景中的目標(biāo)跟蹤被廣泛應(yīng)用于各個(gè)領(lǐng)域,具有廣闊的應(yīng)用前景和豐富的學(xué)術(shù)研究?jī)r(jià)值[1-3]。然而,目前無(wú)人機(jī)場(chǎng)景下的目標(biāo)跟蹤面臨非常多的問(wèn)題和挑戰(zhàn)。如,跟蹤目標(biāo)較小,跟蹤精度差;相對(duì)速度過(guò)快,導(dǎo)致目標(biāo)丟失;以及在實(shí)際中跟蹤精度受目標(biāo)旋轉(zhuǎn),目標(biāo)遮擋等因素影響。因此,本文為了解決目標(biāo)遮擋環(huán)境下,跟蹤精度不高的問(wèn)題,提出了一種新的目標(biāo)跟蹤算法(MKBP)。該算法在均值漂移(Meanshift)目標(biāo)跟蹤算法[4]的基礎(chǔ)上,采用動(dòng)態(tài)參數(shù)選擇的方法,將卡爾曼(Kalman)濾波算法[5-6]與軌跡預(yù)測(cè)函數(shù)和BP神經(jīng)網(wǎng)絡(luò)算法[7]相結(jié)合,解決了運(yùn)動(dòng)過(guò)程中的目標(biāo)遮擋問(wèn)題跟蹤;為了提高算法性能,在該算法中增加了目標(biāo)檢測(cè)機(jī)制,通過(guò)PCA-Sift算法檢測(cè)丟失的目標(biāo)[8],恢復(fù)跟蹤目標(biāo)并繼續(xù)跟蹤。
在這一節(jié),將會(huì)介紹MKBP算法的原理,以及工作機(jī)制。
基于均值漂移的目標(biāo)跟蹤算法通過(guò)計(jì)算目標(biāo)區(qū)域和候選區(qū)域像素的特征值概率,得到目標(biāo)模型和候選模型的描述,然后利用相似函數(shù)來(lái)度量初始幀目標(biāo)模型與當(dāng)前幀候選模板之間的相似度[9]。使相似函數(shù)最大化并得到目標(biāo)模型的均值漂移向量的候選模型。這個(gè)向量是目標(biāo)從初始位置移動(dòng)到正確位置的向量。由于均值漂移算法收斂速度快,通過(guò)不斷迭代計(jì)算均值漂移向量,算法最終會(huì)收斂到目標(biāo)的真實(shí)位置,從而達(dá)到跟蹤的目的。
均值漂移目標(biāo)跟蹤算法的相關(guān)公式如式(1)所示:
(1)
在初始幀中的跟蹤幀中的位置信息由{xi}表示,其中n是幀中的像素總數(shù),x0是中心位置,u是某個(gè)特征值(u=1,…,m)。kE(x)是epanechikov核函數(shù),h是帶寬,b(xi)是直方圖的索引函數(shù),是對(duì)應(yīng)于目標(biāo)幀中每個(gè)像素的RGB值。它是一個(gè)Delta函數(shù),用于確定對(duì)應(yīng)于b(xi)的值是否屬于特征值u,C是正則化參數(shù)。ρ值為巴氏系數(shù),其值在0~1之間,ρ值越大,表示兩種模型越相似。在這里Z是每次搜索獲得的新位置,wi為權(quán)重,m為特征值總數(shù),g(x)=-k/(x)。在每一幀的迭代過(guò)程中,候選模板的中心位置y被Z不斷更新,直到巴氏系數(shù)達(dá)到最大值。
該算法利用卡爾曼和BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)機(jī)制,通過(guò)動(dòng)態(tài)參數(shù)法選取相關(guān)參數(shù)。
1)卡爾曼濾波器是一種估計(jì)動(dòng)態(tài)系統(tǒng)狀態(tài)序列最小均方誤差的最優(yōu)濾波器。它可以預(yù)測(cè)下一幀跟蹤目標(biāo)的中心位置,并修正當(dāng)前幀的目標(biāo)區(qū)域。首先,將狀態(tài)向量X=(xi,yi)T作為X軸和Y軸上的目標(biāo)位置,測(cè)量向量Z=(xi,yi)T是觀測(cè)目標(biāo)的位置。然后,狀態(tài)Xi被初始化。根據(jù)卡爾曼濾波算法的原理,建立了狀態(tài)方程和觀測(cè)方程。在滿(mǎn)足這兩個(gè)基本假設(shè)后,建立了卡爾曼預(yù)測(cè)階段和更新階段的相關(guān)方程。在確定相關(guān)參數(shù)后,利用卡爾曼濾波對(duì)下一幀跟蹤目標(biāo)的中心位置進(jìn)行預(yù)測(cè)。上述公式如式(2)所示:
(2)
2)BP算法以n個(gè)候選目標(biāo)中心位置的坐標(biāo)(xk,yk)作為BP神經(jīng)網(wǎng)絡(luò)的初始訓(xùn)練樣本數(shù)據(jù),對(duì)下一幀候選目標(biāo)的中心位置坐標(biāo)(xk+1,yk+1)進(jìn)行疊加更新。樣本數(shù)據(jù),采用trainrp函數(shù)作為BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練方法,首先確定輸入層、隱層和輸出層的節(jié)點(diǎn)數(shù)分別為2、4和2,然后確定初始學(xué)習(xí)率,訓(xùn)練次數(shù)和訓(xùn)練誤差分別為0.01、10和0.5,根據(jù)BP神經(jīng)網(wǎng)絡(luò)的基本過(guò)程,可以預(yù)測(cè)并輸出下一幀跟蹤目標(biāo)的中心位置(x,y)。具體流程如下:
(1)輸入跟蹤目標(biāo)中心位置的坐標(biāo)數(shù)據(jù),從輸入層神經(jīng)元到隱層神經(jīng)元,在隱層動(dòng)作后傳遞給輸出層神經(jīng)元神經(jīng)元。輸出變量在外層神經(jīng)元的作用下產(chǎn)生,即前向傳遞過(guò)程;
(2)將實(shí)際輸出Yk與期望輸出進(jìn)行比較,得到存在的誤差ε。如果誤差超過(guò)可接受范圍,則誤差值將沿網(wǎng)絡(luò)傳播。修改連接權(quán)值ujk和wij(即誤差反向傳播過(guò)程);
(3)輸入另一個(gè)跟蹤目標(biāo)中心位置的坐標(biāo)數(shù)據(jù),重復(fù)(1)和(2)直到模型輸出誤差E在可接受范圍內(nèi)或達(dá)到設(shè)定的訓(xùn)練次數(shù)。
上述公式如式(3)所示:
(3)
3)使用通過(guò)動(dòng)態(tài)參數(shù)法選擇相關(guān)參數(shù),該算法采用多線程方法同時(shí)運(yùn)行均值漂移,卡爾曼和BP神經(jīng)網(wǎng)絡(luò)三種算法,并采用動(dòng)態(tài)參數(shù)選擇的方法得到3種算法的權(quán)重參數(shù)(wm|i+1,wk|i+1,wb|i+1),然后根據(jù)這3種算法得到的相關(guān)參數(shù),對(duì)其進(jìn)行動(dòng)態(tài)參數(shù)選擇中心位置(Z(xi+1,yi+1),X(xi+1,yi+1),Y(xi+1,yi+1))的候選目標(biāo)計(jì)算最佳中心位置L(xi+1,yi+1)。如式(4)所示:
(4)
式中,ρi+1為候選目標(biāo)與跟蹤目標(biāo)之間第i-th幀的巴氏系數(shù),wi+1為動(dòng)態(tài)目標(biāo)選擇方法(即通過(guò)3種算法得到的候選目標(biāo)和跟蹤值之間的巴氏系數(shù)的比例確定動(dòng)態(tài)參數(shù)的目標(biāo))得到了第i-th幀的權(quán)重參數(shù)。
均值漂移目標(biāo)跟蹤算法結(jié)合了卡爾曼濾波算法和BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)機(jī)制,結(jié)果如圖1所示。
圖1 解決遮擋問(wèn)題的預(yù)測(cè)機(jī)制示意圖
從圖1可以看出,第148幀圖像是初始輸入圖像,第175幀和第181幀圖像被部分阻止,第178幀圖像被完全阻止。預(yù)測(cè)機(jī)制是卡爾曼濾波和BP神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)算法相結(jié)合的均值漂移算法,通過(guò)動(dòng)態(tài)參數(shù)選擇來(lái)處理這三種方法所占的不同權(quán)重。動(dòng)態(tài)參數(shù)選擇是根據(jù)三種算法的相似性,對(duì)候選目標(biāo)跟蹤預(yù)測(cè)的目標(biāo)中心位置來(lái)選擇合適的參數(shù)。
通過(guò)多目標(biāo)跟蹤實(shí)驗(yàn),發(fā)現(xiàn)當(dāng)目標(biāo)長(zhǎng)時(shí)間完全被遮擋時(shí),跟蹤的目標(biāo)會(huì)丟失。因此,本文選擇了PCA-sift特征提取算法在目標(biāo)跟蹤過(guò)程中,啟動(dòng)了判斷目標(biāo)是否丟失的機(jī)制,即,候選目標(biāo)與跟蹤目標(biāo)在時(shí)間閾值T處的相似度繼續(xù)小于相似度閾值S,表明目標(biāo)已經(jīng)丟失,然后啟動(dòng)基于Sift的目標(biāo)檢測(cè)機(jī)制重新獲取被跟蹤目標(biāo),繼續(xù)跟蹤目標(biāo)。
1.3.1 跟蹤目標(biāo)和當(dāng)前幀目標(biāo)的特征提取
首先得到目標(biāo)模型和當(dāng)前視頻幀的PCA-Sift特征向量。PCA-Sift算法以尺度空間為主要思想。首先構(gòu)造DoG金字塔,在尺度空間中找到極值點(diǎn),然后精確地確定關(guān)鍵點(diǎn)的位置和主方向,以保證其尺度和旋轉(zhuǎn)不變性算法.SIFT在高斯(DoG)尺度空間的差分中檢測(cè)局部極點(diǎn)值。輸入圖像f(x,y)和高斯濾波器G(x,y,kσ)卷積得到L(x,y,kσ),k=1,2,…,n。接著,DoG-尺度空間可以通過(guò)式(5)計(jì)算得到:
D(x,y,σ)=[G(x,y,kσ)-G(x,y,σ)]×I(x,y)=
L(x,y,kσ)-L(x,y,σ)
(5)
在這里,D(x,y)是高斯差分圖像,G(x,y)是高斯濾波器,L(x,y)是比例。在DoG空間,利用搜索局部極值的方法,可以判斷具有相同尺度的潛在興趣點(diǎn)方向。那個(gè)局部極值是第二階段確定的關(guān)鍵點(diǎn)的候選點(diǎn)。
其次,建立了目標(biāo)模型和當(dāng)前視頻幀的特征相量描述。以關(guān)鍵點(diǎn)為中心,繪制一個(gè)16×16的圓形區(qū)域,然后將圓形區(qū)域劃分為4×4個(gè)子鄰域,計(jì)算子區(qū)域梯度直方圖。由于梯度方向是一個(gè)8維向量,每個(gè)點(diǎn)都有一個(gè)128維向量來(lái)描述它,這就是SIFT特征矢量。它使用梯度振幅m(x,y)和方向θ(x,y)作為描述符中的基本元素,其定義如式(6)~(7)所示:
m(x,y)=
(6)
θ(x,y)=arccos
(7)
然后,利用主成分分析(PCA)原理對(duì)128維特征向量進(jìn)行約簡(jiǎn),最后將其簡(jiǎn)化為20維特征向量。
1.3.2 將跟蹤目標(biāo)的特征與當(dāng)前幀的目標(biāo)相匹配
最后,對(duì)目標(biāo)模型和當(dāng)前視頻幀進(jìn)行PCA-Sift特征描述符匹配。首先,將當(dāng)前視頻幀劃分為多個(gè)候選區(qū)域,然后逐個(gè)進(jìn)行匹配。然后,計(jì)算PCA-Sift特征向量與二者之間的歐幾里德距離,求出歐幾里德距離的最小值和最小值,求出兩者之間的比值。如果它小于設(shè)定的閾值,則匹配是成功的。最后對(duì)候選區(qū)域進(jìn)行匹配,建立候選幀,作為檢測(cè)到的目標(biāo)位置。
當(dāng)跟蹤的目標(biāo)丟失時(shí),立即啟動(dòng)目標(biāo)檢測(cè)機(jī)制。為了確定跟蹤是否丟失,設(shè)置丟失閾值l。如果當(dāng)前幀的丟失系數(shù)小于l,則不丟失目標(biāo);否則,考慮目標(biāo)丟失了。MKBP算法利用PCA-Sift特征提取算法從視頻圖像中提取特征點(diǎn)向量,構(gòu)造PCA-Sift特征描述子,最后在視頻圖像中匹配目標(biāo)模板PCA-Sift特征描述子,得到相似度最高的目標(biāo)模板。定位目標(biāo)位置,確定候選目標(biāo)模板,最后將候選模板傳遞給均值漂移算法,啟動(dòng)目標(biāo)跟蹤過(guò)程,如圖2所示。
圖2 丟失目標(biāo)尋回示意圖
從圖2可以看出,第3 031幀中的目標(biāo)沒(méi)有被阻斷并且被精確地跟蹤。第3 173幀中的目標(biāo)被部分阻斷并被精確跟蹤。第3 216幀中的目標(biāo)被完全阻斷,但跟蹤時(shí)間過(guò)長(zhǎng)。失敗。該過(guò)程的詳細(xì)描述是:利用本文提出的方法對(duì)輸入的連續(xù)視頻幀進(jìn)行跟蹤,利用目標(biāo)丟失判斷機(jī)制檢測(cè)目標(biāo)在跟蹤過(guò)程中是否丟失,并在目標(biāo)跟蹤重新獲取丟失跟蹤目標(biāo)允許的情況下,啟動(dòng)基于PCA-Sift的目標(biāo)檢測(cè)繼續(xù)跟蹤目標(biāo)。
因此,整個(gè)MKBP算法的具體執(zhí)行過(guò)程如算法1所示。
算法1:MKBP算法
Input: The current frame
Output:L(xi+1,yi+1)
While 當(dāng)前幀是有效的 do
Thread1:
Z(xi+1,yi+1)=Meanshift(xi,yi);
Thread2:
X(xi+1,yi+1)=Kalman(xi,yi);
Thread3:
Y(xi+1,yi+1)=BP(xi,yi);
Thread4:
l = Get Target Loss Threshold(frame);
if l > t do
Retrieve Target = Detect Based PCA-Sift(frame);
else
wm,wk,wb=Dynamic Parameter Selection (Z,X,Y);
L(xi+1,yi+1)=wmZi+1+wkXi+1+wbYi+1;
end if
用L(xi+1,yi+1)作為迭代數(shù)據(jù);
讀取下一幀;
End
本實(shí)驗(yàn)的測(cè)試平臺(tái)是VS2015,它使用了計(jì)算機(jī)視覺(jué)開(kāi)源庫(kù)OpenCV3.41。所有實(shí)驗(yàn)都是在英特爾酷睿i5-4210U,4 GB內(nèi)存的Windows8.1 64位PC系統(tǒng)上進(jìn)行的。數(shù)據(jù)集采用的是UAV123公開(kāi)數(shù)據(jù)集[10]。
圖3是5種傳統(tǒng)目標(biāo)跟蹤算法和MKBP對(duì)WhiteCar視頻序列的跟蹤。第一幅圖像是無(wú)人機(jī)對(duì)目標(biāo)的無(wú)遮擋跟蹤,這6種跟蹤算法的跟蹤幀與目標(biāo)非常一致。因此,在目標(biāo)無(wú)障礙的情況下,這6種算法的跟蹤精度都很高。第2和第3張是無(wú)人機(jī)跟蹤目標(biāo)部分遮擋。MKBP跟蹤幀與目標(biāo)基本吻合,說(shuō)明MKBP算法的跟蹤精度較高,而Moss幀與目標(biāo)的重合度不高,說(shuō)明Moss算法對(duì)遮擋非常敏感,跟蹤精度不高。第4張是無(wú)人機(jī)跟蹤目標(biāo)被完全遮擋。MKBP跟蹤幀與目標(biāo)趨勢(shì)一致,其他跟蹤幀基本與目標(biāo)不一致,說(shuō)明MKBP算法的跟蹤精度較高,同時(shí)也說(shuō)明其他5種算法完全是遮擋非常敏感,跟蹤精度不高。第5幅圖像為部分遮擋,第6幅圖像為未遮擋,其余5幅跟蹤幀均已脫離目標(biāo),說(shuō)明這5種算法都已失去跟蹤目標(biāo),同時(shí)說(shuō)明MKBP算法在遮擋情況下魯棒性和穩(wěn)定性都很高。
圖3 對(duì)WhiteCar的追蹤結(jié)果
為了評(píng)價(jià)跟蹤算法的精度,采用巴氏相似系數(shù)來(lái)評(píng)價(jià)跟蹤算法的精度。結(jié)果如圖4所示。
圖4 巴氏系數(shù)比較結(jié)果
從圖4可以看出,在WhiteCar視頻序列的1442到1514幀中,被跟蹤的目標(biāo)處于未包含狀態(tài)。在1 515~15 26幀,被跟蹤目標(biāo)處于部分阻塞狀態(tài)。在1 527~1 538幀,跟蹤目標(biāo)處于完全阻塞狀態(tài);在1 539~1 600幀,被跟蹤目標(biāo)處于非阻塞狀態(tài)。在1 442~1 514幀,由于目標(biāo)沒(méi)有被遮擋,6種跟蹤算法的巴氏相似系數(shù)相差不大,基本上都大于0.90。在1 515~1 526幀中,由于目標(biāo)部分被遮擋,而Moss的部分分塊不魯棒,巴氏相似系數(shù)急劇下降,而其他4種算法和MKBPS對(duì)部分遮擋有一定的魯棒性,因此巴氏相似系數(shù)降低的速度慢得多;在1 527~1 538幀中,由于目標(biāo)完全被遮擋,巴氏相似系數(shù)急劇下降,基本在0.55以下;在1 539~1 600幀,目標(biāo)沒(méi)有被遮擋,但由于其他5種跟蹤算法,跟蹤目標(biāo)丟失,因此巴氏相似系數(shù)小于0.55,對(duì)于具有目標(biāo)檢測(cè)機(jī)制的MKBP,由于重新捕獲,巴氏相似系數(shù)急劇上升以跟蹤目標(biāo)。
圖5是通過(guò)5種傳統(tǒng)的目標(biāo)跟蹤算法和MKBP對(duì)BlackCar視頻序列的跟蹤。第一張圖片是無(wú)障礙無(wú)人機(jī)跟蹤目標(biāo)。這6種跟蹤算法的跟蹤幀與目標(biāo)非常一致。因此,這6種算法的實(shí)時(shí)性要求都很高。第2張圖片是無(wú)人機(jī)跟蹤目標(biāo)的部分遮擋。MKBP跟蹤幀與目標(biāo)基本吻合,說(shuō)明MKBP算法具有較高的跟蹤精度,而Moss幀與目標(biāo)沒(méi)有高度重疊,說(shuō)明Moss算法對(duì)遮擋非常敏感,跟蹤精度不高。第3張圖是無(wú)人機(jī)跟蹤目標(biāo)被完全遮擋MKBP跟蹤幀與目標(biāo)趨勢(shì)一致,其他跟蹤幀與目標(biāo)趨勢(shì)基本不一致,說(shuō)明MKBP算法的跟蹤精度較高,而且其他5種算法對(duì)完全遮擋敏感,導(dǎo)致跟蹤精度較低。第4幅圖像是部分遮擋,其余五幀跟蹤幀都偏離了目標(biāo),說(shuō)明這5種算法已經(jīng)失去了對(duì)目標(biāo)的跟蹤,同時(shí)也說(shuō)明了MKBP算法在遮擋下的魯棒性和穩(wěn)定性。
圖5 對(duì)BlackCar追蹤結(jié)果
從圖6可以看出,6種跟蹤算法的精度都隨著誤差閾值的增大而提高,但MKBP算法的精度提高幅度最大,當(dāng)誤差閾值為10時(shí),其精度系數(shù)高于其他5種跟蹤算法,從成功圖可以看出,6種跟蹤算法的成功率隨著符合閾值的增加而逐漸降低,但MKBP算法的下降幅度相對(duì)較小,從這兩幅圖可以看出,MKBP算法的性能優(yōu)于其他5種跟蹤算法。
圖6 對(duì)BlackCar的跟蹤精確度比較
本文針對(duì)無(wú)人機(jī)目標(biāo)被遮擋時(shí)均值漂移算法魯棒性差的問(wèn)題、卡爾曼誤差積累問(wèn)題和無(wú)人機(jī)目標(biāo)丟失問(wèn)題,提出了一種無(wú)人機(jī)抗遮擋目標(biāo)跟蹤算法MKBP,主要是基于均值漂移跟蹤算法,并結(jié)合了卡爾曼的預(yù)測(cè)機(jī)制。同時(shí),采用BP神經(jīng)網(wǎng)絡(luò)解決卡爾曼誤差積累問(wèn)題,提高了跟蹤性能。目標(biāo)檢測(cè)機(jī)制用于恢復(fù)丟失的跟蹤目標(biāo)并繼續(xù)跟蹤。實(shí)驗(yàn)結(jié)果表明,與傳統(tǒng)的跟蹤算法相比,MKBP目標(biāo)跟蹤算法在目標(biāo)運(yùn)動(dòng)速度快、視頻像素低、目標(biāo)遮擋時(shí)間長(zhǎng)、多次出現(xiàn)的復(fù)雜場(chǎng)景下,具有良好的跟蹤速度和準(zhǔn)確的跟蹤效果。