王德培,謝 云
(廣東工業大學 自動化學院,廣東 廣州 510006)
目標跟蹤技術一直是計算機視覺研究領域中的熱點之一,目前已廣泛應用于智能汽車、視頻監控、人機交互等方面[1]。多數目標追蹤方法針對短視頻圖像序列,首幀中選取跟蹤目標,然后進行實時目標識別與跟蹤。
目前比較流行的目標跟蹤算法有基于核化的結構化輸出(Structured output tracking with kernel,Struck)[2]算法、跟蹤-學習-檢測(Tracking-Learning-Detection,TLD)[3]算法、多示例學習(Multiple Instance Learning,MIL)[4]算法、核相關濾波(Kernel Correlation Filter,KCF)[5]跟蹤算法等。KCF跟蹤算法因其在速度和準確性上的優秀表現得到大多數的關注。在目標追蹤過程中,目標本身或背景發生較大改變,如目標部分遮擋或全遮擋、目標外觀變化、外界光照等,都會對追蹤效果產生很大影響。現有算法只能滿足于特定的約束條件,并不能在任何條件下滿足實時性和魯棒性的要求。其中,遮擋問題對于目標追蹤而言尤為困難。
針對以上問題,本文在KCF算法基礎上提出一種融合感知哈希算法和Farneback光流算法的目標追蹤算法,利用感知哈希算法求得目標與檢測到的目標間的相似度,判定是否發生遮擋。當目標遮擋時,在模板池中取出一幀歷史視頻畫面預測下一幀中目標位置,框出目標并繼續進行目標跟蹤。
KCF算法[6-7]是一種鑒別式追蹤方法,通常在跟蹤過程中訓練一個目標檢測器,使用目標檢測器去檢測下一幀預測區域是否有目標。之后,用新檢測到的目標更新訓練集進行下一次的檢測。樣本訓練過程中,通過對檢測到的目標循環移位生成大量的訓練樣本,使用這些樣本來訓練分類器。目標檢測取決于預測區域與目標的相關系數。跟蹤算法采用快速傅里葉變換,利用循環矩陣的性質(傅里葉空間可對角化,從而將對矩陣的運算轉化為對向量的點乘),顯著地降低了樣本訓練和目標檢測的運算復雜度。目標快速檢測過程中使用傅里葉反變換標記出目標位置。
KCF跟蹤算法樣本集通過目標區域樣本循環移位產生。假設x是單通道一維數組,P是循環矩陣,Px實現一維數組x移位效果。
x=[x1,x2,…,xn]T
(1)

(2)
(3)
這樣實現了x的一個元素移動。同樣,使用矩陣Prx實現多元素移動,r為正數時右移,r為負數時反向移動。由{Prx|r=0,…,n-1}可以得到x生成的數據矩陣:
(4)
上式通過離散傅里葉變換(DFT)實現對角化,可寫為:
(5)


w=(XHX+λI)-1XHy
(6)
其中XH表示復共軛轉置矩陣,向量y的元素是yi。且:
(7)

(8)
其中φ(xi)是將訓練樣本xi映射到高維特征空間的函數。且
(9)
稱κ(xi,xj)=φ(xi)φ(xj)為核函數,則:
(10)
根據參考文獻[8]可得:
(11)
其中,kxx是核矩陣K=C(kxx)的第一行,“^”表示向量的DFT變換。
輸入新的圖像塊z,分類器的回歸函數為:
(12)
將z進行循環移位生成循環矩陣,進而得到一系列樣本集Zi=PrZ,此時待選圖像塊為f(Z)=αTφ(x)φ(Zi)值最大的樣本。目標的移動方向通過Zi確定。定義Kz為訓練樣本和所有測試樣本的核矩陣,由酉不變核函數定理知Kz是循環矩陣。
Kz=C(Kxz)
(13)
其中Kxz是x和z間的核相關運算。且:
(14)
對上式進行DFT變換,有

(15)
其中“?”表示點乘。對上式做離散傅里葉逆變換(IDFT),可得到所有測試樣本的相關響應系數,系數最大的樣本是目標在當前幀的位置。

