目标检测论文中的ROI | 各种方法横向学习

包含的论文一览

  • 【Fast R-CNN】 RoI pooling(未施工)
  • 【Faster RCNN】Region Proposal Network
  • 【Mask RCNN】 ROI Align

Faster R-CNN

Faster RCNN的最大亮点就是提出了网络RPN(大名Region Proposal Network) ,在检测中的作用等价于之前论文(如Fast R-CNN, R-CNN)用来提取候选区域的Selective Search方法

RPN的示意图


RPN是一个相对于backbone较小的网络(small network)作用于最后一层卷积网络输出的特征图:

截自于Faster R-CNN 原文

生成regions

RPN被形象的图解为 n × n n×n n×n大小的滑动窗口,中心定位于特征图上的每个像素,而这个滑动窗口实际上由 k k kanchor boxes组成,也就是说围绕在中心点的滑动窗口是有 k k k中变换形状的,不仅有 n × n n×n n×n的正方形的样子,还有不同尺度,不同面积的另外 k − 1 k-1 k1个。
(文章中以 k = 9 k=9 k=9,有三种面积大小的anchor boxes,同一面积大小的anchor boxes又有三种不同的长宽比。)

标选可用的regions

给region添加信息:位置坐标和类别标签

用两个前向网络实现:

  1. 1 × 1 1×1 1×1卷积核将特征图通道数变为 2 × k 2×k 2×k,2是有无目标的意思(这里不进行判断具体生成什么类别)
  2. 1 × 1 1×1 1×1卷积核将特征图通道数变为 4 × k 4×k 4×k,对每个锚检测的区域中所含目标的位置信息进行预测

这样就对每个像素位置所包含的区域信息进行了一个处理,要注意的是:如今的每个像素是属于对原图像下采样后的特征图的,是存留着局部信息的。

Proposal layer

回顾上阶段:经过上一步逐像素生成9个regions。

我们现在有: M × N × K M×N×K M×N×Kregions M × N M×N M×N为RPN作用的特征图的尺寸),总数量是巨大的

而我们再回到任务本身:目标只在图像中的某个或某几个区域

那么显然我们要筛去没有包含很多目标信息的regions,如何用网络来表示包含信息的情况?——最后用一个proposal layer来衔接提出regions和送入检测器检测这两个过程

  1. 首先​对含有目标的regions(也就是类别标签属于positive的)的分数进行排序,在网络实现过程中,分类输出的是softmax的结果
  2. 提取前N个最大的
  3. 再将超出边界的region限定边界为图像的边界,剔除尺寸非常小的,NMS处理

RPN训练

首先RPN的训练需要制作标签

对于常用的数据集如VOC是有真值框的,那么我们判断anchors所圈住区域是否为真,还是用老方法IoU来度量。

从这一步我们也能明白一点,其实锚所选定的区域,应该是对原图像的一个操作

Mask RCNN

先引入Faster R-CNN

回顾Faster R-CNN对每一个候选目标都有两个输出:类别标签(class label)和一个边界框偏移量(bounding-box offset)。在此基础上,Mask R-CNN添加第三个输出分支:输出the object mask

有两种接入形式,分别对应两种backbone

  1. 用ResNet作为backbone,RPN(源自Faster R-CNN中)输出ROI经过ROI pooling后,得到 7 × 7 × 1024 7×7×1024 7×7×1024的特征,再进行一次反卷积,得到 7 × 7 × 2048 7×7×2048 7×7×2048的特征,与三个头相接(即做分类,回归和mask分支)
  2. 用FPN作为backbone,在mask分支直接输入RoI

mask的概念

对输入目标的空间布局进行编码,可以通过点对点的卷积实现

为什么使用mask

在Faster R-CNN结构中,最终输出的class labels和box offsets都是由全连接层输出的向量,而为了得到短的输出向量,信息一定存在collapsed

mask则是对于空间结构的一个检测,保留了空间信息

ROI的对齐问题

在Faster R-CNN中,对于RoI特征的提取,有两处存在着误差。

下采样过程导致的对不准

在backbone中会有对原图进行下采样,下采样的倍数取决于max pooling,当ground truth boxes不能被下采样倍数所整除时,出现了第一次对不准的情况

RoIpooling的信息不准问题

在Fast R-CNN中,提出了RoIPool这个方法,用于提取RoI的在特征图上的特征(7×7),操作过程为:找到RoI在特征图上的对应位置,并将其池化成统一7×7大小。这就衍生出一个问题:在划分每一个bin时,产生坐标位置的量化,这样就会导致提取到的特征和RoI之间的不准,虽然对分类可能没有太大的影响,但会很大影响到基于像素的mask的预测

为了保持像素在空间上的正确对应,文中提出了RoI的改进方法RoIAlign

本文的创新点:ROI Aligh

对于bin边界的划定,只使用x/16而不取整

在每个RoI bin里,使用bilinear interpolation的方法计算输入特征在四个固定采样点的准确值,然后融合结果(max或average),方法示意图为:

实验测试,结果对采样点的位置,数量并不敏感,但量化会。

这一步对于结果有很大的提升

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值