【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking

论文:A Twofold Siamese Network for Real-Time Object Tracking 论文地址 主页

写在前面

这篇文章又是一篇使用Siamese网络做tracking的文章,效果在OTB和VOT的数据集上比已有的很多实时的tracker都要好。这篇文章就是使用了两个分支,一个是用来提取语义的特征,一个是用来提取表观特征,CVPR2018王强博士的那篇论文里也提到了,Siamese网络是将分类和表观都揉在一个网络里做,所以效果不好。这里作者就直接搞出了两个分支,通过两个分支相结合,又加了一个channel的attention,就得到了好结果。

Motivation

  • 一个好的tracker需要找到既discriminative又general的特征,但是Siamese网络(相似性学习)学到是表观特征,是比较具有discriminative的,这种特征对目标的表观变化就会很敏感;
  • 而分类问题中学到的特征一般是比较general的,这种特征虽然对目标的表观变化具有鲁棒性,但是却很容易被背景的cluster干扰。

Contribution

  • 在Siamese网络中引入了语义分支(使用分类的网络),提高了SiamFC的泛化能力;
  • 引入了Channel Attention机制,使得模型更加适应于具体的视频;
  • 在语义分支上使用了多层的输出用来分类,使得tracker跟踪结果更加精确。

Algorithm

【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
网络结构如上图,上面那个分支指的是对第一帧的操作,z代表的是第一帧target(groundtruth),X代表的是当前帧的search region,zsz^s代表的是第一帧中以z为中心,大小与X相同的区域。S-Net表示语义网络,A-Net表示表观网络。这个算法就是z和X都经过S-Net和A-Net,将z得到的结果与X得到的结果做卷积,然后将两个部分结合起来,得到最后的response map。下面仔细讲一下这两个网络:

1、A-Net

这篇文章中用的A-Net的结构就跟SiamFC一样的,参数设置也都一样,最后就优化这个损失函数就可以了,其中response map:
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
其中fa()f_a(\cdot)表示A-Net的输出,

损失函数:
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
其他不赘述了,不太懂的可以参考SiamFC。

2、S-Net

这里的S-Net就是用的AlexNet,参数也没有变化,作者在使用的时候也没有对AlexNet做fine-tune,因为fine-tune之后S-Net和A-Net的作用会比较相似,不利于两者结合使用。注意到上图中target分支的S-Net输入是 zsz^s,这里是因为文章的channel attention是在前向传播中直接生成的,而对于target来说,背景其实也会对其产生一定的影响,所以才要使用 zsz^s

这个分支的response map计算如下:
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
其中g(fs(X))g(f_s(X))表示的是将S-Net的是conv4和conv5的相链接之后用来计算response map,g()g(\cdot)就是表示链接操作,文章用的是一个1*1的卷积网络。而且注意到,最后用来比较的还是z,ξ\xi表示的是各个通道的权重。

损失函数:
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking

两个分支是分开训练的,只在测试阶段才将两个合起来。
最终得到的response map如下:
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking

3、Channel Attention

【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
这个部分就是将网络输入的特征先分成3*3的块,然后对每块做maxpooling,在过一个多层感知机,得到最后的每个通道的权重值,这么做的原因是每个通道其实对最终的跟踪结果贡献都不一样,若是每个通道用同样的权重反倒会干扰了最后的效果,所以才这么用。(这里的attention这么计算是否真的合理,我还没有太搞懂,如果某个通道就是像素值比较高,那是不是就会被认为是重要的)
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
文章里做了以上实验,表明不同的视频,其各个通道的权重都不尽相同,所以使用多层特征+channel attention比较有用,若是单单只使用这两个中的一个效果都不好。

Experiment

感觉这篇文章就是尝试出真章啊~做了很多实验,也换了很多结构,最后得到还是这种结合方式效果最好~
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking
【SA_Siam(CVPR2018)】论文阅读笔记 A Twofold Siamese Network for Real-Time Object Tracking

总结

感觉做研究切入点还是要找其他算法的各种bug,并且要理解这个bug存在的意义,从这个角度进去才能把握对方向啊~然后感觉这篇文章也没有充分使用AlexNet,如果能找到一个更好的结合方法,可能结果会更好吧。

优点

  • 将分类和相似性检测的网络相结合,使得网络既具有discriminative,又具有general的能力;
  • 使用多层特征和channel attention的方式来增强tracker的精度;
  • 网络较简单且attention的计算也只是用了前向传播,速度快。

缺点

  • 没有bounding box的回归啊!!!只能用多尺度的输入来做处理尺度变化的问题,这样很浪费时间空间的;
  • attention和多层特征没有比较清晰的理论支持,通过对比实验得到的。