论文阅读理解 - R-FCN: Object Detection via Region-based Fully Convolutional Networks

R-FCN: Object Detection via Region-based Fully Convolutional Networks

摘要

  • 全卷积网络,全部是卷积层,移除了最后的全连接层(fc).
  • 几乎所有的计算都是在整张图像上共享的.
  • position-sensitive score maps 位置敏感分数图, 平衡图像分类所需的平移不变性和目标检索所需的平移变化性间的矛盾.

Introduction

目标检测的框架根据ROI pooling 层可以分为两个子网络:
- 共享的,全卷积子网络,独立于ROI;
- 各个ROI子网络,不共享计算

图像分类中,要求网络对于平移不变性越强越好,比如图像中的猫,不管平移到图像的哪个位置,仍是猫;
目标检测则要求网络对平移变化越敏感越好,需要平移变化来定位图像中目标位置.

一般假设在图像分类网络中,网络卷积层越深, 网络的加深,使得其对位置信息的保留越来越少,对平移变化越不敏感. 但目标检测需要对图像中目标的位置信息能较好的感知.

ResNet-101做目标检测的框架中,是将ROI pooling层插入到前面的卷积层,其后面的卷积层不共享计算,降低了平移不变性,ROI后的卷积层对不同的区域块不再具有平移不变性. 该方法引入了相当数量的逐区域层.

提出R-FCN(Region-based Fully Convolutional Network )框架,解决目标检测任务:
- R-FCN是共享的、全卷积网络结构
- 采用指定的卷积层的输出,来构建 position-sensitive score maps 集合. 各个score map分别编码了对于某个相对空间位置的位置信息,如物体的左边(to the left of an object).
- 在FCN网络层的上面,添加一个位置敏感的ROI pooling 层,来处理来自score maps的信息, 后面不需要权重层(conv/fc).
- End-to-end
- 所有的训练层都是卷积层,在整张图像上共享计算
论文阅读理解 - R-FCN: Object Detection via Region-based Fully Convolutional Networks

R-FCN

two-stage 目标检测策略:
- region proposal 候选区域
- region classification 区域分类
论文阅读理解 - R-FCN: Object Detection via Region-based Fully Convolutional Networks

  • 采用RPN(Region Proposal Network)网络提取候选区域,RPN是全卷积网络结构. R-FCN和RPN共享特征.
  • 给定候选区域(ROIs),R-FCN网络将ROIs分类到不同的物体类别和背景.
    • R-FCN所有学习权重的层都是卷积层,并在整张图像上共享计算
    • R-FCN的最后一个卷积层对每一类别产生 k2 position-sensitive score maps,得到 k2(C+1)channel的输出层(C个物体类别和1个背景类别).
    • k2 score maps对应 k×k 空间网格(grid),分别描述了相对位置信息. 例如,k×k=33 时,得到的 9 个score maps分别描述了一个物体类别的 [top-left, top-center, top-right, …, bottom-right] 相对位置信息.
    • R-FCN的最后一层是 position-sensitive RoI pooling 层,该层统计了最后一个卷积层的输出,并生成各个 ROI 的 score.
      • position-sensitive RoI pooling 层进行选择性 pooling,k×k单元格中的每一个bin都只对 k×k 个score maps中一个score map进行相应. 如Figure 2,选择性pooling图解:看图中的橙色响应图像 (top−left),抠出橙色方块 RoI,池化橙色方块 RoI 得到橙色小方块 (分数);其它颜色的响应图像同理。对所有颜色的小方块投票 (或池化) 得到1类的响应结果。
      • position-sensitive RoI pooling 层根据最后一个卷积层来学习特定的position-sensitive score maps. 如Figure 1所示. 产生score map之后,再根据proposal产生一个长宽各为k,channel数目为C+1的score map。具体产生score map的方法是,假如k=3,C=20,那么score map的20个类每个类都有3×3的feature,一共9个格子,每一个格子都记录了空间信息。而这每一个类的每一个格子都对应前面那个channel数为3×3×21的大map的其中一个channel的map。现在把score map中的格子对应的区域的map中的信息取平均,然后这个平均值就是score map格子中的值。最后把score map的值进行vote(avg pooling)来形成一个21维的向量来做分类即可. 当分类正确时,该类通道的位置敏感分数图 (中间) 的大多数橙色实线网格内的响应在整个 RoI 位置范围内最强. [忘了从哪里看到的了,找到了补上参考链接]. Figure3 和 Figure4 给出了一个示例.
        论文阅读理解 - R-FCN: Object Detection via Region-based Fully Convolutional Networks

基础网络结构

  • 基于 ResNet-101,其具有100个卷积层和一个1000分类的全连接(fc)层.
  • 移除ResNet-101的 average pooling层和 fc层,只使用卷积层来计算feature maps.
  • 采用在ImageNet训练的ResNet-101模型进行权重初始化.
  • ResNet-101的最后一个卷积层输出是 2048-d 的,采用一个权重随机初始化的 1×1 的卷积层来进行降维到 1024-d.
  • 采用k2(C+1)channel卷积层生成score maps.

