2020-09-21
目標檢測(Object Detection)和目標跟蹤(Object Tracking)的區別
Object Recognition: which object is depicted in the image?
-
input: an image containing unknown object(s) Possibly, the position of the object can be marked in the input, or the input might be only a clear image of (not-occluded) object.
-
output: position(s) and label(s) (names) of the objects in the image
The positions of objects are either acquired form the input, or determined based on the input image.
When labeling objects, there is usually a set of categories/labels which the system "knows" and between which the system can differentiate (e.g. object is either dog, car, horse, cow or bird).
Object detection: where is this object in the image?
-
input: a clear image of an object, or some kind of model of an object (e.g. duck) and an image (possibly) containing the object of interest
-
output: position, or a bounding box of the input object if it exists in the image (e.g. the duck is in the upper left corner of the image)
參考:https://www.ziiai.com/blog/260
在計算機視覺中,目標檢測是在圖像和視頻(一系列的圖像)中掃描和搜尋目標,概括來說就是在一個場景中對目標進行定位和識別,如下圖中展示的,我們要檢測圖像中的車輛,這就是典型的目標檢測實例。

目標跟蹤就像你跟蹤某個人,一直尾隨着他。我們在動畫圖像(.gif)或者視頻中跟蹤一個目標是如何移動的,它要到哪里去,以及它的速度。實時鎖定一個(一些)特定的移動目標。
有兩種方式來“跟蹤”一個目標。密集跟蹤(a series detections)和稀疏跟蹤(estimation+common sense)。
1.跟蹤是一系列的檢測。假設在交通錄像中,想要檢測一輛車或者一個人,我使用錄像不同時刻的快照(通過暫停鍵)來檢測我的目標,一輛車或一個人。然后通過檢查我的目標是如何在錄像不同的畫面中移動(對錄像每一幀進行目標檢測,比如YOLO算法,就能知道我的目標在不同的畫面里的坐標),由此實現對目標的追蹤。
比如要計算目標的速度,就可以通過兩幀圖像中目標坐標的變化來計算目標移動距離,除以兩幀畫面的間隔時間。
因為我們要處理錄像所有的快照(每一幀)的像素,這些算法需要密集的跟蹤方法(dense method of tracking)來實現,對於每一幀畫面圖像,都要進行目標檢測。
就拿滑窗法來舉例,需要處理圖像中的所有像素,所以這種方法進行目標跟蹤,計算量將會非常大。
當我們只是把跟蹤處理為“一系列的檢測”,就會得到如下的軌跡。根據不同時間點目標的位置,把這些位置坐標由時間線串聯起來得到目標軌跡。

2.第一種方法(上述的方法)更像是欺騙,我們實際上並沒有“跟蹤”而是在不同的時間點來“檢測”它。改進以后的方法是“動態檢測(detection with dynamics)”,考慮同樣的場景,你想要跟蹤路上的一輛車或者一個人,通過檢查它在某個時刻t的位置,我們首先估計它在其他某個時刻的位置,比如t+5時刻。所以,我們要試圖判斷出車的軌跡。使用我們的估計和車在t+5時刻的實際圖像,我們用不同的算法來跟蹤它。
當我們只處理估計位置附近的像素時,就是稀疏跟蹤方法。當然,它更快(處理更少的像素),我們只需要檢測我們估計的位置附近的像素就行,相比於密集跟蹤方法,減少了大量的計算。。使用動態檢測方法,我們得到更平滑的曲線來刻畫目標的移動位置(軌跡),因為我們將我們的估計(estimation)和一般的認識(common sense)應用到了跟蹤中。

目標檢測和目標跟蹤的異同:
(1)目標檢測可以在靜態圖像上進行,而目標跟蹤就是需要基於錄像(視頻)。
(2)如果對每秒的畫面進行目標檢測,也可以實現目標跟蹤。
(3)目標跟蹤不需要目標識別,可以根據運動特征來進行跟蹤,而無需確切知道跟蹤的是什么,所以如果利用視頻畫面之間(幀之間)的臨時關系,單純的目標跟蹤可以很高效的實現。
(4)基於目標檢測的目標跟蹤算法計算非常昂貴,就如之前講的,需要對每幀畫面進行檢測,才能得到目標的運動軌跡。而且,只能追蹤已知的目標,這個容易理解,因為目標檢測算法就只能實現已知類別的定位識別。
因此,目標檢測要求定位+分類。而目標跟蹤,分類只是一個可選項,根據具體問題而定,我們可以完全不在乎跟蹤的目標是什么,只在乎它的運動特征。實際中,目標檢測可以通過目標跟蹤來加速,然后再間隔一些幀進行分類(好幾幀進行一次分類)。在一個慢點的線程上尋找目標並鎖定,然后在快的線程上進行目標跟蹤,運行更快。
