写点什么

SiamRPN:High Performance Visual Tracking with Siamese Region Proposal Network 孪生网络

作者:代码的路
  • 2023-01-11
    江苏
  • 本文字数:4386 字

    阅读完需:约 14 分钟

原文链接


论文地址:http://openaccess.thecvf.com/content_cvpr_2018/papers/Li_High_Performance_Visual_CVPR_2018_paper.pdf

摘要

大多数性能优越的视觉目标跟踪器很难有实时速度。在这篇文章中,我们提出了孪生候选区域生成网络(Siamese region proposal network),简称 Siamese-RPN,它能够利用大尺度的图像对离线端到端训练。具体来讲,这个结构包含用于特征提取的孪生子网络(Siamese subnetwork)和候选区域生成网络(region proposal subnetwork),其中候选区域生成网络包含分类回归两条支路。在跟踪阶段,我们提出的方法被构造成为单样本检测任务(one-shot detection task)。


我们预先计算孪生子网络中的模板支路,也就是第一帧,并且将它构造成一个检测支路中区域提取网络里面的一个卷积层,用于在线跟踪。得益于这些改良,传统的多尺度测试和在线微调可以被舍弃,这样做也大大提高了速度。Siamese-RPN 跑出了 160FPS 的速度,并且在 VOT2015,VOT2016 和 VOT2017 上取得了领先的成绩。

1.引言

与适当设计的最先进的基于相关滤波器的方法相比,基于离线训练的基于深度学习的跟踪器可以获得较好的结果。关键是候选的孪生候选区域生成网络(Siamese-RPN)。它由模板分支检测分支组成,它们以端到端的方式对大规模图像对进行离线训练。受到最先进的候选区域提取方法 RPN 的启发,我们对相关 feature map 进行提议提取。与标准 RPN 不同,我们使用两个分支的相关特征映射进行提议提取。在跟踪任务中,我们没有预定义的类别,因此我们需要模板分支将目标的外观信息编码到 RPN 要素图中以区分前景和背景。


在跟踪阶段,作者将此任务视为单目标检测任务(one-shot detection),什么意思呢,就是把第一帧的 bb 视为检测的样例,在其余帧里面检测与它相似的目标。


综上所述,作者的贡献有以下三点:


1.提出了 Siamese region proposal network,能够利用 ILSVRC 和 YouTube-BB 大量的数据进行离线端到端训练。


2.在跟踪阶段将跟踪任务构造出局部单目标检测任务。


3.在 VOT2015, VOT2016 和 VOT2017 上取得了领先的性能,并且速度能都达到 160fps。

2.相关工作

2.1 RPN

RPN 即 Region Proposal Network,是用 RON 来选择感兴趣区域的,即 proposal extraction。例如,如果一个区域的 p>0.5,则认为这个区域中可能是 80 个类别中的某一类,具体是哪一类现在还不清楚。到此为止,网络只需要把这些可能含有物体的区域选取出来就可以了,这些被选取出来的区域又叫做 ROI(Region of Interests),即感兴趣的区域。当然 RPN 同时也会在 feature map 上框定这些 ROI 感兴趣区域的大致位置,即输出 Bounding Box。


RPN 详细介绍:https://mp.weixin.qq.com/s/VXgbJPVoZKjcaZjuNwgh-A

2.2 One-shot learning

最常见的例子就是人脸检测,只知道一张图片上的信息,用这些信息来匹配出要检测的图片,这就是单样本检测,也可以称之为一次学习。

3 Siamese-RPN framework

3.1 SiamFC

SiamFC 详细介绍:https://mp.weixin.qq.com/s/kS9osb2JBXbgb_WGU_3mcQ


所谓的 Siamese(孪生)网络,是指网络的主体结构分上下两支,这两支像双胞胎一样,共享卷积层的权值。上面一支(z)称为模板分支(template),用来提取模板帧的特征。φ表示一种特征提取方法,文中提取的是深度特征,经过全卷积网络后得到一个 6×6×128 的 feature map φ(z)。下面一支(x)称为检测分支(search),是根据上一帧的结果在当前帧上 crop 出的 search region。同样提取了深度特征之后得到一个 22×22×128 的 feature map φ(x)。模版支的 feature map 在当前帧的检测区域的 feature map 上做匹配操作,可以看成是φ(z)在φ(x)上滑动搜索,最后得到一个响应图,图上响应最大的点就是对应这一帧目标的位置。



