opencv目標跟蹤概述和人臉跟蹤
阿新 • • 發佈:2019-02-03
概述
opencv內部實現了一些單目標跟蹤演算法,可以很方便的使用。
這裡說的目標跟蹤不是多目標跟蹤,往往是需要人工或程式給定初始目標位置。
資源及跟蹤演算法介紹
這個頁面介紹了幾個常用的跟蹤演算法:
- BOOSTING Tracker:基於線上Adaboosting的跟蹤演算法,這個演算法也經常被使用 HAAR級聯的人臉檢測演算法使用。演算法比較老,效果一般,一般不推薦使用
- MIL Tracker:原理與上面的很類似,區別在於除了當前位置,還把周圍部分割槽域作為positive example。導致跟蹤的目標經常不在正中間。這個演算法在部分遮擋下也有不錯的表現,在沒有KCF之前可以作為首選。缺點也有,不能從完全遮擋中恢復
- KCF Tracker:全稱是Kernelized Correlation Filters,利用了上面兩個跟蹤演算法的一些原理。這個跟蹤器利用了這個事實:在MIL跟蹤器中使用的多個正樣本有很大的重疊區域。這些重疊的資料可以被這個跟蹤器有效利用,使跟蹤更快、更準確。綜合來說,速度和精度都比上面兩個好,但是完全遮擋後不可恢復。
- TLD Tracker:TLD表示Tracking, learning and detection.就像名字裡說的,這個演算法把長期跟蹤問題分解為(短期的)三個子任務:tracking, learning, detection。這個跟蹤器的輸出會跳來跳去,好處就是可以在物體大小變化、移動和遮擋的情況下有不錯的表現,所以比較適合有遮擋的物體跟蹤。
- MEDIANFLOW Tracker:這個跟蹤器在時間的前向和後向上做跟蹤。當物體於運動方向有規則和沒有遮擋時,它的效果是最好的。
In goturn.prototxt,
replace all "data1" to ".data1" & "data2" to ".data2"
親測有效,不過速度很慢,cpu上也就10fps.GOTURN對於外形、視角、光線的變化適應性較強,對於遮擋處理的不好。
對於人臉的跟蹤效果
測試物件為畫面中比較近的單個人臉,運動慢,有轉動,無遮擋和明顯光線變化。
重點考察KCF、MEDIANFLOW和GOTURN。
速度:MEDIANFLOW > KCF > GOTURN
精度:MEDIANFLOW > KCF > GOTURN
其實,在近場人臉場景下,MIL和KCF效果差不多,只是慢一點,跟蹤穩定性上還有點優勢。
最後選擇了MEDIANFLOW作為人臉跟蹤演算法。