Faster R-CNN理论

前言

本文参考来源于b站up主霹雳吧啦Wz.原视频.
Faster R-CNN是作者作者Ross Girshick继Fast R-NN之后的又一力作。同样使用VGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。


在这里插入图片描述


理论部分

1.Fast R-CNN简介

在讲Faster R-CNN之前我们先来简单的看一下它的上一代算法:Fast R-CNN
在这里插入图片描述
Fast R-CNN算法的流程可以分为三个步骤:

  • 通过使用Selective Search方法在一张图片上生成1000~2000个候选区域(这种方法在Faster R-CNN中RPN网络被替代)
  • 将图像输入卷积网络生成相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵。(也就是相当于有了一张特征图,然后在特征图上将ss算法扫到的区域框出来)
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

2.Faster R-CNN简介

Faster R-CNN算法的流程可分为三个步骤:

  • 将图像输入网络得到相应的特征图
  • 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
    在这里插入图片描述
    实际上我们的Faster R-CNN可以看作是RPN+Fast R-CNN这个形式。Faster R-CNN和Fast R-CNN最主要的区别就在于:Faster R-CNN将候选框的推举交给RPN网络来实现(替代了SS算法)
    因此我们的研究重点就在于RPN网络。

3. RPN网络

在这里插入图片描述

参数解释

首先,由上一步的conv layers生成了conv feature map。在这张特征图上,我们使用一个滑动窗口进行滑动。每滑动到一个位置上时候,我们就生成一个1-dim向量。在这个向量基础上再通过两个全连接层,分别输出目标概率和边界框回归参数。其中:

  • 256-d:因为我们前面的backbone网络使用的是ZF网络,它所输出的特征图是256-d。如果使用VGG-16,生成的特征图就是512-d
  • 2k:是指k个anchor boxes,每个anchor boxes生成两个概率(前景和背景)。所以k个anchor boxes会生成2k个scores。
  • 4k:对每个anchor boxes我们会生成4个边界框回归参数。所以k个anchor boxes会生成4k个coordinates。

anchor boxes解释

在这里插入图片描述

首先明确上图的含义,左边是原图,右边是相应的特征图,我们使用一个3*3滑动窗口在特征图上进行滑动的时候,特征图会存在一个中心点,通过推算出该中心点在原图上的对应位置,在原图上以这个中心点为中心,生成一系列anchor boxes。举个例子,就是如下这种效果:
在这里插入图片描述
对于k个anchor boxes,存在2k个scores。两个两个为一组(前景和背景的概率),一共k组。比如第一组:

  • 0.1代表其中一个anchor boxes框选(比如是图中的正方形框)的内容是背景的概率是0.1;
  • 0.9代表其中一个anchor boxes框选(比如是图中的正方形框)的内容是前景的概率是0.9;

这里只是对它进行背景还是前景的预测,并没有进行分类!


对于k个anchor boxes,存在4k个coordinates。每四个为一组,共k组。

  • d x , d y d_x,d_y dx,dy是anchor中心点的坐标;
  • d w , d h d_w,d_h dw,dh是anchor的宽和高的调整参数;
    在这里插入图片描述
    论文里面给出了三种尺度(面积)的anchor( 12 8 2 , 25 6 2 , 51 2 2 128^2,256^2 ,512^2 1282,2562,5122),三种比例(1:1,1:2,3:1),每个位置(每个滑动窗口)在原图上都对应 3 ∗ 3 3*3 33,9个anchor。
    在这里插入图片描述

这里有个点需要注意:

对于ZF感受野为171;对于VGG感受野为228。可是我们从上面可以知道,生成的anchor有256和512的,那么感受野还没有这个anchor大,我们能进行判断嘛?
如上图:作者给出了相应的解释,作者认为一个比较小的感受野(也就是看见一个物体的一部分),我们也可以大概的知道这个物体是什么。(有种窥一斑也可以知全豹的感觉)。实际使用的时候也证明这样是有效的。


对于一张1000x600x3的图像,大约有 60x40x9(20k)个anchor,忽略跨越边界的 anchor以后,剩下约6k个anchor。对于RPN 生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU 设为0.7,这样每张图片只剩2k个候选框。

RPN训练过程中正负样本的选择标准

在这里插入图片描述

通过滑动窗口在特征图上进行滑动,我们得到了上万个anchor,这些anchor不能都用来训练RPN网络。在原论文中作者说每张图片我们随机的采样256个anchor。这256个anchor是由正样本和负样本组成。正负样本的比例为1:1。如果正样本不足一半,我们就用负样本来填充。
下面是正负样本的选择标准:
在这里插入图片描述
在这里插入图片描述
正样本的选择标准:

  1. an anchor that has an IoU overlap higher than 0.7 with any ground-truth box.
  2. the anchor/anchors with the highest Intersection-overUnion (IoU) overlap with a ground-truth box

负样本的选择标准:
We assign a negative label to a non-positive anchor if its IoU ratio is lower than 0.3 for all ground-truth boxes.

丢弃掉的anchor:
Anchors that are neither positive nor negative do not contribute to the training objective.


RPN Multi-task loss

在这里插入图片描述
其中:
i: the index of an anchor in a mini-batch
p i p_i pi:第i个anchor预测为object的概率
p i ∗ : p_i^*: pi:当为正样本时候为1,当为负样本时候为0
t i t_i ti: 表示预测第i个anchor的边界框回归参数
t i ∗ t_i^* ti:表示第i个anchor对应的GT Box的边界框回归参数
N c l s N_{cls} Ncls:表示一个mini-batch中的所有样本数量256
N r e g N_{reg} Nreg:表示anchor位置的个数(不是anchor个数)约2400(60*40)
λ \lambda λ=10

分类损失

按多类别交叉熵损失来理解:
在这里插入图片描述
按二值交叉熵损失理解:
在这里插入图片描述

在这里插入图片描述

Fast R-CNN Multi-task loss

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.Faster R-CNN训练

直接采用RPN Loss+ Fast R-CNN Loss的联合训练方法


原论文中采用分别训练RPN以及Fast R-CNN的方法:

  1. 利用ImageNet预训练分类模型初始化前置卷积网络层参数,并开始单独训练RPN网络参数;
  2. 固定RPN网络独有的卷积层以及全连接层参数,再利用 ImageNet预训练分类模型初始化前置卷积网络参数,并利用RPN 网络生成的目标建议框去训练Fast RCNN网络参数。
  3. 固定利用Fast RCNN训练好的前置卷积网络层参数,去微调RPN 网络独有的卷积层以及全连接层参数。
  4. 同样保持固定前置卷积网络层参数,去微调Fast RCNN网络的全 连接层参数。最后RPN网络与Fast RCNN网络共享前置卷积网络层 参数,构成一个统一网络。

5.Faster R-CNN框架

Faster R-CNN应用了端对端的思想,将Region proposal;Feature extraction;Classification;Bounding-box regression都融合进了CNN网络。
Faster R-CNN与前代算法框架的比较:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值