王德培,謝 云
(廣東工業(yè)大學(xué) 自動(dòng)化學(xué)院,廣東 廣州 510006)
目標(biāo)跟蹤技術(shù)一直是計(jì)算機(jī)視覺(jué)研究領(lǐng)域中的熱點(diǎn)之一,目前已廣泛應(yīng)用于智能汽車、視頻監(jiān)控、人機(jī)交互等方面[1]。多數(shù)目標(biāo)追蹤方法針對(duì)短視頻圖像序列,首幀中選取跟蹤目標(biāo),然后進(jìn)行實(shí)時(shí)目標(biāo)識(shí)別與跟蹤。
目前比較流行的目標(biāo)跟蹤算法有基于核化的結(jié)構(gòu)化輸出(Structured output tracking with kernel,Struck)[2]算法、跟蹤-學(xué)習(xí)-檢測(cè)(Tracking-Learning-Detection,TLD)[3]算法、多示例學(xué)習(xí)(Multiple Instance Learning,MIL)[4]算法、核相關(guān)濾波(Kernel Correlation Filter,KCF)[5]跟蹤算法等。KCF跟蹤算法因其在速度和準(zhǔn)確性上的優(yōu)秀表現(xiàn)得到大多數(shù)的關(guān)注。在目標(biāo)追蹤過(guò)程中,目標(biāo)本身或背景發(fā)生較大改變,如目標(biāo)部分遮擋或全遮擋、目標(biāo)外觀變化、外界光照等,都會(huì)對(duì)追蹤效果產(chǎn)生很大影響?,F(xiàn)有算法只能滿足于特定的約束條件,并不能在任何條件下滿足實(shí)時(shí)性和魯棒性的要求。其中,遮擋問(wèn)題對(duì)于目標(biāo)追蹤而言尤為困難。
針對(duì)以上問(wèn)題,本文在KCF算法基礎(chǔ)上提出一種融合感知哈希算法和Farneback光流算法的目標(biāo)追蹤算法,利用感知哈希算法求得目標(biāo)與檢測(cè)到的目標(biāo)間的相似度,判定是否發(fā)生遮擋。當(dāng)目標(biāo)遮擋時(shí),在模板池中取出一幀歷史視頻畫面預(yù)測(cè)下一幀中目標(biāo)位置,框出目標(biāo)并繼續(xù)進(jìn)行目標(biāo)跟蹤。
KCF算法[6-7]是一種鑒別式追蹤方法,通常在跟蹤過(guò)程中訓(xùn)練一個(gè)目標(biāo)檢測(cè)器,使用目標(biāo)檢測(cè)器去檢測(cè)下一幀預(yù)測(cè)區(qū)域是否有目標(biāo)。之后,用新檢測(cè)到的目標(biāo)更新訓(xùn)練集進(jìn)行下一次的檢測(cè)。樣本訓(xùn)練過(guò)程中,通過(guò)對(duì)檢測(cè)到的目標(biāo)循環(huán)移位生成大量的訓(xùn)練樣本,使用這些樣本來(lái)訓(xùn)練分類器。目標(biāo)檢測(cè)取決于預(yù)測(cè)區(qū)域與目標(biāo)的相關(guān)系數(shù)。跟蹤算法采用快速傅里葉變換,利用循環(huán)矩陣的性質(zhì)(傅里葉空間可對(duì)角化,從而將對(duì)矩陣的運(yùn)算轉(zhuǎn)化為對(duì)向量的點(diǎn)乘),顯著地降低了樣本訓(xùn)練和目標(biāo)檢測(cè)的運(yùn)算復(fù)雜度。目標(biāo)快速檢測(cè)過(guò)程中使用傅里葉反變換標(biāo)記出目標(biāo)位置。
KCF跟蹤算法樣本集通過(guò)目標(biāo)區(qū)域樣本循環(huán)移位產(chǎn)生。假設(shè)x是單通道一維數(shù)組,P是循環(huán)矩陣,Px實(shí)現(xiàn)一維數(shù)組x移位效果。
x=[x1,x2,…,xn]T
(1)
(2)
(3)
這樣實(shí)現(xiàn)了x的一個(gè)元素移動(dòng)。同樣,使用矩陣Prx實(shí)現(xiàn)多元素移動(dòng),r為正數(shù)時(shí)右移,r為負(fù)數(shù)時(shí)反向移動(dòng)。由{Prx|r=0,…,n-1}可以得到x生成的數(shù)據(jù)矩陣:
(4)
上式通過(guò)離散傅里葉變換(DFT)實(shí)現(xiàn)對(duì)角化,可寫為:
(5)
w=(XHX+λI)-1XHy
(6)
其中XH表示復(fù)共軛轉(zhuǎn)置矩陣,向量y的元素是yi。且:
(7)
(8)
其中φ(xi)是將訓(xùn)練樣本xi映射到高維特征空間的函數(shù)。且
(9)
稱κ(xi,xj)=φ(xi)φ(xj)為核函數(shù),則:
(10)
根據(jù)參考文獻(xiàn)[8]可得:
(11)
其中,kxx是核矩陣K=C(kxx)的第一行,“^”表示向量的DFT變換。
輸入新的圖像塊z,分類器的回歸函數(shù)為:
(12)
將z進(jìn)行循環(huán)移位生成循環(huán)矩陣,進(jìn)而得到一系列樣本集Zi=PrZ,此時(shí)待選圖像塊為f(Z)=αTφ(x)φ(Zi)值最大的樣本。目標(biāo)的移動(dòng)方向通過(guò)Zi確定。定義Kz為訓(xùn)練樣本和所有測(cè)試樣本的核矩陣,由酉不變核函數(shù)定理知Kz是循環(huán)矩陣。
Kz=C(Kxz)
(13)
其中Kxz是x和z間的核相關(guān)運(yùn)算。且:
(14)
對(duì)上式進(jìn)行DFT變換,有
(15)
其中“?”表示點(diǎn)乘。對(duì)上式做離散傅里葉逆變換(IDFT),可得到所有測(cè)試樣本的相關(guān)響應(yīng)系數(shù),系數(shù)最大的樣本是目標(biāo)在當(dāng)前幀的位置。
圖1 改進(jìn)算法流程圖
2001年,KALKER T首次提出感知哈希算法,“感知”表明該算法關(guān)注的是相似性。利用哈希算法的特性計(jì)算目標(biāo)與檢測(cè)到的目標(biāo)間的相似度。感知哈希算法是哈希算法的一個(gè)分支,是一種基于認(rèn)知心理學(xué)的信息加工理論,由多媒體數(shù)據(jù)集到多媒體感知摘要集的一種單向映射,通過(guò)將具有相同感知內(nèi)容和信息的多媒體數(shù)據(jù)壓縮成唯一的一段數(shù)字摘要,滿足感知安全性要求[9]。
根據(jù)感知哈希的特性,其可將數(shù)據(jù)量較大的對(duì)象映射成長(zhǎng)度較小的一系列比特位。應(yīng)用到圖像匹配上,根據(jù)比特位中相同的位數(shù)判定相似性。相同或相似的圖片會(huì)得到相同或相近的感知哈希值。
記感知哈希函數(shù)為PH。由對(duì)象I生成的函數(shù)值h稱為感知哈希值:
h=PH(I)
(16)
兩個(gè)對(duì)象的感知哈希距離pd可以使用多種距離計(jì)算方法PM得到:
pdi,j=PM(hi,hj)
(17)
其中,hi,hj分別表示兩個(gè)對(duì)象的圖像感知哈希值。感知哈希距離可采用傳統(tǒng)的計(jì)算距離的方式得到,比如計(jì)算漢明距離或歐氏距離。Jogging視頻相似度檢測(cè)如圖2所示。
圖2 相似度檢測(cè)
當(dāng)pdi,j≤0.5時(shí),說(shuō)明目標(biāo)識(shí)別正常或者部分遮擋。由于遮擋對(duì)目標(biāo)跟蹤影響不大,使用當(dāng)前幀預(yù)測(cè)下一幀目標(biāo)。
當(dāng)pdi,j>0.5時(shí),說(shuō)明目標(biāo)嚴(yán)重遮擋,此時(shí)需要一個(gè)匹配目標(biāo)移動(dòng)速度的取樣間隔,到模板池中取出一幀畫面作為模板預(yù)測(cè)下一幀中的目標(biāo)。
(18)
圖像一般取灰度圖,圖像像素點(diǎn)的灰度值可以是一個(gè)二維變量的函數(shù)f(x,y)。以感興趣的像素點(diǎn)為中心,構(gòu)建一個(gè)局部坐標(biāo)系(非整張圖像)。對(duì)函數(shù)進(jìn)行二項(xiàng)式展開,可以近似為:
f(x,y)≈r1+r2x+r3y+r4x2+r5y2+r6xy
=xTAx+bTx+c
(19)
其中,x為二維向量,A為2×2的對(duì)稱矩陣,b為2×1的矩陣,兩者均與所選點(diǎn)(x,y)有關(guān)。
圖像中目標(biāo)由f1到f2,可得位移為:
d=(ATA)-1(ATΔb)
(20)
實(shí)際位移中存在大量噪聲,可以選取感興趣像素點(diǎn)領(lǐng)域,然后使用加權(quán)的目標(biāo)函數(shù)為[11]:
(21)
光流測(cè)速效果圖如圖3所示。
圖3 光流測(cè)速
傳統(tǒng)的KCF算法本身不能提供處理遮擋的解決方法。本文在傳統(tǒng)的KCF跟蹤算法基礎(chǔ)上增加了歷史模板,避免了物體在遮擋情況下目標(biāo)識(shí)別飄移問(wèn)題,同時(shí)可以實(shí)現(xiàn)目標(biāo)遮擋再檢測(cè)功能。歷史模板作為待取幀,當(dāng)遮擋發(fā)生時(shí),丟棄當(dāng)前幀xi。然后結(jié)合光流算法測(cè)得的目標(biāo)速度,在模板池中取得一幀畫面作為檢測(cè)下一幀xi+1中目標(biāo)的模板。
匹配目標(biāo)移動(dòng)速度的取樣間隔,即當(dāng)前幀到取出幀的距離為:
d=t(v)×F
(22)
其中t(v)是一個(gè)關(guān)于目標(biāo)移動(dòng)速度的函數(shù),F(xiàn)是視頻幀率。則取出幀幀號(hào)為:i-d。當(dāng)相似度低于閾值時(shí),當(dāng)前幀xi會(huì)被丟棄,使用取出幀xi-d更新KCF算法參數(shù)。
采用TB-50數(shù)據(jù)庫(kù)中Jogging和girl2數(shù)據(jù)集對(duì)算法進(jìn)行驗(yàn)證,實(shí)驗(yàn)運(yùn)行環(huán)境為Windows 10,Intel(R) Core(TM) i3-2350M CPU 2.30 GHz。本文算法處理遮擋再檢測(cè)流程如圖4所示。在Jogging中檢測(cè)到63幀發(fā)生遮擋。兩種算法都能夠跟蹤到65和66幀。到81幀目標(biāo)出現(xiàn)時(shí),KCF算法不能繼續(xù)檢測(cè)到目標(biāo)并跟蹤見,但目標(biāo)遮擋再檢測(cè)算法可以重新檢測(cè)到目標(biāo)并進(jìn)行跟蹤。對(duì)比圖見圖5。同樣,在girl2數(shù)據(jù)集上檢測(cè)到103幀發(fā)生遮擋,之后目標(biāo)遮擋再檢測(cè)算法可以很好地實(shí)現(xiàn)遮擋后再檢測(cè)。對(duì)比圖見圖6。
圖4 遮擋再檢測(cè)流程
圖5 jogging對(duì)比圖
圖6 girl2對(duì)比圖
KCF算法與目標(biāo)遮擋再檢測(cè)算法在跟蹤速度上的比較見表1。
表1 算法跟蹤速度對(duì)比
表1中對(duì)于相同的測(cè)試視頻,KCF算法具有明顯的檢測(cè)速度優(yōu)勢(shì)。目標(biāo)遮擋再檢測(cè)算法,因增加了相似度與光流計(jì)算,檢測(cè)速度均有明顯下降。
本文基于KCF算法框架,加入感知哈希算法得到的相似度和光流算法測(cè)得的速度,進(jìn)行目標(biāo)識(shí)別與跟蹤,解決了傳統(tǒng)KCF算法遮擋再檢測(cè)的不足。當(dāng)遮擋發(fā)生時(shí),到模板池中取出一幀歷史模板,作為預(yù)測(cè)下一幀目標(biāo)的樣本送到KCF算法。實(shí)驗(yàn)結(jié)果顯示,抗遮擋算法在遮擋再檢測(cè)方面,相比于傳統(tǒng)的KCF算法效果更好。鑒于融入多個(gè)算法,計(jì)算速度影響到算法表現(xiàn)力,但仍然能滿足實(shí)時(shí)跟蹤。下一步的研究要解決目標(biāo)跟蹤中的自適應(yīng)尺度問(wèn)題,同時(shí)在不影響算法表現(xiàn)的同時(shí)提高計(jì)算速度。