基于深度学习的目标检测算法——one stage & two stage

前言

🌺什么是目标检测呢?
目标检测(objection detection)是计算机视觉(cv)的一个分支,在图像分类任务中,我们往往假设图像中只有一个主题目标,这时我们关注的是如何识别这个目标的类别,然而很多时候,一张图像中会有多个我们感兴趣的目标,我们想同时知道这些目标的类别以及他们所在的位置,在cv中,我们将这类任务称为目标检测或者物体检测

在这里插入图片描述

1、two stage算法

two stage检测算法先由算法生成一系列候选框,然后再通过卷积神经网络对候选区域进行分类,相比于one stage算法在检测准确率和定位精度上占优势

R -CNN

论文 Rich feature hierarchies for accurate object detection and semantic segmentation的发表是CNN进入目标检测的里程碑
从图中可以看出,R-CNN将检测抽象为两个过程,一是基于图片提取出若干可能包含物体的区域(即图片的局部裁剪,被称为Region Proposal),文中使用的是Selective Search算法;二是在提出的这些区域上运行当时表现最好的分类网络(AlexNet),从而得到每个区域内物体的类别

R-CNN算法可分为4个基本步骤:

  • 输入图像,用selective search算法在图像中提取2000个左右的region proposal(侯选框),并把所有region proposal warp(缩放)成固定大小(原文采用227×227)
  • 将归一化后的region proposal输入CNN网络,提取特征
  • 对于每个region proposal提取到的CNN特征,再用SVM分类来做识别,用线性回归来微调边框位置与大小,其中每个类别单独训练一个边框回归(bounding-box regression)器。

R-CNN的算法很简单,但模型本身也存在不少问题,比如需要训练三个不同的模型(proposal, classification, regression)、多个候选区域对应的图像需要预先提取占用较大的磁盘空间、重复计算过多导致的性能问题…

SPP-Net

在R-CNN算法中,卷积神经网络对每一个生成的候选框都要进行特征提取,造成了大量的特征重复提取运算,而SPP-Net的出现,正好解决了这个问题,SPP-Net算法在卷积层和全连接层之间加入了空间金字塔池化结构(Spatial Pyramid Pooling),代替R-CNN算法在输入卷积神经网络前对各个候选区域进行裁剪、缩放使得候选区域归一化为统一尺寸的做法,很好的解决了卷积神经网络对图像重复进行特征提取的问题,极大提高了产生候选框的速度

Fast R-CNN

Fast R-CNN在R-CNN的基础上,借鉴了SPP-Net的算法结构。它只对整个图像做一次CNN特征提取,设计了一种ROL pooling的池化层结构,有效解决了R-CNN算法必须将图像区域裁剪、缩放到相同尺寸大小的操作。同时提出多任务损失函数思想,将分类损失和边框回归损失结合统一训练学习,并输出对应分类和边框坐标,不再需要额外的硬盘空间来存储中间层的特征,梯度能够通过 RoI Pooling 层直接传播。但是其仍然没有摆脱选择性搜索算法生成正负样本候选框的问题。

这里说一下Fast R-CNN的主要步骤:

  • 特征提取:以整张图片为输入,利用CNN得到图片的特征层
  • region proposal:通过Selective Search等方法从原始图片提取区域候选框,并把这些候选框投影到最后的特征层
  • 区域归一化:针对特征层上的每个区域候选框进行RoI Pooling操作,得到固定大小的特征表示
  • 分类与回归:然后再通过两个全连接层,分别用比SVM性能更好的softmax分类器做多目标分类,用回归模型进行边框位置与大小微调

Faster R-CNN

Faster R-CNN的提出是为了解决Fast R-CNN费时的选择性搜索问题,在Fast R-CNN中,使用选择性搜索找出所有的候选框,这个过程是很耗时的。而Faster R-CNN的最大贡献就是设计出了提取候选区域的RPN网络,取代了费时的选择性搜索,将候选框提取合并到深度网络中,从而使得检测速度大幅度提高。具体做法是:将RPN放在最后一个卷积层的后面;RPN直接训练得到候选区域。RPN网络的特点在于通过滑动窗口的方式实现候选框的提取,在feature map上滑动窗口,每个滑动窗口位置生成9个候选窗口(不同尺度、不同宽高),提取对应9个候选窗口(anchor)的特征,用于目标分类和边框回归,与Fast R-CNN类似。 目标分类只需要区分候选框内特征为前景或者背景,边框回归确定更精确的目标位置。

Faster R-CNN算法的一般步骤:

  • 对整张图片输进CNN,得到feature map
  • 卷积特征输入到RPN,得到候选框的特征信息
  • 对候选框中提取出的特征,使用分类器判别是否属于一个特定类
  • 对于属于某一特征的候选框,用回归器进一步调整其位置

2、one stage算法

one stage 检测算法不需要产生 region proposal (候选框),直接将目标边框定位的问题转化为回归问题进行处理,为彻底端到端(End-to-End)的目标检测方法,相比于two stage在算法速度上占优势

YOLO

2015 年华盛顿大学的 Joseph Redmon 等提出的 YOLO 算法速度能达到每秒 45 帧,由于其速度优势迅速成为端到端方法的领先者。YOLO 算法是基于图像的全局信息进行预测的,整体结构简单,通过将输入图像重整到 448×448 像素固定尺寸大小,并划分图像为 7×7 网格区域,通过卷积神经网络提取特征训练,直接预测每个网格内的边框坐标和每个类别置信度,训练时采用 P-Relu 激活函数。但是存在定位不准以及召回率不如基于区域提名方法的问题,且对距离很近的物体和很小的物体检测效果不好,泛化能力相对较弱。

上面是YOLO的网络结构图,主要是最后两层的结构,卷积层之后接了一个4096维的全连接层,然后后边又全连接到一个7730维的张量上。实际上这7x7就是划分的网格数,现在要在每个网格上预测目标两个可能的位置以及这个位置的目标置信度和类别,也就是每个网格预测两个目标,每个目标的信息有4维坐标信息(中心点坐标+长宽),1个是目标的置信度,还有类别数20(VOC上20个类别),总共就是(4+1)x2+20 = 30维的向量。这样可以利用前边4096维的全图特征直接在每个网格上回归出目标检测需要的信息(边框+类别信息)。

SSD

针对 YOLO 类算法的定位精度问题,2016 年 12 月北卡大学教堂山分校的 Wei Liu 等提出 SSD 算法,将 YOLO
的回归思想和 Faster R-CNN 的 anchor box 机制结合。通过在不同卷积层的特征图上预测物体区域,输出离散化的多尺度、多比例的 default boxes 坐标,同时利用小卷积核预测一系列候选框的边框坐标补偿和每个类别的置信度。在整幅图像上各个位置用多尺度区域的局部特征图边框回归,保持 YOLO 算法快速特性的同时,也保证了边框定位效果和 Faster R-CNN 类似。但因其利用多层次特征分类,导致其对于小目标检测困难,最后一个卷积层的感受野范围很大,使得小目标特征不明显。

上述文章为个人学习笔记,欢迎大家批评指正

参考文章:https://blog.csdn.net/daodanxiansheng/article/details/83340773

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值