参考代码:DaSiamRPN
1. 概述
导读:这篇文章提出了一种端到端的离线训练网络Siamese region proposal network(Siamese-RPN),它使用大量的成对数据完成网络训练。其中包含的特征提取部分是Siamese网络,以及完成目标分类和边界框回归的RPN子网络部分。在进行infer的时候只需要一次计算目标的特征之后通过correlation layer完成目标的匹配,之后用于目标的跟踪,此外这个方法的一个亮点就是速度很快,能达到160FPS(AlexNet,GTX1060)。从检测网络的角度来看就是one-shot 检测器。
对现有的目标跟踪算法进行分析,可以将其分为两个大类:
- 1)基于correlation filter的跟踪方法,在早些的方法中它通过利用循环相关的特性和在傅立叶域中执行运算来训练回归器,这样带来的好处就是可以进行online的目标跟踪并且同步更新filter的权重。之后有将深度学习的特征引入提升准确率,但是却使得速度模型更新的下降;
- 2)使用CNN的方法目标特征,在运行过程中并不更新模型,由于其没有使用domain specific信息使得其性能相较第一种方法的低一些。现在这一分支的跟踪网络也很厉害了;
2. 方法设计
2.1 网络结构
而文章的方法受检测网络中RPN网络的影响,在Siamese网络的基础上设计出了Siamese-RPN,极大提升了网络的性能。不同的是使用两个特征提取支路得到的correlation特征作为RPN网络的输入,从而再去回归目标的位置。
文章的网络结构设计为如下图中的结构形式:
可以看到文章使用的是Siamese网络去抽取输入图像的特征,从而得到模板和检测帧的特征输出 φ ( z ) , φ ( x ) \varphi (z),\varphi (x) φ(z),φ(x),之后就是在这两个输出的基础上使用RPN网络部分去获取对应的分类与坐标框的回归。
2.2 RPN子网络
这部分网络可以更近一步细分为相关性提取与回归监督部分。首先对于相关性部分是在模板与检测特征的结果上分别使用两个卷积进行组合,从而再得到相关性特征图。值得注意的是这里对模板特征图对应了一个channel上的参数 k k k,这个参数代表的是使用了多少个anchor,在这篇文章中作者将其值设置为: r a t i o = [ 0.33 , 0.5 , 1 , 2 , 3 ] ratio=[0.33,0.5,1,2,3] ratio=[0.33,0.5,1,2,3],而scale上作者认为变化不大使用的是固定值。而后面的监督部分就是对前景背景做二分类,在anchor的基础上对目标框进行回归。因而这部分的运算过程可以描述为:
A w ∗ h ∗ 2 k c l s = [ φ ( x ) ] c l s ∗ [ φ ( z ) ] c l s A_{w*h*2k}^{cls}=[\varphi (x)]_{cls}*[\varphi (z)]_{cls} Aw∗h∗2kcls=[φ(x)]cls∗[φ(z)]cls
A w ∗ h ∗ 4 k r e g = [ φ ( x ) ] r e g ∗ [ φ ( z ) ] r e g A_{w*h*4k}^{reg}=[\varphi (x)]_{reg}*[\varphi (z)]_{reg} Aw∗h∗4kreg=[φ(x)]reg∗[φ(z)]