单目标跟踪小综述
共 8577字,需浏览 18分钟
·
2021-08-10 18:43
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
最近看了几篇关于单目标跟踪的paper,为了方便自己梳理脉络同时和大家交流讨论,将一些重要的paper整理在这。
首先用一张图罗列下本文涉及到的paper:
首先简单介绍下siamfc的网络框架,图中z是模板(即待跟踪的目标),x是当前帧的图像, 是用于提取图像特征的卷积网络,因为作用于x(srch_img)的与作用于z(template)的完全一样所以称为孪生网络(siamese),经过卷积网络提取特征后分别得到x和z的feature map,然后将二者卷积( 表示卷积),即将6×6×128的feature map当做卷积核,在22×22×128上进行卷积得到17×17×1的heatmap,heatmap上值最大的点就对应于x图像中目标的中心。
下面说一些细节,首先网络是5层不带padding的AlexNet。显然5层不符合深度学习“深”的理念,但是由于网络不能加padding所以限制了网络深度,为什么不能padding呢,事实上target在x上的位置,我们是从heatmap得到,这是基于卷积的平移等变性,即target在x上平移了n,相应的就会在heatmap上平移n/stride,且值不会变。但如果加入了padding,对于图像边缘的像素,虽然也会平移,但值会变,因为padding对图像的边缘进行了改变。siamRPN++和siamDW解决了这个问题,后面会详细讲。然后是训练时,x和z的获取方式:z是以第一帧的bbox的中心为中心裁剪出一块图像,再将这块图像缩放到127×127,255×255的srchimg也是类似得到的。
1. SiamRPN
SiamRPN是CASIA在2018提出来的网络,它将siam与检测领域的RPN进行结合。关于RPN(faster RCNN)可以参看faster RCNN,这篇帖子写得非常好。在检测领域RPN本意是用作检测,它将feature map上的各个点当做锚点,并映射到映射到输入图片上,再在每个锚点周围取9个尺度不同的锚框,对每个锚框进行检测是否有物体以及位置回归。
siamRPN的网络框架见上图,这里可以从one-shot的思路理解sianRPN,我们把template分支的embedding当作卷积核,srch_img分支当作feature map,在template与srchimg卷积之前,先将卷积核(即template得到的feature map)通过1*1卷积升维到原来的2k(用于cls)和4k(用于位置的reg)倍。然后拉出分类与位置回归两个分支。(建议没看多RPN的朋友看下上面推荐的那篇讲faster rcnn的帖子,看完这里就自然懂了)。这里的anchor到底是什么呢,根据笔者粗浅的理解,siamfc相当于直接将template与srching直接卷积匹配,而siamRPN在template上引入k个anchor相当于选取了k个尺度与srch_img进行匹配,解决了尺度问题。(笔者对anchor的理解还不够深入,后面深入研究下再写一篇文章专门探讨anchor的本质及其优缺点)
siamRPN无论是在A还是R上都优于siamfc(这里补充一下,对于跟踪而言主要有两个子指标A(accuracy)与R(robust), A主要是跟踪的位置要准,R主要是模型的判别性要高,即能够准确识别哪些是目标,从而判断出目标的大致位置。关于R与A可参见VOT评价指标),也就是说siamrpn的模型判别性与准确性都比siamfc好,结果见下图。
笔者认为,准确性的提升主要来自与siamrpn将位置回归单独拉出来作为一个分支,这一点在后续的siamfc++中也可以看到作者相关的论述。在模型判别性方面,笔者认为,提升的关键在于siamrpn在进行匹配(即template与srchimg卷积的过程)时,由于引入了k个anchors,相当于从k个尺度对template与srch_img进行更加细粒度的匹配,效果更好也是情理之中。另外很重要的一点就是sianrpn解决了尺度问题。
2. DaSiamRPN
关于这篇文章,笔者之前在github上做过一些笔记,这里就简单摘录一些,具体笔记见DaSiamRPN。
DasiamRPN并没有对siamfc的网络结构进行过多的改进,而是从训练数据,模板更新,搜索区域三个角度对模型的rubost进行了提升。使得SiamRPN网络能够适应长期跟踪。
首先作者对siamrpn的缺点进行了分析,主要有三点:
在训练阶段,存在样本不均衡问题。即大部分样本都是没有语义的背景(注:背景不是非target的物体,而是指那些既不属于target,也不属于干扰物,没有语义的图像块,例如大片白色。)这就导致了网络学到的仅仅是对于背景与前景的区分,即在图像中提取出物体,但我们希望网络还能够识别target与非target物体。作者从数据增强的角度解决此问题。
模型判别性不足,缺乏模板的更新,即在heatmap中很多非target的物体得分也很高;甚至当图像中没有目标时,依然会有很高的得分存在。作者认为与target相似的物体对于增强模型的判别性有帮助,因此提出了distractor-aware module对干扰(得分很高的框)进行学习,更新模板,从而提高siam判别性。但是排名靠前的都是与target很相似的物体,也就是说该更新只利用到了target的信息,没有利用到背景信息。
由于第二个缺陷,原始的siam以及siamRPN使用了余弦窗,因此当目标丢失,然后从另一个位置出现,此时siam不能重新识别target, (siamRPN的搜索区域是上一阵的中心加上预设的搜索区域大小形成的搜索框),该缺陷导致siam无法适应长时间跟踪的问题。对此作者提出了local-to-global的搜索策略,其实就是随着目标消失帧数的增加,搜索区域逐渐扩大。
针对这三个问题,作者给出了相应的解决方案。首先对于数据问题,当然是使用数据增强,主要方法有:增加训练集中物体的类别;训练时使用来自同一类别的负样本,以及来自不同类别的正样本辅助训练;增加图像的运动模糊。关于template的更新问题,作者对heatmap得到目标先NMS去除一些冗余框,然后将相似度靠前的框(干扰物)拿出来,让网络对其学习,拉大target_embedding与这些干扰物之间的相似度。这样的优点在于既综合了当前帧的信息,同时因NMS靠前的都与目标很相似,这就抑制了模板污染问题。
3. siamMask
关于siamMask,先放一张效果图,就可以知道他做的是什么工作。
简单来说siamMask就是将跟踪与分割结合到了一起,从其结果上,相比与之前的视频分割工作,其提升了速度,相比与之前的DasaimRPN其提升了A与R.
上图是siamMask的网络框架,从中我们也可以看出,就网络本身而言,siamMask只是比siamRPN多了一个(分割)分支,即多了一个学习任务。
4. siamRPN++
siamRPN++可以说是将siam系列网络又推向一个高峰,它解决的是如何将siam网络加深的问题。笔者在写siamfc那部分时提到,siamfc中的backbone使用的是只有5层的AlexNet,且不含padding, 其实在siamrpn的backbone也很浅。这是因为网络不能加padding, 不能加padding,那么随着网络深度的增加,feature map就会越来越小,特征丢失过多。而加padding则会破坏卷积的平移等变性。在siamrpn++中,作者是从实验效果的角度对padding进行探究。作者认为padding会给网络带来空间上的偏见。具体来说,padding就是在图片边缘加上黑边,但是黑边肯定不是我们的目标,而黑边总是在边缘,那么对于神经网络来说,它就会认为边缘都不是目标,即离边缘越远的越可能是目标。这就导致了神经网络总是习惯认为图像中心的是目标,而忽视目标本身的特征,而siamfc的训练方法target也确实是在图片中央。(这里需要指明的是,在siamfc的训练过程中,总是让template与srch_img处于图片的中央,作者在siamfc中说因为他们使用了全卷积的结构,所以在siamfc中不会有空间上的bias,显然这里的结果和siamrpn++的结果有矛盾,这也是笔者在写这篇贴子时想到的,siamfc到底有没有空间的bias还有待笔者代码测试,也欢迎评论区小伙伴讨论。)
回到siamrpn++上来,有了上面的分析,解决办法自然也就有了,既然网络总是习惯认为中心是目标,那让target不要总是在图片中央不就好了,于是siamrpn++最大的贡献就产生了,在训练时让目标相对于中心偏移几个像素,论文中实验表明偏移64个像素最佳.
5. siamDW
6. siamFC++
跟踪网络分为两个子任务,一个是分类,一个是位置的准确估计。即网络需要有分类与位置估计两个分支。缺少分类分支,模型的判别性会降低,表现到VOT评价指标上就是R不高;缺少位置估计分支,目标的位置准确度会降低,表现到VOT评价指标上就是A不高。
分类与位置估计使用的feature map要分开。即不能分类的feature map上直接得到位置的估计,否则会降低A。
siam匹配的要是原始的exemplar,不能是与预设定的anchors匹配,否则模型的判别性会降低,siamFC++的A值略低于siamRPN++,但是R值在测试过的数据集上都比siamRPN++高,作者认为就是anchors的原因,在论文的实验部分,作者进行了实验发现siamRPN系列都是与anchors进行匹配而不是exemplar本身,但是anchors与exemplar之间存在一些差异,导致siamRPN的鲁棒性不高。
不能加入数据分布的先验知识,例如原始siamFC的三种尺度变换,anchors等实际上都是对目标尺度的一种先验,否则会影响模型的通用性。
如何将exemplar与srch img 融合到一起,目的就是告诉网络需要跟踪的对象,实际上也就是作者提出的第一个难点。
网络不可能提前知道要跟踪的目标从而进行相应的训练,如何使得网络能够识别出“临时”挑选的目标。采用meta-learning的方法如何避免过拟合。
siam成功的地方在于将上述两个问题转化为匹配问题,即在srch img中匹配exemplar,siam的问题在于网络的判别性,即不会匹配到背景,另外exemplar是否更新,如何更新,尺度变换问题如何解决。
提出了target-guidance module(TGM)将exemplar图像融合到检测的feature map里。
在线学习Meta-learning对classification head微调。
在线更新权重
anchored updating strategy减少Meta-learning的overfitting。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~