Siamese 网络的优点在于,把 tracking 任务做成了一个检测/匹配任务,整个 tracking 过程不需要更新网络,这使得算法的速度可以很快(FPS:80+)。此外,续作 CFNet 将特征提取和特征判别这两个任务做成了一个端到端的任务,第一次将深度网络和相关滤波结合在一起学习。


Siamese 也有明显的缺陷:


1.模板支只在第一帧进行,这使得模版特征对目标的变化不是很适应,当目标发生较大变化时,来自第一帧的特征可能不足以表征目标的特征。至于为什么只在第一帧提取模版特征,我认为可能因为:


(1)第一帧的特征最可靠也最鲁棒,在 tracking 过程中无法确定哪一帧的结果可靠的情况下,只用第一帧特征足以得到不错的精度。


(2)只在第一帧提取模板特征的算法更精简,速度更快。


2.Siamese 的方法只能得到目标的中心位置,但是得不到目标的尺寸,所以只能采取简单的多尺度加回归,这即增加了计算量,同时也不够精确。

网络训练原理


如图所示,上一帧的目标模板与下一帧的搜索区域可以构成很多对的模板-候选对(exemplar-candidate pair), 但是根据判别式跟踪原理,仅仅下一帧的目标与上一帧的目标区域(即 exemplar of T frame-exemplar of T+1 frame)属于模型的正样本,其余大量的 exemplar-candidate pair 都是负样本。这样就完成了网络结构的端到端的训练。

3.2 Siamese-RPN

左边是孪生网络结构,上下支路的网络结构和参数完全相同,上面是输入第一帧的 bounding box,靠此信息检测候选区域中的目标,即模板帧。下面是待检测帧,显然,待检测帧的搜索区域比模板帧的区域大。中间是 RPN 结构,又分为两部分,上部分是分类支路,模板帧和检测帧的经过孪生网络后的特征再经过一个卷积层,模板帧特征经过卷积层后变为 2k×256 通道,k 是 anchor 数量,因为分为两类,所以是 2k。下面是边界框回归支路,因为有四个量[x, y, w, h],所以是 4k 右边是输出。


3.3 孪生特征提取子网络

预训练的 AlexNet,剔除了 conv2 conv4 两层 。φ(z)是模板帧输出,φ(x)是检测帧输出

3.4 候选区域提取子网络

分类支路和回归支路分别对模板帧和检测帧的特征进行卷积运算:$$A^{cls}{w×h×2k}=[\psi(x)]{cls}×[\psi(z)]{cls}\A^{reg}{w×h×4k}=[\psi(x)]{reg}×[\psi(z)]{reg}$$$A^{cls}{w×h×2k}A^{reg}


{w×h×4k}$包含 4k 个通道向量,每个点表示 anchor 和 gt 之间的 dx,dy,dw,dh,通过 smooth L1 损失得到:



Ax, Ay, Aw, Ah 是 anchor boxes 中心点坐标和长宽; Tx, Ty, Tw, Th 是 gt boxes,为什么要这样呢,因为不同图片之间的尺寸存在差异,要对它们做正规化。


smoothL1 损失:


3.5 训练阶段:端到端训练孪生 RPN

因为跟踪中连续两帧的变化并不是很大,所以 anchor 只采用一种尺度,5 种不同的长宽比(与 RPN 中的 3×3 个 anchor 不同)。当 IoU 大于 0.6 时是前景,小于 0.3 时是背景。

4. Tracking as one-shot detection

平均损失函数 L:



如上所述,让 z 表示模板 patch,x 表示检测 patch,函数φ表示 Siamese 特征提取子网,函数ζ表示区域建议子网,则一次性检测任务可以表示为:




如图,紫色的部分像原始的 Siamese 网络,经过同一个 CNN 之后得到了两个 feature map,蓝色的部分是 RPN。模板帧在 RPN 中经过卷积层,$ \phi (x){reg} \phi (x){cls}$ 当作检测所用的核。


