如题,虽然这个问题是经典目标跟踪算法,但事实上,可能我们并不需要那些曾经辉煌但已被拍在沙滩上的tracker(目标跟踪算法),而是那些即将成为经典的,或者就目前来说最好用、速度和性能都看的过去tracker。我比较关注目标跟踪中的相关滤波方向,接下来我介绍下我所认识的目标跟踪,尤其是相关滤波类方法
benchmark: https://github.com/foolwood/benchmark_results
知乎:https://www.zhihu.com/question/26493945/answer/156025576
作者:YaqiLYU
链接:https://www.zhihu.com/question/26493945/answer/156025576
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
经典判别类方法推荐Struck和TLD,都能实时性能还行,Struck是2012年之前最好的方法,TLD是经典long-term的代表,思想非常值得借鉴:
长江后浪推前浪,前面的已被排在沙滩上,这个后浪就是相关滤波和深度学习。相关滤波类方法correlation filter简称CF,也叫做discriminative correlation filter简称DCF,注意和后面的DCF算法区别,包括前面提到的那几个,也是后面要着重介绍的。深度学习(Deep ConvNet based)类方法,因为深度学习类目前不适合落地就不瞎推荐了,可以参考Winsty的几篇 Naiyan Wang - Home,还有VOT2015的冠军MDNet Learning Multi-Domain Convolutional Neural Networks for Visual Tracking,以及VOT2016的冠军TCNN http://www.votchallenge.net/vot2016/download/44_TCNN.zip,速度方面比较突出的如80FPS的SiamFC SiameseFC tracker和100FPS的GOTURN davheld/GOTURN,注意都是在GPU上。基于ResNet的SiamFC-R(ResNet)在VOT2016表现不错,很看好后续发展,有兴趣也可以去VALSE听作者自己讲解 VALSE-20160930-LucaBertinetto-Oxford-JackValmadre-Oxford-pu,至于GOTURN,效果比较差,但优势是跑的很快100FPS,如果以后效果也能上来就好了。做科研的同学深度学习类是关键,能兼顾速度就更好了。
最后强力推荐两个资源:
王强@Qiang Wang维护的benchmark_results foolwood/benchmark_results:大量顶级方法在OTB库上的性能对比,各种论文代码应有尽有,大神自己C++实现并开源的CSK, KCF和DAT,还有他自己的DCFNet论文加源码,找不着路的同学请跟紧。
@H Hakase维护的相关滤波类资源 HakaseH/CF_benchmark_results ,详细分类和论文代码资源,走过路过别错过,相关滤波类算法非常全面,非常之用心!
最经典的高速相关滤波类跟踪算法CSK, KCF/DCF, CN
KCF/DCF算法在OTB50上(2014年4月就挂arVix了, 那时候OTB100还没有发表)的实验结果,Precision和FPS碾压了OTB50上最好的Struck,看惯了勉强实时的Struck和TLD,飙到高速的KCF/DCF突然有点让人不敢相信,其实KCF/DCF就是在OTB上大放异彩的CSK的多通道特征改进版本。注意到那个超高速615FPS的MOSSE(严重超速这是您的罚单),这是目标跟踪领域的第一篇相关滤波类方法,这其实是真正第一次显示了相关滤波的潜力。和KCF同一时期的还有个CN,在2014'CVPR上引起剧烈反响的颜色特征方法,其实也是CSK的多通道颜色特征改进算法。从MOSSE(615)到 CSK(362) 再到 KCF(172FPS), DCF(292FPS), CN(152FPS), CN2(202FPS),速度虽然是越来越慢,但效果越来越好,而且始终保持在高速水平:
CSK和KCF都是Henriques J F(牛津大学)João F. Henriques 大神先后两篇论文,影响后来很多工作,核心部分的岭回归,循环移位的近似密集采样,还给出了整个相关滤波算法的详细推导。还有岭回归加kernel-trick的封闭解,多通道HOG特征。
Martin Danelljan大牛(林雪平大学)用多通道颜色特征Color Names(CN)去扩展CSK得到了不错的效果,算法也简称CN Coloring Visual Tracking 。
MOSSE是单通道灰度特征的相关滤波,CSK在MOSSE的基础上扩展了密集采样(加padding)和kernel-trick,KCF在CSK的基础上扩展了多通道梯度的HOG特征,CN在CSK的基础上扩展了多通道颜色的Color Names。HOG是梯度特征,而CN是颜色特征,两者可以互补,所以HOG+CN在近两年的跟踪算法中成为了hand-craft特征标配。最后,根据KCF/DCF的实验结果,讨论两个问题:
第一,作者用了HOG的快速算法fHOG,来自Piotr's Computer Vision Matlab Toolbox,C代码而且做了SSE优化。如对fHOG有疑问,请参考论文Object Detection with Discriminatively Trained Part Based Models第12页。
第二,HOG特征常用cell size是4,这就意味着,100*100的图像,HOG特征图的维度只有25*25,而Raw pixels是灰度图归一化,维度依然是100*100,我们简单算一下:27通道HOG特征的复杂度是27*625*log(625)=47180,单通道灰度特征的复杂度是10000*log(10000)=40000,理论上也差不多,符合表格。
看代码会发现,作者在扩展后目标区域面积较大时,会先对提取到的图像块做因子2的下采样到50*50,这样复杂度就变成了2500*log(2500)=8495,下降了非常多。那你可能会想,如果下采样再多一点,复杂度就更低了,但这是以牺牲跟踪精度为代价的,再举个例子,如果图像块面积为200*200,先下采样到100*100,再提取HOG特征,分辨率降到了25*25,这就意味着响应图的分辨率也是25*25,也就是说,响应图每位移1个像素,原始图像中跟踪框要移动8个像素,这样就降低了跟踪精度。在精度要求不高时,完全可以稍微牺牲下精度提高帧率(但看起来真的不能再下采样了)。
2. HOG特征的KCF和DCF哪个更好?
大部分人都会认为KCF效果超过DCF,而且各属性的准确度都在DCF之上,然而,如果换个角度来看,以DCF为基准,再来看加了kernel-trick的KCF,mean precision仅提高了0.4%,而FPS下降了41%,这么看是不是挺惊讶的呢?除了图像块像素总数,KCF的复杂度还主要和kernel-trick相关。所以,下文中的CF方法如果没有kernel-trick,就简称基于DCF,如果加了kernel-trick,就简称基于KCF(剧透基本各占一半)。当然这里的CN也有kernel-trick,但请注意,这是Martin Danelljan大神第一次使用kernel-trick,也是最后一次。。。
这就会引发一个疑问,kernel-trick这么强大的东西,怎么才提高这么点?这里就不得不提到Winsty的另一篇大作:
Wang N, Shi J, Yeung D Y, et al. Understanding and diagnosing visual tracking systems[C]// ICCV, 2015.
一句话总结,别看那些五花八门的机器学习方法,那都是虚的,目标跟踪算法中特征才是最重要的(就是因为这篇文章我粉了WIN叔哈哈),以上就是最经典的三个高速算法,CSK, KCF/DCF和CN,推荐。
总体来说,相关滤波类方法对快速变形和快速运动情况的跟踪效果不好。
快速变形主要因为CF是模板类方法。容易跟丢这个比较好理解,前面分析了相关滤波是模板类方法,如果目标快速变形,那基于HOG的梯度模板肯定就跟不上了,如果快速变色,那基于CN的颜色模板肯定也就跟不上了。这个还和模型更新策略与更新速度有关,固定学习率的线性加权更新,如果学习率太大,部分或短暂遮挡和任何检测不准确,模型就会学习到背景信息,积累到一定程度模型跟着背景私奔了,一去不复返。如果学习率太小,目标已经变形了而模板还是那个模板,就会变得不认识目标。
检测阶段,相关滤波对快速运动的目标检测比较乏力。相关滤波训练的图像块和检测的图像块大小必须是一样的,这就是说你训练了一个100*100的滤波器,那你也只能检测100*100的区域,如果打算通过加更大的padding来扩展检测区域,那样除了扩展了复杂度,并不会有什么好处。目标运动可能是目标自身移动,或摄像机移动,按照目标在检测区域的位置分四种情况来看:
以上就是边界效应(Boundary Effets),推荐两个主流的解决边界效应的方法,其中SRDCF速度比较慢,并不适合实时场合。
Martin Danelljan的SRDCF Learning Spatially Regularized Correlation Filters for Visual Tracking,主要思路:既然边界效应发生在边界附近,那就忽略所有移位样本的边界部分像素,或者说限制让边界附近滤波器系数接近0:
SRDCF基于DCF,类SAMF多尺度,采用更大的检测区域(padding = 4),同时加入空域正则化,惩罚边界区域的滤波器系数,由于没有闭合解,采用高斯-塞德尔方法迭代优化。检测区域扩大(1.5->4),迭代优化(破坏了闭合解)导致SRDCF只有5FP,但效果非常好是2015年的baseline。
另一种方法是Hamed Kiani提出的MOSSE改进算法,基于灰度特征的CFLM Correlation Filters with Limited Boundaries 和基于HOG特征的BACF Learning Background-Aware Correlation Filters for Visual Tracking,主要思路是采用较大尺寸检测图像块和较小尺寸滤波器来提高真实样本的比例,或者说滤波器填充0以保持和检测图像一样大,同样没有闭合解,采用ADMM迭代优化:
CFLB仅单通道灰度特征,虽然速度比较快167FPS,但性能远不如KCF,不推荐;最新BACF将特征扩展为多通道HOG特征,性能超过了SRDCF,而且速度比较快35FPS,非常推荐。
其实这两个解决方案挺像的,都是用更大的检测及更新图像块,训练作用域比较小的相关滤波器,不同点是SRDCF的滤波器系数从中心到边缘平滑过渡到0,而CFLM直接用0填充滤波器边缘。
VOT2015相关滤波方面还有排在第二名,结合深度特征的DeepSRDCF,因为深度特征都非常慢,在CPU上别说高速,实时都到不了,虽然性能非常高,但这里就不推荐,先跳过。
The trackers are ordered by the average overlap scores.
AUC
and Precision
are the standard metrics.Deep Learning
: deep learning features, deep learning method and RL.RealTime
: Speeds from the original paper, not test on the same platform. (just focus magnitude)Tracker | AUC-CVPR2013 | Precision-CVPR2013 | AUC-OTB100 | Precision-OTB100 | AUC-OTB50 | Precision-OTB50 | Deep Learning | RealTime |
---|---|---|---|---|---|---|---|---|
ECO | 0.709 | 0.93 | 0.694 | 0.910 | 0.643 | 0.874 | Y | N(6) |
MDNet | 0.708 | 0.948 | 0.678 | 0.909 | 0.645 | 0.890 | Y | N(1) |
SANet | 0.686 | 0.95 | 0.692 | 0.928 | - | - | Y | N(1) |
BranchOut | 0.678 | 0.917 | Y | N(1) | ||||
TCNN | 0.682 | 0.937 | 0.654 | 0.884 | - | - | Y | N(1) |
TSN | 0.644 | 0.868 | 0.58 | 0.809 | Y | N(1) | ||
CRT | - | - | 0.642 | 0.875 | 0.594 | 0.835 | Y | N(1.3) |
BACF | 0.678 | 0.63 | N | Y(35) | ||||
MCPF | 0.677 | 0.916 | 0.628 | 0.873 | Y | N(0.5) | ||
CREST | 0.673 | 0.908 | 0.623 | 0.837 | - | - | Y | N(1) |
C-COT | 0.672 | 0.899 | 0.682 | - | - | - | Y | N(0.3) |
DNT | 0.664 | 0.907 | 0.627 | 0.851 | - | - | Y | N(5) |
PTAV | 0.663 | 0.894 | 0.635 | 0.849 | Y | Y(25) | ||
ADNet | 0.659 | 0.903 | 0.646 | 0.88 | Y | N(3) | ||
DSiamM | 0.656 | 0.891 | Y | Y(25) | ||||
SINT+ | 0.655 | 0.882 | - | - | - | - | Y | N(4) |
DRT | 0.655 | 0.892 | - | - | - | - | Y | N(0.8) |
RDT | 0.654 | - | 0.603 | - | - | - | Y | Y(43) |
SRDCFdecon | 0.653 | 0.87 | 0.627 | 0.825 | 0.56 | 0.764 | N | N(1) |
DeepLMCF | 0.643 | 0.892 | Y | N(8) | ||||
MUSTer | 0.641 | 0.865 | 0.575 | 0.774 | - | - | N | N(4) |
DeepSRDCF | 0.641 | 0.849 | 0.635 | 0.851 | 0.56 | 0.772 | Y | N(<1) |
EAST | 0.638 | Y | Y(23/159) | |||||
SINT | 0.635 | 0.851 | - | - | - | - | Y | N(4) |
LCT | 0.628 | 0.848 | 0.562 | 0.762 | 0.492 | 0.691 | N | Y(27) |
SRDCF | 0.626 | 0.838 | 0.598 | 0.789 | 0.539 | 0.732 | N | N(5) |
LMCF | 0.624 | 0.839 | 0.568 | N | Y(85) | |||
SCF | 0.623 | 0.874 | - | - | - | - | N | Y(35) |
Staple_CA | 0.621 | 0.833 | 0.598 | 0.81 | N | Y(35) | ||
RaF | 0.615 | 0.919 | Y | N(2) | ||||
SiamFC | 0.612 | 0.815 | - | - | - | - | Y | Y(58) |
RFL | 0.581 | Y | Y(15) | |||||
CFNet_conv2 | 0.611 | 0.807 | 0.568 | 0.748 | 0.53 | 0.702 | Y | Y(75) |
SiamFC_{3s} | 0.608 | 0.809 | - | - | - | - | Y | Y(86) |
ACFN | 0.607 | 0.86 | 0.575 | 0.802 | Y | Y(15) | ||
CF2 | 0.605 | 0.891 | 0.562 | 0.837 | 0.513 | 0.803 | Y | N(11) |
HDT | 0.603 | 0.889 | 0.654 | 0.848 | 0.515 | 0.804 | Y | N(10) |
Staple | 0.6 | 0.793 | 0.578 | 0.784 | - | - | N | Y(80) |
CSR-DCF | 0.599 | 0.8 | 0.598 | 0.733 | N | Y(13) | ||
FCNT | 0.599 | 0.856 | - | - | - | - | Y | N(1) |
CNN-SVM | 0.597 | 0.852 | 0.554 | 0.814 | 0.512 | 0.769 | Y | N |
SCT | 0.595 | 0.845 | - | - | - | - | Y | Y(40) |
SO-DLT | 0.595 | 0.81 | - | - | - | - | Y | N |
BIT | 0.593 | 0.817 | - | - | - | - | N | Y(45) |
DLSSVM | 0.589 | 0.829 | 0.541 | 0.767 | - | - | Y | N(10) |
SAMF | 0.579 | 0.785 | 0.535 | 0.743 | - | - | N | N(7) |
RPT | 0.577 | 0.805 | - | - | - | - | N | N(4) |
MEEM | 0.566 | 0.83 | 0.53 | 0.781 | 0.473 | 0.712 | N | N(10) |
DSST | 0.554 | 0.737 | 0.52 | 0.693 | 0.463 | 0.625 | N | Y(24) |
CNT | 0.545 | 0.723 | - | - | - | - | Y | N(1.5) |
TGPR | 0.529 | 0.766 | 0.458 | 0.643 | - | - | N | N(1) |
KCF | 0.514 | 0.74 | 0.477 | 0.693 | 0.403 | 0.611 | N | Y(172) |
GOTURN | 0.444 | 0.62 | 0.427 | 0.572 | - | - | Y | Y(16 |
视觉目标跟踪是计算机视觉中的一个重要研究方向,有着广泛的应用,如:视频监控,人机交互, 无人驾驶等。过去二三十年视觉目标跟踪技术取得了长足的进步,特别是最近两年利用深度学习的目标跟踪方法取得了令人满意的效果,使目标跟踪技术获得了突破性的进展。本文旨在简要介绍:目标跟踪的基本流程与框架,目标跟踪存在的挑战,目标跟踪相关方法,以及目标跟踪最新的进展等,希望通过这篇文章能让读者对视觉目标跟踪领域有一个较为全面的认识。
1.视觉目标跟踪基本流程与框架
视觉目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。这一基本任务流程可以按如下的框架划分:
输入初始化目标框,在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征(Feature Extractor),然后对这些候选框评分(Observation Model),最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。
根据如上的框架,我们可以把目标跟踪划分为5项主要的研究内容. (1)运动模型:如何产生众多的候选样本。(2)特征提取:利用何种特征表示目标。(3)观测模型:如何为众多候选样本进行评分。(4)模型更新:如何更新观测模型使其适应目标的变化。(5)集成方法:如何融合多个决策获得一个更优的决策结果。下面分别简要介绍这5项研究内容。
运动模型(Motion Model):生成候选样本的速度与质量直接决定了跟踪系统表现的优劣。常用的有两种方法:粒子滤波(Particle Filter)和滑动窗口(Sliding Window)。粒子滤波是一种序贯贝叶斯推断方法,通过递归的方式推断目标的隐含状态。而滑动窗口是一种穷举搜索方法,它列出目标附近的所有可能的样本作为候选样本。
特征提取(Feature Extractor): 鉴别性的特征表示是目标跟踪的关键之一。常用的特征被分为两种类型:手工设计的特征(Hand-crafted feature)和深度特征(Deep feature)。常用的手工设计的特征有灰度特征(Gray),方向梯度直方图(HOG),哈尔特征(Haar-like),尺度不变特征(SIFT)等。与人为设计的特征不同,深度特征是通过大量的训练样本学习出来的特征,它比手工设计的特征更具有鉴别性。因此,利用深度特征的跟踪方法通常很轻松就能获得一个不错的效果。
观测模型(Observation Model):大多数的跟踪方法主要集中在这一块的设计上。根据不同的思路,观测模型可分为两类:生成式模型(Generative Model)和判别式模型(Discriminative Model). 生成式模型通常寻找与目标模板最相似的候选作为跟踪结果,这一过程可以视为模板匹配。常用的理论方法包括:子空间,稀疏表示,字典学习等。而判别式模型通过训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为预测结果。判别式方法已经成为目标跟踪中的主流方法,因为有大量的机器学习方法可以利用。常用的理论方法包括:逻辑回归,岭回归,支持向量机,多示例学习,相关滤波等。
模型更新(Model Update): 模型更新主要是更新观测模型,以适应目标表观的变化,防止跟踪过程发生漂移。模型更新没有一个统一的标准,通常认为目标的表观连续变化,所以常常会每一帧都更新一次模型。但也有人认为目标过去的表观对跟踪很重要,连续更新可能会丢失过去的表观信息,引入过多的噪音,因此利用长短期更新相结合的方式来解决这一问题。
集成方法(Ensemble Method): 集成方法有利于提高模型的预测精度,也常常被视为一种提高跟踪准确率的有效手段。可以把集成方法笼统的划分为两类:在多个预测结果中选一个最好的,或是利用所有的预测加权平均。
2.视觉目标跟踪面临的挑战
视觉运动目标跟踪是一个极具挑战性的任务,因为对于运动目标而言,其运动的场景非常复杂并且经常发生变化,或是目标本身也会不断变化。那么如何在复杂场景中识别并跟踪不断变化的目标就成为一个挑战性的任务。如下图我们列出了目标跟踪中几个主要的挑战因素:
其中遮挡(Occlusion)是目标跟踪中最常见的挑战因素之一,遮挡又分为部分遮挡(Partial Occlusion)和完全遮挡(Full Occlusion)。解决部分遮挡通常有两种思路:(1)利用检测机制判断目标是否被遮挡,从而决定是否更新模板,保证模板对遮挡的鲁棒性。(2)把目标分成多个块,利用没有被遮挡的块进行有效的跟踪。对于目标被完全遮挡的情况,当前也并没有有效的方法能够完全解决。
形变(Deformation)也是目标跟踪中的一大难题,目标表观的不断变化,通常导致跟踪发生漂移(Drift)。解决漂移问题常用的方法是更新目标的表观模型,使其适应表观的变化,那么模型更新方法则成为了关键。什么时候更新,更新的频率多大是模型更新需要关注的问题。
背景杂斑(Background Clutter)指得是要跟踪的目标周围有非常相似的目标对跟踪造成了干扰。解决这类问题常用的手段是利用目标的运动信息,预测运动的大致轨迹,防止跟踪器跟踪到相似的其他目标上,或是利用目标周围的大量样本框对分类器进行更新训练,提高分类器对背景与目标的辨别能力。
尺度变换(Scale Variation)是目标在运动过程中的由远及近或由近及远而产生的尺度大小变化的现象。预测目标框的大小也是目标跟踪中的一项挑战,如何又快又准确的预测出目标的尺度变化系数直接影响了跟踪的准确率。通常的做法有:在运动模型产生候选样本的时候,生成大量尺度大小不一的候选框,或是在多个不同尺度目标上进行目标跟踪,产生多个预测结果,选择其中最优的作为最后的预测目标。
当然,除了上述几个常见的挑战外,还有一些其他的挑战性因素:光照(illumination),低分辨率(Low Resolution),运动模糊(Motion Blur),快速运动(Fast Motion),超出视野(Out of View),旋转(Rotation)等。所有的这些挑战因数共同决定了目标跟踪是一项极为复杂的任务。更多信息请参考http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html。
3.视觉目标跟踪方法
视觉目标跟踪方法根据观测模型是生成式模型或判别式模型可以被分为生成式方法(Generative Method)和判别式方法(Discriminative Method)。前几年最火的生成式跟踪方法大概是稀疏编码(Sparse Coding)了, 而近来判别式跟踪方法逐渐占据了主流地位,以相关滤波(Correlation Filter)和深度学习(Deep Learning)为代表的判别式方法也取得了令人满意的效果。下面我们分别简要概括这几种方法的大体思想和其中的一些具体的跟踪方法。
稀疏表示(Sparse Representation):给定一组过完备字典,将输入信号用这组过完备字典线性表示,对线性表示的系数做一个稀疏性的约束(即使得系数向量的分量尽可能多的为0),那么这一过程就称为稀疏表示。基于稀疏表示的目标跟踪方法则将跟踪问题转化为稀疏逼近问题来求解。如稀疏跟踪的开山之作L1Tracker, 认为候选样本可以被稀疏的表示通过目标模板和琐碎模板,而一个好的候选样本应该拥有更稀疏的系数向量。稀疏性可通过解决一个L1正则化的最小二乘优化问题获得,最后将与目标模板拥有最小重构误差的候选样本作为跟踪结果。L1Tracker中利用琐碎模板处理遮挡,利用对稀疏系数的非负约束解决背景杂斑问题。随后在L1Tracker基础上的改进则有很多,比较有代表性的有ALSA,L1APG等。
相关滤波(Correlation Filter):相关滤波源于信号处理领域,相关性用于表示两个信号之间的相似程度,通常用卷积表示相关操作。那么基于相关滤波的跟踪方法的基本思想就是,寻找一个滤波模板,让下一帧的图像与我们的滤波模板做卷积操作,响应最大的区域则是预测的目标。根据这一思想先后提出了大量的基于相关滤波的方法,如最早的平方误差最小输出和(MOSSE)利用的就是最朴素的相关滤波思想的跟踪方法。随后基于MOSSE有了很多相关的改进,如引入核方法(Kernel Method)的CSK,KCF等都取得了很好的效果,特别是利用循环矩阵计算的KCF,跟踪速度惊人。在KCF的基础上又发展了一系列的方法用于处理各种挑战。如:DSST可以处理尺度变化,基于分块的(Reliable Patches)相关滤波方法可处理遮挡等。但是所有上述的基于相关滤波的方法都受到边界效应(Boundary Effect)的影响。为了克服这个问题SRDCF应运而生,SRDCF利用空间正则化惩罚了相关滤波系数获得了可与深度学习跟踪方法相比的结果。
深度学习(CNN-Based):因为深度特征对目标拥有强大的表示能力,深度学习在计算机视觉的其他领域,如:检测,人脸识别中已经展现出巨大的潜力。但早前两年,深度学习在目标跟踪领域的应用并不顺利,因为目标跟踪任务的特殊性,只有初始帧的图片数据可以利用,因此缺乏大量的数据供神经网络学习。只到研究人员把在分类图像数据集上训练的卷积神经网络迁移到目标跟踪中来,基于深度学习的目标跟踪方法才得到充分的发展。如:CNN-SVM利用在ImageNet分类数据集上训练的卷积神经网络提取目标的特征,再利用传统的SVM方法做跟踪。与CNN-SVM提取最后一层的深度特征不同的是,FCN利用了目标的两个卷积层的特征构造了可以选择特征图的网络,这种方法比只利用最后的全连接层的CNN-SVM效果有些许的提升。随后HCF, HDT等方法则更加充分的利用了卷积神经网络各层的卷积特征,这些方法在相关滤波的基础上结合多层次卷积特征进一步的提升了跟踪效果。然而,跟踪任务与分类任务始终是不同的,分类任务关心的是区分类间差异,忽视类内的区别。目标跟踪任务关心的则是区分特定目标与背景,抑制同类目标。两个任务有着本质的区别,因此在分类数据集上预训练的网络可能并不完全适用于目标跟踪任务。于是,Nam设计了一个专门在跟踪视频序列上训练的多域(Multi-Domain)卷积神经网络(MDNet),结果取得了VOT2015比赛的第一名。但是MDNet在标准集上进行训练多少有一点过拟合的嫌疑,于是VOT2016比赛中禁止在标准跟踪数据集上进行训练。2016年SRDCF的作者继续发力,也利用了卷积神经网络提取目标特征然后结合相关滤波提出了C-COT的跟踪方法取得了VOT2016的冠军。
4.视觉目标跟踪最新进展
目标跟踪最近几年发展迅速,以基于相关滤波(Correlation Filter)和卷积神经网络(CNN)的跟踪方法已经占据了目标跟踪的大半江山。如下图给出的2014-2017年以来表现排名靠前的一些跟踪方法。
可以看到前三名的方法不是基于相关滤波的方法就是基于卷积神经网络的方法,或是两者结合的方法。比如ECCV2016的C-COT就是在相关滤波的基础上结合卷积神经网络的杰作。下图给出这些方法在标准跟踪数据集OTB2013上的跟踪结果:
可以看到基于卷积神经网络的方法取得了惊人的突破。预计未来两年相关滤波和卷积神经网络将仍然会是目标跟踪领域的主角。
最后这部分是Martin Danelljan的专场,主要介绍他的一些列工作,尤其是结合深度特征的相关滤波方法,代码都在他主页Visual Tracking,就不一一贴出了。
在CN中提出了非常重要的多通道颜色特征Color Names,用于CSK框架取得非常好得效果,还提出了加速算法CN2,通过类PCA的自适应降维方法,对特征通道数量降维(10 -> 2),平滑项增加跨越不同特征子空间时的代价,也就是PCA中的协方差矩阵线性更新防止降维矩阵变化太大。
DSST是VOT2014的第一名,开创了平移滤波+尺度滤波的方式。在fDSST中对DSST进行加速,PCA方法将平移滤波HOG特征的通道降维(31 -> 18),QR方法将尺度滤波器~1000*17的特征降维到17*17,最后用三角插值(频域插值)将尺度数量从17插值到33以获得更精确的尺度定位。
SRDCF是VOT2015的第四名,为了减轻边界效应扩大检测区域,优化目标增加了空间约束项,用高斯-塞德尔方法迭代优化,并用牛顿法迭代优化平移检测的子网格精确目标定位。
SRDCFdecon在SRDCF的基础上,改进了样本和学习率问题。以前的相关滤波都是固定学习率线性加权更新模型,虽然这样比较简单不用保存以前样本,但在定位不准确、遮挡、背景扰动等情况会污染模型导致漂移。SRDCFdecon选择保存以往样本(图像块包括正,负样本),在优化目标函数中添加样本权重参数和正则项,采用交替凸搜索,首先固定样本权重,高斯-塞德尔方法迭代优化模型参数,然后固定模型参数,凸二次规划方法优化样本权重。
DeepSRDCF是VOT2015的第二名,将SRDCF中的HOG特征替换为CNN中单层卷积层的深度特征(也就是卷积网络的激活值),效果有了极大提升。这里用imagenet-vgg-2048 network,VGG网络的迁移能力比较强,而且MatConvNet就是VGG组的,MATLAB调用非常方便。论文还测试了不同卷积层在目标跟踪任务中的表现:
第1层表现最好,第2和第5次之。由于卷积层数越高语义信息越多,但纹理细节越少,从1到4层越来越差的原因之一就是特征图的分辨率越来越低,但第5层反而很高,是因为包括完整的语义信息,判别力比较强(本来就是用来做识别的)。
注意区分这里的深度特征和基于深度学习的方法,深度特征来自ImageNet上预训练的图像分类网络,没有fine-turn这一过程,不存在过拟合的问题。而基于深度学习的方法大多需要在跟踪序列上end-to-end训练或fine-turn,如果样本数量和多样性有限就很可能过拟合。
值得一提的还有Chao Ma的HCF,结合多层卷积特征提升效果,用了VGG19的Conv5-4, Conv4-4和Conv3-4的激活值作为特征,所有特征都缩放到图像块分辨率,虽然按照论文应该是由粗到细确定目标,但代码中比较直接,三种卷积层的响应以固定权值1, 0.5, 0.02线性加权作为最终响应。虽然用了多层卷积特征,但没有关注边界效应而且线性加权的方式过于简单,HCF在VOT2016仅排在28名(单层卷积深度特征的DeepSRDCF是第13名)。
C-COT是VOT2016的第一名,综合了SRDCF的空域正则化和SRDCFdecon的自适应样本权重,还将DeepSRDCF的单层卷积的深度特征扩展为多成卷积的深度特征(VGG第1和5层),为了应对不同卷积层分辨率不同的问题,提出了连续空间域插值转换操作,在训练之前通过频域隐式插值将特征图插值到连续空域,方便集成多分辨率特征图,并且保持定位的高精度。目标函数通过共轭梯度下降方法迭代优化,比高斯-塞德尔方法要快,自适应样本权值直接采用先验权值,没有交替凸优化过程,检测中用牛顿法迭代优化目标位置。
注意以上SRDCF, SRDCFdecon,DeepSRDCF,C-COT都无法实时,这一系列工作虽然效果越来越好,但也越来越复杂,在相关滤波越来越慢失去速度优势的时候,Martin Danelljan在2017CVPR的ECO来了一脚急刹车,大神来告诉我们什么叫又好又快,不忘初心:
ECO是C-COT的加速版,从模型大小、样本集大小和更新策略三个方便加速,速度比C-COT提升了20倍,加量还减价,EAO提升了13.3%,最最最厉害的是, hand-crafted features的ECO-HC有60FPS。。吹完了,来看看具体做法。
第一减少模型参数,定义了factorized convolution operator(分解卷积操作),效果类似PCA,用PCA初始化,然后仅在第一帧优化这个降维矩阵,以后帧都直接用,简单来说就是有监督降维,深度特征时模型参数减少了80%。
第二减少样本数量, compact generative model(紧凑的样本集生成模型),采用Gaussian Mixture Model (GMM)合并相似样本,建立更具代表性和多样性的样本集,需要保存和优化的样本集数量降到C-COT的1/8。
第三改变更新策略,sparser updating scheme(稀疏更新策略),每隔5帧做一次优化更新模型参数,不但提高了算法速度,而且提高了对突变,遮挡等情况的稳定性。但样本集是每帧都更新的,稀疏更新并不会错过间隔期的样本变化信息。
ECO的成功当然还有很多细节,而且有些我也看的不是很懂,总之很厉害就是了。。ECO实验跑了四个库(VOT2016, UAV123, OTB-2015, and TempleColor)都是第一,而且没有过拟合的问题,仅性能来说ECO是目前最好的相关滤波算法,也有可能是最好的目标跟踪算法。hand-crafted features版本的ECO-HC,降维部分原来HOG+CN的42维特征降到13维,其他部分类似,实验结果ECO-HC超过了大部分深度学习方法,而且论文给出速度是CPU上60FPS。
最后是来自Luca Bertinetto的CFNet End-to-end representation learning for Correlation Filter based tracking,除了上面介绍的相关滤波结合深度特征,相关滤波也可以end-to-end方式在CNN中训练了:
在SiamFC的基础上,将相关滤波也作为CNN中的一层,最重要的是cf层的前向传播和反向传播公式推导,两层卷积层的CFNet在GPU上是75FPS,综合表现并没有很多惊艳,可能是难以处理CF层的边界效应吧,持观望态度。
下面是CVPR 2017的目标跟踪算法结果:可能MD大神想说,一个能打的都没有!
仿照上面的表格,整理了ICCV 2017的相关论文结果对比ECO:哎,还是一个能打的都没有!
=================================分 割 线 ====2018============================================
VOT2018 paper: http://prints.vicos.si/publications/files/365
VOT2018 presentation: http://data.votchallenge.net/vot2018/presentations/vot2018_presentation.pdf
计算机视觉两大盛会CVPR 2018和ECCV 2018,与Visual Object Tracking领域一年一度最权威竞赛VOT2018 VOT2018 Challenge 随着ECCV落下帷幕,一起来看看今年单目标跟踪方向又有什么重大突破,寻找高含金量的好paper,发现速度性能双高的实用算法。
(看点:DCF是否依然是中流砥柱,未来之星SiamNet发展到了什么程度)
短期跟踪竞赛依然是VOT2017的60个public dataset公开序列(公测)和60个sequestered dataset隐藏序列(内测),序列和评价指标完全相同。今年共有72个算法参赛,下面是前50名的公测结果(高亮标出了一些baseline):
72个参赛算法中占比最高的是DCF(discriminative correlation filter)类和SiamNet(Siamese network)类,其中38个是DCF类方法占比51%,feature以来自VGGNet的深度特征为主;14个是SiamNet类占比18%,backbone以SiamFC中的AlexNet为主,今年SiamNet类占比大幅提高。
(准确性奇高而鲁棒性较差,这是算法设计的缺陷,还是SiamNet类别天生的劣势?)
VOT竞赛是各新算法的试金石,在前20名中我们也能看到2018年CVPR和ECCV的一些论文:
CVPR 2018:SiamRPN, DRT, STRCF, SA-Siam, LSART
ECCV 2018:DaSiamRPN, UPDT
以上就是性能比较突出的2018年顶会了,好文推荐!其中SiamRPN, SA-Siam, DaSiamRPN三篇是Siamese Net类方法,DRT, STRCF, UPDT三篇是DCF类方法。
DCF依然领跑性能,short-term榜依旧以DCF+CNN为主,尤其UPDT贡献巨大,对前几名算法都有影响,但速度越来越慢看不到边,KCF不堪回首。
SiamNet速度快性能也不差,real-time榜和long-term榜都是SiamNet登顶,尤其SiamRPN潜力巨大,打通了目标跟踪和目标检测,性价比很高,接下来会快速发展壮大,希望速度优势能保得住。
更多参见:
1.https://blog.csdn.net/weixin_40245131/article/details/79754531
2.VOT2018:SiamNet大崛起