SIMPLE ONLINE AND REALTIME TRACKING (CVPR 2016)
文章背景:
- 以Re-id的形式整合复杂性会增加跟踪框架的巨大开销,会限制其在实时程序中的使用;
- 以往方法使用delay making difficult decisions的方法来处理不确定性较高的匹配,这使得组合复杂度很大,难以进行实时识别;
- 以往进行两部工作来用相邻图片的几何和外观关联轨迹的方法需要使用batch,难以进行on-line tracking。
实现了real time的跟踪,主要是很好地均衡了模型的速度和性能。采用了卡尔曼滤波和匈牙利算法等。具体来说分为以下几个方面:
1. 目标检测:使用Faster-RCNN进行detection,文章通过对比来说明detection的质量对后续的tracking至关重要。
2. 估计模型:当检测与目标相关联时,检测到的边界框用于更新目标状态,其中速度分量通过卡尔曼滤波框架最优地求解;如果target没有跟detection相连,就用线性速度模型对taeget进行预测;
3. 数据组合:在将detection分配给现有track时,通过预测其在当前帧中的新位置来估计每个目标使用每个detection和所有预测的bonding box的IOU距离来计算assignment cost matrix;小于IOU阈值的assignment 会被拒绝,源码中阈值设置为0.3;文章指出使用IOU distance 可以解决 tracking 中的短暂遮挡问题,这是由于IOU distance更倾向于检测相似尺寸。
4. Track的建立和删除:如果detection和target的重叠率小于IOU阈值,认为此track应当删除;如果在Tlost帧内没有对应的 detection 与 track 匹配,就将此track删除。文中Tlost设为1,文中指出是因为没有匹配所使用的固定速度模型效果很差,并且帧数过多的re-id问题超出了本文讨论的范围。
Towards a Principled Integration of Multi-Camera Re-Identification andTracking through Optimal Bayes Filters (CVPR 2017)
文章前面部分做了很多贝叶斯的推导(没大看明白)。作者提出了很多开放性的问题自己也没有解决,这是探索reid和tracking结合比较早的文章,在深度学习主导的时代用贝叶斯理论来预测,有一些局限性。文章提出的如何结合ReID和tracking的思路。跟上面的文章思路一样的是都希望使用ReID来做Data association。
- Use the ReID model to generate track-specific obser-vations and thus sidestep the need for data association.
- Represent the position using probability maps, which combine well with the ReID’s observations, and lead to a histogram filter for the position.
- Adapt the predict and update steps to work with probability maps.
- Represent the velocity as Gaussian parametrized by amean and a variance, as is commonly done.
总的来说,文章更多是提出了一些open question而不是注重于方法:
1.如何找到初始的跟踪图片?一般来说,我们会倾向于使用第一张ground
truth的图片,但是这样做有两个困难,第一是这将严重依赖于良好的初始标注性能,第二是如果第一张初始图片出现的位置不好(比如被树遮挡),这样严重影响后续跟踪的性能。解决这个问题的一个方法是随着跟踪的进行逐步更新特征表达;或是训练出ID-specific的模型。
2.当人走出摄像机镜头外的时候,ReID模型就会检索出很多false positive的结果来。理论上来说,我们应该设置一些location-gating来判断这种情况的出现,这个时候将概率设置成0。解决这个问题的方法可以是将背景信息加入到ReID模型中去,或者探索更好的衡量速率的方法。
3. 可以尝试变成一个end-to-end的方法。
4. 在这个问题中使用bounding box的来做detection的方法似乎是不靠谱的,这样会导致忽略了很多背景信息,因此我们需要引入更多的背景信息。
Tracking The Untrackable:Learning to Track Multiple Cues with Long-Term Dependencies(ICCV 2017)
本文提出一种对长时间存在的多线索依赖关系进行编码的在线方法。其中,为了解决在跟踪方法中不能很好地对发生遮挡或具有相似外观环绕的目标进行区分跟踪的问题,本文提出使用RNN架构,结合了一定时间窗内的多线索,来进行跟踪这一方法。通过该方法,我们可以修正数据关联的错误,以及从被遮挡状态中恢复原目标观测。本文证明了通过使用目标的外观、运动、以及交互这三个方面来进行数据驱动的跟踪算法是十分鲁棒的。
Features for Multi-Target Multi-Camera Tracking and Re-Identification (CVPR 2018)
这篇文章算法分为四个部分,行人检测、特征提取、片段形成、轨迹形成。
1. 行人检测:采用的是openpose(openpose不是检测行人姿势的吗?)
2. 特征提取:这里直接采用的是Resnet50来做特征提取器,而不是一些SOTA模型,应该还是有改进的余地的。创新点是改进了triplet loss,使用了一种softmax的方式来度量triplet之间的权重,而不是像普通的triplet loss和triphard loss那么arbitrary,然后改进了一下生成triplet的方式。此外还有motion correlation的特征。
3、4. 片段形成和轨迹形成。
重要的结论:一些简单的reid feature就可以在MTMC任务上做的不错了,因为还有motion feature的一些辅助作用。但是在某个点之后,reid 的rank-1值继续提高的话,MTMC的性能反而会降低。
Multi-Target, Multi-Camera Tracking by Hierarchical Clustering:Recent Progress on DukeMTMC Project(CVPR 2018)
方法分为四个部分:使用Fast RCNN 进行检测,采用AlignedReID提取特征,单相机跟踪和跨相机跟踪。
1. Fast RCNN 检测。在COCO数据集和一些其他私有的数据集上进行预训练,NMS的阈值为0.9,IOU的阈值为0.3。
2. 提取ReID feature。使用AlignedReID模型在除了DukeMTMC的7个公开reid数据集上进行预训练。实验中发现reid效果好的模型对于多目标跟踪的效果并不一定会好,因此训练了一些更小的reid模型,尽管这些模型的reid的性能不如大模型,但是在多目标识别的任务上可以达到一样的效果。(有人给我解释一下big model和small model是什么意思吗?)
3. 单相机下的跟踪。采用匈牙利算法将相邻帧之间的bounding box合并起来变成片段,然后使用层次聚类的方法进一步将这些片段连接成完整的轨迹。具体来说,自定义了一种度量方法判断两个bounding box是否为同一个人。
匈牙利法:其中s是一个给定的阈值,和是两个bounding box的reid特征来判断表观相似度,IOU是两个bounding box之间的位置相似度,这里我们设置阈值让它大于0.5。g被定于为如(2)所示,我们可以将这个问题看成一个二部图的匹配问题,这样我们就可以用匈牙利算法来解这个问题了。
层次聚类:采用三个部分来度量距离:表观相似性,不重叠部分的距离和重叠部分的距离。表观相似性通过计算两段轨迹的最后一帧附近图像的平均reid feature的L2距离来实现。对于不重叠部分,通过计算两段轨迹最后一帧之间的速度,如果小于某个阈值就设置为0,否则的话为无穷。对于重叠部分,和前面一样根据IOU是否大于某个阈值来设置。
4.跨相机的跟踪。将一整段轨迹的行人特征取平均值作为这个轨迹的特征,然后采用re-ranking进一步优化排序,除了re-ranking还人工定义了一些限制,比如两段轨迹之间的间隔不能多于一分钟,行人不能同一时间出现在两个摄像机镜头下,除了三个有重叠的摄像机对之外。在跨摄像机跟踪时,我们仍然做了一些单摄像机轨迹的合并工作,因为有时候平均的行人特征在长时间的tracking中来说还是非常有效的。
评价:完全是用reID的东西在做,并没有用到一些tracking方面的技巧。方法还是比较粗糙,使用到了很多自定义的阈值,不能很好地实现动态调整。使用到了一些私人数据集以及7个reid数据集来进行预训练,不具有普适性。但是距离度量的方法值得借鉴。