[AI開發]視頻多目標跟蹤高級版(離自動駕駛又‘近’了一點點)


**本文恐怕不是完全的標題黨**

視頻多目標跟蹤需要解決的關鍵點是前后兩幀之間的Target Association,這是最難的環節(沒有之一)。第T幀檢測到M個目標,第T+S(S>=1)幀檢測到N個目標,怎樣將這M*N對目標正確地關聯起來,是“跟蹤算法”最難的環節。(注意這里提到的是多目標,單目標跟蹤很簡單)

通常的跟蹤方式是根據目標中心點距離、IOU(目標區域的交並比)等這些純物理指標進行關聯,中心點距離越小、IOU越大(區域重合面積越大),則認為是同一個目標。這種方式優點就是簡單、匹配速度快,而缺點就是當碰到目標被遮擋、目標過於密集、視頻跳幀太大檢測等情況時,跟蹤就會失敗。

高級的跟蹤方式(本文主要講述的方式)不僅會考慮上面提到的目標物理特性,還會計算前后兩幀中目標的外觀特征(Appearance Feature)相似度。這里的外觀特征不是傳統的提取圖像特征,更不是通過比較兩張圖的顏色直方圖來進行對比分析。而是需要訓練單獨的模型(區分於目標檢測階段),通過該模型計算每個目標的外觀特征值,然后計算特征值之間的“余弦距離”來比較兩個目標的相似度。這種方式可以有效地解決**目標被遮擋**、**目標過於密集**、**視頻跳幀檢測分析**等問題,缺點就是引入了另外一個特征提取模型,速度相對來說要慢一些。對於那些每秒處理幀數要求不高的場合,此種方式尤其有效。下圖是通過該方法進行目標跟蹤的效果(模型效果一般,目標容易跟丟):

 

可以看到,目標消失后再出現時,仍然能夠准確跟蹤到。目標非常密集,但是也並不影響最終跟蹤效果。

 

多目標跟蹤一般流程

在**Tracking By Detecting**的模式下,要想跟蹤目標,先要將視頻中的目標檢測出來,這一步稱為“目標檢測”,然后根據檢測得到的結果,將每幀中的目標關聯起來。目標檢測算法很多,SSD和YOLO等,網上開源實現版本也有很多。

如上圖,經過檢測算法處理之后得到的結果只有物理上的特性,幀與幀之間不存在任何關聯,只有通過跟蹤算法處理之后,才能加入時序的特性。

 

跟蹤算法初級版本

該方式只考慮前后兩幀中每個目標的物理特性,中心點位置以及IOU,通過分析這兩個特性來關聯前后幀中的目標。

 

如上圖所示,實線方框代表目標在前一幀中的實際位置和下一幀中的預測位置,虛線框代表目標在下一幀中的實際位置,通過計算下一幀實際位置與前一幀的預測位置的IOU,來關聯目標。IOU越到,代表重合度越高,越高則代表為同一目標,賦予唯一TrackId。關於該部分的詳細內容,可以參見上一篇博客

 

跟蹤算法高級版本

該方式會引入另外一個外觀特征提取模型(網上搜Person Re-Id,或參見本文末尾),對於每個檢測到的目標,先利用該模型計算它的特征(可以理解為該目標的一種特征編碼),然后計算每個目標特征之間的余弦距離。余弦距離越小(注意:這里指1-余弦距離,參見后面關於距離的說明),代表目標越相似,通過它可以作為關聯目標的一種指標。

 

如上圖,除了在目標檢測環節需要提前訓練模型之外,跟蹤環節也需要訓練相應的模型。因此,該方式不但會增加前期准備工作,還會增加算法運行時間。

該方式的詳細執行流程如下:

邏輯相當簡單,難的是找到計算Appearance Feature的模型,github上有相應的算法實現:https://github.com/nwojke/cosine_metric_learning,該算法可以訓練提取特征的模型。注意,如果訓練數據只包含行人,那么訓練出來的模型只適合計算行人的Appearance Feature(其他物體也能計算,但是不准確)。

該倉庫中給出的示例代碼是用來訓練行人數據集的,所以對於行人特別有效。目前我正嘗試訓練車輛的數據集,待結果出來之后再更新此博客。

 

關於機器學習中的各種距離

歐幾里得距離(歐氏距離)

該距離很簡單,就是我們從小到大接觸到的N維空間中兩點的直線距離,對於最常見的2/3維空間兩點的距離計算公式為:

Distance = numpy.sqrt((x1-x2)**2 + (y1-y2)**2 + (z1-z2)**2)  (三維空間兩點距離)

歐式距離越小,代表兩者越接近相同,當距離為零時,代表兩者完全相同

余弦距離

余弦距離表示N維空間中兩點與原點連接線段之間夾角的余弦值。余弦距離越大,表示夾角越小,那么兩點越相似。如果余弦距離為1(最大值),那么表示兩者非常相似。注意這里只能說明兩點非常相似,並不一定相同。摘自網上的一幅圖:

余弦距離的意義:

當兩點夾角為零時,表示兩點的各個維度的值所占的比例相同。比如(2,2,2)和(6,6,6),(1,2,3)和(3,6,9)。對應本文中計算Appearance Feature特征值之間的余弦距離,實際意義就是比較特征值(比如128維)中每一個維度值所占的比例是否相等,越接近相等,說明特征值對應的圖片越相似。

Person Re-Id/ Vehicle Re-Id也是一個值得研究的方向,通過給定query target,可以在多個視頻中搜索該目標,一般可以用於公安罪犯抓捕、違法車輛搜索等領域。雖然傳統的人臉識別方式已經很成熟了,用人臉識別技術可以在城市監控攝像頭中准確定位犯罪分子,但是通常情況下,監控攝像機拍攝到的人臉並不清晰,所以人臉識別准確率不高。而Person Re-Id(或者Vehicle Re-Id或者其他什么ReId)是基於整體輪廓進行特征提取的,它不要求看到犯罪份子詳細的臉部圖片,只需要全身輪廓圖片(同時也忽略衣着、拍攝方位、光線、姿態等因素)就可以定位該目標。

本文沒有源代碼。有問題可以留言。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM