本文摘自:http://blog.csdn.net/ben_ben_niao/article/details/52072659
http://blog.csdn.net/ben_ben_niao/article/details/52078727
做了一段时间的跟踪,最近CVPR大会也过了一段时间了,这次将CVPR2016跟踪的文章做一次总结,主要是对paper的方法,创新,改进等方面进行介绍和总结。具体的实现细节不进行总结,
今年来涌现了很多做跟踪的文章,但是目前多少的方法很难达到一个预期的效果。目前的跟踪主要有主要有如下几大难题:
- 解决快速移动问题。这个问题其实是算法速度的问题,通常的做法是在一个搜索区域进行跟踪,这样对快速移动物体的鲁棒性较低,如果索索区域越大,算法耗时,怎么权衡这两者的关系是一大难题。
- 解决遮挡,形变问题。由于跟踪问题online的样本太少,当物体遮挡,形变后,比较难跟踪。遮挡的情况有多种,要解决的是一个综合问题。目前深度学习的方法因对遮挡的效果明显比传统的算法好,但是速度是一大瓶颈。
- 速度问题。速度问题可以说是与上述两个问题互斥,最后都是各个问题的综合权衡。一般来讲,传统的算法速度比基于深度学习的方法快,但效果却不及。
今年的CVPR2016中,其实好多文章很早网上就有了,在这了也是对以前的一个总结。
一,Adaptive Decontamination of the Training Set:A Unified Formulation for Discriminative Visual Tracking
这篇文章的作者为SRDCF的作者,主要解决从训练样本进行改进。效果提升不少。
- 特点:
- 利用样本的quality来训练样本的权重。期望提高有较高quality的样本的impact,降低较差样本的影响。
- 将样本的quality融合到现有的loss function,从而达到同时训练求解。
- 效果.和SRDCF相比,在OTB15数据集IoU=0.5时,OPE提升从60.5%提升到63.4%,也不错,而且该思想可以用到很多算法上,扩展性较强。
其实本文的想法很简单,可信度越高的训练样本,给较高的权重,相反则降低。这种思想很多地方都有,关键是怎么设计loss function达到作者的目的,在一个层面上,作者是第一个实现并结果尚佳的。相比以前,最简单粗暴的方法就是通过设定一个阈值,低于阈值的sample认为quality太低,直接舍弃,相反则保留,或者将score作为样本的权重。hard negative也是解决样本的其中一个流行方法。而本文作者的方法是,通过训练得到样本的权重。
- 作者设计的代价函数如下(求解:两步法,固定一个求另一个,然后固定另一个...交替循环求解):
- 直观的感受一下效果如下:
二,STCT: Sequentially Training Convolutional Networks for Visual Tracking
这篇文章是港中文大学王晓刚之作,主要解决的还是训练样本太少造成的over-fitting问题。
- 特点:
- 将每个channel的feature map作为一个based-classifier,并且每一个channel的based-classifier的loss设计不同.
- based-classifier根据相关性来选取(前一个based-classifier会作用当前这个based-classifier的选取),尽量不相关(类似PCA)。
- 在convolution上用mask进一步防止over-fit(其实类似fc的dropout,只是说法不同)。
- 上述中,第二点为主要特点,整文基本围绕第二点来设计,对此作者在pre-trained的网络后面额外加入两层网络,并且这两层网络并不是全连接,pipeline如下:
三,Staple: Complementary Learners for Real-Time Tracking
这篇文章主要是从特征结合方面入手,对跟踪算法进行改进。给我们提供了一种有效的结合方式,并且作者release的速度达到80fps[i7 core],这一点相当有意义。
- 特点:
- 将Hog特征和color(直方图)特征进行有效的结合,在保证效果的基础上速度达到80+fps.
- 提出了一种有效的特征融合方法,以及代价函数的设计和求解。
那么为什么要进行这样的融合呢?首先,hog特征是基于cell_size的梯度统计特征,局部鲁棒性较好,但是对全局的形变,效果不太好,而color直方图统计基于全局,能有效的弥补这一缺点,所以作者采用的是这两种特征的融合。
- 作者设计的score function为:
其实最low的组合是将特征融合在一起,然后用一个跟踪算法算得score.当然作者并非采用的这样方法,而是采用更复杂的方法。作者是从score(即responce)方面进行融合,也就是算法包括两部分:
- 计算hog特征,进行filter滤波跟踪算法,得到f_tmpl的score。
- 计算color直方图特征,等,得到f_hist的score.
- 将两个score进行组合。
这样融合,在两种特征计算滤波器也要单独计算,这样也使得整个过程稍微复杂了。
- 直观感受作者的pipeline:
四,Siamese Instance Search for Tracking
这篇文章思路很简单,直接训练一个Siamese网络,然后进行比对,判断是不是相同。其实就是一个Re-ID的过程。之所以在这里列出这篇文章,是因为在特定的场合可以和检测相结合来跟踪,弥补检测速度比跟踪慢以及Re-ID的问题。
- 特点:
- offline训练Siamese网络,online直接选择候选区域和第一帧的groundtruth对比,然后对通过的候选区域做BBox回归,得出最终的BBox。
- 缺点很明显,遮挡,形变,类内区分等鲁棒性低。
- 直接上网络图:
五,Beyond Local Search: Tracking Objects Everywhere with Instance-Specific Proposals
这篇文章在vot2015年就出来了,当时叫:“Tracking Randomly Moving Objects on Edge Box Proposals”,这篇文章主要是结合全局proposal来解决fast motion的问题。
- 特点:
- 将检测中的proposal的思想用到跟踪里。使跟踪的候选区域既包含局部的搜索区域,也包含全局的一些proposal,从而提高对快速移动物体的鲁棒性。
- 提取全局proposal:将目标区域划分为10个子区域,将子区域的特征进行组合,来计算全局的proposal.
- 提取proposal所用到的特征和最后跟踪所用到的特征是不同的特征。
- 其中,本文最主要的特点为上述的第二点,为了直观理解,直接上第二点的图:
- 文章的pipeline:
参考文献:
[1],Adaptive Decontamination of the Training Set:A Unified Formulation for Discriminative Visual Tracking
[2],Staple: Complementary Learners for Real-Time Tracking
[3],Siamese Instance Search for Tracking
[4],Beyond Local Search: Tracking Objects Everywhere with Instance-Specific Proposals
[5],STCT: Sequentially Training Convolutional Networks for Visual Tracking
接着上一篇博客,今天对剩下的文章进行简单总结,同样,文章只对paper的主要特点,和流程框架进行总结,具体细节尽可能不涉及。
一,Recurrently Target-Attending Tracking
首先介绍这一片文章,作者主要将RNN运用到物体跟踪上,主要想解决遮挡等问题。其实这篇文章思路和KCF和SRDCF思路一样,只是将其与RNN进行了结合,而且作者在公式说明上写的很复杂,其实原理并不复杂。简单的理解作者的贡献就是:通过RNN获取considence map,并将其作为SRDCF惩罚项w的值(原始SRDCF惩罚项是Gauss分布的值来抑制boundary effect,作者要用RNN来获得w是期望提高没有遮挡部分的impact,降低遮挡部分的影响,而且具有context信息,从而提高算法对遮挡的鲁棒性)。
- 特点:
- 将RNN运用到tracking,结合grid思想,将区域划分为grid,并对每个grid进行四个方向RNN。
- 将RNN的得到的结果(confidence map)用初始化SRDCF loss function的惩罚项。
- 作者给出的实验结果(只给出了filter based methods的比较)来看,效果还可以。但是速度慢:4fps
本文首先将候选区域进行grid划分,然后对其提取特征,将每一个grid区域进行四个方向的RNN,然后叠加得到RNN输出的confidence map。那么为啥要用到RNN呢,并且划分grid呢?
- 首先grid主要是part-based思想的运用。可以通过mask控制grid,从而期望解决(目标被)遮挡问题。
- RNN比其LSTM来说,RNN具有low-freedom parameter space,而跟踪问题本身样本少,容易overfit,RNN这一性质可以缓和过拟合。
在RNN阶段,作者利用softmax来获取confidence map,并肩这个值作为如下公式中的W(如下公式其实就是SRDCF中的loss function),用该loss function 训练滤波器。求解过程和SRDCF一样。
- 说到这里,这下可以直接给出作者的pipeline了:
- 效果(遗憾的是,并没有和SRDCF的比较):
二,Hedged Deep Tracking
这篇文章为Ming-Hsuan Yang之作,由于高层卷积具有一定的语义信息,而位置信息却不够精确,而对于跟踪来讲,位置信息也很重要,所以本文主要是想通过这两者的一种结合。对不同卷基层的特征进行单独处理,最后将每一层特征获得的responce map做一个线性组合,得到最终的结果。
- 主要特点
- 对每一层的特征进行训练,得到滤波器(文章称为weak tracker,用的KCF算法),然后将weak tracker进行线性组合,得到stronger tracker(类似boosting).
- 组合采用的是Hedge 算法。
- 效果还可以,相比MEEM来说提升不少(相对现在的冠军来说应该是差一些)。
- 所以很容易理解作者的Pipeline:
从上面可以看出,主要就是滤波器和Hedge组合算法的运用。文章采用的是KCF算法,由于第一次接触Hedge算法,所以在这里对算法思路进行讲解。
由上面可知,每一个weak tracker都会有对应的responce map,那么hedge算法是怎么组合在一起呢?
- Hedge算法进行滤波器的组合:
- detection利用的组合公式如下,利用该公式即可进行跟踪。
- train,有了前面detection的跟踪结果后,怎么update呢(其实就是update上式中的w_t)?首先利用每个weak tracker的responce map计算一个loss,公式如下(S表示Score或者responce Map,k为weak tracker):
然后利用的度量式子(regret measure)为:
其中:
那么最小化如下的代价函数即可跟新w_t的值:
到此算法跟新完毕!
三,Hierarchical Convolutional Features for Visual Tracking
这篇文章是ICCV15,但是和上文关系很大,同样是Ming-Hsuan Yang之作,同样是想结合高底层的特征进行组合。只是和上文不同的是(上文是训练多个weak tracker,然后组合得到stronger tracker):这篇文章是利用高层的进行粗定位,然后类似金字塔搜索从上往下进行由coarse-to-fine进行搜索(其实就是金字塔的搜索思想)。同上,也用的kcf算法。
- 所以主要特点:
- 金字塔搜索策略用到不同的卷积特征层,实现从上往下,从coarse-to-fine的匹配搜索(文中叫Hierarchical)。
- 缺点:很明显,如果高层定位偏差太大,那么会导致最终结果的错误。
- 作者也提到其他的缺点:高层的特征对光照鲁棒性较低(很好理解,高层更多的语义信息,较少的discriminal)
- 根据上面的特点,pipeline为:
作者将这三层的responce map可视化为如下:
- 作者从上到下,从coarse-to-fine的score计算公式为:
未完待续!
参考文献:
[1],Recurrently Target-Attending Tracking
[2],Hedged Deep Tracking
[3],Hierarchical Convolutional Features for Visual Tracking