利用吸收態馬爾科夫鏈進行基於超畫素分割的目標跟蹤【Superpixel-based Tracking-by-Segmentation using Markov Chains】
CVPR2017目標跟蹤領域中的一篇,文章的亮點在於實現了基於分割的跟蹤,博主剛好對這一方向比較感興趣,所以解讀一下文章。
首先介紹一下什麼是 基於分割的跟蹤。一般意義上的目標跟蹤,就是在一個視訊序列中,根據第一幀給出的目標,對目標在後續幀進行跟蹤,傳統的跟蹤方法是用矩形框框出跟蹤目標,如下:
而基於分割的跟蹤,在找出目標的同時,還需要對目標進行分割,即找到目標的輪廓:
毫無疑問,基於分割的目標跟蹤可以給出更精細的輪廓,提供目標更多的形狀資訊。但是,也比傳統意義上用矩形框進行跟蹤的方法更難實現。
接下來我們看看該文章是如何實現基於分割的目標跟蹤的。
正如文章名一樣,文章主要用了吸收態馬爾科夫鏈(AMC, Absorbing Markov Chain)和超畫素(Superpixel)兩個概念實現了基於分割的跟蹤。
超畫素
吸收態馬爾科夫鏈用來對超畫素進行前後景分類。
吸收態馬爾科夫鏈(AMC)
如圖,在馬爾可夫鏈中,稱
文章中還有矩陣P、Q、R的描述,具體推導可見這一篇部落格:吸收馬爾科夫鏈。在此就不再贅述。
初步瞭解了吸收態馬爾科夫鏈之後,就能對它在本文中的作用有一個認識了:若一副圖片中的超畫素
演算法流程
瞭解了馬爾科夫鏈的作用之後,文章大致的思路就出來了:首先,對當前幀t進行超畫素分割;然後,根據t-1幀結果和當前幀建立吸收態馬爾科夫鏈圖(AMC graph);再根據AMC graph算出每個超畫素的吸收時間(absorption time);最後,文中取吸收時間的平均值為閾值,進行超畫素的分類,然後再遞迴到t+1幀。
構建AMC graph
AMC graph分為兩個元素,vertex和edge,vertex比較簡單就不做解釋了,主要就是如何求每個edge上的權重(weight)。每個edge的權重由相鄰超畫素特徵的相似度求得。 具有相同標籤的超畫素之間的權重應大於具有不同標籤的超畫素之間的權重。 文中採用支援向量迴歸( support vector regressor)的方法,最大化前景和背景樣本之間的差異,同時最小化具有相同標籤的示例之間的差異。文中有很詳細的數學推導,在此就不列出。
跟蹤的實現及細節問題
在文章的第五章節,給出了演算法在實現過程中的三個細節問題,在此簡要介紹一下
1.優化吸收時間
文中根據邊緣型別,用不同的係數(
2.整體外觀模型
文中說,由上一小節中描述的自下而上方法生成的目標分割掩碼可能由於缺少前景超畫素而被分段,並且包含假陽性超畫素。 為了減輕目標碎片問題,我的理解是,作者在原來相鄰edge的基礎上,還加入了與相鄰的超畫素的鄰居超畫素之間聯通路徑(也就是文中的“2 hops“),等於說增加了區域性資訊。
此外,通過不斷更新一個外觀模型
3.對第一幀的初始分割