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