1. 简述RPN网络
2. 训练过程
3. 测试过程
4. 个人总结
1. 简述RPN网络
由于SiamFC网络只能确定目标中心点的位置,无法改变bbox大小,且SiamFC是通过构建金字塔的方式去应对目标尺度发生改变的情况,这种做法不仅计算量大而且得到的目标位置不够精确,在SiamRPN中,作者将目标检测领域的Faster R-CNN论文中提出的RPN应用到目标追踪领域,对目标位置进行回归得到更加精确的目标位置。
SiamRPN的网络结构图如上图所示,Template Frame(denoted as Z)和Detection Frame(denoted as X)都经过相同的特征提取网络,Z经过CNN得到6×6×256的特征图,X经过CNN得到22×22×256的特征图;接着就是RPN网络处理过程,RPN网络分为2部分,一部分做分类,另一部分做回归。在分类分支中,Z经过一个卷积核将通道数从256上升到256×2k(k为anchor数量,SiamRPN中k=5),这是由于分类任务中,每一个anchor代表的区域有可能是目标也可能是背景,有两种可能性,k个anchor就是2k种,此时Z变为4×4×(2k×256);X经过卷积核后通道数不变,特征图尺寸变为20×20×256。在回归分支中,Z经过一个卷积核将通道数从256上升到256×4k(k=5),这是由于在回归任务中,回归的目的是为了得到目标精确位置,目标位置可以通过中心点坐标以及目标width,height共四个参数来确定,回归分支经过训练可以得到与目标的相对位置差,再经过简单的计算就可以得到测试帧中目标的位置;X经过卷积核后通道数不变,特征图尺寸变为20×20×256。最后,分别将分类与回归分支中的Z作为kernel与X进行卷积,经过训练后的网络分类分支最终得到Z中各区域是正样本(目标)还是负样本(背景),回归分支可分别得到各个anchors与X中bbox的相对位置差。分类与回归分支得到的score map都是17×17。
2. 训练过程
在训练过程中,SiamRPN中anchor_ratios有5种分别是[0.33, 0.5, 1, 2, 3],anchor_scale有1种为[8],因此共会产生5种anchor,由于score map为17×17,在score map上的每个像素点位置上都生成5种anchors,共17×17×5个anchors。还需要说明的是,score map决定了要生成的anchor数量,而anchor的大小是相对于搜索区域的,也就是说每个anchor都代表搜索区域上的一小部分区域,这样,直接将这些anchors与X中的bbox求IoU,当IoU>0.6判为正样本,IoU<0.3判为负样本,并且总样本数为64,其中正样本数不超过16个,如此生成的其实就是分类标签;anchor与X中bbox求中心点位置以及width,height的差就得到了回归标签。计算公式如下:
Tx,Ty,Tw,Th代表标记样本(bbox)的中心点以及width,height;Ax,Ay,Aw,Ah代表anchor的中心点以及width,height。分类任务使用交叉熵损失,回归任务使用smooth L1 loss。
3. 测试过程
上述训练过程完成后,将训练参数加载到网络中后,只需将第一帧带bbox的图像作为模板帧(Z)输入网络做前向计算,而后输入帧(X)都作为搜索帧,也进行前向计算,然后与Z进行卷积,分类分支得到预测的分类值,回归分支得到位置差。这也是siamese网络速度快的原因所在,网络参数都在训练过程确定了,如果一个vedio有N帧,则只需有1帧作为模板帧进行前向计算得到分类权重,回归权重;剩下的N-1帧全部做前向计算之后再与分类权重,回归权重做卷积得到结果。回归分支最终得到的结果17×17的score map 是每个anchor代表区域为正样本的概率值,然后在每个anchor上加余弦窗并加尺度惩罚,用来筛选得到最适合的anchor,也就是目标最大可能位置处的anchor,接着对这个anchor的位置进行回归计算,公式如下:
其实这个公式就是上面公式一的变体而已。完成之后便得到结果。
4. 个人总结
在细节处理方面,个人认为最值得注意的就是求得网络训练标签的方法,是anchors与搜索图像区域bbox求Iou得到分类标签,计算位置差得到回归标签,而不是与模板图像中的bbox做运算。测试阶段中,模板图像给出bbox,接着在下一帧中将bbox的四倍作为搜索区域,resize到255×255,传入网络,与模板分类分支做卷积得到最大响应点;与模板回归分支做卷积根据提取到的不同特征得到不同的位置差,然后筛选出最大响应的anchor位置,对其进行回归,即可得到目标位置。