从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

这篇具有很好参考价值的文章主要介绍了从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

R-CNN

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

 R-CNN由Ross Girshick于2014年提出,R-CNN首先通过选择性搜索算法Selective Search从一组对象候选框中选择可能出现的对象框,然后将这些选择出来的对象框中的图像resize到某一固定尺寸的图像,并喂入到CNN模型(经过在ImageNet数据集上训练过的CNN模型,如AlexNet)提取特征,最后将提取出的特征送入到SVM分类器来预测该对象框中的图像是否存在待检测目标,并进一步预测该检测目标具体属于哪一类。

虽然R-CNN算法取得了很大进展,但缺点也很明显:重叠框(一张图片大2000多个候选框)特征的冗余计算使得整个网络的检测速度变得很慢(使用GPU的情况下检测一张图片大约需要14S)。

为了减少大量重叠框带来的冗余计算,K.He等人提出了SPPNet

SPPNet

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

SPPNet 提出了一种空间金字塔池化层(Spatial Pyramid Pooling Layer, SPP)。它的主要思路是对于一副图像分成若干尺度的图像块(比如一副图像分成1份,4份,8份等),然后对每一块提取的特征融合在一起,从而兼顾多个尺度的特征。SPP使得网络在全连接层之前能生成固定尺度的特征表示,而不管输入图片尺寸如何。当使用SPPNet网络用于目标检测时,整个图像只需计算一次即可生成相应特征图,不管候选框尺寸如何,经过SPP之后,都能生成固定尺寸的特征表示图,这避免了卷积特征图的重复计算。

相比于RCNN算法,SPPNet在Pascal-07数据集上不牺牲检测精度(VOC-07, MAP=59.2%)的情况下,推理速度提高了20多倍。
和RCNN一样,SPP也需要训练CNN提取特征,然后训练SVM分类这些特征,这需要巨大的存储空间,并且多阶段训练的流程也很繁杂。除此之外,SPPNet只对全连接层进行微调,而忽略了网络其它层的参数。

为了解决以上存在的一些不足,2015年R.Girshick等人提出Fast RCNN

Fast RCNN

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

Fast RCNN 网络是RCNN和SPPNet的改进版,该网络使得我们可以在相同的网络配置下同时训练一个检测器和边框回归器。该网络首先输入图像,图像被传递到CNN中提取特征,并返回感兴趣的区域RO1,之后再RO1上运用RO池化层以保证每个区域的尺寸相同,最后这些区域的特征被传递到全连接层的网络中进行分类,并用Softmaxi和线性回归层同时返回边界框。

Fast RCNN 在VOC-07数据集上将检测精度MAP从58.5%提高到70.0%,检测速度比RCNN提高了200倍。

Fast RCNN 仍然选用选择性搜索算法来寻找感兴趣的区域,这一过程通常较慢,与RCNN不同的是,Fast RCNN处理一张图片大约需要2秒,但是在大型真实数据集上,这种速度仍然不够理想。那么问题来了:“我们可以使用CNN模型来直接生成候选框吗?",基于此,Faster RCNN的提出完美回答这一问题。

Faster RCNN

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

Faster RCNN 是第一个端到端,最接近于实时性能的深度学习检测算法,该网络的主要创新点就是提出了区域选择网络用于生成候选框,能极大提升检测框的生成速度。该网络首先输入图像到卷积网络中,生成该图像的特征映射。在特征映射上应用Region Poposal Network,返回object proposals和相应分数。应用Rol池化层,将所有proposals修正到同样尺寸。最后,将proposals传递到完全连接层,生成目标物体的边界框。

虽然Faster RCNN的精度更高,速度更快,也非常接近于实时性能,但它在后续的检测阶段中仍存在一些计算冗余;除此之外,如果IOU阈值设置的低,会引起噪声检测的问题,如果IOU设置的高,则会引起过拟合。

YOLOV1

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

网络架构

将输入的图像分为S*S的格子,对于每个格子为中心给出两个先验框,对于置信度高的格子(即位于物体中心的格子)通过回归任务将两个先验框调整至合适的大小,然后选择IOU指标较大的框作为预测结果。

  • 网络输入:448×448×3的彩色图片
  • 隐藏层:由若干卷积层和池化层组成,用于提取图片的抽象特征
  • 全连接层:由两个全连接层组成,用来预测目标的位置和类别概率值
  • 网络输出:得到7×7×30的预测结果