圖1 改進算法流程圖
2001年,KALKER T首次提出感知哈希算法,“感知”表明該算法關注的是相似性。利用哈希算法的特性計算目標與檢測到的目標間的相似度。感知哈希算法是哈希算法的一個分支,是一種基于認知心理學的信息加工理論,由多媒體數據集到多媒體感知摘要集的一種單向映射,通過將具有相同感知內容和信息的多媒體數據壓縮成唯一的一段數字摘要,滿足感知安全性要求[9]。
根據感知哈希的特性,其可將數據量較大的對象映射成長度較小的一系列比特位。應用到圖像匹配上,根據比特位中相同的位數判定相似性。相同或相似的圖片會得到相同或相近的感知哈希值。
記感知哈希函數為PH。由對象I生成的函數值h稱為感知哈希值:
h=PH(I)
(16)
兩個對象的感知哈希距離pd可以使用多種距離計算方法PM得到:
pdi,j=PM(hi,hj)
(17)
其中,hi,hj分別表示兩個對象的圖像感知哈希值。感知哈希距離可采用傳統的計算距離的方式得到,比如計算漢明距離或歐氏距離。Jogging視頻相似度檢測如圖2所示。

圖2 相似度檢測
當pdi,j≤0.5時,說明目標識別正常或者部分遮擋。由于遮擋對目標跟蹤影響不大,使用當前幀預測下一幀目標。
當pdi,j>0.5時,說明目標嚴重遮擋,此時需要一個匹配目標移動速度的取樣間隔,到模板池中取出一幀畫面作為模板預測下一幀中的目標。

(18)
圖像一般取灰度圖,圖像像素點的灰度值可以是一個二維變量的函數f(x,y)。以感興趣的像素點為中心,構建一個局部坐標系(非整張圖像)。對函數進行二項式展開,可以近似為:
f(x,y)≈r1+r2x+r3y+r4x2+r5y2+r6xy
=xTAx+bTx+c
(19)
其中,x為二維向量,A為2×2的對稱矩陣,b為2×1的矩陣,兩者均與所選點(x,y)有關。
圖像中目標由f1到f2,可得位移為:
d=(ATA)-1(ATΔb)
(20)
實際位移中存在大量噪聲,可以選取感興趣像素點領域,然后使用加權的目標函數為[11]:
(21)
光流測速效果圖如圖3所示。

圖3 光流測速
傳統的KCF算法本身不能提供處理遮擋的解決方法。本文在傳統的KCF跟蹤算法基礎上增加了歷史模板,避免了物體在遮擋情況下目標識別飄移問題,同時可以實現目標遮擋再檢測功能。歷史模板作為待取幀,當遮擋發生時,丟棄當前幀xi。然后結合光流算法測得的目標速度,在模板池中取得一幀畫面作為檢測下一幀xi+1中目標的模板。
匹配目標移動速度的取樣間隔,即當前幀到取出幀的距離為:
d=t(v)×F
(22)
其中t(v)是一個關于目標移動速度的函數,F是視頻幀率。則取出幀幀號為:i-d。當相似度低于閾值時,當前幀xi會被丟棄,使用取出幀xi-d更新KCF算法參數。
采用TB-50數據庫中Jogging和girl2數據集對算法進行驗證,實驗運行環境為Windows 10,Intel(R) Core(TM) i3-2350M CPU 2.30 GHz。本文算法處理遮擋再檢測流程如圖4所示。在Jogging中檢測到63幀發生遮擋。兩種算法都能夠跟蹤到65和66幀。到81幀目標出現時,KCF算法不能繼續檢測到目標并跟蹤見,但目標遮擋再檢測算法可以重新檢測到目標并進行跟蹤。對比圖見圖5。同樣,在girl2數據集上檢測到103幀發生遮擋,之后目標遮擋再檢測算法可以很好地實現遮擋后再檢測。對比圖見圖6。

圖4 遮擋再檢測流程

圖5 jogging對比圖

圖6 girl2對比圖
KCF算法與目標遮擋再檢測算法在跟蹤速度上的比較見表1。

表1 算法跟蹤速度對比
表1中對于相同的測試視頻,KCF算法具有明顯的檢測速度優勢。目標遮擋再檢測算法,因增加了相似度與光流計算,檢測速度均有明顯下降。
本文基于KCF算法框架,加入感知哈希算法得到的相似度和光流算法測得的速度,進行目標識別與跟蹤,解決了傳統KCF算法遮擋再檢測的不足。當遮擋發生時,到模板池中取出一幀歷史模板,作為預測下一幀目標的樣本送到KCF算法。實驗結果顯示,抗遮擋算法在遮擋再檢測方面,相比于傳統的KCF算法效果更好。鑒于融入多個算法,計算速度影響到算法表現力,但仍然能滿足實時跟蹤。下一步的研究要解決目標跟蹤中的自適應尺度問題,同時在不影響算法表現的同時提高計算速度。