Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

一、前期知识

1.SPPNet

1.1 为什么要提出SPP-Net?

在这里插入图片描述
RCNN中,图片输入的尺寸是固定的,这是因为CNN中全连接层的参数是固定的,所以对于包含不同形状目标的图片,要进行裁剪和变形,但是,裁剪会造成信息丢失,变形会造成信息扭曲(变化),所以这两种方式都会影响最终的分类精度

以任意大小的原图作为输入,能最大程度的保留信息和提取特征,但是,卷积层输出的feature map要和全连层固定的维度对应,所以,只要解决了卷积层输出和全连接输入维度对应的问题,那么问题解决了,而SPP-Net就是用来解决这一问题

1.2 SPP-Net核心

空间金字塔池化层

  • 仅对原图提取一次卷积特征

  • 针对于不同尺寸feature map的输出,保证得到同样大小的fc层的输入
    在这里插入图片描述

  • 输入:一张任意大小的feature map,假设为(w, h, c)

  • 输出:固定为21*c

如上图所示,用三种不同大小的尺度,对卷积层输出的feature map进行划分,得到不同大小的块,然后再对这些块每个都提取一个特征值,因为每个块有c个通道,所以得到的每个块对应的1*c的特征向量,如图中有21个块,所以最后输出为21*256(图中c=256)

结论:通过空间金字塔池化就能够完成对于不同大小候选框的输入,来得到一个固定的输出,用于后面fc层的计算

1.3 SPP-Net的网络结构

在这里插入图片描述

2.Fast RCNN

2.1 Fast RCNN的作用:

  • 结合SPPNet改进RCNN——引入ROI Pooling(单层的SPPNet)
  • 多任务网络同时解决分类和回归——不再用SVM和线性回归,用神经网络来完成分类和回归
  • 共享卷积特征——节省卷积运算的时间,去掉重复的计算

2.2 Fast RCNN的网络结构:

在这里插入图片描述

  • 首先将整副图作为输入传进CNN,通过一些卷积和最大池化层产生feature map
  • 然后通过selective search 得到候选框
  • Roi pooling 层将这些候选框对应于feature map上的区域,提取出固定长度的特征向量
  • 接着将得到特征向量传入全连接层
  • 全连接层最终形成两个分支输出层
    • 一个是softmax输出层,输出关于K个目标和1个背景类别的概率
    • 另一个是bounding box regression层,对于K个目标,对应输出4个表示其位置的值

2.3 ROI Pooling

在这里插入图片描述

  • pooling层的一种,是简化版的、单层的金字塔池化
  • 将proposal抠出来,然后resize到统一的大小

空间金字塔池化是以不同的尺度的窗口对feature map进行划分,得到不同的维度的块,然后再相应的进行池化,得到固定长度的特征向量

而RoI池化,相当是单层的金字塔,因为它只有一种尺度,它只用一种尺度大小的窗口对RoI对应于feature map上的区域进行划分,然后再进行池化,得到固定长度的特征向量

具体操作如下

  1. 根据输入的image,将RoI映射到feature map对应的位置
  2. 将映射后的区域划分为相同大小(可能不同)的sections (sections数量和输出的维度相同)
  3. 对每个section进行max pooling操作,得到固定长度的特征向量

举例:
在这里插入图片描述
如上图所示,假设固定输出为4维向量,先根据Roi从原图映射到feature map上对应的区域,即图中粗黑线区域,然后将该区域分成四个部分,在对这四个部分取最大值,则得到最终的4维输出向量

说明:
如果是输入区域长宽相同,则划分的是大小相同的4个区域,这里输入是5*7,5/2=2,7/2=3(整除),所以这里宽划分为高划分为2和3,宽划分为3和4,就得到图中所示4个区域

2.4 Fast R-CNN的训练过程

在这里插入图片描述

  1. 预训练一个用于分类的CNN
  2. 使用Selective Search选中2000个候选区域
  3. 修改预训练的CNN,将CNN的最后一个flatten层及后面的层删掉,换为Rol Pooling层
  4. 在Rol Pooling层后面加上几个全连接层,然后加上两个分支:
    • 一个分支是SoftMax层,用于K+1个类别的分类
    • 另一个分支是bounding-box regression模型,用于预测K个类别的目标相对 Selective Search的定位的偏差

相对于SPPNet主要改进点:

  • 提出ROI Pooling层——单层的SPPNet,同样满足FC层固定输入的要求
  • 多任务网络的使用——FC层的输出直接通过softmax做分类

2.5 Fast RCNN网络缺陷

存在瓶颈:

  • region proposal依然采用Selective search,找出所有的候选框十分耗时
  • 整个网络的过程不是端到端的过程

二、Faster R-CNN

1.Faster R-CNN提出的原因

在之前的目标检测算法中,无论是传统的目标检测算法,还是后面的R-CNN、SPPNet、Fast R-CNN这些深度学习目标检测算法,候选区域的筛选和提取,一直是一个非常耗时和繁琐的过程,并且也是导致整个网络结构不是一个端到端的过程的原因。

而Faster R-CNN针对这一问题提出了RPN网络,RPN网络主要就是为了代替先前的那些算法中的候选框提取筛选的步骤,同时通过RPN网络,算法的性能和准确度也得到了进一步的加强。

2.RPN网络:

2.1 Anchor机制

Anchor——以每一个滑动窗口的中心点,按照规定的尺寸和长宽比得到的框

  • 三种面积尺寸(128,256,512)
  • 在每个面积尺寸下,取三种不同的长宽比(1:1, 1:2, 2:1)
    在这里插入图片描述

2.2 RPN的作用

  • 提出候选区域
  • 前景背景分类+框位置的回归
    • 粗分类——仅仅对候选区域是背景还是前景进行二分类,后续网络中进一步判定具体类别
    • 粗定位——在RPN中对框的位置进行一步粗略的回归,后续网络中进一步对位置进行精修

在这里插入图片描述
RPN主要过程:

  • 输入:feature map,anchor box
  • 输出:anchor box的分类和位置向量,以及最终候选区域

假设前面特征提取部分得到的feature map大小为n*n*256,然后根据上述anchor box机制,在feature map上的每个点上生成k个anchor box,那么总共有n*n*k个anchor box,然后对这些anchor box进行粗分类和位置回归,feature map上的每一个点就得到了2k个分类得分向量和4k个位置回归向量,注意这里的位置回归的信息,是原图上的位置。

得到了每个anchor box分类得分,对其进行排序,然后再进行筛选,得到2000个候选区域

图中的256-d,其实是输入的通道,同时也是每个anchor box进行卷积时的通道,假设某个点上的anchor box为2*2,那么卷积时,实际上就拿feature map上以这个点为中心,长宽为2*2,厚度为256的三维向量的特征信息进行卷积

3.Faster R-CNN网络的大体结构

Faster R-CNN网络:

  • 提出了Region Proposal Network(RPN)
  • 实现了端到端的检测
    在这里插入图片描述
    首先 ,在卷积层采用了共享卷积的操作,然后采用了RPN网络来完成proposal提取的过程,最终候选区域的类别和框的位置,都采用神经网络来完成

也就是说,输入一张图片,通过Faster R-CNN网络,直接得出分类和定位结果,即实现了端到端的检测

4.Faster R-CNN的网络结构

  • 主干网络: 13con+13relu+4pooling
  • RPN: 3x3+背景前景区分+初步定位
  • ROIPooling
  • 分类+位置精确定位
    在这里插入图片描述

5.Faster R-CNN的损失函数

L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值