簡介
SORT是一個快速的線上的多目标跟蹤(MOT)算法,基于TBD(Traking-by-Detection)的政策,這些特性決定了SORT實用性非常好,SORT的論文是SIMPLE ONLINE AND REALTIME TRACKING,發表于2016年,SORT在當時對MOT領域起到了基石般的作用。
SORT原理
主要貢獻
SORT的主要貢獻有兩個:
- 證明了一個性能優異的檢測器,對于多目标跟蹤算法的重要性;
- 提出了一種基于卡爾曼濾波和匈牙利算法的實用跟蹤方法;
是不是乍一看上去,其實沒啥東西,确實是這樣,SORT的論文也隻有5頁╮( ̄▽  ̄)╭,首先SORT提出一個好的目标檢測器對跟蹤的影響非常大,對于TBD政策的MOT算法,這好像是一句廢話,但是SORT給出了定量實驗,又因為這和SORT的原理沒什麼關系,是以在這裡地方我們簡單提一下:
在上面的實驗中,跟蹤器有兩個,分别是MDP和SORT;檢測器有三個,分别是ACF,ZF為主幹的Faster R-CNN和VGG16為主幹的Faster R-CNN。首先是上圖中的藍色框,VGG16為主幹的Faster R-CNN檢測器的性能是最優的,是以在這個基礎上SORT得到了最高的MOTA,跟蹤器換成了MDP時也是一樣的結果。這就證明了一個性能優異的檢測器對目标跟蹤的重要性。
除此之外,還可以關注下紅色框,在ID swtich方面,SORT的表現并不好,這是SORT很大的一個缺點。
估計模型
SORT首先會對每一個目标進行模組化,這個模型是獨立于其他目标和拍攝的鏡頭,模組化的目的是要對這個目标在下一幀的位置進行預測,目标的狀态模型表示為:X=[u,v,s,r,u˙,v˙,s˙]T
u和v代表的水準和垂直的目标中心像素位置, s和r代表面積和長寬比。這裡的長寬比被假設成為一個常數,也就是說對于同一個目标r是不變的。
這個狀态模型裡包含了兩個部分,一個是描述目标的 [u,v,s,r]用來描述一個目标在圖像中的Bounding Box, [u˙,v˙,s˙]則是目标的速度,速度的機關是幀,是以目标在下一幀圖像中的Bounding Box就可以被估計出來。
這個估計模型是在疊代中不斷更新的,具體是如果檢測器的檢測框關聯到了之前的跟蹤目标,那麼估計模型 [u,v,s,r]會根據檢測框做更新,同時根據卡爾曼濾波算法重新求解 [u˙,v˙,s˙],如果檢測器的檢測框沒有關聯到某個跟蹤目标,那麼估計模型就不會更新。
這樣一來,貌似估計模型已經能知道目标在一下幀的Bounding Box,這都不是目标跟蹤了,簡直實作了目标的追蹤,那還要檢測做什麼?
這是因為估計模型是非常不準的,或者說隻對下一幀準一些,由于線性的假設,如果每次使用估計出來的結果更新狀态模型,那麼和實際值就會越偏越多,是以估計模型需要根據關聯情況,用實際檢測到的值去更新。
資料關聯
在目前幀,估計模型給出了上一幀每一個需要被跟蹤的目标的估計結果,檢測器給出了所有檢測到的目标結果,這兩組資料其實構成了二分圖(二部圖),求解二分圖的最大比對問題,就是SORT的資料關聯要做的事,這個問題經典的方法就是匈牙利算法。
SORT為匈牙利算法引入了一個權重(也叫cost矩陣),是以SORT中的匈牙利算法其實就是KM算法,這個引入的權重就是圖像交并比:IOU(Intersection-Over-Union),這是因為在視訊流中,相隔幀的目标IOU是比較大的。無論是哪一種,在這裡我們都先将它看做一個黑盒,黑盒的輸入是二分圖,輸出是關聯的結果。
建立和銷毀跟蹤ID
對于一個連續的視訊流,總會有新的ID進入和舊的ID的離開的情況,此時需要對應的建立新的ID跟蹤和銷毀舊的跟蹤ID:
-
建立ID
如果檢測器檢測到的一個框和所有的跟蹤目标的IOU小于門檻值,那麼就認為一個新的ID需要被建立。這個門檻值在文中為0.3。
-
銷毀ID
如果一個跟蹤目标在連續T幀内都沒有被關聯到,那麼就銷毀這個ID。
實驗結果
我們着重觀察下上表中的加粗部分和紅色框,會發現都是Online的方法,SORT在很多名額上也不是最優的,最常用的MOTA在所有Online方法中最優,并且SORT的ID switch是所有Online最差的,這也驗證了開始時的觀點。由于SORT對遮擋情況沒有做任何處理,一旦發生了遮擋,檢測器無法找到目标,估計模型也就不會更新,當這個ID再次出現時,估計值和檢測值偏差過大導緻無法關聯,是以會建立一個新的ID。
但是談到實用性,還需要考慮速度的問題,SORT是當時将準度和速度結合的最好的方法,SORT在一塊i7CPU+16G記憶體的配置上可以達到260Hz。