总述

目标跟踪模型Python 目标跟踪 算法_深度学习


总共可以分为三种方法:基于CNN的方法(绿色分支);基于相关滤波的方法(黄色分支);其他的方法(图中others分支)

一、传统算法——KCF

不用深度学习,只需在第一帧图像中给出目标框的位置,只能做单目标跟踪?

难点;运行模糊;遮挡;尺度变化;

二、深度学习算法

参考:https://zhuanlan.zhihu.com/p/97449724

目标跟踪模型Python 目标跟踪 算法_匈牙利算法_02


1 、IOU2、SORT

sort详解

目标跟踪模型Python 目标跟踪 算法_目标跟踪模型Python_03


代码:https://github.com/abewley/sort

卡尔曼预测是在库filerpy/kalman/kalman_filter.py中。根据前n帧的结果预测,n可以设置。

self.kf = KalmanFilter(dim_x=7, dim_z=4)


SORT作为一个粗略的框架,核心就是两个算法:卡尔曼滤波和匈牙利匹配。

卡尔曼滤波分为两个过程:预测和更新。预测过程:当一个小车经过移动后,且其初始定位和移动过程都是高斯分布时,则最终估计位置分布会更分散,即更不准确;更新过程:当一个小车经过传感器观测定位,且其初始定位和观测都是高斯分布时,则观测后的位置分布会更集中,即更准确。

匈牙利算法解决的是一个分配问题。SK-learn库的linear_assignment_和scipy库的linear_sum_assignment都实现了这一算法,只需要输入cost_matrix即代价矩阵就能得到最优匹配。不过要注意的是这两个库函数虽然算法一样,但给的输出格式不同。具体算法步骤也很简单,是一个复杂度 [公式] 的算法。

3、DeepSORT

目标跟踪模型Python 目标跟踪 算法_卡尔曼滤波_04


这是DeepSORT算法的流程图,和SORT基本一样,就多了级联匹配(Matching Cascade)和新轨迹的确认(confirmed)。
关键步骤:轨迹卡尔曼滤波预测→ 使用匈牙利算法将预测后的tracks和当前帧中的detecions进行匹配( 特征匹配和IOU匹配) → 卡尔曼滤波更新

DeepSORT在IOU Match之前做了一次额外的级联匹配,利用了外观特征和马氏距离。外观特征就是通过一个Re-ID的网络提取的。

4、DCF
参考:
也是deepstream sdk中用到的一个目标跟踪算法

参考: