SiameseRPN: High Performance Visual Tracking with Siamese Region Proposal Network论文阅读笔记

这篇文章结合了SiameseFC和Faster R-CNN中的RPN(Region Proposal Network),使得RPN的提取速度大大加快,使得RPN的计算变得并行,同时也达到高精度。

在看本文之前,先简单看一下SiameseFC网络
在这里插入图片描述
z是由第一帧提取的重要区域,将z作为模板,x是当前帧,SiameseFC就是先用同样的CNN网络处理模板和当前图片,然后将模板提取出的特征作为卷积核,在x的特征上做卷积操作,根据卷积后的值的大小就能判断图片当前位置与模板的相似度。

对于Faster R—CNN需要简单了解一下,可参考上篇博文:https://blog.csdn.net/sinat_31184961/article/details/83088580

SiameseRPN:
在这里插入图片描述
前面是一个Siamese子网络,用来提取图片特征,输入是两个,一个是模板图片z,这个模板是由第一帧得到的,另一个是当前帧x,和SiameseFC提取特征的方式是一样的。RPN子网络也有两个部分,上面部分是用来做分类的,区分前景和背景,下面一块是用来做bounding box回归的,一共有k个anchor。

RPN子网络
1、在RPN子网络中需要将z的输出通过不同卷积核resize成4×4×2k×256和4×4×4k×256的尺寸,这里k表示k个anchor,anchor的概念在Faster R-CNN中介绍。本文使用一种尺度的anchor,用五种不同的比例,所以这篇文章中k为5;
2、其中2k中两个通道分别表示这个anchor是正样本和负样本的概率,4k表示anchor和ground-truth之间的差别;
2、将经过处理后的z作为卷积核,同样在x上做卷积操作,提取特征:
在这里插入图片描述
3、本文在卷积后分别只用一层卷积层做分类和回归,损失函数就是RPN中的损失函数,由两个部分组成:
在这里插入图片描述
Ax, Ay, Aw, Ah 表示anchor的位置和宽和高, Tx, Ty, Tw, Th表示ground-truth的位置和宽高。

训练过程
这篇文章使用one-shot detection(这边没怎么看懂)来做跟踪,就是只用一个样本训练网络,然后通过每次的帧与该样本的匹配度来决定是否是跟踪的对象。这篇文章在one-shot学习部分只更新Siamese网络的权重参数。该元学习的损失函数如下:
在这里插入图片描述
其中ϕ 表示Siamese网络的输出 ζ 表示PRN的预测结果。以下是该网络的细节图:
在这里插入图片描述
在训练的时候为了方便,在预计算出模板帧的特征后就固定这个特征作为卷积核不变。这样整个学习过程就是一个one-shot学习过程?(这块没看懂,后期可能会更新)

proposal选择
这篇文章通过两个方式选择最终结果:
1、只取离中心比较g*g范围内的proposal,其他直接删除,因为目标在临近帧不会发生太大的变化,如下图:
在这里插入图片描述
2、利用cosine距离判断proposal尺寸比例和模板的相似度,如果和模板差的太远的也要被抛弃,最后得到当前帧的proposal。

优点:
1、将SiameseFC和Faster R-CNN巧妙结合起来,让RPN的计算变成并行,大大降低了运行时间;
2、将目标跟踪作为一个one-shot学习任务,实现端到端的训练;
3、在各大benchmark上都得到目前最好的效果。

缺点:
1、使用第一帧作为模板匹配,对目标巨大变化不具有鲁棒性;
2、与SiameseFC相比,这篇文章的方法需要对输入图片resize,丢失一些信息。

参考博客:http://www.javashuo.com/article/p-ahzxicvs-py.html
文章地址:http://openaccess.thecvf.com/content_cvpr_2018/papers/Li_High_Performance_Visual_CVPR_2018_paper.pdf