SiameseRPN笔记

《High Performance Visual Tracking with Siamese Region Proposal Network》

效果:160FPS, 高EAO

参考: https://zhuanlan.zhihu.com/p/37856765

 

Motivation:

1. 当前的一些跟踪算法很难同时兼顾速度和精度。相关滤波类算法速度快,单精度不高;基于深度的精度高,但速度不快。

2. Siamese网络在目标跟中很多应用,但是有两个缺陷:(1)特征图卷积得到response map,无法get到尺度变化,之后要进行尺度金字塔搜索,速度慢;(2)特征图分辨率低,需要进行插值后得到最终位置,导致目标位置不精确。

 

综上所述,RPN引入使得网络在tracking的时候不需要多尺度测试,提升速度;有boundingbox regression,因此回归出来的狂更加准确。

 

 

训练框架:

SiameseRPN笔记_第1张图片

左侧为传统的siamese network,用相同的网络结构对template和candidate提取特征;

中间是RPN网络,在RPN中,设置K个anchor(这里为1个scale下的5个不同aspect ratio组成),每个anchor有2个cls, 4个reg,因此两个通道分别为2k, 4k。因此为了提升通道数,需要对template的siamese featuremap 升维,而为了保证深度一致,candidate分支也需要加一个卷积操作,但不需要改变维数。

接下来就是将template的featuremap当做kernel对candidate分支做卷积,得到分类和回归输出。

 

在论文中,作者将这一过程引入为one-shot detection和learn-to-learn。我们知道,在Faster rcnn中的RPN负责检测图像中可能存在的【物体】,并以anchor的形式返回其位置,这里的RPN只是负责找general的物体,并不带有物体本身是什么的信息,而在tracking的任务中,想要检测的是包含跟踪目标的anchor,所以,这里通过控制与candidate卷积的kernel(也就是template 得到的2k, 4k个feature map)来控制具体去寻找什么样的目标,这应该就是作者想表达的learn-to-learn的过程。

one-shot detection更好的体现是在测试阶段。在测试过程中,第一帧图像用于学习kernel,然后便减掉了上面的Template分支,只保留权重,就相当于网络只根据第一帧看到的信息进行后续的检测任务,即为one-shot detection。

 

测试框架:

SiameseRPN笔记_第2张图片

其他细节:

* 得到最终特征图后如何选择候选的anchors?

将得到的2k个feature map看做是点集,Aclsw×h×2k = {(xcls i , yjcls, ccls l )} (10)where i ∈ [0, w), j ∈ [0, h), l ∈ [0, 2k). 回归分支同理。在分类的2k个feature map中,基数通道分类为true,因此从k个基数通道的所有点中找响应值top K的点作为候选anchor的位置,则其对应的回归分之上的值就是其回归位置,最后根据公式可以得到anchors的最终位置。

*如何从anchors中得到跟踪目标?

两个方法:

法一:根据连续两帧目标位置偏移不大的前提,只对Acls中以目标为中心的gxg个网格取anchor。这里选用的g=7

法二:用cosin window和跟上一帧相比的尺度惩罚因子,对anchors进行重新排序,然后确定目标位置。

*损失函数:

RPN的损失函数

* 训练数据集大小

VID+Youtub-BB

SiameseRPN笔记_第3张图片

视频数量越多,效果越好

 

总结:

1.RPN的引入在解决贪婪尺度搜索,提高速度的同时提升了bounding box regression的回归精度,所以兼顾了速度和精度的要求;

2.感觉还有一个至关重要的因素就是用了大量的数据;

3.以上全为个人理解,如有错误,欢迎指正。

 

你可能感兴趣的:(SiameseRPN笔记)