yolov5 yolov6 yolov7 yolov8 yolov9目标检测、目标分类 目标切割 性能对比

前言
本文详细介绍了从YOLOv1-YOLOv9的网络结构,以及各个版本之间的迭代。

在这里插入图片描述

YOLOv1-YOLOv8之间的对比如下表所示:

Model Anchor Input Backbone Neck Predict/ Train
YOLOv1 锚框(77grids,2 anchors)
resize(448
448*3):

训练是224224,测试是448448;

GoogLeNet(24Conv+2FC+reshape;Dropout防止过拟合;最后一层使用线性激活函数,其余层都使用ReLU激活函数); 无
IOU_Loss、nms;一个网格只预测了2个框,并且都属于同一类;全连接层直接预测bbox的坐标值;

YOLOv2 锚框(1313grids,5 anchors:通过k-means选择先验框) resize(4164163):416/32=13,最后得到的是奇数值有实际的中心点;在原训练的基础上又加上了(10个epoch)的448x448高分辨率样本进行微调; Darknet-19(19Conv+5MaxPool+AvgPool+Softmax;没有FC层,每一个卷积后都使用BN和ReLU防止过拟合(舍弃dropout);提出passthrough层:把高分辨率特征拆分叠加大到低分辨率特征中,进行特征融合,有利于小目标的检测); 无 IOU_Loss、nms;一个网络预测5个框,每个框都可以属于不同类;预测相对于anchor box的偏移量;多尺度训练(训练模型经过一定迭代后,输入图像尺寸变换)、联合训练机制;
YOLOv3 锚框(13
13grids,9 anchors:三种尺度三种宽高比) resize(6086083) Darknet-53(53Conv,每一个卷积层后都使用BN和Leaky ReLU防止过拟合,残差连接); FPN(多尺度检测,特征融合) IOU_Loss、nms;多标签预测(softmax分类函数更改为logistic分类器);
YOLOv4 锚框 resize(6086083)、Mosaic数据增强、SAT自对抗训练数据增强 CSPDarknet53(CSP模块:更丰富的梯度组合,同时减少计算量、跨小批量标准化(CmBN)和Mish激活、DropBlock正则化(随机删除一大块神经元)、采用改进SAM注意力机制:在空间位置上添加权重);
SPP(通过最大池化将不同尺寸的输入图像变得尺寸一致)、PANnet(修改PAN,add替换成concat)

CIOU_Loss、DIOU_nms;自对抗训练SAT:在原始图像的基础上,添加噪音并设置权重阈值让神经网络对自身进行对抗性攻击训练;类标签平滑:将绝对化标签进行平滑(如:[0,1]→[0.05,0.95]),即分类结果具有一定的模糊化,使得网络的抗过拟合能力增强;
YOLOv5 锚框 resize(6086083)、Mosaic数据增强、自适应锚框计算、自适应图片缩放 CSPDarknet53(CSP模块,每一个卷积层后都使用BN和Leaky ReLU防止过拟合,Focus模块); SPP、PAN
GIOU_Loss、DIOU_Nms;跨网格匹配(当前网格的上、下、左、右的四个网格中找到离目标中心点最近的两个网格,再加上当前网格共三个网格进行匹配);

YOLOX 无锚框 resize(6086083) Darknet-53 SPP、FPN
CIOU_Loss、DIOU_Nms、Decoupled Head、SimOTA标签分配策略;

YOLOv6 无锚框 resize(6406403) EfficientRep Backbone(Rep算子) SPP、Rep-PAN Neck SIOU_Loss、DIOU_Nms、Efficient Decoupled Head、SimOTA标签分配策略;
YOLOv7 锚框 resize(6406403) Darknet-53(CSP模块替换了ELAN模块;下采样变成MP2层;每一个卷积层后都使用BN和SiLU防止过拟合); SPP、PAN CIOU_Loss、DIOU_Nms、SimOTA标签分配策略、带辅助头的训练(通过增加训练成本,提升精度,同时不影响推理的时间);
YOLOv8 无锚框
resize(6406403)

Darknet-53(C3模块换成了C2F模块) SPP、PAN CIOU_Loss、DFL_Loss、DIOU_Nms、TAL标签分配策略、Decoupled Head;

一、YOLO算法的核心思想

YOLO系列的核心思想就是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。

1. YOLO系列算法的步骤

(1)划分图像:YOLO将输入图像划分为一个固定大小的网格。

(2)预测边界框和类别:对于每个网格,YOLO预测出固定数量(通常为5个或3个)

的边界框。每个边界框由5个主要属性描述:边界框的位置(中心坐标和宽高)和边界框包含的目标的置信度(confidence)。此外,每个边界框还预测目标的类别。

(3)单次前向传递:YOLO通过一个卷积神经网络(CNN)进行单次前向传递,同时预测所有边界框的位置和类别。相比于其他目标检测算法,如基于滑动窗口或区域提议的方法,YOLO具有更快的速度,因为它只需要一次前向传递即可完成预测。

(4)损失函数:YOLO使用多任务损失函数来训练网络。该损失函数包括位置损失、置信度损失和类别损失。位置损失衡量预测边界框和真实边界框之间的位置差异。置信度损失衡量边界框是否正确地预测了目标,并惩罚背景框的置信度。类别损失衡量目标类别的预测准确性。

