Siamese RPN
Paper : High Performance Visual Tracking with Siamese Region Proposal Network
Code : unofficial
摘要
之前在阅读SiamFC的时候就感觉目标追踪与物体检测在候选框生成上可以有很多互相借鉴的地方,而且SiamFC存在两个问题:一个是遍历的方法容易成为时间瓶颈,另一个是定位框处理有点太粗糙了,不仅固定了尺寸还固定了长宽比。在目标检测上提出的RPN迟早要迁移到物体追踪的任务中。因此商汤在CVPR2018中掏出了一篇SiamRPN。对于深度较深的CNN处理目标追踪,基本上为了保证算法的实时性很难像相关滤波器一样进行在线训练,因为更新参数时间花费太高,只能离线训练。基本上都是one-shot detection task,也就是把每一帧和第一帧中目标的图像拿出来进行比较。
相比于基于滤波器的目标追踪算法,作者认为SiamRPN作为没有在线finetune的算法,表现依旧比较好的原因有以下两点
- 足够大的训练数据
- RPN预测的比较准
网络架构
前半部分属于传统的SiamNetwork,两CNN共享参数进行特征提取,中间是一个RPN网络,一支用来进行二分类,而另一支用来在archors的基础上对定位框进行进一步的回归,其中k表示RPN中选定的archor个数。经过CNN模块后,将RPN每个分支中的两个输出进行相关操作,使用 表示相关操作,得到输出
训练时使用的损失函数与Faster RCNN 中的相同,对cls使用交叉熵,对reg使用smooth-L1。因为相邻两帧之间尺寸变化不大,因此选择archor时只使用一种尺寸,多种长宽比 。训练时,template 和 detection patch pair从同一个视频中抽取两帧生成。SiamRPN的每个分支都在ImageNet数据集上进行了预训练。正负训练样本定义如下:定义Archor与目标定位框IoU>0.6 为正例,<0.3为负例。
one-shot 部分的解释对应下图
图中,将Template frame 计算一次之后,把上半部分的输出当成下半部分网络的参数,然后将上半部分裁剪掉,该网络就对应了一个单输入的目标追踪网络了。
最后,是proposal region 的选取问题,有两种策略进行选取
-
舍弃 archor 距离图片中心较远的proposal
-
使用cosine窗口对不同位置的score进行加权,根据候选框的长宽变化对proposal进行惩罚
其中, 是超参数, 是当前帧与上一帧的长宽比,是当前帧与上一帧的尺寸
表示padding宽度, 。最后,在对分数进行重计算和NMS之后,得到当前帧的定位框位置
总结
SiamRPN在所有实时算法里准确率最高,完全达到了实时tracking的SOTA,SiamRPN称得上应用性很强的算法。但是Siam RPN在结构上没有改进,因此没能拿到oral。