深度学习——目标检测(2)

前言:RCNN虽然能进行目标检测,但检测的精确度,尤其是速度方面太慢了,没秒才0.03帧。在RCNN基础上做了改进就有了FAST RCNN和FASTER RCNN

Fast-RCNN

Fast-RCNN主要贡献在于对RCNN进行加速。
在以下方面得到改进:
1 - 借鉴SSP思路,提出简化版的ROI池化层(注意,没用金字塔),同时加入了候选框映射功能,使得网络能够反向传播,解决了SPP的整体网络训练问题;

什么是ssp网络?

字面意思就是你可能听说过的“池化金字塔”。论文名字:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition

  • 先说目的:解决输入输出矩阵(feature map)大小不一样的问题:其他优点:由于把一个feature map从不同的角度进行特征提取,再聚合的特点,显示了算法的robust的特性。第三:同时也在object recongtion增加了精度。其实,你也可以这样想,最牛掰的地方是因为在卷积层的后面对每一张图片都进行了多方面的特征提取,他就可以提高任务的精度
    网络结构如下图:


    深度学习——目标检测(2)_第1张图片

    从下往上看,这是一个传统的网络架构模型,5层卷积层,这里的卷积层叫做convolution和pooling层的联合体,统一叫做卷积层,后面跟随全连接层。我们这里需要处理的就是在网络的全连接层前面加一层金字塔pooling层解决输入图片大小不一的情况。我们可以看到这里的spatital pyramid pooling layer就是把前一卷积层的feature maps的每一个图片上进行了3个卷积操作。最右边的就是原图像,中间的是把图像分成大小是4的特征图,最右边的就是把图像分成大小是16的特征图。那么每一个feature map就会变成16+4+1=21个feature maps。这不就解决了特征图大小不一的状况了吗?

2 - 多任务Loss层
A)SoftmaxLoss代替了SVM,证明了softmax比SVM更好的效果;
B)SmoothL1Loss取代Bouding box回归。
将分类和边框回归进行合并(又一个开创性的思路),通过多任务Loss层进一步整合深度网络,统一了训练过程,从而提高了算法准确度。

  • FAST RCNN框架图


    深度学习——目标检测(2)_第2张图片
  • 与R-CNN框架图对比,可以发现主要有两处不同:�
    一是最后一个卷积层后加了一个ROI pooling layer,ROI pooling layer实际上是SPP-NET的一个精简版�
    二是损失函数使用了多任务损失函数(multi-task loss),将边框回归直接加入到CNN网络中训练。�R-CNN训练过程分为了三个阶段,而Fast R-CNN直接使用softmax替代SVM分类,同时利用多任务损失函数边框回归也加入到了网络中,这样整个的训练过程是端到端的(除去region proposal提取阶段)。Fast R-CNN在网络微调的过程中,将部分卷积层也进行了微调,取得了更好的检测效果。�
    小结:Fast R-CNN融合了R-CNN和SPP-NET的精髓,并且引入多任务损失函数,使整个网络的训练和测试变得十分方便。�
    缺点:region proposal的提取使用selective search,目标检测时间大多消耗在这上面(提region proposal 2~3s,而提特征分类只需0.32s),无法满足实时应用,而且并没有实现真正意义上的端到端训练测试(region proposal使用selective search先提取处来)。

FASTER RCNN

这里完全实现了端对端的操作

  • 什么是端对端?
    就是从输入到输出的全过程都在深度学习网络中进行,这是一种美妙的趋势。
    在Fast R-CNN网络基础上引入RPN网络进行先验框的选取。其他一样,只是region proposal现在是用RPN网络提取的(代替原来的selective search)

RPN网络

RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上就是滑动窗口。RPN的设计比较巧妙,RPN只需在最后的卷积层上滑动一遍,因为anchor机制和边框回归可以得到多尺度多长宽比的region proposal。
RPN网络的特点在于通过滑动窗口的方式实现候选框的提取,每个滑动窗口位置生成9个候选窗口(不同尺度、不同宽高),提取对应9个候选窗口(anchor)的特征,用于目标分类和边框回归,与FastRCNN类似。目标分类只需要区分候选框内特征为前景或者背景。
边框回归确定更精确的目标位置,基本网络结构如下图所示:


深度学习——目标检测(2)_第3张图片

RPN网络也是全卷积网络(FCN,fully-convolutional network),可以针对生成检测建议框的任务端到端地训练,能够同时预测出object的边界和分数。只是在CNN上额外增加了2个卷积层(全卷积层cls和reg)。

①将每个特征图的位置编码成一个特征向量(256dfor ZF and 512d for VGG)。

②对每一个位置输出一个objectness score和regressedbounds for k个region proposal,即在每个卷积映射位置输出这个位置上多种尺度(3种)和长宽比(3种)的k个(3*3=9)区域建议的物体得分和回归边界。

RPN网络的输入可以是任意大小(但还是有最小分辨率要求的,例如VGG是228*228)的图片。如果用VGG16进行特征提取,那么RPN网络的组成形式可以表示为VGG16+RPN。

  • FASTER RCNN结构


    深度学习——目标检测(2)_第4张图片
  • FASTER RCNN过程
    训练过程中,涉及到的候选框选取,选取依据:
    1)丢弃跨越边界的anchor;
    2)与样本重叠区域大于0.7的anchor标记为前景,重叠区域小于0.3的标定为背景;
    对于每一个位置,通过两个全连接层(目标分类+边框回归)对每个候选框(anchor)进行判断,并且结合概率值进行舍弃(仅保留约300个anchor),没有显式地提取任何候选窗口,完全使用网络自身完成判断和修正。
    从模型训练的角度来看,通过使用共享特征交替训练的方式,达到接近实时的性能,交替训练方式描述为:
    1)根据现有网络初始化权值w,训练RPN;
    2)用RPN提取训练集上的候选区域,用候选区域训练FastRCNN,更新权值w;
    3)重复1、2,直到收敛。

RCNN网络的演进

深度学习——目标检测(2)_第5张图片
image.png

更多关于FASTER RCNN的理解,可以去看博客 https://blog.csdn.net/lk123400/article/details/54343550/

你可能感兴趣的:(深度学习——目标检测(2))