(5)非最大抑制(Non-Maximum Suppression):在预测的边界框中,可能存在多个相互重叠的框,代表同一个目标。为了消除冗余的边界框,YOLO使用非最大抑制算法,根据置信度和重叠程度筛选出最佳的边界框。

2. Backbone、Neck和Head

物体检测器的结构开始被描述为三个部分:Backbone, Neck和Head。下图显示了一个高层次的Backbone, Neck 和 Head图。

在这里插入图片描述

Backbone负责从输入图像中提取有用的特征。它通常是一个卷积神经网络(CNN),在大规模的图像分类任务中训练,如IamgeNet。骨干网络在不同尺度上捕捉层次化的特征,在较早的层中提取低层次的特征(如边缘和纹理),在较深的层中提取高层次的特征(如物体部分和语义信息)。

Neck是连接Backbone和Head的一个中间部件。它聚集并细化骨干网提取的特征,通常侧重于加强不同尺度的空间和语义信息。颈部可能包括额外的卷积层、特征金字塔(FPN)或其他机制,以提高特征的代表性。

Head是物体检测器的最后组成部分。它负责根据Backbone和Neck提供的特征进行预测。它通常由一个或多个特定任务的子网络组成,执行分类、定位,以及最近的实例分割和姿势估计。头部处理颈部提供的特征,为每个候选物产生预测。最后,一个后处理步骤,如非极大值抑制(NMS),过滤掉重叠的预测,只保留置信度最高的检测。

二、YOLO系列的算法

  1. YOLOv1(2016)
    (论文地址:https://arxiv.org/pdf/1506.02640.pdf)

1.1 模型介绍

在YOLOv1提出之前,R-CNN系列算法在目标检测领域中独占鳌头。R-CNN系列检测精度高,但是由于其网络结构是双阶段(two-stage)的特点,使得它的检测速度不能满足实时性,饱受诟病。为了打破这一僵局,涉及一种速度更快的目标检测器是大势所趋。

2016年,Joseph Redmon、Santosh Divvala、Ross Girshick等人提出了一种单阶段(one-stage)的目标检测网络。它的检测速度非常快,每秒可以处理45帧图片,能够轻松地实时运行。由于其速度之快和其使用的特殊方法,作者将其取名为:You Only Look Once(也就是我们常说的YOLO的全称),并将该成果发表在了CVPR2016上,从而引起了广泛地关注。

YOLO的核心思想就是把目标检测转变成一个回归问题,利用整张图作为网络的输入,仅仅经过一个神经网络,得到bounding box(边界框)的位置及其所属的类别。

1.2 网络结构

现在看来,YOLOv1的网络结构十分清晰,是一种传统的one-stage的卷积神经网络:
在这里插入图片描述

网络输入:4484483的彩色图片
中间层:由若干卷积层和最大池化层组成,用于提取图片的抽象特征
全连接层:由两个全连接层组成,用来预测目标的位置和类别的概率值
网络输出:7730的预测结果

1.3 实现细节

(1)检测策略

YOLOv1采用的是“分而治之”的策略,将一张图片平均分成7x7个网格,每个网格分别负责预测中心点落在该网格内的目标。在Faster R-CNN中,是通过一个RPN来获得目标的感兴趣区域,这种方法精度高,但是需要额外再训练一个RPN网络,这无疑增加了训练的负担。在YOLOv1中,通过划分得到了7x7个网格,这49个网格就相当于是目标的感兴趣区域。通过这种方式,我们就不需要再额外设计一个RPN网络,这正是YOLOv1作为单阶段网络的简单快捷之处。

在这里插入图片描述

具体实现过程如下:

①. 将一副图像分成个网格(grid cell),如果某个object的中心落在这个网格中,则这个网络就负责预测这个object。

②. 每个网格都要预测B个bounding box,每个bounding box要预测和confidence共5个值。

③. 每个网格还要预测一个类别信息,记为C个类。

④. 总的来说,个网格,每个网格要预测B个bounding box,还要预测C个类。网络输出就是一个的张量。

在这里插入图片描述

在实际过程中,YOLOv1把一张图片划分为了7x7个网格,并且每个网格预测2个Box(Box1和Box2),20个类别。所以实际上,S=7,B=2,C=20。那么网络输出的shape也就是:。

(2)目标损失函数
在这里插入图片描述

损失由三部分组成,分别是:坐标预测损失、置信度预测损失、类别预测损失。

使用的是差方和误差。需要注意的是,w和h在进行误差计算的时候取得是它们的平方根,原因是对不同大小的bounding box预测中,相比于大bounding box预测偏一点,小box预测偏一点更不能忍受。而差方和误差函数中对同样的偏移loss是一样。为了缓和这个问题,作者用了一个比较取巧的办法,就是将bounding box的w和h取平方根代替原本的w和h。
定位误差比分类误差更大,所以增加对定位误差的惩罚,使。
在每个图像中,许多网格单元不包含任何目标值。训练时就会把这些网格里的框的“置信度”分数推到零,这往往超过了包含目标的框的梯度。从而可能导致模型不稳定,训练早期发散。因此要减少了不包含目标的框的置信度预测的损失,使。

1.4 性能表现

(1)优点

YOLO检测速度非常快。标准版本的YOLO可以每秒处理45张图像;YOLO的极速版本每秒可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值