多目标跟踪
跟踪是在视频流中定位一个移动对象或多个对象的过程。跟踪目标与目标检测是不同的。目标检测是在单个帧中定位感兴趣的对象的过程。跟踪跨多个帧关联对象检测。
跟踪多个目标需要检测、预测和数据关联。
检测:检测视频帧中感兴趣的对象。
预测:预测下一帧物体的位置。
数据协会:使用预测的位置将跨帧的检测关联起来形成跟踪.
检测
选择正确的方法来检测感兴趣的对象取决于你想要跟踪的对象以及相机是否静止。
使用固定摄像机探测物体
若要使用固定相机检测运动中的物体,可以使用愿景。ForegroundDetector
系统对象。背景减法的工作效率很高,但要求相机是静止的。
使用移动摄像机探测物体
要使用移动摄像机检测运动中的物体,可以使用滑动窗口检测方法。这种方法通常比背景减法工作得慢。要检测和跟踪特定类别的对象,请使用表中描述的系统对象或函数。
选择检测算法
要跟踪的对象类型 | 相机 | 功能 |
---|---|---|
任何会动的东西 | 静止的 | |
脸,眼睛,鼻子,嘴巴,上半身 | 静止不动的,动 | |
行人 | 静止不动的,动 | |
自定义对象类别 | 静止不动的,动 |
|
预测
随着时间的推移跟踪一个物体意味着你必须预测它在下一帧中的位置。最简单的预测方法是假设物体将在其最后已知位置附近。换句话说,之前的检测可以作为下一个预测。这种方法对于高帧率特别有效。然而,当物体以不同的速度移动时,或者当帧速率相对于运动中的物体的速度较低时,使用这种预测方法可能会失败。
一种更为复杂的预测方法是利用先前观测到的物体运动。卡尔曼滤波(愿景。KalmanFilter
)预测一个物体的下一个位置,假设它根据一个运动模型(如匀速或恒定加速度)运动。卡尔曼滤波器还考虑了过程噪声和测量噪声。过程噪声是物体的实际运动与运动模型的偏差。测量噪声是检测误差。
要使配置卡尔曼滤波器更容易,请使用configureKalmanFilter
.该函数设置了一个过滤器,用于跟踪在笛卡尔坐标系内以恒定速度或恒定加速度运动的物理对象。统计数据在所有维度上都是相同的。如果需要配置具有不同假设的卡尔曼滤波器,则需要构造愿景。KalmanFilter
直接对象。
数据协会
数据协会是跨帧关联对应于相同物理对象的检测的过程。一个特定对象的时间历史由多次探测组成,被称为跟踪.轨迹表示可以包括对象以前位置的整个历史。或者,它可以只包含物体的最后已知位置和当前速度。
检测跟踪成本函数
要将检测与跟踪匹配,必须建立评估匹配的标准。通常,通过定义成本函数来建立这个标准。匹配检测到轨道的成本越高,检测属于轨道的可能性就越小。一个简单的代价函数可以定义为预测对象和检测对象的包围框之间的重叠程度。的从移动的汽车中跟踪行人实例使用bboxOverlapRatio
函数。可以实现更复杂的成本函数,该函数可以解释预测的不确定性,使用距离
的功能愿景。KalmanFilter
对象。您还可以实现一个自定义成本函数,该函数可以包含关于对象大小和外观的信息。
排除不可能匹配
选通是一种从考虑中消除极不可能匹配的方法,例如通过对代价函数施加阈值。当开销超过一定阈值时,观测值将无法匹配到轨道。使用这种阈值方法可以有效地产生循环控制区域在每个预测周围,可以找到匹配的检测。一种可供选择的门控技术是使门控区域大到足以包含k-预测的最近邻居。
将检测分配给跟踪
数据关联简化为最小权值二部匹配问题,这是图论中研究较多的一个领域。二部图将轨迹和检测表示为顶点。它还表示将检测和轨道匹配为对应顶点之间的加权边的代价。
的assignDetectionsToTracks
函数实现了匈牙利二部匹配算法的Munkres变体。它的输入是成本矩阵,其中行对应轨迹,列对应检测。每个条目都包含将特定检测分配到特定轨道的成本。你可以通过将不可能匹配的代价设置为无穷大来实现门控。
跟踪管理
数据关联必须考虑到新的对象可能出现在视场中,或者被跟踪的对象可能离开视场。换句话说,在任何给定的帧中,可能需要创建一定数量的新轨道,而可能需要丢弃一定数量的现有轨道。的assignDetectionsToTracks
函数除返回匹配的对外,还返回未分配的轨道和未分配的检测的索引。
处理不匹配检测的一种方法是从每个检测中创建一个新轨道。或者,您可以从大于特定大小的未匹配检测或具有特定位置或外观的检测中创建新轨道。例如,如果场景只有一个入口点,例如一个门口,那么您可以指定只有位于入口点附近的不匹配的检测可以开始新的轨道,并且所有其他检测都被认为是噪音。
另一种处理不匹配音轨的方法是删除在一定帧数内不匹配的任何音轨。或者,您可以指定当不匹配的音轨的最后已知位置接近出口点时删除它。
另请参阅
assignDetectionsToTracks
|愿景。KalmanFilter
|bboxOverlapRatio
|configureKalmanFilter
|愿景。ForegroundDetector
|愿景。PeopleDetector
|愿景。CascadeObjectDetector
|trainCascadeObjectDetector
|extractHOGFeatures
|愿景。PointTracker
|selectStrongestBbox