3 1多目標追蹤,3 2輔助函式

2021-10-05 21:53:42 字數 2864 閱讀 8841

學習目標:

dbt的方式就是典型的tracking-by-detection模式,即先檢測目標,然後將目標關聯進入跟蹤軌跡中。那麼就存在兩個問題,第一,該跟蹤方式非常依賴目標檢測器的效能,第二,目標檢測的實質是分類和回歸,即該跟蹤方式只能針對特定的目標型別,如:行人、車輛、動物。dbt則是目前業界研究的主流。

dft是單目標跟蹤領域常用初始化方法,即每當新目標出現時,人為告訴演算法新目標的位置,這樣做的好處是target free,壞處就是過程比較麻煩,存在過多的互動,所以dbt相對來說更受歡迎。

線性運動(常用)和非線性運動(使tracklets間運動相似度計算得更加準確)。?????

多目標跟蹤主流演算法​​​​

該類演算法能達到實時性,但依賴於檢測演算法效果要好,特徵區分要好。

代表性的演算法是sort/deepsort

iou是交並比(intersection-over-union)是目標檢測中產生的候選框(candidate bound)原標記框(ground truth bound)交疊率,即它們的交集與並集的比值。最理想情況是完全重疊,即比值為1。在多目標跟蹤中,用來判別跟蹤框和目標檢測框之間的相似度

def iou(bb_test, bb_gt):

"""跟蹤框和目標檢測框的交並比;候選框candidate bound和原標記框ground truth bound

:param bb_test: box1 = [x1y1x2y2]

:param bb_gt: box2 = [x1y1x2y2]

:return: 交並比iou

"""xx1 = np.maximum(bb_test[0], bb_gt[0])

yy1 = np.maximum(bb_test[1], bb_gt[1])

xx2 = np.minimum(bb_test[2], bb_gt[2])

yy2 = np.minimum(bb_test[3], bb_gt[3])

w = np.maximum(0., xx2 - xx1)

h = np.maximum(0., yy2 - yy1)

wh = w * h

o = wh / ((bb_test[2] - bb_test[0]) * (bb_test[3] - bb_test[1]) + (bb_gt[2] - bb_gt[0]) * (

bb_gt[3] - bb_gt[1]) - wh)

return o

座標軸的左上角是(0,0),

將候選框從座標形式轉換為中心點座標和面積的形式

def convert_bbox_to_z(bbox):

"""將[x1,y1,x2,y2]形式的檢測框轉為濾波器的狀態表示形式[x,y,s,r]。其中x,y是框的中心座標,s是面積,尺度,r是寬高比

:param bbox: [x1,y1,x2,y2] 分別是左上角座標和右下角座標

:return: [ x, y, s, r ] 4行1列,其中x,y是box中心位置的座標,s是面積,r是寬高比w/h

"""w = bbox[2] - bbox[0]

h = bbox[3] - bbox[1]

x = bbox[0] + w / 2.

y = bbox[1] + h / 2.

s = w * h

r = w / float(h)

return np.array([x, y, s, r]).reshape((4, 1))

# 注意reshape((4,1))且np.array()中不能直接寫x,y,s,r,需要組裝起來。

將候選框從中心面積的形式轉換為座標的形式

def convert_x_to_bbox(x, score=none):

"""將[cx,cy,s,r]的目標框表示轉為[x_min,y_min,x_max,y_max]的形式

:param x:[ x, y, s, r ],其中x,y是box中心位置的座標,s是面積,r

:param score: 置信度

:return:[x1,y1,x2,y2],左上角座標和右下角座標

"""w = np.sqrt(x[2] * x[3])

h = x[2] / w

if score is none:

return np.array([x[0] - w / 2., x[1] - h / 2., x[0] + w / 2., x[1] + h / 2.]).reshape((1, 4))

else:

return np.array([x[0] - w / 2., x[1] - h / 2., x[0] + w / 2., x[1] + h / 2., score]).reshape((1, 5))

多目標追蹤總結

多目標追蹤 multi object tracking,mot 有兩種思路 具體的一些演算法上文提到了,km匹配演算法 kcf 核相關濾波演算法 deep sort 針對自己的需要,可以有選擇性的選擇某類演算法。目前主流的多目標追蹤演算法為分三類 1.以匈牙利 km匹配的後端追蹤優化演算法。代表性的...

目標追蹤 多目標追蹤之資料關聯

最近忙著寫 斷更很久,現在和大家分享一下我目前研究的多目標追蹤中的資料關聯問題。首先說明一下我本人目前是做基於船舶自動駕駛的資料融合和多目標追蹤,儘管和計算機視覺方向的多目標追蹤本質是一樣的,但是兩個領域的技術手段是不同的。具體說來,cv方向更側重於高質量高可靠的檢測結果的獲取和提純,而雷達方向則更...

cv2多目標追蹤

本文主要介紹通過cv2的multitracker create 方法建立幾種不同的 用於實現多目標跟蹤,並給出跟蹤效果。import sys import cv2 from random import randint trackertypes boosting mil kcf tld medianf...