个人评价:
自从SiamFC利用Siamese网络解决目标跟踪问题后,很少有出色的基于SiamFC改进的目标跟踪工作。SiamFC通过训练Siamese网络用以在外观层面上区分两个物体是否属于一个目标,从而达到目标跟踪的目的。SiamFC的好处很多,其最核心的就是离线训练结合在线跟踪,以及end-to-end的跟踪模式,是少有的基于深度学习并且同时兼备性能和速度的跟踪器,所以基于SiamFC进行改进还是很有前途的。本文在SiamFC的基础上增加了语义分支,进一步提升SiamFC的判别力,从而提升了跟踪效果,即使损失了一些速度,但是仍然达到了实时的跟踪速度。总的来说,本文思路简单明了,逻辑清晰,道理透彻,是一个不错的单目标跟踪工作,唯一欠缺的是其仍然沿用SiamFC在跟踪过程中所有帧都和第一帧对比,是该类方法的主要缺陷。
本文概览:
1,本文核心1:将图像分类任务中的语义特征与相似度匹配任务中的外观特征互补结合,非常适合与目标跟踪任务,因此本文方法可以简单概括为:SA-Siam=语义分支+外观分支;
2,Motivation:目标跟踪的特点是,我们想从众多背景中区分出变化的目标物体,其中难点为:背景和变化。本文的思想是用一个语义分支过滤掉背景,同时用一个外观特征分支来泛化目标的变化,如果一个物体被语义分支判定为不是背景,并且被外观特征分支判断为该物体由目标物体变化而来,那么我们认为这个物体即需要被跟踪的物体;
3,来自原文翻译:本文的目的是提升SiamFC在目标跟踪任务中的判别力。众所周知,在深度CNN训练目标分类的任务中,网络中深层的特征具有强的语义信息并且对目标的外观变化拥有不变性。理想地,这些语义特征是可以用于互补SiamFC在目标跟踪任务中使用的外观特征。基于此发现,我们提出了SA-Siam,这是一个双重Siamese网络,由语义分支和外观分支组成。每一个分支都使用Siamese网络结构计算候选图片和目标图片的相似度。为了保持两个分支的独立性,两个Siamese网络在训练过程中没有任何关系,仅仅在测试过程中才会结合。
4,本文核心2:对于新引入的语义分支,本文进一步提出了通道注意力机制。在使用网络提取目标物体的特征时,不同的目标激活不同的特征通道,我们应该对被激活的通道赋予高的权值,本文通过目标物体在网络特定层中的响应计算这些不同层的权值。实验证实,通过此方法,可以进一步提升语义Siamese网络的判别力。
相关工作:
1,SiamFC:简单说,SiamFC网络就干了一个事儿。对于A,B,C三个图片,假设C图片和A图片是一个物体,但是外观发生了一些变化,B和A没有任何关系。SiamFC网络输入两张图片,那么经过SiamFC后会得到A和C相似度高,A和B相似度低。通过上述SiamFC的功能,自然地其可以用于目标跟踪算法中。SiamFC网络突出优点:无需在线finetune+end-to-end跟踪模式,使得其可以做到保证跟踪效果的前提下进行实时跟踪。
2,集成跟踪器:什么是集成跟踪器?说白了,一般来说,大多数跟踪是一个模型A,利用模型A对当前数据进行计算得到跟踪结果,集成跟踪器就是它有多个模型A,B,C,分别对当前数据进行分析,然后对结果融合得到最终的跟踪结果。本文的语义特征+外观特征正是借鉴了集成跟踪器的思路。值得一提的是:在集成跟踪器,模型A,B,C相关度越低,跟踪效果越好,这个很好理解,如果他们三非常相关,那么用三个和用一个没啥区别,因为这个原因,本文的语义特征和外观特征网络在训练过程中是完全不相关的。
3,自适应特征选择:个人认为这个可以普遍用在深度跟踪认为中。说白了就是,深度网络那么多层,一个目标只能激活某些层,用这些层对目标进行描述是更可靠地,所以我们应该给这些层更大的权重。
本文方法:
本文几乎没有任何公式,所以直接上图,看图说话~
1,外观分支(蓝色部分):非常简单~一个目标A送到网络P里,一个比目标大的搜索域S送到网络P里,A出来的特征图与S出来的特征图进行卷积操作得到相关系数图,相关系数越大,越可能是同一个目标,网络则采用和SiamFC中一样的网络(这里,网络P是使用ILSVRC-2015进行训练的,在后续实验中介绍);
2,语义分支(橘色部分):非常简单,too~一个比上述目标A大一圈的目标B送到网络Q里,同样一个比目标大的搜索域S送到网络Q里,均提取conv4和conv5特征,然后就是同外观分支相同进行分别卷积呗,即使conv4和conv5特征分辨率不同,利用简单的conv操作(需要使用第一帧进行训练)使得两者分别在相关操作后得到的相关系数图大小相同即可(这里,网络Q是直接使用预训练的alexnet网络);
3,结合:将上述得到的外观分支相关系数图和语义分支相关系数图按照一定比例加起来,就是最终的响应图;
4,语义分支中的Channel Attention机制:为什么要这么做?(翻译原文一段:高维语义特征对目标的外观变化是鲁棒的,为了提升语义分支的判别力,我们设计了一个Channel Attention模块。直觉上,在跟踪不同的物体时,不同的通道扮演着不同的角色,某些通道对于一些物体来说是极其重要的,但是对于其他物体而言则可以被忽略,甚至可能引入噪声。如果我们能自适应的调整通道的重要性,那么我们将获得目标跟可靠地特征表达。为了达到这个目的,不仅目标对于我们来说是重要的,其周围一定范围内的背景对于我们来说同样重要,因此这里输入网络的模板要比外观分支大一圈。)下面讲具体怎么实现这个功能的。
上述图中,假设是conv5层的第i个通道特征图,将该图分割成3×3份(其中中间的那份是准确的目标),经过max-pooling操作后变成3*3的图,经过一个两层的MLP网络(我也不知道这是啥玩意)后得到分数,在sigmoid一下(这里是为了让得分系数在0~1之间吧)得到最终的得分系数。值得注意的是:这里的得分系数计算操作仅仅在第一帧进行计算,后续帧沿用第一帧的结果,所以其计算时间是可以忽略不计的;
5,尺度估计:这个就不讲了,简单的SAMF原理(简单好用不解释~);
实验:
1,先不提实验效果,最不爽的是本文竟然没有和Learning Dynamic Siamese Network for Visual Object Tracking(ICCV2017)算法进行比较,这是疏忽还是估计遗漏呢?DSiamese也是Siamese用于目标跟踪的典型算法,况且是一个实时性算法,不比较实在说不过去,如果作者看到此博文,麻烦给一个合理的解释(附带一个挑事儿的微笑~);
2,网络结构:语义分支使用预训练的alexnet网络,外观分支设计参考SiamFC;
3,数据维度:没啥好说的,目标缩放到127*127,搜索域缩放到225*225,大小合适,太大速度慢,太小精度低;
4,训练:在ILSVRC-2015训练外观分支,具体训练参考SiamFC文章,灰常简单;
5,速度:50fps,还是很值得致敬的;
6,语义分支权重:外观分支权重 = 7:3
7,OTB实验:OTB-2013(0.896,0.677),OTB-2015(0.865,0.657),在50fps速度下已经很高了!
常见疑问:
1,问题:凭什么说vgg就是语义特征,SiamFC就是外观特征?
回答:是什么特征和网络结构关系不大,主要看训练目的以及损失函数。vgg训练目的是用于分类任务,SiamFC训练目的是用于判断两个物体的相似性,不同的训练目的导致网络学习到了不同的知识,所以特征表达的含义以及用途也不一样。