注:关于 7×7×30的预测结果,是指将图像分为7*7的网格,同时在30中,1~5代表第一个先验框的(x,y,w,h)以及置信度c,6~10代表第二个先验框,11~30代表对应20个类别的预测概率。

总的来说,将网格数量定义为S*S,定义B个先验框,预测C个类别,那么输出结果即为S×S×(5×B+C)的矩阵向量

损失计算

损失函数主要分为三部分:坐标预测损失置信度预测损失类别预测损失

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

坐标损失:

坐标损失也分为两部分,坐标中心误差和位置宽高的误差,可以看到,对于中心点的损失直接用了均方误差,但是对于宽高为什么用了平方根呢?这里是这样的,我们先来看下图:

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

上图中,蓝色为bounding box,红色框为真实标注,如果W和h没有平方根的话,那么bounding box跟两个真实标注的位置loss是相同的。但是从面积看来B框是A框的25倍,C框是B框的81/25倍。B框跟A框的大小偏差更大,所以不应该有相同的loss。

如果W和h加上平方根,那么B对A的位置loss约为3.06,B对C的位置loss约为1.17,B对A的位置loss的值更大,这更加符合我们的实际判断。所以,算法对位置损失中的宽高损失加上了平方根。而公式中的 为位置损失的权重系数,在pascal VOC训练中取5。

置信度损失:

置信度也分成了两部分,一部分是包含物体时置信度的损失,一个是不包含物体时置信度的值。

其中前一项表示有无人工标记的物体落入网格内,如果有,则为1,否则为0.第二项代表预测框bounding box和真实标记的box之间的IoU。值越大则box越接近真实位置。

confidence是针对预测框bounding box的,由于每个网格有两个bounding box,所以每个网格会有两个confidence与之相对应。

从损失函数上看,当网格i中的第j个预测框包含物体的时候,用上面的置信度损失,而不包含物体的时候,用下面的损失函数。对没有物体的预测框的置信度损失,赋予小的loss weight, 记为在pascal VOC训练中 取0.5。所有物体的预测框的置信度损失和类别的loss的loss weight正常取1。

类别损失:

类别损失这里也用了均方误差。其中 表示有无物体的中心点落到网格i中,如果网格中包含有物体object的中心的话,那么就负责预测该object的概率。

特点

优点:

  1. 检测速度非常快,标准版本的YOLO可以每秒处理 45 张图像;YOLO的极速版本每秒可以处理150帧图像。这就意味着 YOLO 可以以小于 25 毫秒延迟,实时地处理视频。对于欠实时系统,在准确率保证的情况下,YOLO速度快于其他方法。
  2. 实时检测的平均精度是其他实时监测系统的两倍。
  3. 迁移能力强,能运用到其他的新的领域(比如艺术品目标检测)。

缺点:

  1. 对相互靠近的物体,以及很小的群体检测效果不好,这是因为一个网格只预测了2个框,并且都只属于同一类。
  2. 由于损失函数的问题,定位误差是影响检测效果的主要原因,尤其是大小物体的处理上,还有待加强。(因为对于小的bounding boxes,small error影响更大)。
  3. 对不常见的角度的目标泛化性能偏弱。

YOLOV2

YOLOv2采用Darknet-19 作为特征提取网络,Darknet-19 的整体结构如下:

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

 Darknet-19

  1. 与VGG相似,使用了很多3×3卷积核;并且每一次池化后,下一层的卷积核的通道数 = 池化输出的通道 × 2。
  2. 在每一层卷积后,都增加了批量标准化(Batch Normalization)进行预处理。
  3. 采用了降维的思想,把1×1的卷积置于3×3之间,用来压缩特征
  4. 在网络最后的输出增加了一个全局平均池化(global average pooling)层。
  5. 整体上采用了19个卷积层,5个池化层。
Darknet-19 与 YOLOv1、VGG16网络对比
VGG-16 YOLOv1 Darknet-19
大多数检测网络框架都是以VGG-16作为基础特征提取器,它功能强大,准确率高,但是计算复杂度较大,所以速度会相对较慢。因此YOLOv2的网络结构将从这方面进行改进。 基于GoogLeNet的自定义网络(具体看上周报告),比VGG-16的速度快,但是精度稍不如VGG-16。 速度方面,处理一张图片仅需要55.8亿次运算,相比于VGG306.9亿次,速度快了近6倍。精度方面,在ImageNet上的测试精度为:top1准确率为72.9%,top5准确率为91.2%。

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述YOLO v2使用DarkNet19作为特征提取网络,该网络比YOLO v2所使用的VGG-16要更快。

