入坑满两年,决定开始写关于目标跟踪的博客了,欢迎批评指正。
主要关注的是single-object, short-term, model-free visual tracking problem. 即单目标,短时,无模型目标跟踪问题。
一开始是因为要做本科毕设,那时候毫无头绪,也不知道该用什么方法,对这个领域一无所知。就在网上随便看,看到了当时很有名的一篇文章,叫压缩跟踪(CT):
Zhang K, Zhang L, Yang M H. Real-time compressive tracking[C]//European Conference on Computer Vision. Springer Berlin Heidelberg, 2012: 864-877.
这篇文章发表在2012年的ECCV,然后后来升级版又发到2014年PAMI,简称FCT,
Zhang K, Zhang L, Yang M H. Fast compressive tracking[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2014, 36(10): 2002-2015.
选择这个方法,是因为他的速度很快,当时需要做的是要找到一种快速(实时),鲁棒且简单的跟踪方法, 就用这种了。
就从这两篇文章开始,开启我的研究之路。方便起见,这里直接就讲FCT了。
一、基于压缩感知(CS)的特征表示
其实在这篇文章里并没有用到多少压缩感知的东西,作者在文章中虽然介绍了一些,但是实际上只是在对特征进行降维的时候用到了一个稀疏矩阵。
用一个随机感知矩阵R去降维一个高维信号X,得到的低维信号V可以保持高维信号的特性,V=RX。这个随机感知矩阵要满足RIP条件就可以从低维信号重建高维信号。
在文中,作者利用一个非常稀疏的measurement matrix R,其中每个元素是这样的:
这个矩阵是渐进满足JL lemma。
图一 对特征进行压缩的直观理解
这幅图其实画的很清楚。作者在程序中是让R的每一行最多有四个元素不为0,像图一中所画的,每一行有四个元素的颜色非白色。然后这一行跟X相乘过后,相当于是有小于等于四个的小区域被加权相加了,程序中先计算了整个区域的积分图,然后图一中右边这个人脸上的每个小方块内的灰度值的和就代表了这个区域的特征。有了积分图后,算这个特征就非常快了,具体的可以去看积分图的概念,就会知道这样的话就不用一个一个像素点的去加了。那么R有多少行,对应降维后的V就是多少维。从而达到了降维,并且V的每一个维度都是由目标的不同区域的像素和所构成的,是比较有代表的特征。
二、算法流程
图二 FCT主要流程图
这幅图是整个算法的流程图介绍,在两个版本的文章里都有。1. 模板更新
在确定了第t帧的目标位置后, 在目标周围采正样本和负样本,正样本是离目标很近的,负样本是相对远一些的。然后对这些正负样本提取各自的特征,再对分类器进行更新。
分类器用的是朴素贝叶斯分类,是一种弱分类器,对V的每个维度都进行分类,最后把所有的分类分数加起来,得到最终的分类分数。
分类器的更新采用增量更新策略,这是大家都会采用的一种这种方式,能够使得跟踪模型实时适应每一帧目标的变化,比如人体会有很多肢体的变化,同时能够保留历史的信息,防止目标被遮挡时模型被破坏的太快。
2. 目标跟踪
新来一帧t+1图片,首先在上一帧目标的位置的基础上,以某一半径进行采样,然后提取这些样本各自的压缩特征,用训练好的分类器对每个样本进行分类,得到各自的分类分数,取分数最高的一个,认为是这一帧中的目标。
这里作者提出了一种从粗糙到细致的采样方式,就是先设定一个比较大采样半径,比如25个像素,搜索的步长是4,就是每隔4个像素采一个样本,得到粗糙样本后,找到一个最匹配的样本,再进行细致采样,比如说这时候以10像素为搜索半径,2个像素为步长,再进一步找到一个更匹配的样本,作为目标。这样一来,首先使得采样的效率变高,速度提升,其次使得目标的搜索更细致。
图三 从粗糙到细致的搜索策略
作者还提出了一种多尺度表示,是通过将图片与多个尺度的滤波器进行卷积得到不同尺度的目标的表示,将不同尺度的特征都合在一起,拉成一个高维的特征,然后再用一中提出的压缩方法进行特征降维表示。
三、总结
没有进行特别详细的介绍,只是做个简单的介绍,如果想更深入的了解还是建议去看论文原文。总结一下,思路很巧妙,利用了压缩感知的理论,前向的将特征进行降维,但并没有用到信号重构的东西,给人的感觉就是给特征降维。速度确实挺快的,毕竟降维后特征简单,积分图的计算也方便,文中说的速度是有149帧每秒,每个人的设备不一样,速度可能也不一样,这没什么好纠结的。
跟踪的效果不是很鲁棒,在OTB的各项指标OPE,TRE,SRE都很难排进前十,OTB是指视觉跟踪这块的一个包含100个视频的公开数据集,他们排名了2012年及以前的很多tracking方法,参考文章[1]。但是整个方法简单,速度快,这也是我一开始接触这个领域会选择CT的原因。
现在跟踪这个领域发展迅速,每年都会有很好的新方法出现,CVPR,ECCV,ICCV每年都会有很多这方面的文章,我会慢慢更新下去。如果有新人要入这个领域,CT这个方法推荐去看,但是不推荐用,新的很多方法都可以又快又好,比如KCF,可以再聊。
微信公众号code无涯同步更新,欢迎关注。
[1] Wu Y, Lim J, Yang M H. Object tracking benchmark[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1834-1848.