目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼

目标检测从两阶段R-CNN系列到单阶段YOLO系列

  • 1. 两阶段之R-CNN
    • 1.1 算法基本流程
    • 1.2 训练过程中的微调
    • 1.3 边界回归
    • 1.4 R-CNN问题
  • 2. 两阶段之SPP-Net
    • 2.1 原图只一次CNN全图特征
    • 2.2 空间金字塔池化SPP
  • 3. 两阶段之Fast R-CNN
  • 4. 两阶段之Faster R-CNN
  • 5. 单阶段之YOLO-v1
  • 6. 单阶段之YOLO-v2
    • 6.1 yolo-v2 特点
    • 6.2 yolo-v2 表现
    • 6.3 yolo-v2 网络结构
  • 7. 单阶段之YOLO-v3
    • 7.1 特点优化

基于神经网络的目标检测方法,可以分为两类:
1)两阶段目标检测

  • R-CNN
  • SPP-Net
  • Fast R-CNN
  • Faster R-CNN
  • R-FCN
  • Mask R-CNN等

2)单阶段目标检测

  • SSD
  • YOLO
  • RetinaNet
  • RefineDet 等

1. 两阶段之R-CNN

1.1 算法基本流程

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第1张图片
如上图所示,R-CNN这个物体检查系统可以大致分为四步进行:
1).获取输入图像
2).使用selective search的提取约2000个候选区域
3).将候选区域调整为统一尺寸227x227,分别输入CNN网络 AlexNet中,提取特征
4).将CNN的输出输入SVM中进行类别的判定
5).使用区域特征训练线性回归器,对区域未知进行调整。

1.2 训练过程中的微调

CNN的输出由1000个神经元分类层–> 随机初始化N+1个神经元分类层。N–类别个数,1–背景。论文中N=20

1.3 边界回归

减小目标定位误差。一个线性回归模型预测一个新的目标边界框的位置。

1.4 R-CNN问题

  • 计算量大
    2000个候选区域边界框,都需要进行CNN特征提取和SVM训练分类,计算量极大;所以R-CNN的检测速度非常慢。
  • 提取区域质量不好
    selective search提取的区域质量不好。
  • 训练时间长
    特征提取和SVM分类器是分模块独立训练,没有进行联合系统优化,训练耗时长。

2. 两阶段之SPP-Net

众所周知,CNN的全连接层需要固定大小的输入;所以当输入数据的尺寸不满足需求时,就需要对输入数据进行特殊处理,比如Cropping或者Warping方法。

  • crop
    从一个大图中选取需求大小的patch,比如227×227
  • warp
    把一个边界框bounding box的内容大小通过拉伸或者缩放成227×227。

然而,这两种方法也有缺点。cropped region 有可能包含不了整个目标;warped内容可能导致不想要的几何扭曲。
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第2张图片
对此,SPP-Net作者提出在卷积层和全连接层间,加入某种结构,使其这种结构的输出符合全连接层的需求大小尺寸。而这种结构就是SPP-Net。其中SPP是Spatial Pyramid Pooling空间金字塔池化的简称。

2.1 原图只一次CNN全图特征

与R-CNN形成明显对比,为了高效;SPP Net
1)只对原图进行一次卷积计算,得到整幅图像的特征图
2)在特征图的对应区域找到每个候选边界框的映射区域
3)将此区域作为每个候选边界框的卷积特征输入到SPP层和后面的层

2.2 空间金字塔池化SPP

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第3张图片
从图中看,SPP Net结构中加入了ROI池化层(ROI Pooling),使得网络的输入图像可以是任意尺寸的,但是输出不变,保持一个固定维数的向量。
在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出则是固定维数的向量,然后输入给全连接层。

3. 两阶段之Fast R-CNN

作者基于R-CNN和SPP-Net,为了简化R-CNN的计算复杂度,提出了Fast R-CNN:
1)使用与SPP Net的SPP层类似的ROI Pooling layer
文章中,感兴趣区域池化层是SPP空间金字塔池化层的简化版,只有一层。使用最大池化的方法将ROI转换成固定大小的HW的特征图(比如77)。
2)目标分类和边界框回归合并
目标分类和边界框回归合并成一个多任务模型放到神经网络内部;同时,可以共享CNN卷积特征。用softmax+regression 代替svm+regression。

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第4张图片
以下是Faster R-CNN和Fast R-CNN的异同之处,盗用百度,见谅!!!
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第5张图片

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第6张图片