特点

1、在卷积或池化之后,激活函数之前,对每个数据输出进行标准化。

Batch Normalization 简称 BN ,意思是批量标准化。2015年由 Google 研究员在论文《Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift》中提出。

BN 对数据进行预处理(统一格式、均衡化、去噪等)能够大大提高训练速度,提升训练效果。基于此,YOLOv2 对每一层输入的数据都进行批量标准化,这样网络就不需要每层都去学数据的分布,收敛会变得更快。

2、引入 Anchor Box 机制:在YOLOv1中是直接对边界框的位置(x, y, w, h)进行预测,这会导致网络在前期训练时非常困难,很难收敛。YOLOv2引入了 Anchors box 机制,希望通过提前筛选得到的具有代表性先验框Anchors,使得网络在训练时更容易收敛。

3、Convolution With Anchor Boxes:YOLOv1 有一个致命的缺陷就是:一张图片被分成7×7的网格,一个网格只能预测一个类,当一个网格中同时出现多个类时,就无法检测出所有类。针对这个问题,YOLOv2做出了相应的改进:

  • 将YOLOv1网络的FC层和最后一个Pooling层去掉,使得最后的卷积层的输出可以有更高的分辨率特征。
  • 缩减网络,用416×416大小的输入代替原来的448×448,使得网络输出的特征图有奇数大小的宽和高,进而使得每个特征图在划分单元格的时候只有一个中心单元格(Center Cell)。YOLOv2通过5个Pooling层进行下采样,得到的输出是13×13的像素特征。
  • 借鉴Faster R-CNN,YOLOv2通过引入Anchor Boxes,预测Anchor Box的偏移值与置信度,而不是直接预测坐标值。
  • 采用Faster R-CNN中的方式,每个Cell可预测出9个Anchor Box,共13×13×9=1521个(YOLOv2确定Anchor Boxes的方法见是维度聚类,每个Cell选择5个Anchor Box)。比YOLOv1预测的98个bounding box 要多很多,因此在定位精度方面有较好的改善。

4、使用聚类方法选择Anchors:YOLOv2 使用 K-means 聚类方法得到 Anchor Box 的大小,选择具有代表性的尺寸的Anchor Box进行一开始的初始化。

5、Fine-Grained Features:细粒度特征,可理解为不同层之间的特征融合。YOLOv2通过添加一个Passthrough Layer,把高分辨率的浅层特征连接到低分辨率的深层特征(把特征堆积在不同Channel中)而后进行融合和检测,以此来提高对小目标的检测能力。

6、【不足】YOLO v2算法只有一条检测分支,且该网络缺乏对多尺度上下文信息的捕获,所
对于不同尺寸的目标检测效果依然较差,尤其是对于小目标检测问题。

YOLOV3

YOLOv3 借助残差网络的思想,YOLOv3 将原来的 darknet-19 改进为darknet-53。其中darknet-53主要由1×1和3×3的卷积层组成,每个卷积层之后包含一个批量归一化层和一个Leaky ReLU,加入这两个部分的目的是为了防止过拟合。卷积层、批量归一化层以及Leaky ReLU共同组成Darknet-53中的基本卷积单元DBL。因为在Darknet-53中共包含53个这样的DBL,所以称其为Darknet-53。

与darknet-19对比可知,darknet-53主要做了如下改进:

  • 没有采用最大池化层,转而采用步长为2的卷积层进行下采样。
  • 为了防止过拟合,在每个卷积层之后加入了一个BN层和一个Leaky ReLU。
  • 引入了残差网络的思想,目的是为了让网络可以提取到更深层的特征,同时避免出现梯度消失或爆炸。
  • 将网络的中间层和后面某一层的上采样进行张量拼接,达到多尺度特征融合的目的。

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

