1. 目標跟蹤檢測演算法(一)——傳統方法
姓名:劉帆;學號:20021210609;學院:電子工程學院
https://blog.csdn.net/qq_34919792/article/details/89893214
【嵌牛導讀】目標跟蹤演算法研究難點與挑戰在於實際復雜的應用環境 、背景相似干擾、光照條件的變化、遮擋等外界因素以及目標姿態變化,外觀變形,尺度變化、平面外旋轉、平面內旋轉、出視野、快速運動和運動模糊等。而且當目標跟蹤演算法投入實際應用時,不可避免的一個問題——實時性問題也是非常的重要。正是有了這些問題,才使得演算法研究充滿著難點和挑戰。
【嵌牛鼻子】目標跟蹤演算法,傳統演算法
【嵌牛提問】利用目標跟蹤檢測演算法要達到何目的?第一階段的單目標追蹤演算法包括什麼?具體步驟有哪些?它們有何特點?
【嵌牛正文】
第一階段
目標跟蹤分為兩個部分,一個是對指定目標尋找可以跟蹤的特徵,常用的有顏色,輪廓,特徵點,軌跡等,另一個是對目標特徵進行跟蹤。
1、靜態背景
1)背景差: 對背景的光照變化、雜訊干擾以及周期性運動等進行建模。通過當前幀減去背景圖來捕獲運動物體的過程。
2)幀差: 由於場景中的目標在運動,目標的影像在不同圖像幀中的位置不同。該類演算法對時間上連續的兩幀或三幀圖像進行差分運算,不同幀對應的像素點相減,判斷灰度差的絕對值,當絕對值超過一定閾值時,即可判斷為運動目標,從而實現目標的檢測功能。
與二幀差分法不同的是,三幀差分法(交並運算)去除了重影現象,可以檢測出較為完整的物體。幀間差分法的原理簡單,計算量小,能夠快速檢測出場景中的運動目標。但幀間差分法檢測的目標不完整,內部含有「空洞」,這是因為運動目標在相鄰幀之間的位置變化緩慢,目標內部在不同幀圖像中相重疊的部分很難檢測出來。幀間差分法通常不單獨用在目標檢測中,往往與其它的檢測演算法結合使用。
3)Codebook
演算法為圖像中每一個像素點建立一個碼本,每個碼本可以包括多個碼元(對應閾值范圍),在學習階段,對當前像素點進行匹配,如果該像素值在某個碼元的學習閾值內,也就是說與之前出現過的某種歷史情況偏離不大,則認為該像素點符合背景特徵,需要更新對應點的學習閾值和檢測閾值。
如果新來的像素值與每個碼元都不匹配,則可能是由於動態背景導致,這種情況下,我們需要為其建立一個新的碼元。每個像素點通過對應多個碼元,來適應復雜的動態背景。
在應用時,每隔一段時間選擇K幀通過更新演算法建立CodeBook背景模型,並且刪除超過一段時間未使用的碼元。
4)GMM
混合高斯模型(Gaussian of Micture Models,GMM)是較常用的背景去除方法之一(其他的還有均值法、中值法、滑動平均濾波等)。
首先我們需要了解單核高斯濾波的演算法步驟:
混合高斯建模GMM(Gaussian Mixture Model)作為單核高斯背景建模的擴展,是目前使用最廣泛的一種方法,GMM將背景模型描述為多個分布,每個像素的R、G、B三個通道像素值的變化分別由一個混合高斯模型分布來刻畫,符合其中一個分布模型的像素即為背景像素。作為最常用的一種背景建模方法,GMM有很多改進版本,比如利用紋理復雜度來更新差分閾值,通過像素變化的劇烈程度來動態調整學習率等。
5)ViBe(2011)
ViBe演算法主要特點是隨機背景更新策略,這和GMM有很大不同。其步驟和GMM類似。具體的思想就是為每個像素點存儲了一個樣本集,樣本集中采樣值就是該像素點過去的像素值和其鄰居點的像素值,然後將每一個新的像素值和樣本集進行比較來判斷是否屬於背景點。
其中pt(x)為新幀的像素值,R為設定值,p1、p2、p3….為樣本集中的像素值,以pt(x)為圓心R為半徑的圓被認為成一個集,當樣本集與此集的交集大於設定的閾值#min時,可認為此為背景像素點(交集越大,表示新像素點與樣本集越相關)。我們可以通過改變#min的值與R的值來改變模型的靈敏度。
Step1:初始化單幀圖像中每個像素點的背景模型。假設每一個像素和其鄰域像素的像素值在空域上有相似的分布。基於這種假設,每一個像素模型都可以用其鄰域中的像素來表示。為了保證背景模型符合統計學規律,鄰域的范圍要足夠大。當輸入第一幀圖像時,即t=0時,像素的背景模型。其中,NG(x,y)表示空域上相鄰的像素值,f(xi,yi)表示當前點的像素值。在N次的初始化的過程中,NG(x,y)中的像素點(xi,yi)被選中的可能次數為L=1,2,3,…,N。
Step2:對後續的圖像序列進行前景目標分割操作。當t=k時,像素點(x,y)的背景模型為BKm(x,y),像素值為fk(x,y)。按照下面判斷該像素值是否為前景。這里上標r是隨機選的;T是預先設置好的閾值。當fk(x,y)滿足符合背景#N次時,我們認為像素點fk(x,y)為背景,否則為前景。
Step3:ViBe演算法的更新在時間和空間上都具有隨機性。每一個背景點有1/ φ的概率去更新自己的模型樣本值,同時也有1/ φ的概率去更新它的鄰居點的模型樣本值。更新鄰居的樣本值利用了像素值的空間傳播特性,背景模型逐漸向外擴散,這也有利於Ghost區域的更快的識別。同時當前景點計數達到臨界值時將其變為背景,並有1/ φ的概率去更新自己的模型樣本值(為了減少緩慢移動物體的影響和攝像機的抖動)。
可以有如下總結,ViBe中的每一個像素點在更新的時候都有一個時間和空間上隨機影響的范圍,這個范圍很小,大概3x3的樣子,這個是考慮到攝像頭抖動時會有坐標的輕微來回變化,這樣雖然由於ViBe的判別方式仍認為是背景點,但是也會對後面的判別產生影響,為了保證空間的連續性,隨機更新減少了這個影響。而在樣本值保留在樣本集中的概率隨著時間的增大而變小,這就保證了像素模型在時間上面的延續特性。
6)光流
光流是由物體或相機的運動引起的圖像對象在兩個連續幀之間的視在運動模式。它是2D矢量場,其中每個矢量是一個位移矢量,顯示點從第一幀到第二幀的移動。
光流實際上是一種特徵點跟蹤方法,其計算的為向量,基於三點假設:
1、場景中目標的像素在幀間運動時亮度(像素值或其衍生值)不發生變化;2、幀間位移不能太大;3、同一表面上的鄰近點都在做相同的運動;
光流跟蹤過程:1)對一個連續視頻幀序列進行處理;2)對每一幀進行前景目標檢測;3)對某一幀出現的前景目標,找出具有代表性的特徵點(Harris角點);4)對於前後幀做像素值比較,尋找上一幀在當前幀中的最佳位置,從而得到前景目標在當前幀中的位置信息;5)重復上述步驟,即可實現目標跟蹤
2、運動場(分為相機固定,但是視角變化和相機是運動的)
1)運動建模(如視覺里程計運動模型、速度運動模型等)
運動學是對進行剛性位移的相機進行構型,一般通過6個變數來描述,3個直角坐標,3個歐拉角(橫滾、俯仰、偏航)。
Ⅰ、對相機的運動建模
由於這個不是我們本次所要討論的重點,但是在《概率機器人》一書中提出了很多很好的方法,相機的運動需要對圖像內的像素做位移矩陣和旋轉矩陣的坐標換算。除了對相機建立傳統的速度運動模型外,也可以用視覺里程計等通關過置信度的更新來得到概率最大位置。
Ⅱ、對於跟蹤目標的運動建模
該方法需要提前通過先驗知識知道所跟蹤的目標對象是什麼,比如車輛、行人、人臉等。通過對要跟蹤的目標進行建模,然後再利用該模型來進行實際的跟蹤。該方法必須提前知道要跟蹤的目標對象是什麼,然後再去跟蹤指定的目標,這是它的局限性,因而其推廣性相對比較差。(比如已知跟蹤的物體是羽毛球,那很容易通過前幾幀的取點,來建立整個羽毛球運動的拋物線模型)
2)核心搜索演算法(常見的預測演算法有Kalman(卡爾曼)濾波、擴展卡爾曼濾波、粒子濾波)
Ⅰ、Kalman 濾波
Kalman濾波器是通過前一狀態預測當前狀態,並使用當前觀測狀態進行校正,從而保證輸出狀態平穩變化,可有效抵抗觀測誤差。因此在運動目標跟蹤中也被廣泛使用。
在視頻處理的運動目標跟蹤里,每個目標的狀態可表示為(x,y,w,h),x和y表示目標位置,w和h表示目標寬高。一般地認為目標的寬高是不變的,而其運動速度是勻速,那麼目標的狀態向量就應該擴展為(x,y,w,h,dx,dy),其中dx和dy是目標當前時刻的速度。通過kalman濾波器來估計每個時刻目標狀態的大致過程為:
對視頻進行運動目標檢測,通過簡單匹配方法來給出目標的第一個和第二個狀態,從第三個狀態開始,就先使用kalman濾波器預測出當前狀態,再用當前幀圖像的檢測結果作為觀測值輸入給kalman濾波器,得到的校正結果就被認為是目標在當前幀的真實狀態。(其中,Zt為測量值,為預測值,ut為控制量,Kt為增益。)
Ⅱ、擴展卡爾曼濾波(EKF)和無跡卡爾曼濾波(UKF)
由於卡爾曼濾波的假設為線性問題,無法直接用在非線性問題上,EKF和UKF解決了這個問題(這個線性問題體現在用測量量來計算預測量的過程中)。EKF是通過構建線性函數g(x),與非線性函數相切,並對每一時刻所求得的g(x)做KF,如下圖所示。
UKF與EKF去求解雅可比矩陣擬合線性方程的方法不同,通過對那個先驗分布中的採集點,來線性化隨機變數的非線性函數。與EKF所用的方法不同,UKF產生的高斯分布和實際高斯分布更加接近,其引起的近似誤差也更小。
Ⅲ、粒子濾波
1、初始狀態:基於粒子濾波的目標追蹤方法是一種生成式跟蹤方法,所以要有一個初始化的階段。對於第一幀圖像,人工標定出待檢測的目標,對該目標區域提出特徵;
2、搜索階段:現在已經知道了目標的特徵,然後就在目標的周圍撒點(particle), 如:a)均勻的撒點;b)按高斯分布撒點,就是近的地方撒得多,遠的地方撒的少。論文里使用的是後一種方法。每一個粒子都計算所在區域內的顏色直方圖,如初始化提取特徵一樣,然後對所有的相似度進行歸一化。文中相似性使用的是巴氏距離;
3、重采樣:根據粒子權重對粒子進行篩選,篩選過程中,既要大量保留權重大的粒子,又要有一小部分權重小的粒子;
4、狀態轉移:將重采樣後的粒子帶入狀態轉移方程得到新的預測粒子;
5、測量及更新:對目標點特徵化,並計算各個粒子和目標間的巴氏距離,更新粒子的權重;
6、決策階段:每個粒子都獲得一個和目標的相似度,相似度越高,目標在該范圍出現的可能性越高,將保留的所有粒子通過相似度加權後的結果作為目標可能的位置。
3)Meanshift演算法
MeanShift演算法屬於核密度估計法,它不需要任何先驗知識而完全依靠特徵空間中樣本點的計算其密度函數值。對於一組采樣數據,直方圖法通常把數據的值域分成若干相等的區間,數據按區間分成若干組,每組數據的個數與總參數個數的比率就是每個單元的概率值;核密度估計法的原理相似於直方圖法,只是多了一個用於平滑數據的核函數。採用核函數估計法,在采樣充分的情況下,能夠漸進地收斂於任意的密度函數,即可以對服從任何分布的數據進行密度估計。
Meanshift演算法步驟
1、通過對初始點(或者上一幀的目標點)為圓心,繪制一個半徑為R的圓心,尋找特徵和該點相似的點所構成的向量;
2、所有向量相加,可以獲得一個向量疊加,這個向量指向特徵點多的方向;
3、取步驟二的向量終點為初始點重復步驟一、二,直到得到的向量小於一定的閾值,也就是說明當前位置是特徵點密度最密集的地方,停止迭代,認為該點為當前幀的目標點;
4)Camshift演算法
Camshift演算法是MeanShift演算法的改進,稱為連續自適應的MeanShift演算法。Camshift 是由Meanshift 推導而來 Meanshift主要是用在單張影像上,但是獨立一張影像分析對追蹤而言並無意義,Camshift 就是利用MeanShift的方法,對影像串列進行分析。
1、首先在影像串列中選擇目標區域。
2、計算此區域的顏色直方圖(特徵提取)。
3、用MeanShift演演算法來收斂欲追蹤的區域。
4、通過目標點的位置和向量信息計算新的窗口大小,並標示之。
5、以此為參數重復步驟三、四。
Camshift 關鍵就在於當目標的大小發生改變的時候,此演算法可以自適應調整目標區域繼續跟蹤。
3、小結
第一階段的單目標追蹤演算法基本上都是傳統方法,計算量小,在嵌入式等設備中落地較多,opencv中也預留了大量的介面。通過上面的兩節的介紹,我們不難發現,目標檢測演算法的步驟分為兩部分,一部分是對指定目標尋找可以跟蹤的特徵,常用的有顏色,輪廓,特徵點,軌跡等,另一部分是對目標特徵進行跟蹤,如上文所提及的方法。所以目標檢測方法的發展,也可總結為兩個方面,一個是如何去獲得更加具有區分性的可跟蹤的穩定特徵,另一個是如何建立幀與幀之間的數據關聯,保證跟蹤目標是正確的。
隨著以概率為基礎的卡爾曼濾波、粒子濾波或是以Meanshift為代表向量疊加方法在目標檢測的運用,使得目標檢測不再需要假設自身的一個狀態為靜止的,而是可以是運動的,更加符合復雜場景中的目標跟蹤。
2. 目標跟蹤檢測演算法(四)——多目標擴展
姓名:劉帆;學號:20021210609;學院:電子工程學院
https://blog.csdn.net/qq_34919792/article/details/89893665
【嵌牛導讀】基於深度學習的演算法在圖像和視頻識別任務中取得了廣泛的應用和突破性的進展。從圖像分類問題到行人重識別問題,深度學習方法相比傳統方法表現出極大的優勢。與行人重識別問題緊密相關的是行人的多目標跟蹤問題。
【嵌牛鼻子】深度多目標跟蹤演算法
【嵌牛提問】深度多目標跟蹤演算法有哪些?
【嵌牛正文】
第一階段(概率統計最大化的追蹤)
1)多假設多目標追蹤演算法(MHT,基於kalman在多目標上的拓展)
多假設跟蹤演算法(MHT)是非常經典的多目標跟蹤演算法,由Reid在對雷達信號的自動跟蹤研究中提出,本質上是基於Kalman濾波跟蹤演算法在多目標跟蹤問題中的擴展。
卡爾曼濾波實際上是一種貝葉斯推理的應用,通過歷史關聯的預測量和k時刻的預測量來計算後驗概率:
關聯假設的後驗分布是歷史累計概率密度的連乘,轉化為對數形式,可以看出總體後驗概率的對數是每一步觀察似然和關聯假設似然的求和。但是若同時出現多個軌跡的時候,則需要考慮可能存在的多個假設關聯。
左圖為k-3時刻三個檢測觀察和兩條軌跡的可能匹配。對於這種匹配關系,可以繼續向前預測兩幀,如圖右。得到一種三層的假設樹結構,對於假設樹根枝乾的剪枝,得到k-3時刻的最終關聯結果。隨著可能性增加,假設組合會爆炸性增多,為此,只為了保留最大關聯性,我們需要對其他的節點進行裁剪。下式為選擇方程
實際上MHT不會單獨使用,一般作為單目標追蹤的擴展添加。
2)基於檢測可信度的粒子濾波演算法
這個演算法分為兩個步驟:
1、對每一幀的檢測結果,利用貪心匹配演算法與已有的對象軌跡進行關聯。
其中tr表示一個軌跡,d是某一個檢測,他們的匹配親和度計算包含三個部分:在線更新的分類學習模型(d),用來判斷檢測結果是不是屬於軌跡tr; 軌跡的每個粒子與檢測的匹配度,採用中心距離的高斯密度函數求和(d-p)表示;與檢測尺寸大小相關的閾值函數g(tr,d),表示檢測與軌跡尺度的符合程度, 而α是預設的一個超參數。
計算出匹配親和度矩陣之後,可以採用二部圖匹配的Hungarian演算法計算匹配結果。不過作者採用了近似的貪心匹配演算法,即首先找到親和度最大的那個匹配,然後刪除這個親和度,尋找下一個匹配,依次類推。貪心匹配演算法復雜度是線性,大部分情況下,也能得到最優匹配結果。
2、利用關聯結果,計算每個對象的粒子群權重,作為粒子濾波框架中的觀察似然概率。
其中tr表示需要跟蹤的對象軌跡,p是某個粒子。指示函數I(tr)表示第一步關聯中,軌跡tr是不是關聯到某個檢測結果,當存在關聯時,計算與關聯的檢測d 的高斯密度P{n}(p-d );C{tr}§是對這個粒子的分類概率;§是粒子通過檢測演算法得到的檢測可信度,(tr)是一個加權函數,計算如下:
3)基於馬爾科夫決策的多目標跟蹤演算法
作者把目標跟蹤看作為狀態轉移的過程,轉移的過程用馬爾科夫決策過程(MDP)建模。一個馬爾科夫決策過程包括下面四個元素:(S, A, T(.),R(.))。其中S表示狀態集合,A表示動作集合,T表示狀態轉移集合,R表示獎勵函數集合。一個決策是指根據狀態s確定動作a, 即 π: SA。一個對象的跟蹤過程包括如下決策過程:
從Active狀態轉移到Tracked或者Inactive狀態:即判斷新出現的對象是否是真。
從Tracked狀態轉移到Tracked或者Lost狀態:即判斷對象是否是持續跟蹤或者暫時處於丟失狀態。
從Lost狀態轉移到Lost或者Tracked或者Inactive狀態:即判斷丟失對象是否重新被跟蹤,被終止,或者繼續處於丟失狀態。
作者設計了三個獎勵函數來描述上述決策過程:
第一個是:
即判斷新出現的對象是否為真,y(a)=1時表示轉移到跟蹤狀態,反之轉移到終止狀態。這是一個二分類問題,採用2類SVM模型學習得到。這里用了5維特徵向量:包括x-y坐標、寬、高和檢測的分數。
第二個是:
這個函數用來判斷跟蹤對象下一時刻狀態是否是出於繼續跟蹤,還是處於丟失,即跟蹤失敗。這里作者用了5個歷史模板,每個模板和當前圖像塊做光流匹配,emedFB表示光流中心偏差, 表示平均重合率。 和 是閾值。
第三個是:
這個函數用來判斷丟失對象是否重新跟蹤,或者終止,或者保持丟失狀態不變。這里當丟失狀態連續保持超過 (=50)時,則轉向終止,其他情況下通過計算M個檢測匹配,來判斷是否存在最優的匹配使上式(3-14)獎勵最大,並大於0。這里涉及兩個問題如何設計特徵以及如何學習參數。這里作者構造了12維與模板匹配相關的統計值。而參數的學習採用強化學習過程,主要思想是在犯錯時候更新二類分類器值。
第二階段 深度學習應用
1)基於對稱網路的多目標跟蹤演算法
關於Siamese網路在單目標跟蹤深度學習中有了介紹,在這里不再介紹,可以向前參考。
2)基於最小多割圖模型的多目標跟蹤演算法
上述演算法中為了匹配兩個檢測採用LUV圖像格式以及光流圖像。Tang等人在文獻中發現採用深度學習計算的類光流特徵(DeepMatching),結合表示能力更強的模型也可以得到效果很好的多目標跟蹤結果。
基於DeepMatching特徵,可以構造下列5維特徵:
其中MI,MU表示檢測矩形框中匹配的點的交集大小以及並集大小,ξv和ξw表示檢測信任度。利用這5維特徵可以學習一個邏輯回歸分類器。
同樣,為了計算邊的匹配代價,需要設計匹配特徵。這里,作者採用結合姿態對齊的疊加Siamese網路計算匹配相似度,如圖9,採用的網路模型StackNetPose具有最好的重識別性能。
綜合StackNetPose網路匹配信任度、深度光流特徵(deepMatching)和時空相關度,作者設計了新的匹配特徵向量。類似於[2], 計算邏輯回歸匹配概率。最終的跟蹤結果取得了非常突出的進步。在MOT2016測試數據上的結果如下表:
3)通過時空域關注模型學習多目標跟蹤演算法
除了採用解決目標重識別問題的深度網路架構學習檢測匹配特徵,還可以根據多目標跟蹤場景的特點,設計合適的深度網路模型來學習檢測匹配特徵。Chu等人對行人多目標跟蹤問題中跟蹤演算法發生漂移進行統計分析,發現不同行人發生交互時,互相遮擋是跟蹤演算法產生漂移的重要原因[4]。如圖10。
在這里插入圖片描述
針對這個問題,文獻[4]提出了基於空間時間關注模型(STAM)用於學習遮擋情況,並判別可能出現的干擾目標。如圖11,空間關注模型用於生成遮擋發生時的特徵權重,當候選檢測特徵加權之後,通過分類器進行選擇得到估計的目標跟蹤結果,時間關注模型加權歷史樣本和當前樣本,從而得到加權的損失函數,用於在線更新目標模型。
該過程分三步,第一步是學習特徵可見圖:
第二步是根據特徵可見圖,計算空間關注圖(Spatial Attention):
其中fatt是一個局部連接的卷積和打分操作。wtji是學習到的參數。
第三步根據空間注意圖加權原特徵圖:
對生成的加權特徵圖進行卷積和全連接網路操作,生成二元分類器判別是否是目標自身。最後用得到分類打分選擇最優的跟蹤結果。
4)基於循環網路判別融合表觀運動交互的多目標跟蹤演算法
上面介紹的演算法採用的深度網路模型都是基於卷積網路結構,由於目標跟蹤是通過歷史軌跡信息來判斷新的目標狀態,因此,設計能夠記憶歷史信息並根據歷史信息來學習匹配相似性度量的網路結構來增強多目標跟蹤的性能也是比較可行的演算法框架。
考慮從三個方面特徵計算軌跡歷史信息與檢測的匹配:表觀特徵,運動特徵,以及交互模式特徵。這三個方面的特徵融合以分層方式計算。
在底層的特徵匹配計算中,三個特徵都採用了長短期記憶模型(LSTM)。對於表觀特徵,首先採用VGG-16卷積網路生成500維的特徵ϕtA,以這個特徵作為LSTM的輸入計算循環。
對於運動特徵,取相對位移vit為基本輸入特徵,直接輸入LSTM模型計算沒時刻的輸出ϕi,對於下一時刻的檢測同樣計算相對位移vjt+1,通過全連接網路計算特徵ϕj,類似於表觀特徵計算500維特徵ϕm,並利用二元匹配分類器進行網路的預訓練。
對於交互特徵,取以目標中心位置周圍矩形領域內其他目標所佔的相對位置映射圖作為LSTM模型的輸入特徵,計算輸出特徵ϕi,對於t+1時刻的檢測計算類似的相對位置映射圖為特徵,通過全連接網路計算特徵ϕj,類似於運動模型,通過全連接網路計算500維特徵ϕI,進行同樣的分類訓練。
當三個特徵ϕA,ϕM,ϕI都計算之後拼接為完整的特徵,輸入到上層的LSTM網路,對輸出的向量進行全連接計算,然後用於匹配分類,匹配正確為1,否則為0。對於最後的網路結構,還需要進行微調,以優化整體網路性能。最後的分類打分看作為相似度用於檢測與軌跡目標的匹配計算。最終的跟蹤框架採用在線的檢測與軌跡匹配方法進行計算。
5)基於雙線性長短期循環網路模型的多目標跟蹤演算法
在對LSTM中各個門函數的設計進行分析之後,Kim等人認為僅僅用基本的LSTM模型對於表觀特徵並不是最佳的方案,在文獻[10]中,Kim等人設計了基於雙線性LSTM的表觀特徵學習網路模型。
除了利用傳統的LSTM進行匹配學習,或者類似[5]中的演算法,拼接LSTM輸出與輸入特徵,作者設計了基於乘法的雙線性LSTM模型,利用LSTM的隱含層特徵(記憶)信息與輸入的乘積作為特徵,進行匹配分類器的學習。
這里對於隱含層特徵ht-1,必須先進行重新排列(reshape)操作,然後才能乘以輸入的特徵向量xt。
其中f表示非線性激活函數,mt是新的特徵輸入。而原始的檢測圖像採用ResNet50提取2048維的特徵,並通過全連接降為256維。下表中對於不同網路結構、網路特徵維度、以及不同LSTM歷史長度時,表觀特徵的學習對跟蹤性能的影響做了驗證。
可以看出採用雙線性LSTM(bilinear LSTM)的表觀特徵性能最好,此時的歷史相關長度最佳為40,這個值遠遠超過文獻[5]中的2-4幀歷史長度。相對來說40幀歷史信息影響更接近人類的直覺。
3. 幾種人體運動檢測演算法的比較分析
引言人體運動分析是目前一個研究熱點,在智能安全監控系統、體育運動分析、醫療診斷等領域具有廣泛的應用前景。它主要涉及計算機視覺、模式識別、圖像處理以及人工智慧等領域,是跨學科的研究課題。其研究核心是從視頻中檢測和跟蹤人體,獲取人體運動數據,以此為基礎重建人體的三維運動,進而描述和理解人體運動。其中人體運動目標檢測的檢測效果直接影響後期的目標識別、跟蹤及行為理解等工作,因此運動人體檢測技術是計算機視頻圖像處理中最基礎、最關鍵的技術,對運動檢測演算法進一步研究具有深遠意義。人體運動檢測是指在輸入視頻圖像中確定運動人體的位置、尺度大小和姿態的過程[1]。目前採用比較多、比較經典的人體運動檢測方法有時間差分法、背景減除法、光流法等。筆者扼要闡述OGHMs法的理論依據,在現有演算法的基礎上,引入圖形學的腐蝕運算,應用於最後獲得的檢測結果,實驗證明腐蝕運算的引入使最終的運動檢測效果更好。同時對其他幾種常用的方法進行介紹和實際應用,根據得到的實驗結果,對這幾種方法以及OGHMs法進行分析和比較,並指出其優點和不足。所有的實驗都是
4. 運動目標檢測與跟蹤技術有哪些演算法
第一章介紹運動的分類、計算機視覺領域中運動分析模型、計算機視覺領域運動檢測和目標跟蹤技術研究現狀、計算機視覺領域中運動分析技術的難點等內容;第二章介紹傳統的運動檢測和目標跟蹤演算法,包括背景差分法、幀間差分法、光流場評估演算法等;第三章介紹具有周期性運動特徵的低速目標運動檢測和跟蹤演算法,並以CCD測量系統為例介紹該演算法的應用;第四章介紹高速運動目標識別和跟蹤演算法,並以激光通信十信標光捕獲和跟蹤系統為例介紹該演算法的應用;第五章介紹具有復雜背景的目標運動檢測過程中採用的光流場演算法,包括正規化相關的特性及其改進光流場評估演算法,並介紹改進光流場演算法的具體應用;第六章介紹互補投票法實現可信賴運動向量估計。
5. 德雲系:擴展模塊的目標跟蹤演算法有哪些
你好,分為了以下四種:
1. KCF:TrackerKCF 使用目標周圍區域的循環矩陣採集正負樣本,利用脊回歸訓練目標檢測器,並成功的利用循環矩陣在傅里葉空間可對角化的性質將矩陣的運算轉化為向量的Hadamad積,即元素的點乘,大大降低了運算量,提高了運算速度,使演算法滿足實時性要求.
2.MIL:TrackerMIL 以在線方式訓練分類器將對象與背景分離;多實例學習避免魯棒跟蹤的漂移問題
3. OLB:TrackerBoosting 基於AdaBoost演算法的在線實時對象跟蹤.分類器在更新步驟中使用周圍背景作為反例以避免漂移問題.
4.MedianFlow:TrackerMedianFlow 跟蹤器適用於非常平滑和可預測的運動,物體在整個序列中可見.
5.TLD:TrackerTLD 將長期跟蹤任務分解為跟蹤,學習和檢測.跟蹤器在幀之間跟蹤對象.探測器本地化所觀察到的所有外觀,並在必要時糾正跟蹤器.學習估計檢測器的錯誤並進行更新以避免再出現這些錯誤.追蹤器能夠處理快速運動,部分遮擋,物體缺失等情況.
6. 目標跟蹤演算法好處
目標跟蹤演算法好處是:
1、可以提高後續檢測的准確性。
2、能夠掌握目標的運動狀態。
7. 運動目標跟蹤檢測論文怎麼寫呢
運動目標檢測與跟蹤演算法研究 視覺是人類感知自身周圍復雜環境最直接有效的手段之一, 而在現實生活中 大量有意義的視覺信息都包含在運動中,人眼對運動的物體和目標也更敏感,能 夠快速的發現運動目標, 並對目標的運動軌跡進行預測和描繪。 隨著計算機技術、 通信技術、圖像處理技術的不斷發展,計算機視覺己成為目前的熱點研究問題之 一。 而運動目標檢測與跟蹤是計算機視覺研究的核心課題之一, 融合了圖像處理、 模式識別、人工智慧、自動控制、計算機等眾多領域的先進技術,在軍事制導、 視覺導航、視頻監控、智能交通、醫療診斷、工業產品檢測等方面有著重要的實 用價值和廣闊的發展前景。 1、國內外研究現狀 1.1 運動目標檢測 運動目標檢測是指從序列圖像中將運動的前景目標從背景圖像中提取出來。 根據運動目標與攝像機之間的關系, 運動目標檢測分為靜態背景下的運動目標檢 測和動態背景下的運動目標檢測。 靜態背景下的運動目標檢測是指攝像機在整個 監視過程中不發生移動; 動態背景下的運動目標檢測是指攝像機在監視過程中發 生了移動,如平動、旋轉或多自由度運動等。 靜態背景 靜態背景下的運動目標檢測方法主要有以下幾種: (1)背景差分法 背景差分法是目前最常用的一種目標檢測方法, 其基本思想就是首先獲得一個 背景模型,然後將當前幀與背景模型相減,如果像素差值大於某一閾值,則判斷 此像素屬於運動目標,否則屬於背景圖像。利用當前圖像與背景圖像的差分來檢 測運動區域,一般能夠提供比較完整的特徵數據,但對於動態場景的變化,如光 照和外來無關事件的干擾等特別敏感。 很多研究人員目前都致力於開發不同的背 景模型,以減少動態場景變化對運動目標檢測的影響。背景模型的建立與更新、 陰影的去除等對跟蹤結果的好壞至關重要。 背景差分法的實現簡單,在固定背景下能夠完整地精確、快速地分割出運動 對象。不足之處是易受環境光線變化的影響,需要加入背景圖像更新機制,且只 對背景已知的運動對象檢測比較有效, 不適用於攝像頭運動或者背景灰度變化很 大的情況。 (2)幀間差分法 幀間差分法是在連續的圖像序列中兩個或三個相鄰幀間, 採用基於像素的時 間差分並閾值化來提取圖像中的運動區域。 幀間差分法對動態環境具有較強的自 適應性,但一般不能完全提取出所有相關的特徵像素點,在運動實體內部容易產 生空洞現象。因此在相鄰幀間差分法的基礎上提出了對稱差分法,它是對圖像序 列中每連續三幀圖像進行對稱差分,檢測出目標的運動范圍,同時利用上一幀分 割出來的模板對檢測出來的目標運動范圍進行修正, 從而能較好地檢測出中間幀 運動目標的形狀輪廓。 幀間差分法非常適合於動態變化的環境,因為它只對運動物體敏感。實際上 它只檢測相對運動的物體,而且因兩幅圖像的時間間隔較短,差分圖像受光線 變化影響小,檢測有效而穩定。該演算法簡單、速度快,已得到廣泛應用。雖然該 方法不能夠完整地分割運動對象,只能檢測出物體運動變化的區域,但所檢測出 的物體運動信息仍可用於進一步的目標分割。 (3)光流法 光流法就充分的利用了圖像自身所攜帶的信息。在空間中,運動可以用運動 場描述,而在一個圖像平面上,物體的運動往往是通過圖像序列中圖像灰度分布 的不同來體現,從而使空間中的運動場轉移到圖像上就表示為光流場。所謂光流 是指空間中物體被觀測面上的像素點運動產生的瞬時速度場, 包含了物體表面結 構和動態行為等重要信息。 基於光流法的運動目標檢測採用了運動目標隨時間變 化的光流特性,由於光流不僅包含了被觀測物體的運動信息,還攜帶了物體運動 和景物三位結構的豐富信息。 在比較理想的情況下,它能夠檢測獨立運動的對象, 不需要預先知道場景的任何信息,可以很精確地計算出運動物體的速度,並且可 用於動態場景的情況。 但是大多數光流方法的計算相當復雜,對硬體要求比較高, 不適於實時處理,而且對雜訊比較敏感,抗噪性差。並且由於遮擋、多光源、透明 性及雜訊等原因,使得光流場基本方程——灰度守恆的假設條件無法滿足,不能 正確求出光流場,計算方也相當復雜,計算量巨大,不能滿足實時的要求。 動態背景 動態背景下的運動目標檢測由於存在著目標與攝像機之間復雜的相對運動, 檢測方法要比靜態背景下的運動目標檢測方法復雜。常用的檢測方法有匹配法、 光流法以及全局運動估計法等。 2、運動目標跟蹤 運動目標跟蹤是確定同一物體在圖像序列的不同幀中的位置的過程。 近年來 出現了大批運動目標跟蹤方法,許多文獻對這些方法進行了分類介紹,可將目標 跟蹤方法分為四類:基於區域的跟蹤、基於特徵的跟蹤、基於活動輪廓的跟蹤、 基於模型的跟蹤,這種分類方法概括了目前大多數跟蹤方法,下面用這種分類方 法對目前的跟蹤方法進行概括介紹。 (1)基於區域的跟蹤 基於區域的跟蹤方法基本思想是: 首先通過圖像分割或預先人為確定提取包 含目標區域的模板,並設定一個相似性度量,然後在序列圖像中搜索目標,把度 量取極值時對應的區域作為對應幀中的目標區域。 由於提取的目標模板包含了較 完整的目標信息,該方法在目標未被遮擋時,跟蹤精度非常高,跟蹤非常穩定, 但通常比較耗時,特別是當目標區域較大時,因此一般應用於跟蹤較小的目標或 對比度較差的目標。該方法還可以和多種預測演算法結合使用,如卡爾曼預測、粒 子預測等,以估計每幀圖像中目標的位置。近年來,對基於區域的跟蹤方法關注 較多的是如何處理運動目標姿態變化引起的模板變化時的情況以及目標被嚴重 遮擋時的情況。 (2)基於特徵的跟蹤 基於特徵的跟蹤方法基本思想是:首先提取目標的某個或某些局部特徵,然 後利用某種匹配演算法在圖像序列中進行特徵匹配,從而實現對目標的跟蹤。該方 法的優點是即使目標部分被遮擋,只要還有一部分特徵可以被看到,就可以完成 跟蹤任務,另外,該方法還可與卡爾曼濾波器結合使用,實時性較好,因此常用 於復雜場景下對運動目標的實時、 魯棒跟蹤。 用於跟蹤的特徵很多, 如角點邊緣、 形狀、紋理、顏色等,如何從眾多的特徵中選取最具區分性、最穩定的特徵是基 於特徵的跟蹤方法的關鍵和難點所在。 (3)基於活動輪廓的跟蹤 基於活動輪廓的跟蹤方法基本思想是:利用封閉的曲線輪廓表達運動目標, 結合圖像特徵、曲線輪廓構造能量函數,通過求解極小化能量實現曲線輪廓的自 動連續更新,從而實現對目標的跟蹤。自Kass在1987年提出Snake模型以來,基 於活動輪廓的方法就開始廣泛應用於目標跟蹤領域。相對於基於區域的跟蹤方 法,輪廓表達有減少復雜度的優點,而且在目標被部分遮擋的情況下也能連續的 進行跟蹤,但是該方法的跟蹤結果受初始化影響較大,對雜訊也較為敏感。 (4)基於模型的跟蹤 基於模型的跟蹤方法基本思想是: 首先通過一定的先驗知識對所跟蹤目標建 立模型,然後通過匹配跟蹤目標,並進行模型的實時更新。通常利用測量、CAD 工具和計算機視覺技術建立模型。主要有三種形式的模型,即線圖模型、二維輪 廓模型和三維立體模型口61,應用較多的是運動目標的三維立體模型,尤其是對 剛體目標如汽車的跟蹤。該方法的優點是可以精確分析目標的運動軌跡,即使在 目標姿態變化和部分遮擋的情況下也能夠可靠的跟蹤, 但跟蹤精度取決於模型的 精度,而在現實生活中要獲得所有運動目標的精確模型是非常困難的。 目標檢測演算法,至今已提出了數千種各種類型的演算法,而且每年都有上百篇相 關的研究論文或報告發表。盡管人們在目標檢測或圖像分割等方面做了許多研 究,現己提出的分割演算法大都是針對具體問題的,並沒有一種適合於所有情況的 通用演算法。 目前, 比較經典的運動目標檢測演算法有: 雙幀差分法、 三幀差分法(對 稱差分法)、背景差法、光流法等方法,這些方法之間並不是完全獨立,而是可 以相互交融的。 目標跟蹤的主要目的就是要建立目標運動的時域模型, 其演算法的優劣直接影響 著運動目標跟蹤的穩定性和精確度, 雖然對運動目標跟蹤理論的研究已經進行了 很多年,但至今它仍然是計算機視覺等領域的研究熱點問題之一。研究一種魯棒 性好、精確、高性能的運動目標跟蹤方法依然是該研究領域所面臨的一個巨大挑 戰。基於此目的,系統必須對每個獨立的目標進行持續的跟蹤。為了實現對復雜 環境中運動目標快速、穩定的跟蹤,人們提出了眾多演算法,但先前的許多演算法都 是針對剛體目標,或是將形變較小的非剛體近似為剛體目標進行跟蹤,因而這些 演算法難以實現對形狀變化較大的非剛體目標的正確跟蹤。 根據跟蹤演算法所用的預 測技術來劃分,目前主要的跟蹤演算法有:基於均值漂移的方法、基於遺傳演算法的 方法、基於Kalman濾波器的方法、基於Monto Carlo的方法以及多假設跟蹤的方 法等。
運動檢測與目標跟蹤演算法模塊 運動檢測與目標跟蹤演算法模塊 與目標跟蹤 一、運動檢測演算法 1.演算法效果 演算法效果總體來說,對比度高的視頻檢測效果要優於對比度低的視頻。 演算法可以比較好地去除目標周圍的淺影子,淺影的去除率在 80%以上。去影後目標的 完整性可以得到較好的保持,在 80%以上。在對比度比較高的環境中可以准確地識別較大 的滯留物或盜移物。 從對目標的檢測率上來說,對小目標較難進行檢測。一般目標小於 40 個像素就會被漏 掉。對於對比度不高的目標會檢測不完整。總體上來說,演算法在對比度較高的環境中漏檢率 都較低,在 0.1%以下,在對比度不高或有小目標的場景下漏檢率在 6%以下。 精細運動檢測的目的是在較理想的環境下盡量精確地提取目標的輪廓和區域, 以供高層 進行應用。同時在分離距離較近目標和進行其它信息的進一步判斷也具有一定的優勢。 反映演算法優缺點的詳細效果如下所示: 去影子和完整性 效果好 公司內視頻 左邊的為去影前,右邊的 為去影後的結果,可以看出在 完整 性和去影率上 都有所 突 出。 這兩個視頻的共周特點 城市交通 是,影子都是淺影子,視頻噪 聲不太明顯。目標與背景的對 比度比較高。 效果差 這兩個視頻的特點是影子 都是深影子。雖然影子沒有去 掉,但是物體的完整性是比較 高的。主要原因就是場景的對 路口,上午 十點 比度比較高。 滯留物檢測和穩定性 效果好 會議室盜移 效果好的原因,一是盜移或 滯留目標與背景對比度較大,二 是目標本身尺寸較大。 另外盜移物或滯留物在保持 各自的狀態期間不能受到光照變 化或其它明顯運動目標的干擾, 要不然有可能會造成判斷的不穩 定。 效果差 會議室 遺留 物 大部分時間內,滯留的判斷 都是較穩定的,但是在後期出現 了不穩定。主要原因是目標太小 的原故。 因此在進行滯留物判斷時, 大目標,對比度較高的環境有利 於判斷的穩定性和准確性。 漏檢率 效果好 城市交通 在對比度高的環境下, 目標相對都較大的情況下 (大於 40 個像素) 可以很 , 穩定的檢測出目標。 在這種 條件下的漏檢率通常都是 非常低的,在 0.1%以下。 效果差 行人-傍晚 和「行人」目錄下 的 其 它 昏 暗 條件 下的視頻 在對 比度較低的 情況 下,會造成檢測結果不穩 定。漏檢率較高。主要原因 是由於去影子造成的。 這種 對比度下的漏檢率一般在 6%以下。 除了 對比度低是 造成 漏檢的原因外, 過小的目標 也會造成漏檢,一般是 40 個像素以下的目標都會被 忽略掉。 1.2 演算法效率內存消耗(單位:b) .MD_ISRAM_data .MD_ISRAM_bss .MD_SDRAM_data 0x470 0x24 0x348 .MD_SDRAM_bss .MD_text 0x1a8480 0x6d40 速度 ms 運動區域占 2/3 左右時 CPU 佔用率 一幀耗時 Max:57% Min:2.8% Avg:37.5% Max:23 Min:1.14 Avg:15 運動區域占 1/3 左右時 Max:45% Min:2.8% Avg:20% Max:18 Min:1.14 Avg:8 1.3 檢測參數說明 檢測參數說明 檢測到的滯留物或盜走物的消失時間目前分別設定在 200 幀和 100 幀, 可以通過參數來 自行調整。 目前目標與背景的差異是根據局部光照強度所決定的, 范圍在 4 個像素值以上。 目前參 數設置要求目標大小要在 20 個像素以上才能被檢測到,可以通過參數來自行調整。 目標陰影的去除能力是可以調整的, 目前的參數設置可以去除大部分的淺影子和較小的 光照變化。 1.4 適用環境推薦光照條件較好(具有一定的對比度)的室內環境或室外環境。不易用它去檢測過小的目 標,比如小於 40 個像素的目標。室外環境不易太復雜。輸出目標為精細輪廓目標,可以為 後面高層應用提供良好的信息。 二、目標跟蹤 2.1 穩定運行環境要求此版本跟蹤演算法與運動檢測演算法緊密結合, 對相機的架設和視頻的背景環境和運動目標 數量運動方式有一定要求: 背景要求: 由於運動跟蹤是基於運動檢測的結果進行的, 所以對背景的要求和運動檢測一樣, 背景要求: 運動目標相對於背景要有一定反差。 運動目標:由於運動檢測中,對較小的目標可能過濾掉。所以運動目標的大小要符合運動檢 運動目標: 測的要求。運動目標的速度不能太大,要保證前後幀運動目標的重合面積大於 10 個像素。此閾值可修改(建議不要隨意修改,過小,可能把碎片當成原目標分 裂出來的小目標,過大,可能失去跟蹤。當然可試著調節以適應不同場景)。該 演算法對由於運動檢測在地面上產生的碎片抗干擾性比較差, 運動目標和碎片相遇 時,容易發生融合又分離的現象,造成軌跡混亂。消失目標和新生目標很容易當 成同一目標處理,所以可能出現一個新目標繼承新生目標的軌跡。 運動方式: 運動目標的最大數量由外部設定。 但運動跟蹤對運動目標比較稀疏的場景效果比 運動方式: 較好。 演算法對由於運動檢測在運動目標上產生的碎片有一定的抗干擾。 演算法沒對 物體的遮擋進行處理。對於兩運動目標之間的遮擋按融合來處理。 拍攝角度: 拍攝角度:拍攝視野比較大,且最好是俯視拍攝。
8. 目標跟蹤(3)MultiTracker : 基於 OpenCV (C++/Python) 的多目標跟蹤
在這篇文章中,我們將介紹如何使用通過 MultiTracker 類實現的 OpenCV 的多對象跟蹤 API。我們將共享C++ 和 Python 代碼。
大多數計算機視覺和機器學習的初學者都學習對象檢測。如果您是初學者,您可能會想為什麼我們需要對象跟蹤。我們不能只檢測每一幀中的對象嗎?
讓我們來探究一下跟蹤是有用的幾個原因。
首先,當在視頻幀中檢測到多個對象(例如人)時,跟蹤有助於跨幀建立對象的身份。
其次,在某些情況下,對象檢測可能會失敗,但仍可能跟蹤對象,因為跟蹤考慮了對象在前一幀中的位置和外觀。
第三,一些跟蹤演算法非常快,因為它們做的是局部搜索,而不是全局搜索。因此,我們可以通過每n幀進行目標檢測,並在中間幀中跟蹤目標,從而為我們的系統獲得很高的幀率。
那麼,為什麼不在第一次檢測後無限期地跟蹤對象呢?跟蹤演算法有時可能會丟失它正在跟蹤的對象。例如,當對象的運動太大時,跟蹤演算法可能跟不上。許多現實世界的應用程序同時使用檢測和跟蹤。
在本教程中,我們只關注跟蹤部分。我們想要跟蹤的對象將通過拖動它們周圍的包圍框來指定。
OpenCV 中的 MultiTracker 類提供了多目標跟蹤的實現。它是一個簡單的實現,因為它獨立處理跟蹤對象,而不對跟蹤對象進行任何優化。
讓我們逐步查看代碼,了解如何使用 OpenCV 的多目標跟蹤 API。
2.1 第 1 步:創建單一對象跟蹤器
多目標跟蹤器只是單目標跟蹤器的集合。我們首先定義一個函數,該函數接受一個跟蹤器類型作為輸入,並創建一個跟蹤器對象。OpenCV有8種不同的跟蹤器類型:BOOSTING, MIL, KCF,TLD, MEDIANFLOW, GOTURN, MOSSE, CSRT。
如果您想使用 GOTURN 跟蹤器,請務必閱讀這篇文章並下載 caffe 模型。
在下面的代碼中,給定跟蹤器類的名稱,我們返回跟蹤器對象。這將在稍後用於多目標跟蹤器。
Python
C++
2.2 第 2 步:讀取視頻的第一幀
多目標跟蹤器需要兩個輸入
給定這些信息,跟蹤器在所有後續幀中跟蹤這些指定對象的位置。 在下面的代碼中,我們首先使用 VideoCapture 類載入視頻並讀取第一幀。這將在稍後用於初始化 MultiTracker。
Python
C++
2.3 第 3 步:在第一幀中定位對象
接下來,我們需要在第一幀中定位我們想要跟蹤的對象。該位置只是一個邊界框。 OpenCV 提供了一個名為 selectROI 的函數,該函數會彈出一個 GUI 來選擇邊界框(也稱為感興趣區域 (ROI))。 在 C++ 版本中,selectROI 允許您獲取多個邊界框,但在 Python 版本中,它只返回一個邊界框。所以,在 Python 版本中,我們需要一個循環來獲取多個邊界框。 對於每個對象,我們還選擇一種隨機顏色來顯示邊界框。 代碼如下所示。
Python
C++
getRandomColors 函數相當簡單
2.4 第 3 步:初始化 MultiTracker
到目前為止,我們已經讀取了第一幀並獲得了對象周圍的邊界框。這就是我們初始化多目標跟蹤器所需的所有信息。
我們首先創建一個 MultiTracker 對象,並向其中添加與邊界框一樣多的單個對象跟蹤器。在此示例中,我們使用 CSRT 單對象跟蹤器,但您可以通過將下面的 trackerType 變數更改為本文開頭提到的 8 個跟蹤器之一來嘗試其他跟蹤器類型。 CSRT 跟蹤器不是最快的,但在我們嘗試的許多情況下它產生了最好的結果。
您還可以使用包裹在同一個 MultiTracker 中的不同跟蹤器,但當然,這沒什麼意義。
MultiTracker 類只是這些單個對象跟蹤器的包裝器。正如我們從上一篇文章中知道的那樣,單個對象跟蹤器是使用第一幀初始化的,並且邊界框指示我們想要跟蹤的對象的位置。 MultiTracker 將此信息傳遞給它在內部包裝的單個對象跟蹤器。
Python
C++
2.5 第 4 步:更新 MultiTracker 並顯示結果
最後,我們的 MultiTracker 已准備就緒,我們可以在新幀中跟蹤多個對象。我們使用 MultiTracker 類的 update 方法來定位新框架中的對象。每個跟蹤對象的每個邊界框都使用不同的顏色繪制。
Python
C++
C++
Python