目标检测从两阶段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这个物体检查系统可以大致分为四步进行:
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内容可能导致不想要的几何扭曲。

对此,SPP-Net作者提出在卷积层和全连接层间,加入某种结构,使其这种结构的输出符合全连接层的需求大小尺寸。而这种结构就是SPP-Net。其中SPP是Spatial Pyramid Pooling空间金字塔池化的简称。

2.1 原图只一次CNN全图特征

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

2.2 空间金字塔池化SPP


从图中看,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。


以下是Faster R-CNN和Fast R-CNN的异同之处,盗用百度,见谅!!!

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中,得到候选框;候选框和特征图一起进入感兴趣区域池化层;最后得出分类结果


5. 单阶段之YOLO-v1

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

2)流程图

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


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作为基础网络。

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个最大池化层。

7. 单阶段之YOLO-v3

7.1 特点优化

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

速度快;320*320 28.2mAP情况下,22ms,即1秒50帧左右。



学习到这里,明天继续

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

  1. 目标检测模型设计准则 | YOLOv7参考的ELAN模型解读,YOLO系列模型思想的设计源头

    转载: https://mp.weixin.qq.com/s/5SjQvRqRct6ClpE2eEcdkw 设计高效.高质量的表达性网络架构一直是深度学习领域最重要的研究课题.当今的大多数网络设计策略 ...

  2. 目标检测网络(RCNN系列,SSD,Yolo系列)

    Table of Contents 深度学习相关的目标检测方法也可以大致分为两派 发展历程 基于区域提名的R-CNN家族对比总括 R-CNN(2014) SPP-Net Fast R-CNN(2015 ...

  3. 目标检测的评价指标P,R,mAP

    目标检测的评价指标P,R,mAP 1 基本概念 1.1 IOU(Intersection over Union) 1.2 TP TN FP FN 2. 各种率 2.1 根据IOU计算Precision ...

  4. 鸟巢目标检测图像数据集(1000多张高清原图;YOLO,VOC两类标签)

    下载地址: 鸟巢目标检测图像数据集(1000多张高清原图:YOLO,VOC两类标签,网盘下载链接)

  5. 目标检测综述——两阶段检测器

    文章目录 1.RCNN 2.SPPNet 3.Fast RCNN 4.Faster RCNN 5.Feature Pyramid Networks(FPN) 6.其他的变种 参考综述文章: 论文笔记- ...

  6. [转]一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/kwame211/article/details/88016151 一.目标检测常见算法 object ...

  7. 【自动驾驶-3D目标检测】3DSSD:基于点的3D单级目标检测器

    3DSSD:基于点的3D单级目标检测器2020^{2020}2020 摘要 目前,基于体素的3D单级检测器已经有很多种,而基于点的单级方法仍处于探索阶段.在本文中,我们首先提出了一种轻量级且有效的基于 ...

  8. 一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

    前言 之前我所在的公司七月在线开设的深度学习等一系列课程经常会讲目标检测,包括R-CNN.Fast R-CNN.Faster R-CNN,但一直没有比较好的机会深入(但当你对目标检测有个基本的了解之后 ...

  9. 目标检测之两阶段算法--Fast R-CNN详解

    论文题目:<Fast R-CNN> 论文地址:Fast R-CNN 1. 概述 之所以提出Fast R-CNN,主要是因为R-CNN存在以下几个问题:1.训练分多步.通过上一篇博文我们知道 ...

  10. 【目标检测】交通标识数据集CCTSDB标注处理(转YOLO)

    CSUST Chinese Traffic Sign Detection Benchmark 交通标识数据集转YOLO格式 # 0 warning # 1 mandatory # 2 prohibit ...

最新文章

  1. 转:【AI每日播报】从TensorFlow到Theano:横向对比七大深度学习框架
  2. 【干货】移动APP安全测试要点解析
  3. C#编写Windows服务程序图文教程
  4. 2021-01-22 Python TimedRotatingFileHandler 修改suffix后无法自动删除文件
  5. .Net Web开发技术栈
  6. ESP32 各种时钟参数值设置
  7. python程序设计典型例题-python 大题 典型
  8. ASP.NET 2.0 本地化功能:本地化 Web 应用程序的新方法
  9. java正式测试数据隔离,开发环境要不要和测试环境隔离?
  10. 利用python解析手机通讯录
  11. javasript |仿百度换肤效果
  12. python3中expected an indented block(缩进问题)
  13. Android Studio 常用快捷键(MAC)
  14. 微信小程序制作水印相机
  15. 本周最新文献速递20220327
  16. 新能源汽车——动力电池
  17. 电平触发,边沿触发,脉冲触发
  18. excel pandas 画图_pandas 进行excel绘图
  19. 计算机64和32位的区别是什么意思,Windows7 32位和64位的区别是什么?
  20. double freeing of freed memory

热门文章

  1. SqlServer 多服务器管理(MSSQL分布式作业管理)
  2. 最新YYC松鼠聚合直播系统源码/融和电商商城等
  3. MFC 显示对话框内鼠标单击点的坐标值
  4. c语言长 短整型有无符号,整型和短整型,有符号和无符号
  5. IAT HOOK、EAT HOOK和Inline Hook
  6. Centos安装Perl
  7. 手把手教学 玩转苹果HomeKit
  8. 金融工程python报告期权_金融工程专业详细解析
  9. 计算机参数怎么写,format命令的怎样写 format命令的格式和参数【详解】
  10. QFramework引入Utility和System