Position-sensitive score maps & Position-sensitive RoI pooling.

  • 为了更好的对每个ROI中的位置信息进行编码,这里将各个ROI框(rectangle) 根据规则网络分为 k×k 个单元格. 即,对一个ROI框,其尺寸为 wh,一个单元格的尺寸为 wk×hk.
  • R-FCN的最后一个卷积层用来产生每一个类别的 k2 个score maps.
  • 在第 (i,j) 个单元格中,(0i,jk1),定义一个 position-sensitive RoI pooling 操作,仅对第 (i,j) 个score map 进行 pool 处理:
    γc(i,jΘ)=(x,y)bin(i,j)zi,j,c(x+x0,y+y0Θ)/n
    其中,
    • rc(i,j) 是在第 (i,j)个单元格中 c类的池化响应;
    • zi,j,ck2(C+1) 个score maps中的一个 score map;
    • (x0,y0) 表示一个ROI的左上角位置( top-left corner);
    • n 是单元格中的像素数量;
    • Θ 表示网络所有的学习参数.
    • (i,j) 个单元格占用的范围是 [iwk]x<[(i+1)wk][jhk]x<[(j+1)hk].
    • 上述公式中的操作在 Figure 1 中进行了例示,其中一种颜色代表一对 (i,j).
    • 上述公式进行了平均 pooling,但也进行了 max pooling.
  • 在ROI上进行 k2 个 position-sensitive scores 投票.

    • 这里通过平均scores来进行简单投票,得到各个ROI的 (C+1) 维向量:
      γc(Θ)=i,jγc(i,jΘ)).
    • 计算各类别的 softmax 响应:
      sc(Θ)=eγc(Θ)/c=0Ceγc(Θ).
      被用来计算训练过程中的 cross-entropy loss,在推断时用来对ROIs进行排名.
  • 对于bounding box regression,只需要把 C+1 改为4即可.

    • 除了 k2(C+1)-d 的卷积层之外,又添加了一个 4k2-d 的卷积层,用于边界框回归.
    • 4k2 个maps上,进行 position-sensitive RoI pooling 操作,得到各个 ROI 的4k2-d 向量;
    • 通过 average voting,得到 4-d 向量,参数化边界框 t=(tx,ty,tw,th).

训练

  • Loss on each ROI
    • cross-entropy loss:Lcls(sc)=log(sc) —— 分类
    • box regression loss:Lreg —— 边界框回归
      L(s,tx,y,w,h)=Lcls(sc)+λ[c>0]Lreg(t,t)
      其中,
      c 是ROI的 ground-truth label,c=0 表示背景.
      如果参数为true, [c>0]=1;否则 [c>0]=0.
      t 是ground truth box.
      λ=1.
  • 如果与 ground-truth box 的 IoU 大于 0.5的ROIs,设为positive examples; 小于0.5,设为negative examples.
  • 单尺度训练(single-scale training),将图像裁剪为最短边为 600 pixels的尺寸
  • 单个GPU训练一张图片,共8GPUs,选取 B=128 个 ROIs作为备选.
  • fine-tune R-FCN,weight_decay = 0.0005, momentum=0.9,20K次 mini-batches的 lr=0.001, 10K次mini-batches的 lr=0.0001.

推断

如Figure 2 所示.
- 输入图像是单尺度的,尺寸为 600×600
- RPN和R-FCN的 feature map是计算是共享的
- RPN 提取 ROIs,R-FCN 估计各个类的 scores,以及回归边界框.
- 最后进行 NMS(non-maximum suppression) 后处理,IoU 阈值为 0.3.

À trous and stride

  • R-FCN 继承了FCN的网络的特点
  • R-FCN 将 ResNet-101 的有效步长由 32 pixels 减少到 16 pixels,以增加 score map 的分辨率
  • 在 conv4 stage之前的网络层保持不变(stride=16)
  • 第一个 conv5 网络块的步长由 stride=2 修改为 stride=1,所有 conv5 stage的卷积 filters 根据 “hole algorithm” 进行修改,以补偿减少的步长.

可视化

如 Figure 3 和Figure 4,图示了当 k×k=3×3时,由 R-FCN 学习得到 position-sensitive score maps.
- 这些得到的 maps 应该对于物体的相对位置具有较强的响应. 例如,“top-center-sensitive” 对于物体的 top-center 附近的位置应该具有high socre.
- 如果候选 box 能够与真实物体重叠较精确,如Figure 3, 则ROI的 k2 个单元格中的大部分被**,且得到的投票分数较高.
- 如果候选 box 与真实物体不能正确重叠,如Figure 4,则ROI 的 k2 个单元格中的一些是不被**的,且投票分数较低.

Result

论文阅读理解 - R-FCN: Object Detection via Region-based Fully Convolutional Networks

相关