天天看點

【目标跟蹤】Long-term Correlation Tracking 閱讀筆記Long-term Correlation Tracking

Long-term Correlation Tracking

論文位址:

https://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Ma_Long-Term_Correlation_Tracking_2015_CVPR_paper.pdf

long_term_tracking tracking 閱讀筆記

  • Long-term Correlation Tracking
    • 簡介
    • 相關工作和問題背景
      • 相關濾波 Correlation tracking
      • tracking-by-detection
    • 本文跟蹤子產品
      • Correlation tracking
      • Online Detector
    • 算法流程

簡介

論文緻力于解決在目标跟蹤過程中,由于目标的外觀變化,導緻跟蹤失敗的問題。影響目标外觀的因素包括目标本身形變、突然的快速移動、嚴重遮擋和出界等。解決的方法是把跟蹤問題分解問平移估計和尺度變化估計。同時,時間上的上下文關系可以提高平移估計的精度,而訓練判别相關濾波器(discriminative correlation filter)可以更有效地估計尺度變化。

本文提出的方法基于兩個重要的前期工作:

首先,是對于視訊而言,相鄰的兩幀變化很小。即便目标被遮擋了,其周圍背景的變化也是很小的。是以,可以對跟蹤目标本身和其周圍背景同時進行模組化,此模型提取的特征對嚴重遮擋、快速移動和嚴重形變都有很強的魯棒性。

其次,是提高檢測器的精度。這樣可以更好地估計目标的尺度變化,以及當跟蹤失敗時重新檢測。

另外,論文定義了 tracking-by-detection 的兩個研究問題:

其一是穩定性-靈活性困境。也就是說,一個十分保守的模型,比如隻對第一幀目标模組化,這個模型一定十分魯棒,不易引入背景噪聲導緻跟蹤失敗(drifting)。而一個積極更新的模型,就很容易跟丢,因為會引入背景噪聲。文章提出的解決辦法是對目标和背景分别模組化,兩個模型有不同的更新政策。

其二是負樣本采集的問題。之前負樣本采集十分模糊, 并且二分類的label對樣本的空間關系的表達不夠有效。本文采用Gaussian-weighted label來标注正負樣本。

論文總的架構,是将長跟蹤(long-term tracking)分解為對運動目标的尺度(scale) 和平移(translation) 的估計,并配合一個re-detection 政策。

相關工作和問題背景

相關濾波 Correlation tracking

相關濾波是一種應用非常廣泛的方法,因為濾波操作可以通過頻域上的乘法快速實作,是以它的優勢在于極高的計算效率。例如 MOSSE(minimum output sum of squared error) 可以達到幾百FPS。

但是這種方法的缺點在于,對線上的模型更新問題處理得不夠好。很容易跟丢,以及難以應對遮擋和出界的問題。

Figure1 展示了KCF算法的效果,可以看出來對于快速移動的物體,這種方法效果很好。但是當出現遮擋後,就跟丢了。(看綠框框,在230幀處出現了快速移動,跟蹤效果很好。但是在350幀處出現了遮擋,到了380處目标再次出現,此時已經更新了模闆,是以出現了drifting)

【目标跟蹤】Long-term Correlation Tracking 閱讀筆記Long-term Correlation Tracking

tracking-by-detection

為了解決穩定性-靈活性困境,Kalal 等人提出了 TLD(tracking, learning and detection)方法,提出跟蹤和檢測是可以互相促進的。跟蹤為檢測器提供正樣本,檢測器在跟蹤失敗時重新初始化跟蹤器。

本文提出了一種方法,使用嶺回歸(ridge regression)模型來學習上下文的相關性,而不是簡單地使用二分類模型。通過這種模型,可以有效減少二分類模型普遍出現的采樣不明确的問題。

本文跟蹤子產品

本論文要解決的問題是,在跟蹤過程中,跟蹤目标出現較大的外觀變化,可能導緻跟蹤失敗。我們把跟蹤問題分解為對目标的平移估計和尺度估計。其中,平移估計采用上下文相關性,尺度估計使用判别濾波器。此外,增加了一個檢測器,用于在跟蹤失敗時的補充。

Correlation tracking

對于一個典型的相關濾波器而言,大體上流程是這樣的:

對于一個 M×N M × N 大小的圖像,其所有的循環矩陣 xm,n x m , n 作為訓練樣本。其label為 ym,n y m , n 。那麼可以得到一個方程:

w=argminw∑m,n|ϕ(xm,n)⋅w−y(m,n)|2+λ|w|2 w = a r g m i n w ∑ m , n | ϕ ( x m , n ) ⋅ w − y ( m , n ) | 2 + λ | w | 2

其中 ϕ ϕ 表示到核空間的映射, λ λ 是正則化參數。(通過正則化項使矩陣滿秩。)