4. 两阶段之Faster R-CNN

Fast R-CNN虽然在速度和精度上有了显著的提升,但是需要额外消耗时间使用外部算法来找出所有的候选框。
因此,Shaoqing Ren和Kaiming He等人,又提出了Faster R-CNN,将提取目标候选框的工作整合到神经网络中。

文章引入Region Proposal Network(RPN)替代Selective Search,并且引入anchor box应对目标形状的变化问题(anchor就是位置和大小固定的box,可以理解成事先设置好的固定的proposal)。

作为Fast R-CNN的升级版,可将Faster R-CNN看成是RPN+Fast R-CNN,并且RPN和Fast R-CNN共享一部分卷积。基本步骤:将图像送入Faster R-CNN检测;图像经过卷积层conv layer,得到特征图;特征图送入RPN中,得到候选框;候选框和特征图一起进入感兴趣区域池化层;最后得出分类结果

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第7张图片
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第8张图片

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第9张图片

5. 单阶段之YOLO-v1

双阶段的各种经典模型,检测速度越来越快;但是仍然不能满足实时检测的需求。于是各种单阶段目标检测方法应运而生。
YOLO是最早出现的单阶段目标检测方法,也是第一个实现了实时目标检测方法。
1)主题思想
整张图作为网络的输入,直接在图像的多个位置上回归出这个位置的边界框,以及目标所属的类别。
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第10张图片
2)流程图

  • 给定一张输入图像,将图像分成S*S的网格
  • 每个网格单元预测B个边界框以及这些边界框的置信度分数
  • 根据阈值去除可能性比较低的目标窗口,最后非极大值抑制NMS去除冗余窗口

目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第11张图片
3)置信度

  • we define confidence as Pr(Object) ∗ IoU (预测边界框和真值边界框的IoU)
  • Each bounding box consists of 5 predictions: x, y, w, h, and confidence;The (x; y) coordinates represent the center of the box relative to the bounds of the grid cell
  • Each grid cell also predicts C conditional class probabilities, Pr(Classi | Object).
  • class-specific confidence scores for each box
    在这里插入图片描述

For evaluating YOLO on PASCAL VOC, we use S = 7, B = 2. PASCAL VOC has 20 labelled classes so C = 20.
Our final prediction is a 7 × 7 × 30 tensor.

4) 网络结构

24个卷积层和2个全连接层;使用基于GoogleNet架构的自定义网络DarkNet作为基础网络。
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第12张图片

6. 单阶段之YOLO-v2

基于YOLO-v1的一些缺点(大量定位误差和较低的召回率Error analysis of YOLO compared to Fast R-CNN shows that YOLO makes a significant number of localization errors. Furthermore, YOLO has relatively low recall compared to region proposal-based methods),YOLO作者又提出了v2版本。

6.1 yolo-v2 特点

有如下特点:
1)提高召回率和改进定位,同时保持分类准确性。( Thus we focus mainly on improving recall and
localization while maintaining classification accuracy.)
2)批标准化Batch Normalization操作;移除dropout。(By adding batch normalization on all of the convolutional layers in YOLO we get more than 2% improvement in mAP. Batch normalization also helps regularize the model. With batch normalization we can remove dropout from the model without overfitting)。全卷积网络结构 Conv+Batch Norm
3)引入anchor boxes预测边界框,去掉全连接层。(We remove the fully connected layers from YOLO and use anchor boxes to predict bounding boxes)。K-Means聚类Anchor

6.2 yolo-v2 表现

加入新的策略后,有如下表现:
1)Batch Normalization。mAP提高了2%
2)anchor boxes。预测边界框数量超过1000个;尽管mAP略有下降,但是召回率上升了。

6.3 yolo-v2 网络结构

使用DarkNet-19分类网络:19个卷积层和5个最大池化层。
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第13张图片

7. 单阶段之YOLO-v3

7.1 特点优化

  • 骨干网络 DarkNet53
  • 多尺度预测,跨尺度特征融合
  • COCO数据集聚类9中不同尺度Anchor
  • 分类使用sigmoid激活,支持目标多分类

速度快;320*320 28.2mAP情况下,22ms,即1秒50帧左右。
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第14张图片
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第15张图片
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第16张图片
目标检测从两阶段R-CNN系列到单阶段YOLO系列精炼_第17张图片

学习到这里,明天继续

你可能感兴趣的:(目标检测)