结构特点

  1. 为了能够预测多尺度的目标,YOLOv3 选择了三种不同shape的Anchors,同时每种Anchors具有三种不同的尺度,一共9种不同大小的Anchors。借鉴特征金字塔网的思想,YOLOv3设计了3种不同尺度的网络输出Y1、Y2、Y3,目的是预测不同尺度的目标。由于在每一个尺度网格都负责预测3个边界框,且COCO数据集有80个类。所以网络输出的张量应该是:N ×N ×[3∗(4 + 1 + 80)]。由下采样次数不同,得到的N不同,最终Y1、Y2、Y3的shape分别为:[13, 13, 255]、[26, 26, 255]、[52, 52, 255]。
  2. YOLOv3 对比YOLOv1中的损失函数可以知道:位置损失部分并没有改变,仍然采用的是sum-square error的损失计算方法。但是置信度损失和类别预测均由原来的sum-square error改为了交叉熵的损失计算方法
  3. YOLOv3在类别预测方面将YOLOv2的单标签分类改进为多标签分类,在网络结构中将YOLOv2中用于分类的softmax层修改为逻辑分类器。为实现多标签分类就需要用逻辑分类器来对每个类别都进行二分类。逻辑分类器主要用到了sigmoid函数,它可以把输出约束在0到1,如果某一特征图的输出经过该函数处理后的值大于设定阈值,那么就认定该目标框所对应的目标属于该类。
  4. 【不足】YOLOv3采用MSE作为边框回归损失函数,这使得YOLO v3对目标的定位并不
    精准,之后出现的IOU,G1OU,D1OU和COU等一系列边框回归损失大大改善了YOLOv3。

YOLOV4

YOLOV4组成结构 CSPDarknet53(主干网络)

将原来的Darknet53与CSPNet进行结合。

使用MIsh激活函数代替了原来的Leaky ReLU。

SPP附加模块(颈) SPP来源于这篇论文:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition,在YOLOv4中,作者引入SPP,是因为它显著地增加了感受野,分离出了最重要的上下文特征,并且几乎不会降低的YOLOv4运行速度。
 PANet路径聚合(颈) 使用PANet代替YOLOv3中的FPN作为参数聚合的方法,针对不同的检测器级别从不同的主干层进行参数聚合。并且对原PANet方法进行了修改, 使用张量连接(concat)代替了原来的捷径连接(shortcut connection)。
 YOLOv3(检测头) 继承了YOLOv3的Head进行多尺度预测,提高了对不同size目标的检测性能。

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

YOLO v4在输入端,引入了Mosaic数据增强、cmBN、SAT自对抗训练

特点

与其它先进的检测器相比,对于同样的精度,YOLOv4更快(FPS);对于同样的速度,YOLOv4更准(AP)。
YOLOv4能在普通的GPU上训练和使用,比如GTX 1080Ti和GTX 2080Ti等。
论文中总结了各种Tricks(包括各种BoF和BoS),给我们启示,选择合适的Tricks来提高自己的检测器性能。

YOLOV5

YOLOv5官方代码中,一共给出了5个版本,分别是 YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLO5x 五个模型。

从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述

Yolov5s网络是Yolov5系列中深度最小,特征图的宽度最小的网络。后面的3种都是在此基础上不断加深,不断加宽。YOLOv5s 和YOLOv4一样,对输入的图像进行Mosaic数据增强

骨干网路部分主要采用的是:Focus结构、CSP结构。其中 Focus 结构在YOLOv1-YOLOv4中没有引入,作者将 Focus 结构引入了YOLOv5,用于直接处理输入的图片。

网络的颈部,采用的是:FPN+PAN结构,进行丰富的特征融合,这一部分和YOLOv4的结构相同。

对于网络的输出,遵循YOLO系列的一贯做法,采用的是耦合的Head。并且和YOLOv3、YOLOv4类似,采用了三个不同的输出Head,进行多尺度预测。

Yolov5的作者将获取数据集的最佳anchors这一步骤嵌入到整体代码中,每次训练时,自适应的计算不同训练集中的最佳锚框值

YOLOv5为了避免将原图直接resize成统一大小,造成目标变形,采用了灰度填充的方式统一输入尺寸。

YOLOv5定位部分的损失函数使用了GIOU函数。

参考文献

YOLO系列算法精讲:从yolov1至yolov5的进阶之路(2万字超全整理)

R-CNN系列算法精讲:R-CNN —》Fast R-CNN —》Faster R-CNN 进阶之路

YOLO-YOLOV5算法原理及网络结构整理文章来源地址https://www.toymoban.com/news/detail-451140.html