简单的说,就是预训练模版分支,利用第一帧的目标特征输出一系列 weights,而这些 weights,包含了目标的信息,作为检测分支 RPN 网络的参数去 detect 目标。这样做的好处是:


(1)模板支能学到一个 encode 了目标的特征,用这个特征去寻找目标,这会比直接用第一帧的 feature map 去做匹配更鲁棒。


(2)相比原始的 Siamese 网络,RPN 网络可以直接回归出目标的坐标和尺寸,既精确,又不需要像 multi-scale 一样浪费时间。


经过网络后,我们将分类和回归特征映射表示为点集:


$$A^{cls}{w×h×2k}={(x_i^{cls},y_j^{cls},c_l^{cls})}\A^{reg}{w×h×4k}={(x_i^{reg},y_i^{reg},dx_p^{reg},dy_p^{reg},dw_p^{reg},dh_p^{reg})}\i∈[0,w),j∈[0,h),l∈[0,2k),p∈[0,k)$$


由于分类特征图上的奇数通道代表正激活,我们收集所有 $A^{cls}{w×h×2k}$CLS^*={(x_i^{cls},y_j^{cls},c_l^{cls}){i∈I,j∈J,l∈L}}$$其中 I,J,L 是一些索引集。


变量 i 和 j 分别编码相应锚点的位置,l 编码相应锚点的比率,因此我们可以导出相应的锚点集合为:



此外,我们发现上 ANC*的激活得到相应的细化坐标为:



因为是分类,选前 k 个点,分两步选择:


第一步,舍弃掉距离中心太远的 bb,只在一个比原始特征图小的固定正方形范围里选择,如下图:



中心距离为 7,仔细看图可以看出,每个网格都有 k 个矩形。


第二步,用余弦窗(抑制距离过大的)和尺度变化惩罚(抑制尺度大变化)来对 proposal 进行排序,选最好的。具体公式可看论文。


用这些点对应的 anchor box 结合回归结果得出 bounding box:



y_j^{pro}=y_j^{an}+dy_l^{reg}*h_l^{an}\


w_l^{pro}=w_l^{an}*e^{dw_l}\



an 就是 anchor 的框,pro 是最终得出的回归后的边界框 至此,proposals set 就选好了。


然后再通过非极大抑制(NMS),顾名思义,就是将不是极大的框都去除掉,由于 anchor 一般是有重叠的 overlap,因此,相同 object 的 proposals 也存在重叠。为了解决重叠 proposal 问题,采用 NMS 算法处理:两个 proposal 间 IoU 大于预设阈值,则丢弃 score 较低的 proposal。


IoU 阈值的预设需要谨慎处理,如果 IoU 值太小,可能丢失 objects 的一些 proposals;如果 IoU 值过大,可能会导致 objects 出现很多 proposals。IoU 典型值为 0.6。

5.实施细节

我们使用从 ImageNet [28]预训练的改进的 AlexNet,前三个卷积层的参数固定,只调整 Siamese-RPN 中的最后两个卷积层。这些参数是通过使用 SGD 优化等式 5 中的损耗函数而获得的。共执行了 50 个 epoch,log space 的学习率从 10-2 降低到 10-6。我们从 VID 和 Youtube-BB 中提取图像对,通过选择间隔小于 100 的帧并执行进一步的裁剪程序。如果目标边界框的大小表示为(w,h),我们以大小 A×A 为中心裁剪模板补丁,其定义如下:



其中 p =(w + h)/2


之后将其调整为 127×127。以相同的方式在当前帧上裁剪检测补丁,其大小是模板补丁的两倍,然后调整为 255×255。


在推理阶段,由于我们将在线跟踪制定为一次性检测任务,因此没有在线适应。我们的实验是在带有 Intel i7,12G RAM,NVidia GTX 1060 的 PC 上使用 PyTorch 实现的。


学习更多编程知识,请关注我的公众号:


代码的路



发布于: 刚刚阅读数: 5
用户头像

代码的路

关注

公众号:代码的路 2023-01-10 加入

Java、Python、C++、图像处理、深度学习相关知识分享

评论

发布
暂无评论
SiamRPN:High Performance Visual Tracking with Siamese Region Proposal Network 孪生网络_神经网络_代码的路_InfoQ写作社区