DeepSORT算法通过结合目标框的马氏距离(Mahalanobis distance)和特征余弦距离(Cosine similarity)两个度量来整合运动信息和外观信息。外观信息是指使用了一个简单的CNN网络去提取被检测物体的外观特征。运动信息是指卡尔曼(kalman)滤波预测的结果。
Deepsort的算法流程是:
(1)获取视频的初始帧
(2)使用卡尔曼(kalman)滤波器进行目标运动状态的预测,得到估计目标的两种状态。
DeepSORT中的滤波算法使用的状态是一个8个维度的向量。分别是(u, v, γ, h, ẋ, ẏ, γ̇, ḣ),(u, v)表示目标中心点的水平坐标和目标中心的垂直坐标,(γ)是宽高比,(h)是高度,其余四个变量(ẋ, ẏ, γ̇, ḣ)表示对应的在图像坐标系中的速度信息。
1)均值(Mean):通过观测矩阵(observation matrix)输出的包含目标的位置和速度信息的(u,v,r,h)。
2)协方差(Covariance) :表示通过线性估计获取的物体运动状态的不确定性值,矩阵中数字越大则表明不确定性越大。
(3)提取检测到的物体的视觉特征和运动特征.
(4)进行相似度计算,计算前面的帧和当前帧目标之间的匹配程度。
1)马氏距离(Mahalanobis distance),是计算两个未知样本集之间相似度的有效方法。当协方差(Covariance) 不确定性越小的情况下,DeepSORT算法使用检测框和跟踪器预测框之间的马氏距离来计算运动信息的相似度,这对短时间遮挡是有效的。
2)当协方差(Covariance) 不确定性越大的情况下,DeepSORT 对每一个追踪的目标通过神经网络提取一个外观特征向量, 通过计算当前帧的检测与历史追踪的目标特征向量之间的最小余弦距离来确定相似度. 余弦距离考虑外观信息,这对长期遮挡的目标ID的找回比较有效。
(5)最后对运动和外观两种度量方式进行线性加权作为最终的度量,最终通过匈牙利算法关联的代价矩阵对数据进行关联,为每个对象分配目标的ID。