目标跟踪 浅谈

来源:互联网 发布:鹿晗人品知乎 编辑:程序博客网 时间:2024/06/01 08:48

相信很多来到这里的人和我一样,都是想找一种比较好的目标跟踪算法,或者想对目标跟踪这个领域有个比较深入的了解,经典目标跟踪算法,可能我们并不需要那些曾经辉煌但已被拍在沙滩上的tracker,而是那些即将成为经典的,或者就目前来说最好用、速度和性能都看的过去tracker。我比较关注的是目标跟踪中的相关滤波方向,这里尽可能全面的谈谈相关滤波,给大家分享一些我认为比较好的算法,顺便谈谈我的看法,有可能会写的比较长,分多次更新和修改。

如果你问别人近几年有什么比较niubility的跟踪算法,大部分人都会扔给你吴毅大神的论文,OTB50和OTB100:Wu Y, Lim J, Yang M H. Online object tracking: A benchmark [C]// CVPR, 2013.Wu Y, Lim J, Yang M H. Object tracking benchmark [J]. TPAMI, 2015.顶会转顶刊的顶级待遇,在加上引用量1200+200多,影响力不言而喻,已经是做tracking必须跑的数据库了,
测试代码和序列都可以下载: Visual Tracker Benchmark,OTB50包括50个序列:

论文在数据库上对比了包括12年在内的29个顶尖的tracker,有大家比较熟悉的OAB, IVT, MIL, CT, TLD, Struck等,由于之前没有比较公认的数据库,论文都是自卖自夸,大家也不知道到底哪个好用,所以这个database的意义非常重大,直接促进了跟踪算法的发展,后来又扩展为OTB100,有100个序列,我们这里参考OTB100的结果:

接下来再看看结果(建议去看论文比较清晰):

上结论:平均来看Struck, SCM, ASLA等算法的性能比较高,着重强调CSK,第一次向世人展示了相关滤波的潜力,排第四还362FPS简直逆天了。请注意另一篇速度很快的经典算法CT,这段时间是压缩感知大热的时候,这里能看到很多稀疏相关算法,满满都是历史的痕迹。如果对更早期的算法感兴趣,推荐另一篇经典的survey(反正我是没兴趣也没看过):Yilmaz A, Javed O, Shah M. Object tracking: A survey[J]. CSUR, 2006. 自从2012年AlexNet问世以后,CV各个领域都有了很多变化,所以我猜你肯定还想知道2013到2017年发生了什么,抱歉我也不知道,不过我们可以肯定的是,2013年以后的论文确定以及肯定都会引用OTB50这篇论文,借助谷歌学术中的被引用次数功能,得到如下结果:

这里仅列举几个排名靠前的,依次是Stuck转PAMI, 三大相关滤波方法KCF, CN, DSST, 和VOT竞赛,这里仅作示范,有兴趣可以去试试。(这么做的理论依据是:一篇论文,在它之前的工作可以看它的引用文献,之后的工作可以看谁引用了它;虽然引用量并不能说明什么,但好的方法大家基本都会引用的;之后还可以通过限定时间来查看某段时间的相关论文,如2016-2017就能找到最新的论文了,至于论文质量需要仔细甄别;其他方向的重要论文也可以这么用,顺藤摸瓜,然后你就知道大牛是哪几位,接着关注跟踪一下他们的工作(以上小技巧,如果你不知道,请关注我-_-!))这样我们就大致就知道目标跟踪领域的最大发展应该就是相关滤波无疑了,再往后还能看到相关滤波类算法有SAMF, LCT, HCF, SRDCF等等。引用量也与时间有关,建议分每年来看,这里就不贴图了(相关滤波类新论文也可以通过引用KCF的论文去找)。此外,最新版本OPENCV3.2除了TLD,也包括了几个很新的跟踪算法 OpenCV: Tracking API:

TrackerKCF接口实现了KCF和CN,影响力可见一斑,这一点就可以说明很多问题了,还有个GOTURN是基于深度学习的方法,窃以为太激进了

总体简单介绍下目标跟踪。这里说的目标跟踪,是通用单目标跟踪,第一帧给个矩形框,这个框在数据库里面是人工标注的,在实际情况下大多是检测算法的结果,然后需要跟踪算法在后续帧紧跟住这个框,以下是VOT对跟踪算法的要求:
通常目标跟踪面临由几大难点(吴毅在VALSE的slides):外观变形,光照变化,快速运动和运动模糊,背景相似干扰:

