Inroduction

之前的算法用region-based,消耗大量算力,但是现在这个问题彻底解决,通过共享卷积的方式。
我们发现卷积的特征图也容易用来生成建议区域,我们通过设计了RPN通过加一小部分卷积层,我们不用普遍的算法里面的用图片的金字塔或者滤波器,我们设计出了anchor box来作为多尺度和纵横比的参考,可以当作回归参考的金字塔不需要多尺度和不同纵横比。
通过组合RPN和Fast-RCNN,可以交替微调RPN和FR,权值共享,取得很好的效果。

Related Work

R-CNN只是起到分类器的效果,并没有预测边界(除了通过预测边界盒进行精炼,SPP和R-CNN的共享卷积的方法越来越得到关注。

RPN

通过输入任意尺度的图片,输出一系列区域建议,每一个都包含分数。
为了生成区域建议,我们在最后一个共享卷积层的卷积特征图输出上滑动一个小网络。该小网络以输入卷积特征图的一个n×n空间窗口作为输入。每个滑动窗口都映射到一个低维特性(ZF为256-d, VGG为512-d, ReLU[33]如下)这个特性被输入到两个完全连接的层—box-regression层(reg)和box-classification层(cls)。我们在本文中使用n = 3,注意到输入图像上的有效接收域很大(ZF和的有效接收域分别为171和228像素分别为VGG)。图3(左)显示了这个迷你网络的一个位置。请注意,由于微型网络以滑动窗口的方式运行,因此所有空间位置都共享完全连接的层。这个架构很自然地通过一个n×n卷积层和两个同级的1×1卷积层(分别用于reg和cls)来实现。
Anchors:每一个滑窗假设得到K个可能的情况,那么就会得到4k个输出给box定位,2k个输出分别得到可能的概率和不可能的概率。这两个输出一个是回归,一个是分类。
image.png
Translation-Invariant Anchors:平移不变性可以检测各种位置。对于VGG只有512(4+2)9个参数,这样使得在小的数据集上有更小的过拟合风险。
考虑到卷积层:33512512+51269 = 2.410^9
Multi-Scale Anchors as Regression References:传统的方法有两种,一种是特征金字塔,一种是用不同尺度的滑窗。FR用了锚的金字塔,通过不同比例和不同大小的锚框。
LossFunction:RPNs,设计了一种两类的标签,来判断是不是目标,有最高的iou的值或者iou值达到了0.7以上
取不高于0.3的锚为负锚,(和所有的种类的iou值),中间的对训练不产生效果。定义多任务损失的目标:
image.png
i是某个种类,pi表示预测的概率,如果正例带为1,如果负例则为0,ti表示四个位置参数的向量,带*表示与一个正向锚相关的ground-truth。Lcls取log损失,Lreg取smoothL1损失。
image.png
x表示预测的box,xa表示abchorbox,锚框,x*表示GT,可以想象成从boundingbox的回归从锚到真是的框。实现了不同于以往IOU的方法实现了回归,得到的权值得到共享。
Trainning RPNs:可以通过反向传播和SGD来运算,在一幅图离随机抽取256个锚点进行运算,正负例比例为1:1.如果一批中小与128个positive,则用negative填充。
之前都是区域建议,而不是目标检测,目标检测采用R_CNN,两者分别训练,所以要有一种共享卷积层的技术。

  1. 交替训练,先RPN
  2. 近似联合训练:合并成一个网络,
  3. 非近似联合训练

(不太懂)

实施细节

在单一尺度训练和测试两个网络,anchor设定三种1:1,1:2.1:3,在三种尺度上进行anchors。
1000600的图片大概有6040*9个锚框,去除边界区域,就有6000个锚框。然后采用NMS就得到了最终的大概2000个建议。

experiment

一些要点

整体框架

1)、Conv layers提取特征图:
作为一种CNN网络目标检测方法,Faster RCNN首先使用一组基础的conv+relu+pooling层提取input image的feature maps,该feature maps会用于后续的RPN层和全连接层
2)、RPN(Region Proposal Networks):
RPN网络主要用于生成region proposals,首先生成一堆Anchor box,对其进行裁剪过滤后通过softmax判断anchors属于前景(foreground)或者后景(background),即是物体or不是物体,所以这是一个二分类;同时,另一分支bounding box regression修正anchor box,形成较精确的proposal(注:这里的较精确是相对于后面全连接层的再一次box regression而言)
3)、Roi Pooling:
该层利用RPN生成的proposals和VGG16最后一层得到的feature map,得到固定大小的proposal feature map,进入到后面可利用全连接操作来进行目标识别和定位
4)、Classifier:
会将Roi Pooling层形成固定大小的feature map进行全连接操作,利用Softmax进行具体类别的分类,同时,利用L1 Loss完成bounding box regression回归操作获得物体的精确位置.

