基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN

基础目标检测算法介绍:

CNN、RCNN、Fast RCNN和Faster RCNN

1.CNN:(问题:输入尺寸固定)
对于普通的CNN网络,由于输入图片中的物体可能有不同的长宽比,空间位置。
目标物体可能占据图片的大部分,也可能是一小部分,目标物体的形状也可能不同。
在目标检测时,就需要将图片分割成多个区域,以检测此区域内的物体(为了将各个物体分离开),这就需要大量算力
为解决这一问题,减少区域的分割,引入基于区域的CNN,它可以进行区域的选择。
 
2.RCNN:
SPP:Spatial Pyramid Pooling(空间金字塔池化),使得输入的图像可以是任意尺寸的。
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
在图像中创建多个边界框,检查这些边框中是否含有目标物体
使用选择性搜索提取图片中的这些边框
组成目标物体通常有四个要素:变化尺度、颜色、结构(材质)、所占面积。
选择性搜索:确定物体在图片中的这些特征,然后基于这些特征突出不同区域
基于颜色、结构、尺寸、形状,将相似的区域合并成更大的区域
最后,生成最终的目标物体位置
步骤:( 候选区域选择,CNN特征提取,分类与边界回归
  1. 首先取一个 预训练卷积神经网络
  2. 根据需要检测的 目标类别数量,训练网络的最后一层
  3. 得到每张图片的 感兴趣区域(Region of Interest),对这些区域重新改造,让其符合CNN的输入尺寸要求。
  4. 得到这些区域后,训练 支持向量机(SVM)来辨别目标物体和背景。对每个类别,都要训练一个二元SVM。
  5. 最后,训练一个 线性回归模型,为每个辨识到的物体生成更精确的边界框。
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
 
缺陷:
训练一个RCNN模型非常昂贵,并且步骤较多:
为了检测一个目标,需要计算所有的候选区域,大量卷积运算,这是非常慢的
  • 根据选择性搜索,要对 每张图片提取2000个单独区域;
  • 用CNN提取每个区域的特征。假设我们有N张图片,那么CNN特征就是N*2000;
  • 用RCNN进行目标检测的整个过程有三个模型;
  1. 用于特征提取的CNN
  2. 用于目标物体辨别的线性SVM分类器
  3. 调整边界框的回归模型。
这些过程合并在一起,会让RCNN的速度变慢,通常每个新图片需要40—50秒的时间进行预测,基本上无法处理大型数据集。
 
Fast RCNN
 
为了减少RCNN算法的计算时间, 在每张图片上只使用一次CNN即可得到全部的重点关注区域
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
  1. 输入图片
  2. 输入到卷积网络中,它生成感兴趣区域
  3. 利用 Rol池化层 对这些区域重新调整,将其输入到完全连接网络
  4. 在网络的顶层用 softmax层 输出类别,同样使用一个线性回归层,输出相对应的边界框
ROI池化层: 可以把不同大小的输入映射到一个固定尺度的特征向量
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
Fast RCNN只用了一个模型就同时实现了区域的特征提取、分类、边界框生成
问题:
 R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归,并加入到网络中,这样整个的训练过程是端到端的(除去Region Proposal提取阶段)
它同样用的是选择性搜索作为寻找感兴趣区域的,这一过程通常较慢。与RCNN不同的是,Fast RCNN处理一张图片大约需要2秒。
但是在大型真实数据集上,这种速度仍然不够理想。
RCNN:许多候选框-->CNN-->每个候选框的特征-->分类+回归
Fast-RCNN: 一张完整图片-->CNN-->每张候选框的特征-->分类+回归
优化点:整张图片提取一次特征,再把候选框映射到conv5上
 
Faster RCNN
与Fast RCNN相比, 二者主要的不同在于感兴趣区域的生成方法
Fast RCNN使用的是选择性搜索  
Faster RCNN 用的是 Region Proposal 网络(RPN)。RPN将图像特征映射作为输入,生成一系列object proposals,每个都带有相应的分数。
区域生成网络RPN候选框提取模块 + Fast RCNN检测模块
过程:
  1. 输入图像到卷积网络中,生成该图像的特征映射。  
  2. 在特征映射上应用Region Proposal Network,返回object proposals和相应分数。   
  3. 应用Rol池化层,将所有proposals修正到同样尺寸。  
  4. 最后,将proposals传递到完全连接层,生成目标物体的边界框。 
流程:
1.输入图像
2.通过 区域生成网络RPN生成候选区域
3.提取特征
4.分类器分类
5.回归器回归并进行位置调整
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
Faster-RCNN组成:
1.CNN卷积层:提取图片的特征,输入为整张图片,输出为提取出的特征feature maps
2.RPN(Region Proposal Network), 推荐候选区域,代替search selective,输入是CNN处理后的feature maps ,输出为多个候选区域。 
RPN, 可以理解为一种全卷积网络,该网络可以进行end-to-end的训练,目的:推荐候选区域:
  • 在feature map上滑动窗口
  • 建一个神经网络用于物体分类 + 框位置的回归
  • 滑动窗口的位置提供了物体的大体位置信息
  • 框的回归提供了框更精确的位置
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
任意尺寸—>resize 到 600*600*3时,共享特征层:feature maps 38*38*1024 
把输入进来的图像分割成38*38的网格, 然后每个网格存在9个先验框,这些先验框有不同的大小,在图像上密密麻麻分布着。
获得的公用特征层在图像中就是Feature Map,其有两个应用,一个是和ROIPooling结合使用、另一个是进行一次3x3的卷积后,进行一个18通道的1x1卷积,还有一个36通道的1x1卷积。
在Faster-RCNN中,num_priors先验框的数量是9,所以两个1*1卷积的结果实际上是:
9*4的卷积(对先验框进行调整,获得一个新框)用于预测公用特征层上每一个网格点上,每一个先验框的变化情况。
9*2的卷积(判断上述获得的新框是否包含物体)用于预测公用特征层上,每一个网格点上,每一个预测框内部是否包含了物体,序号为1的内容为包含物体的概率。
到此位置,就获得了一个建议框,然后需要在建议框里面继续去找东西。
 
Proposal 建议框是对画面中的物体进行筛选
Proposal + feature maps  —> ROIPooling 
ROIPooling 利用建议框对feature maps 进行截取
 
Proposal建议框解码:
先验框虽然可以代表一定的框的位置信息与框的大小信息,但是其是有限的,无法表示任意情况,因此还需要调整。
9 x 4的卷积 用于预测 公用特征层上 每一个网格点上 每一个先验框的变化情况。**
9 x 2的卷积 用于预测 公用特征层上 每一个网格点上 每一个预测框内部是否包含了物体。
相当于就是将整个图像分成38x38个网格;然后从每个网格中心建立9个先验框,一共38x38x9个,12996个先验框。
当输入图像shape不同时,先验框的数量也会发生改变。
先验框虽然可以代表一定的框的位置信息与框的大小信息,但是其是有限的,无法表示任意情况,因此还需要调整。
9 x 4中的9表示了这个网格点所包含的先验框数量,其中的4表示了框的中心与长宽的调整情况。
 
在ROIPooling 层对所有的feature maps 进行池化,使其所有的size大小一样
将CNN中得来的特征映射输入到Faster RCNN中,然后将其传递到Region Proposal Network中。RPN会在这些特征映射上使用一个滑动窗口( 最后一个卷积层上的滑动窗口,每个窗口会生成具有不同形状和尺寸的 k个固定尺寸的边界框
对于每个边界框,RPN都会预测2点:
  • 首先边界框就是目标物体的概率(不考虑类别)
  • 第二个就是边界框经过调整能更合适目标物体的边界框回归量
现在我们有了不同形状、尺寸的边界框,将它们传递到Rol池化层中。经过RPN的处理,proposals可能没有所述的类别
我们可以对每个proposal进行切割,让它们都含有目标物体。这就是Rol池化层的作用。它为每个anchor提取固定尺寸的特征映射
特征映射会传递到完全连接层,对目标进行分类并预测边界框
 
Faster RCNN的问题:
所有目标检测算法都用区域来辨别目标物体, 络并非一次性浏览所有图像,而是关注图像的多个部分。
  • 算法需要让图像经过多个步骤才能提取出所有目标
  • 由于有多个步骤嵌套,系统的表现常常取决于前面步骤的表现水平
基础目标检测算法CNN、RCNN、Fast RCNN、Faster RCNN
 
R-CNN(Selective Search + CNN + SVM)
SPP-net(ROI Pooling)
Fast R-CNN(Selective Search + CNN + ROI)
Faster R-CNN(RPN + CNN + ROI)