R-FCN阅读笔记

R-FCN的提出

用于目标检测的深度网络可以通过RoI池化层划分成两类子网:

  • 独立于RoI的共享的全卷积子网
  • 不共享计算的ROI-wise子网

由于先进的图像分类网络是由全卷积设计的,通过对比,似乎在目标检测结构中完全使用卷积层构建共享的卷积子网更自然,使得RoI-wise子网没有隐藏层。但是,实践证明这个方法的检测精度非常低。为了解决这个问题,Fast R-CNN检测器在两组卷积层之间插入了RoI池化层——这创建了一个可以提高准确度的更深的RoI-wise子网,但是由于不共享的每个ROI的计算导致了速度下降。

本文认为上述问题是由于图像分类的平移不变性和目标识别的平移可变性之间的矛盾造成的。

  • 平移不变性有利于图像分类——在图像分类任务中,一个图像中物体的平移应该是对结果没有影响的
  • 目标识别任务需要定位表示,因此在一定程度上是平移可变的。比如,候选框中物体的移动应该产生有意义的回应,来描述候选框与物体重叠的程度。

将RoI池化层插入到两组卷积层之间,这种针对特定区域的操作实现了平移可变性,但是由于引入了相当数量的region-wise layer 导致牺牲了大量的训练和测试效率。

因此,本文开发了R-FCN用来目标检测。这个网络包括了像FCN一样的共享的全卷积网络。为了在FCN中实现平移可变性,本文使用一组专用的卷积层作为FCN的输出,构建了一组对于位置敏感的score map。在FCN之上,添加了一个对位置敏感的RoI池化层,从这些score map中获取信息。

整个结构的学习是端到端的。所有可学习的层都是卷积层并且在整张图片上是共享的,然后编码目标检测所需的空间信息。

R-FCN

概述

采用了流行的两阶段目标检测策略:

  1. region proposal
  2. region classification

本文通过RPN提取候选区域,RPN本身就是一个全卷积结构。然后在RPN和R-FCN之间共享特征,即将RPN得出的候选RoIs应用于score maps。给定了RoIs,R-FCN将RoIs分类为目标类别和背景。在R-FCN中,所有可学习的权重层都是卷积层并且在整张图片上计算。最后一个卷积层对于每一个类别产生 k 2 k^2 k2个对位置敏感的score map,因此有一个 k 2 ( C + 1 ) k^2(C+1) k2(C+1)-channel(C是目标类别个数,+1代表背景)的输出层。 k 2 k^2 k2个score map对应着描述相对位置的 k × k k\times k k×k个空间网格。例如, k × k = 3 × 3 k\times k=3 \times 3 k×k=3×3,这9个score maps分别对应着一个目标类别的{左上角,上面中心,右上角,…,右下角}。

R-FCN以对位置敏感的RoI池化层结束。该层聚集最后一个卷积层的输出,并且生成每个RoI的分数。此处的聚集是选择性的, k × k k \times k k×kbin中的每一个只是 k × k k\times k k×k个score maps中一个的结果。通过端到端的训练,这个RoI层指导最后一个卷积层,来学习特定的对位置敏感的score maps.

主要结构

基于ResNet-101,只选取其中的卷积层来计算特征映射,并在ImageNet上进行了预训练。ResNet-101最后一个卷积层是2048-d,本文增加了一个随机初始化的 1 × 1 1\times 1 1×1的1024-d卷积层来减少原来的维度。然后采用 k 2 ( C + 1 ) k^2(C+1) k2(C+1)-channel的卷积层来生成score maps.

对位置敏感的score maps & 对位置敏感的RoI池化

为了准确的编码每个RoI中的位置信息,将每个RoI矩形区域用一个常规网格划分成 k × k k \times k k×k个bin。对应一个大小为 w × h w \times h w×h的RoI矩形区域来说,一个bin的大小约为 w h × h k \frac{w}{h} \times \frac{h}{k} hw×kh。最后一个卷积层是用来为每一个生成 k 2 k^2 k2个score maps。

//接下来是RoI池操作的相关定义

边界框回归是附加了一个 4 k 2 4k^2 4k2的卷积层,对位置敏感的RoI池化在这组 4 k 2 4k^2 4k2的映射上进行,为每个RoI生成一个 4 k 2 4k^2 4k2-d向量。然后通过平均投票聚合成一个4-d向量,由该向量得到边界框参数化为 t = ( t x , t y , t w , t h ) t=(t_x,t_y,t_w,t_h) t=(tx,ty,tw,th).

训练

通过候选区域的预先计算,可以轻松地端到端的训练R-FCN架构。根据Fast R-CNN,得到每个RoI上的损失函数。将与ground-truth box 重叠的IoU>=0.5的RoIs定义为正样本,否则为负样本。

假设每张图片有N个proposals,在前向传递过程中评估所有N个proposal的损失。然后用损失对所有的RoIs排序,从中选取损失最大的B个RoIs。反向传播基于选定的样本执行。

还需学习

  • RoIs

  • proposal

  • RoIs中 k 2 k^2 k2bins的投票得分

在这里插入图片描述
在这里插入图片描述
论文中对应的可视化结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值