多目标跟踪:(Multiple Object Tracking or Multiple Target Tracking, MOT or MTT)主要任务是在给定视频中同时对多个感兴趣的目标进行定位,并且维持他们的ID、记录他们的轨迹。
在设计MOT算法的时候有两个问题需要考虑:
- 是怎样测量帧内目标的相似性。
- 是基于这个相似性怎样判断帧间目标是否相同。
前者主要包括外观,运动,交叉,排斥和碰撞的建模问题,后者主要和数据关联有关。
1.按照跟踪目标初始化方式分类:DBT(检测目标需要训练检测器)和DFT(第一帧初始化目标)。
2.处理模式:Offline跟踪和Online跟踪。(区别是否用到后面几帧的检测目标的结果)
跟踪流程:
1)在上一帧中的N个目标中找到了本次检测到的目标,说明正常跟踪到了;
2)在上一帧中的N个目标中没有找到本次检测到的目标,说明这个目标是这一帧中新出现的,所以我们需要把它记录下来,用于下下一次的跟踪关联;
3)在上一帧中存在某个目标,这一帧中并没有与之关联的目标,那么说明该目标可能从视野中消失了,我们需要将其移除。(注意这里的可能,因为有可能由于检测误差,在这一帧中该目标并没有被检测到)
一般模式:
要想跟踪目标,先要将视频中的目标检测出来,这一步称为“目标检测”,然后根据检测得到的结果,将每帧中的目标关联起来。目标检测算法很多,SSD和YOLO等,网上开源实现版本也有很多。
1.通过计算两帧中两个目标之间的距离,认为距离最短的一个就是同一个目标。
2.还可以加上判断条件例如是IOU判断条件,当IOU超过一定的阈值就说明是同一个目标。
这种方式优点就是简单、匹配速度快,而缺点就是当碰到目标被遮挡、目标过于密集、视频跳帧太大检测等情况时,跟踪就会失败。
存在问题:
基于轨迹预测的跟踪算法:
先预测目标的下一帧会出现的位置,然后与该预测的位置来进行对比关联。这样的话,只要预测足够精确,那么几乎不会出现前面提到的由于速度太快而存在的误差。
跟踪预测方法:
1.卡尔曼滤波
2.粒子滤波
3.均值漂移算法
数据关联算法:
- 多假设跟踪方法、
- 关联滤波器方法
- 马尔可夫链蒙特卡罗方法
- 匈牙利算法
- 贪婪关联算法
基于目标特征建模的跟踪算法:
该方式会引入另外一个外观特征提取模型,对于每个检测到的目标,先利用该模型计算它的特征(可以理解为该目标的一种特征编码),然后计算每个目标特征之间的余弦距离。
存在问题虽然会提高准确率,但是时耗增多。
执行流程:
调研的算法:
传统算法:
- 背景差分法
背景差分法是一种对静止场景进行运动分割的通用方法,它将当前获取的图像帧与背景图像做差分运算,得到目标运动区域的灰度图,对灰度图进行阈值化提取运动区域,而且为避免环境光照变化影响,背景图像根据当前获取图像帧进行更新。
优点:速度快,简单。
缺点:无法使用运动摄像头,背景实时更新困难。
- 帧间差分法
帧间差分法是将视频流中相邻两帧或相隔几帧图像的两幅图像像素值相减,并对相减后的图像进行阈值化来提取图像中的运动区域。
优点:算法简单,不受光线影响。
缺点:摄像头只能静止,无法检测到静止的物体和运动慢的物体
基于目标检测:
- SIMPLE ONLINE AND REALTIME TRACKING (SORT)
主要使用了Faster-Rcnn检测算法,卡尔曼滤波预测算法和匈牙利算法结合。
- SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC (Deep SORT)
在SORT的基础上增加了外观模型,精度提高但是速度变慢。通过在大规模re-id数据集上pre-trained深度网络来提取128维的appearance特征。
- Multiple Object Tracking with High Performance Detection and Appearance Feature
Faster-Rcnn检测算法。
使用类似于GoogLeNet的网络来提取128维的特征,并使用cosine距离来度量表观特征。
使用卡尔曼滤波来预测,和匈牙利算法来关联。