多个对象跟踪
跟踪定位的过程是一个移动物体或多个视频流对象随时间变化。跟踪一个物体是不一样的对象检测。目标检测定位的过程是一个感兴趣的对象在一个单一的框架。跟踪员工检测对象的多个帧。
跟踪多个对象需要检测、预测和数据关联。
检测:检测对象感兴趣的视频帧。
预测:预测对象位置在下一帧。
数据协会:使用预测位置关联检测跨帧形成跟踪。
检测
选择正确的方法对检测对象的利益取决于你想跟踪和摄像头是否固定。
使用固定相机检测对象
检测物体运动与静止的摄像机,可以执行背景减法使用vision.ForegroundDetector
系统对象。背景减法方法可行有效但需要固定摄像机。
检测对象使用一个移动相机
检测对象在运动移动相机,您可以使用一个滑动窗口检测方法。这种方法通常慢于背景减法的方法工作。探测和跟踪一个特定类别的对象,使用中描述的系统对象或功能表。
选择一个检测算法
类型的对象跟踪 | 相机 | 功能 |
---|---|---|
任何移动 | 静止的 | |
的脸,眼睛,鼻子,嘴巴,上半身 | 静止不动的,动 | |
行人 | 静止不动的,动 | |
自定义对象类别 | 静止不动的,动 |
|
预测
跟踪一个物体随时间意味着你必须预测其位置在下一帧。预测的最简单的方法是假设对象将在其最后的位置。换句话说,前面的检测作为下一个预测。这种方法对于高帧率尤其有效。然而,使用这个预测方法可以失败当对象以不同的速度移动,或者当帧率低相对于物体运动的速度。
更复杂的预测方法是使用以前观察到的物体的运动。卡尔曼滤波器(vision.KalmanFilter
)预测对象的下一个位置,根据运动模型,假设它如恒定速度或加速度恒定。卡尔曼滤波器也考虑过程噪声和测量噪声。过程噪声偏差的实际运动对象的运动模型。测量噪声是检测错误。
简化配置一个卡尔曼滤波器,使用configureKalmanFilter
。这个函数设置滤波器跟踪一个物体移动与恒定速度或加速度恒定在笛卡儿坐标系统。统计数据是相同的所有维度。如果您需要配置一个卡尔曼滤波器有不同的假设,您需要构建vision.KalmanFilter
直接对象。
数据协会
数据协会联合检测的过程对应于相同的物理对象在帧。时间的历史特定对象由多个探测,和被称为跟踪。可以包括跟踪表示之前的整个历史对象的位置。另外,它只能由对象的最后已知位置和当前速度。
检测跟踪成本函数
匹配检测跟踪,必须建立评估标准匹配。通常,您建立标准成本通过定义一个函数。越高成本匹配的跟踪检测,检测的不太可能属于跟踪。一个简单的成本函数可以被定义为的边框之间的重叠度预测和检测对象。的跟踪行人在开动的汽车里实现这个成本函数使用例子bboxOverlapRatio
函数。您可以实现一个更复杂的成本函数,占预测的不确定性,使用距离
的函数vision.KalmanFilter
对象。你也可以实现一个自定义代价函数比可以合并的信息对象的大小和外观。
消除不匹配
选通方法消除极不可能匹配的考虑,如征收成本函数的阈值。一个观察不能匹配跟踪如果成本超过一定的阈值。使用这个阈值方法有效地导致一个圆形控制区域在每一个预测,可以找到一个匹配的检测。另一种控制技术是使包括浇注区域足够大k最近的邻居的预测。
分配检测跟踪
数据协会减少最低重量由两部分构成的匹配问题,这是一个图论的研究领域。一式两份的图顶点代表跟踪和检测。这也代表了匹配检测和跟踪成本之间的加权边缘对应的顶点。
的assignDetectionsToTracks
函数实现了Munkres变体的匈牙利两偶匹配算法。它的输入是成本矩阵,行对应于追踪和列对应于检测。每个条目包含的成本分配一个特定的检测到一个特定的轨道。您可以实现控制通过设置的成本不可能匹配到正无穷。
跟踪管理
数据协会必须考虑新的对象可以出现在视野中,或者一个对象被跟踪可以离开的视野。换句话说,在任何给定的框架,一些可能需要创建新线路,和一些现有的轨道可能需要丢弃。的assignDetectionsToTracks
函数返回未赋值的跟踪的指数和未赋值的检测除了配对。
无与伦比的检测是一种处理方式是创建一个新的跟踪从他们每个人。或者,您可以创建新的追踪无与伦比的检测大于一定规模,或从特定位置或外观的检测。例如,如果现场有一个单一入口点,如门口,然后你就可以指定,只有无与伦比的检测附近的入口点可以开始新的轨道,和所有其他检测被认为是噪音。
无与伦比的跟踪处理的另一种方法是删除任何跟踪保持无与伦比的一定数量的帧。此外,您可以指定删除一个无与伦比的跟踪时最后的位置是一个出口点附近。
另请参阅
assignDetectionsToTracks
|bboxOverlapRatio
|configureKalmanFilter
|extractHOGFeatures
|selectStrongestBbox
|trainCascadeObjectDetector
|vision.CascadeObjectDetector
|vision.ForegroundDetector
|vision.KalmanFilter
|vision.PeopleDetector
|vision.PointTracker