对于目标跟踪而言,一般论文开篇通常都会说在第一帧给定目标位置,在后续帧中预测目标的位置。然而如何对后续帧中表述的定义直接影响了整个跟踪领域的发展。
为了方便表述,早期的跟踪算法都是坐标轴对齐的的矩形框。但随着跟踪精度的不断提升,数据集的难度在不断提升,在VOT2015时即提出使用旋转矩形框来作为标记。在VOT2016的时候提出自动的通过mask来生成旋转框的方法。更为本质的,我们会发现,这个旋转的矩形框实际上就是mask的一种近似。我们所要预测的实际上就是目标物体的mask。利用mask才能得到精度本身的上界。所以才有了mask,分割核跟踪的统一化。
第一类是预测score的方法,这类算法以相关滤波和SiameFC为代表。通过预测候选区域的score map来得到物体的位置,物体的尺度大小通常是通过图像金字塔得到。同时无法得到物体的长宽比变化。
第二类就是以GOTURN和SiamRPN为代表的做boundingbox regression的方法。这也是SiamRPN取得当前最好结果的核心所在,充分挖取精度方向的红利。实际上并不是SiamRPN预测的有多稳定,而是在预测正确的时候,会给出更为精确的box。利用网络预测长宽比可以调整box,这个方向一直以来被大家所忽视,所以SiamRPN很快杀出重围。
而在物体发生旋转的时候,简单的box的表述通常会产生极大的损失,这实际上就是表述本身存在的缺陷。而为了进一步探索在精度上存在的问题。我们更进一步,直接预测物体的mask。这种表述使得我们可以得到最为准确的box。最直观的利用一个简单的事例的可视化就可以看出,这三种算法的区别(左中右分别是SiamFC | SiamRPN | SiamMask)。
其实你看SiameseRPN
SiamRPN++通过数据增强的方法解决训练的空间位置偏见。CIR通过crop操作从网络架构上减弱网络padding带来的学习偏见,通过大量的实验分析了感受野等因素对学习的影响。主要从网络结构上下手了 用了21层我记得是张志鹏做的,挺优秀的还。
关于Siamese Tracking 的未来研究方向(free ideas):
这是一些王强的想法:
当你阅读了一定的文章以及有现成的代码之后,下面当然是如何着手改进。我自己总结了一些小的可以改进的方向,仅供参考。
1)高效的在线学习算法:进展到目前为止,我的所有实验研究表明。Siamese网络无法真正意义上抑制背景中的困难样本。离线的学习从本质上无法区分两个长相相似的人或者车。而CF相关算法可以通过分析整个环境的上下文关系来进行调整。如果对于提升整个算法的上界(偏学术)的角度考虑,在线学习有必要。如果正常的工程使用,我认为目前的算法只要在相应的场景中进行训练就足够了。
2)精确输出表达:今年我们的工作提出额外的mask输出。可直接扩展的思路为关键点输出(CornerNet / PoseTrack),极点预测(ExtremeNet),甚至6D pose跟踪。本质上是通过网络可以预测任何与目标相关的输出。大家可以任意的发散思维。
3)定制网络架构:其中包含两个子方向,一个是追求精度的去探索究竟什么样的网络架构会有利于当前的跟踪框架的学习。另一个有价值的子方向是如何构建超快速的小网络用于实际工程。工程项目中有时并没有GPU的资源供使用,如何提供“廉价”的高质量跟踪算法也具有很强的实际意义。当对网络进行裁剪之后,很容易达到500FPS的高性能算法来对传统的KCF进行真正的替换。
4)离线训练学习优化:目前的跟踪算法在相似性学习方向还是过于简单,如果去设计更为有效的度量学习方案,应该会有一定的提升。同时我们也并没有很好的掌握网络的训练。当前的训练策略是将网络主干的参数进行固定,先训练head。然后逐步放开。实际上我们发现,当直接将所有层全部放开一起训练的时候,网络的泛化性能会显著下降。另一个方面,train from scratch的概念已经在检测领域非常普遍了。跟踪的网络目前我们的经验在跟踪方面并不work。
5)更细粒度预测:这一条实际上是上一条的续集,就是专注于score分支的预测。现在大家的做法是>0.6 IoU的都当做前景(正样本),但实际上正样本之间还是有较大的差异的。跟踪本质上也是不断预测一个非常细小物体帧间运动的过程,如果一个网络不能很好的分辨细小的差异,他可能并不是一个最优的设计选择。这也是ATOM的IoUNet主攻的方向。
6)泛化性能提升:非常推荐自动化所黄凯奇老师组的GOT-10k数据集,数据组织的非常棒。黄老师组在one-shot learning领域有着深厚的积淀,所以站在这个领域的角度,他们提出了严格分离训练集和测试集的物体类别来验证泛化性能。所以原则上所有one-shot learning方向的一些嵌入学习方法都可以移过来用。同时,我觉得Mask-X-RCNN,segment everything这个思路可以借鉴。本质上我也不得不承认,基于深度学习的跟踪算法存在泛化性能问题。我们有理由怀疑跟踪是否会在未知的类别上有较好的泛化性能,实际上肯定是会下降。
7)long-term跟踪框架:截止到目前为止,虽然VOT组委会以及牛津这边的OxUVA都有专门的long-term的数据集,但long-term算法并没有一个较好的统一框架出来。关于这方面的研究似乎有点停滞。
重点
还是得广撒网 多看论文找切入点 代码吃透 跑一跑
同个类型的你看了几篇切入的 就是同一个类型 不是好几个类型 在你做的东西很窄的层面
程序懂了再看论文 看论文切入点 看十篇同类型的 然后仿写!
又一次陷入沉思,嗯嗯嗯!!!我得开始想办法弄相关的文章了!