什么是目标追踪(Visual Object Tracking)?
跟踪就是在连续的视频帧中定位某一物体。
• 跟踪VS检测
1.跟踪速度比检测快
当你跟踪在上一帧中检测到的对象时,你会非常了解目标的外观。你也知道在前一帧中的位置和它的运动的方向和速度。因此,在下一帧中,可以使用所有这些信息来预测下一帧中目标的位置,并对对象的预期位置进行小范围搜索,以准确定位目标。因此,在设计高效的系统时,通常在每n帧上运行对象检测,而在其间的n-1帧中采用跟踪算法。
2.当检测失败时跟踪来帮助
3.跟踪保留身份信息
目标检测的输出是包含目标的矩形数组。 但是,没有标识附加到对象。
几大难点
外观变形,光照变化,快速运动和运动模糊,背景相似干扰:
平面外旋转,平面内旋转,尺度变化,遮挡和出视野等情况:
• 数据集
• OTB50 & OTB100 (2013)
涉及到灰度图像和彩色图像,均可以免费下载,涉及到目标跟踪的11个属性,包括光照变化、尺度变化、遮挡、形变、运动模糊、快速运动、平面内旋转、平面外旋转、出视野、背景干扰、低像素。
• VOT2013 - VOT2018 (竞赛数据集,Each Year)
每年公开的60个序列,官方会对公开序列的前10名在隐藏数据集上测试,从而选出最终的winner,难度高于OTB。
• 评价指标
1、平均重叠期望(EAO)是对每个跟踪器在一个短时图像序列上的非重置重叠的期望值,是VOT评估跟踪算法精度的最重要指标。
2、准确率(Accuracy)是指跟踪器在单个测试序列下的平均重叠率(两矩形框的相交部分面积除以两矩形框的相并部分的面积。(MeanIOU)
3、鲁棒性(Robustness)是指单个测试序列下的跟踪器失败次数,当重叠率为0时即可判定为失败。
具体看一下这张图就能明白:
目标追踪的算法分类(Common Methods)
• 生成(generative)模型方法
生成类方法,在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。举个例子,从当前帧知道了目标区域80%是红色,20%是绿色,然后在下一帧,搜索算法到处去找最符合这个颜色比例的区域。算法效果并不理想,因此现在用的很少。
•判别(discriminative)模型方法
OTB50里面的大部分方法都是这一类,经典套路,图像特征+机器学习。
当前帧以目标区域为正样本,背景区域为负样本,机器学习训练分类器,下一帧用训练好的分类器找最优区域。
与生成类方法最大的区别,是分类器训练过程中用到了背景信息,这样分类器专注区分前景和背景,判别类方法普遍都比生成类好。 经典判别类方法有Struck和TLD(Performace well in long-term task)。 判别类方法的最新发展就是相关滤波类方法,correlation filter简称CF,或discriminative correlation filter简称DCF,和深度学习(Deep ConvNet based)类方法,而DCF+CNN的做法成为最近VOT刷榜的标配。2018年的VOT,基于全卷积孪生网络(SiamNet)的方法大崛起,凭借超越DCF方法的准确度和端到端训练的优势,成为目标追踪新的研究方向。
下图是GitHub上发布的2018VOT系统分支结构,上述算法都含在其中了。
· 相关滤波算法(CF)
Correlation Filter 最早应用于信号处理,用来描述两个信号之间的相关性,或者说相似性,对于两个数据 f 和g,则两个信号的相关性为:
其中 f∗表示 f 的复共轭,这是和卷积的区别(相关性 与 卷积 类似,区别就在于里面的共轭)。
对于图像来讲,问题描述为要找到一个 滤波模版 h,与输入图像 f 求相关性,得到相关图 g。
模板与图形的相关运算
为了加快计算速度,这里引入了傅里叶变换,根据卷积定理(correlation版本)可知,函数互相关的傅里叶变换等于函数傅里叶变换的乘积:
· HCF(CF+CNN,Since 2015)
2015开始,深度学习开始进军跟踪领域,使用深度学习可以更好的提取目标的特征,对目标进行更好的表达。低层特征有较高的分辨率能够对目标进行精准的定位,高层特征包含更多的语义信息,能够处理较大的目标变化和防止跟踪器漂移,能够对目标进行范围定位。但是深度学习的缺点就在于网络的训练和速度,即使如HCF等使用离线的训练速度仍然慢。
· SiamFC(Pure CNN)
上面一支可以看做是一个模板。其中z是第一帧所给出的目标框,φ 表示一种特征提取方法,SiamFC提取的是深度特征,经过全卷积网络后得到一个6X6X128的feature map φ(z)。
下面一支x可以看为当前帧的搜索区域,同样提取了深度特征之后得到一个22X22X128的feature map φ(x)。
两支的交汇是一个互相关层,可以看成是φ(z)在φ(x)上滑动搜索,最后得到一个响应图,图上最大值对应的点就是算法认为的目标中心所在位置。
· FlowTrack
《End-to-end Flow Correlation Tracking with Spatial-temporal Attention》(2018CVPR,商汤)
阅读笔记
背景:
①DCF方法很火(KCF、SAMF、LCT、MUSTer、SRDCF、CACF),但是 应用人工设定的特征使得这一类算法精度鲁棒性都较差;
② 受深度学习影响,很多结合CNN的算法(DeepSRDCF、HCF、SiamFC)出现,它们都只应用到当前帧的信息而很少关注帧间存在的互信息,并 且CNN的机制导致了tracker在目标遇到运动模糊或者部分遮挡的时候, 性能只能依靠离线train的特征的质量,鲁棒性很难保证。
③ 尽管一些追踪器用到了光流特征,但是这些模型是离线的,非端到端 的,所以结果是非最理想的。
本文提出FlowTrack网络,应用到flow information和appearance features,有机结合到端对端的网络中,在VOT2015和VOT2016任务中,EAO属性排名第一,速度为12FPS。
结构是一个基于Siamese的双流训练网络。分为historical branch和current branch. 在historical branch里面,进行Flow的提取和warp操作融合阶段,作者设计了一种spatial-temporal attention的机制。 在current branch,只提取feature. Siamese结构两支出来的feature送进DCF layer, 得到相应输出。 总结来说,他们把Flow提取,warp操作,特征提取和融合,CF tracking都做成了网络的layer,端到端地训练它们。其中需要注意的是,wrap是指的是一种点到点的映射关系,实现flownet出来的光流图到高阶特征的映射。在从t-1到t-n的特征融合阶段,设计了一种spatial-temporal attention的机制。在spatial attention中,是对空间位置上每一个待融合的点分配权重,具体采用余弦距离衡量,结果就是和当前帧越相似分配的权重越大,反之越小;这么做的问题是当前帧的权重永远最大,所以本文借鉴SENet的思想进而设计了temporal attention,即把每一帧看做一个channel,设计一个质量判断网络。
(1)跟踪使用的特征由Feature CNN提取;
Feature CNN:由三个卷积层构成(3x3x128, 3x3x128, 3x3x96)。
特征提取
(2)光流信息由FlowNet提取;
FlowNet:2015年被提出,是用来提取光流场的深度网络,9层卷积。
FlowNet的9层光流提取模型
(3) Warp操作按特征通道进行:
其中m表示通道,p表示原始图像上点的坐标,δp表示点的光流,q表示特征图上点的坐标,K是双线性插值核。
(4)Spatial-temporal attention给各通道特征赋予权值;
Spatial attention + Temporal attention
空间 + 时间
时空提取attention模块
Spatial 的提取:
计算Spatial attention,并融合特征。其中上标e表示通过Bottleneck结构(降维到特定空间)找到的嵌入层特征,p表示原始Feature map上的点坐标。总的来说,这个部分的物理意义是,对与t-1帧特征不相似的特征赋予低权重,反之,与其相似的赋予高权重。
temporal的加入:Spatial Attention的问题是当前帧的权重永远最大,解决方法引入Temporal 机制,设计一个质量判断网络:从Spatial attention输出来的权重map,输入Temporal attention结构,经过一个类似SE-Net(ImageNet Classification Champion,2017,Momenta)的结构,得到通道重要性权值,可以看作是对Spatial attention的二次调整。
实验结果
多策略的对比
VOT 2016 1st
可以看出提升效果相对于传统的CF还是很明显的,虽然2018年rank不到top 5,但是提供了我们一种新颖的思路,以后可以多多学习一波。
视频来源:目标跟踪初探(DeepSORT)