在目标跟踪领域,孪生网络方法与相关滤波方法是最重要、应用最多的两类方法。在我的上一篇文章中,对孪生网络系列开山之作——SiamFC论文中的主要理论知识进行了简要总结。SiamFC的项目代码还在学习中,趁着扒项目代码的功夫,最近继续阅读SiamRPN的论文。
论文:《High Performance Visual Tracking with Siamese Region Proposal Network》
在SiamFC的基础上,SiamRPN加入了区域候选网络(Region Proposal Network,简称RPN)。整个网络由两部分构成:第一部分为孪生子网络,用于对输入图片进行特征提取;第二部分为区域候选子网络,用于生成目标所在位置的候选框。SiamRPN与SiamFC相比,进一步提高了检测精度。下面这幅图对SiamRPN、SiamFC和CCOT进行了比较,对于形变严重的物体,SiamRPN能够更精确地预测目标的形状。
论文中给出了SiamRPN的网络结构图,如图所示,接下来详细分析一下网络结构。
如图所示,孪生子网络部分总体上与SiamFC相同,依然是采用两个分支,分别用来处理127×127的模板图z和255×255的待搜索图x。
两个分支采用完全相同、参数共享的全卷积网络(论文中采用的是AlexNet)来对输入图像提取特征。得到特征图分别为6×6×256的 ϕ ( z ) \phi(z) ϕ(z)和22×22×256的 ϕ ( x ) \phi(x) ϕ(x)。
对于孪生网络结构的理解,可以参考我的上一篇博客SiamFC论文学习笔记
区域候选网络(Regeon Proposal Network,简称RPN)最早是在图像检测领域的经典框架Faster R-CNN中提出来的。R-CNN系列网络经历了从R-CNN到Fast R-CNN,再到Faster R-CNN 的发展,最后使用RPN这个小小的网络代替了之前的框架中用于生成检测矩形框的选择性搜索算法(Selective Search,SS),使用Softmax层用于回归任务,实现了完全的端到端训练,不仅提高了目标检测的精度,而且解决了SS算法耗时过长(秒级)的问题。
RPN由两个小分支组成,分别用于分类和回归。分类分支对输入图像中生成的anchors进行分类,判断哪些anchors属于前景foreground,哪些anchors属于背景background,并从正例中选出top的K个anchors作为候选的proposals。回归分支对anchors进行微调和校正,使其能够更精确地框出物体的形状,最终得到合适的bounding box。SiamRPN把这种策略应用到了目标跟踪领域中。
回到SiamRPN的RP子网络结构,从图中可以看到,在RP子网络部分大致流程如下:
在SiamFC中我们也分析过,互相关操作就是我们熟悉的卷积操作,这里就是 z c l s z^{cls} zcls和 z r e g z^{reg} zreg被作为卷积核,分别对 x c l s x^{cls} xcls和 x r e g x^{reg} xreg去做卷积,在做卷积的过程中对256个通道的卷积结果进行了加权求和。最后得到两幅特征图 A 17 × 17 × 2 k c l s A^{cls}_{17×17×2k} A17×17×2kcls和 A 17 × 17 × 4 k r e g A^{reg}_{17×17×4k} A17×17×4kreg。
我们来分析一下两个分支输出的结果。
A 17 × 17 × 2 k c l s A^{cls}_{17×17×2k} A17×17×2kcls的尺寸为17×17×2k,实际上就是把原图划分为17×17个grids,每个grid内生成scale相同,ratio不同的k个anchor,针对每个anchor生成前景(目标)和背景两个类别,因此得到2k个通道的特征向量。
A 17 × 17 × 4 k r e g A^{reg}_{17×17×4k} A17×17×4kreg的尺寸为17×17×4k,相当于包含了17×17×k个向量,每个向量包含了一组四个偏移量数据[dx,dy,dw,dh],表示对应的anchor与相应的ground truth box的距离,因此得到4k个通道的特征向量。
和SiamFC以及Faster R-CNN一样,SiamFC也能实现从输入到输出的完全端到端训练。在训练方式上,SiamRPN采用两阶段训练,训练优化策略采用经典的随机梯度下降法SGD。
因为SiamRPN是由两部分网络组成,第一阶段使用Imagenet只对孪生子网络(特征提取网络)进行预训练,第二阶段对SiamRPN整体网络进行端到端训练。
与目标检测任务相比,目标跟踪任务中同一视频内目标相似度比较高,因此论文中采取了更少的anchors,采取了尺寸scale相同而宽高比ratio不同的anchors策略,在这里取k=5,ratio设定为[0.33,0.5,1,2,3],即每个grid内生成5个anchors。
因此,从分类分支中输出17×17×10的特征图 A 17 × 17 × 10 c l s A^{cls}_{17×17×10} A17×17×10cls,从回归分支中输出17×17×20的特征图 A 17 × 17 × 20 r e g A^{reg}_{17×17×20} A17×17×20reg。
训练时选择正负例的策略和Faster R-CNN中的相同,计算anchor与对应ground truth box的IoU。论文中设置了两个阈值 t h l o = 0.3 th_{lo}=0.3 thlo=0.3和 t h h i = 0.6 th_{hi}=0.6 thhi=0.6,对于 I o U > t h h i IoU>th_{hi} IoU>thhi的anchors记为正例,对于 I o U < t h l o IoU
损失函数包括分类损失和回归损失两部分。
分类分支采用交叉熵函数。
回归分支采用归一化坐标的平滑 L 1 L_{1} L1损失函数。用[ A x A_{x} Ax, A y A_{y} Ay, A w A_{w} Aw, A h A_{h} Ah]表示anchors的中心点坐标和宽高,[ T x T_{x} Tx, T y T_{y} Ty, T w T_{w} Tw, T h T_{h} Th]表示ground truth boxes的对应数据,归一化的距离向量 δ \delta δ通过如下公式计算:
平滑 L 1 L_{1} L1损失函数计算如下:
因此回归分支的损失函数计算如下:
对两部分损失函数加权求和,得到总体损失函数:
l o s s = λ L r e g + L c l s loss=\lambda L_{reg}+L_{cls} loss=λLreg+Lcls
这里λ是一个用于平衡两部分损失的超参数。
论文希望使用单目标检测的策略来解决单目标跟踪问题