平面外旋转,平面内旋转,尺度变化,遮挡和出视野等情况:

正因为这些情况才让tracking变得很难,目前比较常用的数据库除了OTB,还有谷歌出来的VOT竞赛数据库(类比ImageNet),已经举办了四年,VOT2015和VOT2016都包括60个序列,所以序列也是免费下载 VOT Challenge | Challenges:Kristan M, Pflugfelder R, Leonardis A, et al. The visual object tracking vot2013 challenge results [C]// ICCV, 2013.Kristan M, Pflugfelder R, Leonardis A, et al. The Visual Object Tracking VOT2014 Challenge Results [C]// ECCV, 2014.Kristan M, Matas J, Leonardis A, et al. The visual object tracking vot2015 challenge results [C]// ICCV, 2015.Kristan M, Ales L, Jiri M, et al. The Visual Object Tracking VOT2016 Challenge Results [C]// ECCV, 2016.OTB和VOT区别:OTB包括25%的灰度序列,但VOT都是彩色序列,这也是造成很多颜色特征算法性能差异的原因;两个库的评价指标不一样,具体请参考论文;VOT库的序列分辨率普遍较高,这一点后面分析会提到。对于一个tracker,如果两个库(最好是OTB100和VOT2016)都跑了且结果上佳,那性能肯定是非常优秀的(两个库调参你能调好,我服,认了),如果只跑了一个。。我比较认可的是VOT2016,因为序列都是精细标注,且评价指标我更加认可(人家毕竟是竞赛,评价指标发过TPAMI的)。。差别比较大的一点是,OTB是随机帧开始,或矩形框加随机干扰初始化去跑,作者说这样更加符合检测算法给的框框;而VOT是第一帧初始化去跑,每次跟踪失败(跟踪框和标准框不重叠)时,5帧之后再次初始化,VOT以short-term为主,且认为跟踪检测应该在一起永不分离,detecter会多次初始化tracker。至于哪个更好,看你和你的需求。目标视觉跟踪(Visual Object Tracking),大家比较公认分为两大类:生成(generative)模型方法和判别(discriminative)模型方法,目前比较流行的是判别类方法,也叫检测跟踪tracking-by-detection,为保持完整性,以下简述。生成类方法,在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。举个例子,从当前帧知道了目标区域80%是红色,20%是绿色,然后在下一帧,搜索算法就像无头苍蝇,到处去找最符合这个颜色比例的区域,推荐算法ASMS vojirt/asms:Vojir T, Noskova J, Matas J. Robust scale-adaptive mean-shift for tracking [J]. Pattern Recognition Letters, 2014.VOT2015的第20名,官方推荐的实时算法,平均帧率125FPS,在经典mean-shift框架下加入了尺度估计,经典颜色直方图特征,加入了两个先验(尺度不剧变+可能偏最大)作为正则项,和反向尺度一致性检查,作者给了C++代码,在相关滤波和深度学习盛行的年代,还能看到mean-shift打榜,实在不容易(已泪目),实测性能还不错,性价比较高。判别类方法,OTB50里面的大部分方法都是这一类,经典套路图像特征+机器学习, 当前帧以目标区域为正样本,背景区域为负样本,机器学习训练分类器,下一帧用训练好的分类器找最优区域(马超在VALSE的slides):与生成类方法最大的区别,是分类器训练过程中用到了背景信息,这样分类器专注区分前景和背景,判别类方法普遍都比生成类好。举个例子,这训练时tracker就知道目标80%是红色,20%是绿色,还知道背景中有橘红色,要格外注意别搞错了,这样的分类器知道的更多效果也肯定更好。tracking-by-detection和检测算法非常相似,如经典行人检测用HOG+SVM,Struck用到了haar+structured output SVM,跟踪中为了尺度自适应也需要多尺度遍历搜索,区别仅在于跟踪算法对特征和在线机器学习的速度要求更高,检测范围和尺度更小而已。这点其实并不意外,大多数情况检测识别算法复杂度比较高不可能每帧都做,这时候用复杂度更低的跟踪算法就很合适了,只需要在跟踪失败(drift)或一定间隔以后再次检测去初始化tracker就可以了。其实我就想说,FPS才TMD是最重要的指标,慢的要死的算法可以去死了(喂同学,别这么偏激,速度可以慢慢优化嘛)。判别类方法的最新发展就是相关滤波(correlation filter简称CF,或discriminative correlation filter简称DCF,注意和后面KCF种的DCF方法区别)类方法(前面提到的那几个,后面要着重介绍的)和深度学习(Deep ConvNet based)类方法,因为深度学习类并不了解就不瞎推荐了,除了Winsty的几篇 Naiyan Wang - Home,还有VOT2015的冠军MDNet Learning Multi-Domain Convolutional Neural Networks for Visual Tracking和VOT2016的冠军TCNN,速度方面比较突出的如80FPS的SiamFC SiameseFC tracker和100FPS的GOTURN davheld/GOTURN,注意是在GPU上,基于ResNet的SiamFC-R在VOT2016表现不错,很看好后续发展,至于GOTURN,效果那么差,跑100FPS又有什么用呢?Nam H, Han B. Learning multi-domain convolutional neural networks for visual tracking [C]// CVPR, 2016.Nam H, Baek M, Han B. Modeling and propagating cnns in a tree structure for visual tracking. arXiv preprint arXiv:1608.07242, 2016.Bertinetto L, Valmadre J, Henriques J F, et al. Fully-convolutional siamese networks for object tracking [C]// ECCV, 2016.Held D, Thrun S, Savarese S. Learning to track at 100 fps with deep regression networks [C]// ECCV, 2016.深度学习END2END的强大威力在目标跟踪方向还远没有发挥出来,还没有和相关滤波类方法拉开多大差距(速度慢是天生的我不怪你,但效果总该很高吧,不然你存在的意义是什么呢)最后强力推荐Qiang Wang大神维护的资源benchmark_results:大量顶级方法在OTB库上的性能对比,各种论文代码应有尽有,找不着路的同学请跟紧,别迷路 foolwood/benchmark_results/***************************我是分割线************************************/接下来详细介绍经典高速相关滤波类跟踪算法CSK, KCF/DCF, CN。很多人应该和我一样,都是被下面这张图吸引了:这是KCF/DCF算法在OTB50上(那时候OTB100还没有发表)的实验结果,Precision和FPS碾压了OTB50上最好的Struck,看惯了勉强实时的Struck和TLD,飙到高速的KCF/DCF突然有点让人不敢相信,其实KCF/DCF就是在OTB上大放异彩的CSK的多通道特征改进算法。注意到那个超高速615FPS的MOSSE了吧(喂,严重超速这是您的罚单),这是目标跟踪领域的第一篇相关滤波类方法,这其实是真正第一次显示了相关滤波的潜力。和KCF同一时期的还有个CN,在2014’CVPR上引起剧烈反响的颜色特征方法,其实也是CSK的多通道颜色特征改进算法。从MOSSE(615) -> CSK(362) -> DCF(292) -> KCF(172) ~ CN(105),

速度虽然是越来越慢,但效果越来越好,而且始终保持在高速水平,接下来就详细分解这四个方法:
Bolme D S, Beveridge J R, Draper B A, et al. Visual object tracking using adaptive correlation filters [C]// CVPR, 2010.Henriques J F, Caseiro R, Martins P, et al. Exploiting the circulant structure of tracking-by- detection with kernels [C]// ECCV, 2012.Henriques J F, Rui C, Martins P, et al. High-Speed Tracking with Kernelized Correlation Filters [J]. TPAMI, 2015.Danelljan M, Shahbaz Khan F, Felsberg M, et al. Adaptive color attributes for real-time visual tracking [C]// CVPR, 2014.由于CSK和KCF都是Henriques J F大神先后两篇论文,且KCF/DCF是期刊比较长内容充实,主要方法和CSK差别不大,我们就先从单通道灰度特征的CSK开始了解相关滤波的算法原理和具体流程,然后再看看它和MOSSE的差别在哪里,最后再来看多通道特征扩展的KCF/DCF和CN。

最新CVPR2017三篇详解ECO, LMCF, CSR-DCF

参考:https://www.zhihu.com/question/26493945/answer/156025576

2 0
原创粉丝点击