image.pngRPN相当于一个attetion

网络结构

image.png
整体如上

conv layers

由于支持任意大小图片,对输入图片进行规整大小设定为不超过1000600,不足则补齐。
① 13个conv层:kernel_size=3,pad=1,stride=1;
卷积公式:经典论文阅读(2)--Faster-RCN - 图6
所以,conv层不会改变图片大小(即:输入的图片大小=输出的图片大小)
② 13个relu层:激活函数,不改变图片大小
③ 4个pooling层:kernel_size=2,stride=2;pooling层会让输出图片是输入图片的1/2
经过Conv layers,图片大小变成(M/16)
(N/16),即:
6040(1000/16≈60,600/16≈40);则,Feature Map就是6040512-d(注:VGG16是512-d,ZF是256-d),表示特征图的大小为6040,数量为512。(表示通道数)。

RPN

Feature Map进入RPN后,先经过一次33的卷积,同样,特征图大小依然是6040,数量512,这样做的目的应该是进一步集中特征信息,接着看到两个全卷积,即kernel_size=11,p=0,stride=1;
经典论文阅读(2)--Faster-RCN - 图7
如上图中标识:
① rpn_cls:60
40512-d ⊕ 1151218 ==> 604092
逐像素对其9个Anchor box进行二分类
② rpn_bbox:60
40512-d ⊕ 1151236==>604094
逐像素得到其9个Anchor box四个坐标信息
经过卷积,图片大小变为原来1/16,其中一个点就代表原图16
16的值区域,源码中转化为[0,0,15,15]的数组,参数ratios=[0.5, 1, 2]scales=[8, 16, 32],特征图大小为6040,所以会一共生成60409=21600个Anchor box。
并且对生成的Anchor box进行过滤和标记,参照源码,过滤和标记规则如下:
① 去除掉超过1000
600这原图的边界的anchor box
② 如果anchor box与ground truth的IoU值最大,标记为正样本,label=1
③ 如果anchor box与ground truth的IoU>0.7,标记为正样本,label=1
④ 如果anchor box与ground truth的IoU<0.3,标记为负样本,label=0
剩下的既不是正样本也不是负样本,不用于最终训练,label=-1

下面集体看下这三个,其中‘rpn_loss_cls’、‘rpn_loss_bbox’是分别对应softmax,smooth L1计算损失函数,‘rpn_cls_prob’计算概率值(可用于下一层的nms非最大值抑制操作)
补充:
① Softmax公式,经典论文阅读(2)--Faster-RCN - 图8计算各分类的概率值
② Softmax Loss公式,经典论文阅读(2)--Faster-RCN - 图9RPN进行分类时,即寻找最小Loss值
在’rpn-data’中已经为预测框anchor box进行了标记,并且计算出与gt_boxes之间的偏移量,利用RPN网络进行训练。
RPN训练设置:在训练RPN时,一个Mini-batch是由一幅图像中任意选取的256个proposal组成的,其中正负样本的比例为1:1。如果正样本不足128,则多用一些负样本以满足有256个Proposal可以用于训练,反之亦然。
得到2000个abchor后取前300个进入下一层的ROIpooling。
**用下图一个案例来对NMS算法进行简单介绍
经典论文阅读(2)--Faster-RCN - 图10
如上图所示,一共有6个识别为人的框,每一个框有一个置信率。
现在需要消除多余的:
· 按置信率排序: 0.95, 0.9, 0.9, 0.8, 0.7, 0.7
· 取最大0.95的框为一个物体框
· 剩余5个框中,去掉与0.95框重叠率IoU大于0.6(可以另行设置),则保留0.9, 0.8, 0.7三个框
· 重复上面的步骤,直到没有框了,0.9为一个框
· 选出来的为: 0.95, 0.9

经典论文阅读(2)--Faster-RCN - 图11
全连接层

生词积累

单词 翻译 单词 翻译
exposing n. 遗弃;露体;陈列
v. 揭露;展览;遭遇(expose的ing形式)
terminology n.学术用语
unified adj.统一的 drastically adj.彻底地,激烈地
incarnation n. 化身;道成肉身;典型 magititude n. 大小;量级;[地震] 震级;重要;光度
implementation n. [计] 实现;履行;安装启用 algorithmic adj. [数] 算法的;规则系统的
elegant adj.优雅的 simultaneously adv. 同时地
prevalent adj.普遍的 scheme n.组合
coordinates n.坐标 benchmark n.基准

红色:注意读音
黑体:重要

科研句子积累


  1. 参考

    1.Faster RCNN 学习笔记
    2.RoIPooling、RoIAlign笔记