使用快速傅裡葉變換,把卷積操作變為elementwise的乘積操作。

求得使目标方程最小化的 w w 為:

w=∑m,na(m,n)ϕ(xm,n)w=∑m,na(m,n)ϕ(xm,n)

其中 a a 由下面公式得到:

A=F(a)=F(y)F(ϕ(x)⋅ϕ(x))+λA=F(a)=F(y)F(ϕ(x)⋅ϕ(x))+λ

F F 表示離散傅裡葉變換。

接下來進行預測:

對于一張大小為 M×N M × N 新的圖檔 z z , 計算響應圖如下:

y^=F−1(A⊙F(ϕ(z)⋅ϕ(x^)))y^=F−1(A⊙F(ϕ(z)⋅ϕ(x^)))

其中, x^ x ^ 表示學習到的特征模型, ⊙ ⊙ 表示Hadamard product(其實就是element-wise product)。據此,預測這張圖檔上目标的位置,就通過找 y^ y ^ 上的最大值找到。

而本文使用的方法有一點點不同

首先,本文提出的方法是在同一張圖像上學習兩個filter。其中一個 Rc R c 同時考慮目标的特征和背景的特征,另一個 Rt R t 隻考慮目标的特征。為了訓練 Rc R c ,我們補充了一個空間權重。同時,為了減輕邊界效應,對目标和上下文的響應加入餘弦窗。

對于 Rc R c ,我們希望它能夠及時更新,保證當目标遮擋、形變時能繼續估算它的位移。是以,它需要一個較大的步長 α α 。亦即:

x^t=(1−α)x^t−1+αxtA^t=(1−α)A^t−1+αAt x ^ t = ( 1 − α ) x ^ t − 1 + α x t A ^ t = ( 1 − α ) A ^ t − 1 + α A t

其中t 為目前幀的index。

判别模型 Rt R t 在比較可靠的幀上習得。所謂比較可靠的幀,就是 y^ y ^ 最大值比較高的幀。(也就是說,和之前的模闆比對程度更高的幀)我們定義一個門檻值 Ta T a , 隻有當 y^ y ^ 的最大值大于 Ta T a 時才更新模闆。(當目标發生遮擋時,不會更改filter)

在預測位置附近構造一個金字塔。令目标的大小為 P×Q P × Q ,金字塔層數為 N N ,則S={an|n=⌊−N−12⌋,⌊−N−32⌋,...,⌊N+12⌋}S={an|n=⌊−N−12⌋,⌊−N−32⌋,...,⌊N+12⌋}

對于 s∈S s ∈ S , 選取預測位置中心的 sP×sQ s P × s Q 區域, resize到 P×Q P × Q 大小。然後提取HOG特征。

然後取響應最大值:

s^=argmaxs{max(y^1),max(y^2),...,max(y^s)} s ^ = a r g m a x s { m a x ( y ^ 1 ) , m a x ( y ^ 2 ) , . . . , m a x ( y ^ s ) }

則當 max(y^s^)>Ta m a x ( y ^ s ^ ) > T a 時更新 Rt R t

Online Detector

當跟蹤失敗,我們需要使用一個檢測器重新初始化跟蹤器。那麼,就需要知道什麼時候跟蹤就失敗了。我們這裡設定了第二個門檻值 Tb T b ,如果 max(y^s^)<Tb m a x ( y ^ s ^ ) < T b 時重新檢測。

算法流程

  • 輸入:

    初始化目标檢測框

  • 輸出:

    預測的目标狀态(state): Xt=(x^t,y^t,s^t) X t = ( x ^ t , y ^ t , s ^ t )

    兩個回歸模型 Rc,Rt R c , R t , 一個檢測器 Drf D r f

  • repeat:

    根據 (xt−1,yt−1) ( x t − 1 , y t − 1 ) 在第t幀上選取檢索範圍(seraching window) 并提取特征

    //平移估計

    使用 RC R C 計算響應 Yt Y t ,并估計目前幀位置 (xt,yt) ( x t , y t )

    //尺度估計

    在 (xt,yt) ( x t , y t ) 附近構造圖像金字塔,計算相關響應 ys y s .

    使用 Rt R t 估計最佳尺度 s^ s ^

    //此時,得到了第t幀的狀态 (xt,yt,st) ( x t , y t , s t )

    //重新檢測

    如果 max(y^s^)<Tb m a x ( y ^ s ^ ) < T b :

    {

    調用檢測器重新檢測

    如果檢測得分大于門檻值,則更新軌迹

    }

    //更新模型

    更新 Rc R c

    如果 max(y^s^)>Ta m a x ( y ^ s ^ ) > T a :

    {

    更新 Rt R t

    }

    更新檢測器

  • 如果視訊序列結束,停止循環
    【目标跟蹤】Long-term Correlation Tracking 閱讀筆記Long-term Correlation Tracking

繼續閱讀