到了这里,关于从R-CNN到Faster-RCNN再到YOLOV5,目标检测网络发展概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 目标检测算法:Faster-RCNN论文解读

    前言 ​ 其实网上已经有很多很好的解读各种论文的文章了,但是我决定自己也写一写,当然,我的主要目的就是帮助自己梳理、深入理解论文,因为写文章,你必须把你所写的东西表达清楚而正确,我认为这是一种很好的锻炼,当然如果可以帮助到网友,也是很开心的事情

    2024年02月08日
    浏览(53)
  • 基于Pytorch构建Faster-RCNN网络进行目标检测(二)——预训练模型和预测

    CoCo的全称是Common Objects in Context,是微软团队提供的一个可以用来进行图像识别的数据集,包括检测、分割、关键点估计等任务,目前用的比较多的是Coco2017数据集。 Coco2017数据集是一个包含有大量图像和标注数据的开放数据集,它是微软公司在COCO项目基础上发展而来。这个

    2024年02月09日
    浏览(44)
  • 【目标检测】Faster R-CNN算法实现

    继2014年的R-CNN、2015年的Fast R-CNN后,2016年目标检测领域再次迎来Ross Girshick大佬的神作Faster R-CNN,一举解决了目标检测的实时性问题。相较于Fast R-CNN而言,Faster R-CNN主要改进措施包括: 区域建议网络(RPN):Faster R-CNN摒弃了选择性搜索,提出区域提议网络(Region Proposal Netwo

    2024年03月14日
    浏览(47)
  • 基于Faster R-CNN实现目标检测

    杨金鹏,男,西安工程大学电子信息学院,2022级研究生 研究方向:机器视觉与人工智能 电子邮件:1394026082@qq.com 路治东,男,西安工程大学电子信息学院,2022级研究生,张宏伟人工智能课题组 研究方向:机器视觉与人工智能 电子邮件:2063079527@qq.com Faster RCNN检测部分主要

    2024年02月07日
    浏览(62)
  • 探索常见经典目标检测算法:从YOLO到Faster R-CNN

    目标检测是计算机视觉领域中的重要任务之一,它旨在从图像或视频中检测出目标的位置和类别。随着深度学习技术的发展,许多经典的目标检测算法相继出现,其中包括YOLO(You Only Look Once)、Faster R-CNN(Region-based Convolutional Neural Networks)等。本文将深入介绍这些常见的目标

    2024年04月26日
    浏览(40)
  • 目标检测经典工作发展(超详细对比):R-CNN vs SPPNet vs Fast R-CNN vs Faster R-CNN

    网上关于两阶段目标检测(two-stage object detection)的几个经典工作R-CNN,SPPNet,Fast R-CNN,Faster R-CNN的发展,各自的优缺点缺乏一个比较清楚的描述,大部分文章讲的比较细节,虽然有助于更为详细地了解文章,但是让读者在短时间内对各个文章有一个详细的理解。本文主要对

    2024年02月09日
    浏览(62)
  • Faster-RCNN环境搭配及运行教程

    最近正在学习Faster-RCNN,环境历经一天时间终于成功安装,借此记录下整体安装过程 本教程是Windows 10 + Python35 + CUDA 10.0 + cudnn 7.4.1.5 + tensorflow-gpu 1.13.2环境的配置过程 所使用的软件包括 名称 版本 CUDA 10.0 CUDNN 7.4.1.5 Anaconda3 4.2.0 Pycharm 2019.3.5 整体过程中所需要的软件包我都放在

    2024年02月04日
    浏览(59)
  • 计算机视觉的应用4-目标检测任务:利用Faster R-cnn+Resnet50+FPN模型对目标进行预测

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用4-目标检测任务,利用Faster Rcnn+Resnet50+FPN模型对目标进行预测,目标检测是计算机视觉三大任务中应用较为广泛的,Faster R-CNN 是一个著名的目标检测网络,其主要分为两个模块:Region Proposal Network (RPN) 和 Fast R-CNN。我

    2024年02月05日
    浏览(55)
  • 【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)

    需要源码请点赞关注收藏后评论区留言私信~~~ 目标检测是计算机视觉和数字图像处理的一个热门方向,广泛应用于机器人导航、智能视频监控、工业检测、航空航天等诸多领域,通过计算机视觉减少对人力资本的消耗,具有重要的现实意义。因此,目标检测也就成为了近年来

    2024年02月08日
    浏览(52)
  • 目标检测C-RNN,Fast C-RNN,Faster C-RNN,SSD,Mask R-CNN 理论简单介绍

    参考: https://zh-v2.d2l.ai/chapter_computer-vision/multiscale-object-detection.html 区域卷积神经网络 region-based CNN R-CNN首先从输入图像中选取若干(例如2000个)提议区域,并标注它们的类别和边界框(如偏移量)。用卷积神经网络对每个提议区域进行前向传播以抽取其特征。 接下来,我们

    2024年03月14日
    浏览(83)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包