赞
踩
本文详细介绍了从YOLOv1-YOLOv9的网络结构,以及各个版本之间的迭代。
YOLOv1-YOLOv8之间的对比如下表所示:
Model | Anchor | Input | Backbone | Neck | Predict/ Train |
---|---|---|---|---|---|
YOLOv1 | 锚框(7*7grids,2 anchors) | resize(448*448*3): 训练是224*224,测试是448*448; | GoogLeNet(24*Conv+2*FC+reshape;Dropout防止过拟合;最后一层使用线性激活函数,其余层都使用ReLU激活函数); | 无 | IOU_Loss、nms;一个网格只预测了2个框,并且都属于同一类;全连接层直接预测bbox的坐标值; |
YOLOv2 | 锚框(13*13grids,5 anchors:通过k-means选择先验框) | resize(416*416*3):416/32=13,最后得到的是奇数值有实际的中心点;在原训练的基础上又加上了(10个epoch)的448x448高分辨率样本进行微调; | Darknet-19(19*Conv+5*MaxPool+AvgPool+Softmax;没有FC层,每一个卷积后都使用BN和ReLU防止过拟合(舍弃dropout);提出passthrough层:把高分辨率特征拆分叠加大到低分辨率特征中,进行特征融合,有利于小目标的检测); | 无 | IOU_Loss、nms;一个网络预测5个框,每个框都可以属于不同类;预测相对于anchor box的偏移量;多尺度训练(训练模型经过一定迭代后,输入图像尺寸变换)、联合训练机制; |
YOLOv3 | 锚框(13*13grids,9 anchors:三种尺度*三种宽高比) | resize(608*608*3) | Darknet-53(53*Conv,每一个卷积层后都使用BN和Leaky ReLU防止过拟合,残差连接); | FPN(多尺度检测,特征融合) | IOU_Loss、nms;多标签预测(softmax分类函数更改为logistic分类器); |
YOLOv4 | 锚框 | resize(608*608*3)、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(608*608*3)、Mosaic数据增强、自适应锚框计算、自适应图片缩放 | CSPDarknet53(CSP模块,每一个卷积层后都使用BN和Leaky ReLU防止过拟合,Focus模块); | SPP、PAN | GIOU_Loss、DIOU_Nms;跨网格匹配(当前网格的上、下、左、右的四个网格中找到离目标中心点最近的两个网格,再加上当前网格共三个网格进行匹配); |
YOLOX | 无锚框 | resize(608*608*3) | Darknet-53 | SPP、FPN | CIOU_Loss、DIOU_Nms、Decoupled Head、SimOTA标签分配策略; |
YOLOv6 | 无锚框 | resize(640*640*3) | EfficientRep Backbone(Rep算子) | SPP、Rep-PAN Neck | SIOU_Loss、DIOU_Nms、Efficient Decoupled Head、SimOTA标签分配策略; |
YOLOv7 | 锚框 | resize(640*640*3) | Darknet-53(CSP模块替换了ELAN模块;下采样变成MP2层;每一个卷积层后都使用BN和SiLU防止过拟合); | SPP、PAN | CIOU_Loss、DIOU_Nms、SimOTA标签分配策略、带辅助头的训练(通过增加训练成本,提升精度,同时不影响推理的时间); |
YOLOv8 | 无锚框 | resize(640*640*3) | Darknet-53(C3模块换成了C2F模块) | SPP、PAN | CIOU_Loss、DFL_Loss、DIOU_Nms、TAL标签分配策略、Decoupled Head; |
YOLO系列的核心思想就是把目标检测转变为一个回归问题,利用整张图片作为网络的输入,通过神经网络,得到边界框的位置及其所属的类别。
(1)划分图像:YOLO将输入图像划分为一个固定大小的网格。
(2)预测边界框和类别:对于每个网格,YOLO预测出固定数量(通常为5个或3个)
的边界框。每个边界框由5个主要属性描述:边界框的位置(中心坐标和宽高)和边界框包含的目标的置信度(confidence)。此外,每个边界框还预测目标的类别。
(3)单次前向传递:YOLO通过一个卷积神经网络(CNN)进行单次前向传递,同时预测所有边界框的位置和类别。相比于其他目标检测算法,如基于滑动窗口或区域提议的方法,YOLO具有更快的速度,因为它只需要一次前向传递即可完成预测。
(4)损失函数:YOLO使用多任务损失函数来训练网络。该损失函数包括位置损失、置信度损失和类别损失。位置损失衡量预测边界框和真实边界框之间的位置差异。置信度损失衡量边界框是否正确地预测了目标,并惩罚背景框的置信度。类别损失衡量目标类别的预测准确性。
(5)非最大抑制(Non-Maximum Suppression):在预测的边界框中,可能存在多个相互重叠的框,代表同一个目标。为了消除冗余的边界框,YOLO使用非最大抑制算法,根据置信度和重叠程度筛选出最佳的边界框。
物体检测器的结构开始被描述为三个部分:Backbone, Neck和Head。下图显示了一个高层次的Backbone, Neck 和 Head图。
Backbone负责从输入图像中提取有用的特征。它通常是一个卷积神经网络(CNN),在大规模的图像分类任务中训练,如IamgeNet。骨干网络在不同尺度上捕捉层次化的特征,在较早的层中提取低层次的特征(如边缘和纹理),在较深的层中提取高层次的特征(如物体部分和语义信息)。
Neck是连接Backbone和Head的一个中间部件。它聚集并细化骨干网提取的特征,通常侧重于加强不同尺度的空间和语义信息。颈部可能包括额外的卷积层、特征金字塔(FPN)或其他机制,以提高特征的代表性。
Head是物体检测器的最后组成部分。它负责根据Backbone和Neck提供的特征进行预测。它通常由一个或多个特定任务的子网络组成,执行分类、定位,以及最近的实例分割和姿势估计。头部处理颈部提供的特征,为每个候选物产生预测。最后,一个后处理步骤,如非极大值抑制(NMS),过滤掉重叠的预测,只保留置信度最高的检测。
(论文地址:https://arxiv.org/pdf/1506.02640.pdf)
在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(边界框)的位置及其所属的类别。
现在看来,YOLOv1的网络结构十分清晰,是一种传统的one-stage的卷积神经网络:
(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)目标损失函数
损失由三部分组成,分别是:坐标预测损失、置信度预测损失、类别预测损失。
(1)优点
(2)局限性
(论文地址:https://arxiv.org/pdf/1612.08242.pdf#page=4.24)
YOLOv2Joseph Redmon和Ali Farhadi发表在CVPR 2017。它包括了对原始YOLO的一些改进,保持相同的速度,也更强大,能够检测9000个类别,这些改进有以下几点:
(1)在所有卷积层上的批量归一化改善了收敛性,并作为一个正则器来减少过拟合;
(2)高分辨率分类器,和YOLOv1一样,他们在ImageNet以224x224的分辨率对模型进行了预训练。然而,这一次,他们在分辨率为448x448的ImageNet上对模型进行了10次微调,提高了网络在高分辨率输入下的性能;
(3)完全卷积。它们去掉了密集层,采用了全卷积架构。
(4)使用Anchor来预测边界盒。他们使用一组先验框Anchor,这些Anchor具有预定义的形状,用于匹配物体的原型形状,如图6所示,每个网格单元都定义了多个Anchor,系统预测每个Anchor的坐标和类别。网络输出的大小与每个网格单元的Anchor数量成正比。
(5)维度聚类。挑选好的Anchor有助于网络学习预测更准确的边界盒。作者对训练中的边界盒进行了k-means聚类,以找到更好的先验。他们选择了五个Anchor,在召回率和模型复杂性之间进行了良好的权衡。
(6)直接预测位置。与其他预测偏移量的方法不同,YOLOv2遵循同样的理念,预测了相对于网格单元的位置坐标,网络为每个单元预测了五个bounding box,每个bounding box有五个值,其中相当于YOLOv1的Pc,最终得到的bounding box坐标如图7所示。
(7)细粒度的特征。与YOLOv1相比,YOLOv2去掉了一个池化层,对于416x416的输入图像,得到13x13的特征图。
(8)多尺度训练。由于YOLOv2不使用全连接层,输入可以是不同的尺寸。为了使YOLOv2对不同的输入尺寸具有鲁棒性,作者随机训练模型,每10批改变尺寸(从320x320到608x608)。
YOLOv2 采用 Darknet-19 作为特征提取网络,其整体结构如下:
改进后的YOLOv2:Darknet-19,总结如下:
①. 与VGG相似,使用了很多3x3卷积核;并且每一次池化后,下一层的卷积核的通道数=池化输出的通道 x 2。
②. 在每一层卷积后,都增加了BN层进行预处理。
③. 采用了降维的思想,把1x1的卷积置于3x3之间,用来压缩特征。
④. 在网络最后的输出上增加了一个global average pooling层。
⑤. 整体上采用了19个卷积层,5个池化层。
为了更好的说明,将Darknet-19与YOLOv1、VGG16网络进行对比:
在VOC2007数据集上进行测试,YOLOv2在速度为67fps时,精度可以达到76.8的mAP;在速度为40fps时,精度可以达到78.6的mAP 。可以很好的在速度和精度之间进行权衡。下图是YOLOv1在加入各种改进方法后,检测性能的改变。可见在经过多种改进方法后,YOLOv2在原基础上检测精度具有很大的提升。
相对于YOLOv1而言,不足之处在于,没有进行多尺度特征的结合预测,传递模块(Pass-Through Module)的使用在提升细粒度特征的同时也对特征的空间,分布产生了一定影响,以及对小目标的检测能力没有明显提升。
(论文地址:https://arxiv.org/pdf/1804.02767.pdf)
2018年,作者Redmon又在YOLOv2的基础上做了一些改进。特征提取部分采用Darknet-53网络结构代替原来的Darknet-19,利用特征金字塔网络结构实现了多尺度检测,分类方法使用逻辑回归代替了softmax,在兼顾实用性的同时保证了目标检测的准确性。
从YOLOv1到YOLOv3,每一代性能的提升都与backbone(骨干网络)的改进密切相关。在YOLOv3中,作者不仅提供了darknet-53,还提供了轻量级的tiny-darknet。如果你想检测精度与速度兼备,可以选择darknet-53作为backbone;如果你想达到更快的检测速度,精度方面可以妥协。那么tiny-darknet是你很好的选择。总之,YOLOv3的灵活性使得它在实际工程中得到很多人的青睐。
相比于 YOLOv2 的 骨干网络,YOLOv3 进行了较大的改进。借助残差网络的思想,YOLOv3 将原来的 darknet-19 改进为darknet-53。论文中给出的整体结构如下:
Darknet-53主要由1x1和3x3的卷积层组成,每个卷积层之后包含一个批量归一化层和一个Leaky ReLU,加入这两部分的目的是为了防止过拟合。卷积层、BN层以及LeakyReLU共同组成Darknet-53的基本CBL。因为在Darknet-53中共包含53个这样的CBL,所以称其为Darkent-53。
为了更加清晰地了解Darknet-53的网络结构,可以看下面这张图:
(图片来源:jiangdabai)
为了更好的理解此图,下面对主要单元进行说明:
与Darknet-19相比,Darknet-53主要做了如下改进:
(1)输入端
- 初始锚框定义:首先,根据训练集的标注框,选择初始的锚框。可以使用一些聚类算法(如k-means)对标注框进行聚类,以确定一组代表性的锚框。
- 锚框调整:对于每个训练样本,根据该样本中的目标框与初始框的匹配程度,调整初始框的大小和长宽比例。这可以通过计算目标框与锚框的IoU(交并比)来确定匹配程度,并根据匹配程度调整锚框的尺寸。
- 锚框聚类:根据经过调整的锚框,再次进行聚类,得到一组更适应当前数据集的锚框。这些聚类过程通常是迭代进行的,直到达到一定的收敛条件。
- 锚框选择:根据聚类得到的锚框集合,可以选择一定数量的锚框用于目标检测。通常,可以根据聚类结果中的锚框长宽比例的分布情况,选择一些具有代表性的锚框。
(2)主干网络
YOLOv3的主干网络Darknet-53包含卷积层(Convolutional Layer)、残差层(Residual Layer)、特征融合层(Feature Fusion Layer),网络层数的加深提高了检测精度,大量残差网络模块的引入减少了由网络层数加深引起的梯度下降问题,金字塔池化模块的引入可以实现多尺寸的输入和统一尺寸的输出。
(3)颈部网络
YOLOv3的颈部网络是FPN(多尺度检测,特征融合),FPN(Feature Pyramid Network)是一种用于目标检测和语义分割任务的特征金字塔网络结构。它的设计目的是解决单尺度特征提取网络在处理不同尺度目标时的困难。
FPN的主要思想如下:
- 特征提取:首先,通过卷积神经网络(如ResNet)进行特征提取。这些特征具有不同的尺度和语义信息。
- 顶层池化:为了获取更高分辨率的特征,FPN使用自顶向下的顶层池化操作,将较低分辨率的特征图上采样到较高分辨率。这可以通过上采样或插值等方法实现。
- 横向连接:为了融合不同层次的特征信息,FPN引入横向连接,将上一层的特征与下一层的上采样特征进行逐元素相加(Element-wise Sum)。这样可以将低级别的细节信息与高级别的语义信息相结合,产生具有多尺度特征的金字塔结构。
- 特征融合:为了进一步提升特征表达能力,FPN在每个金字塔层级上引入一个额外的卷积层,进行特征融合和调整。
(4)输出端
YOLOv3在输出的改进是多标签预测(softmax函数变为logistics分类器)。在YOLOv1中,通常使用softmax函数作为分类器的激活函数,将每个类别的输出转化为概率分布。
然而,对于YOLOv3这样的多标签检测任务,一个目标可能属于多个类别,使用softmax函数会导致多个类别的概率之和超过1,不符合多标签问题的要求。因此,在YOLOv3中,采用了logistic分类器作为分类器的激活函数。
logistic分类器将每个类别的输出视为独立的二分类问题,对每个类别使用sigmoid函数进行激活。sigmoid函数将输出限制在0到1之间,表示每个类别的存在概率。
如下图所示,是各种先进的目标检测算法在COCO数据集上测试结果。很明显,在满足检测精度差不都的情况下,YOLOv3具有更快的推理速度。
如下表所示,对不同的单阶段和两阶段网络进行了测试。通过对比发现,YOLOv3达到了与当前先进检测器的同样的水平。检测精度最高的是单阶段网络RetinaNet,但是YOLOv3的推理速度比RetinaNet快得多。
(论文地址:https://arxiv.org/pdf/2004.10934.pdf)
从YOLOv3后,YOLO没有新版本。直到2020年4月,Alexey Bochkovskiy、Chien-Yao Wang和Hong-Yuan Mark Liao在ArXiv发布了YOLOv4[50]的论文。起初,不同的作者提出一个新的YOLO "官方 "版本让人感觉很奇怪;然而,YOLOv4保持了相同的YOLO理念——实时、开源、端到端和DarkNet框架——而且改进非常令人满意,社区迅速接受了这个版本作为官方的YOLOv4。
YOLOv4的独特之处在于:
是一个高效而强大的目标检测网络。它使我们每个人都可以使用GTX 1080Ti 或2080Ti的GPU来训练一个超快速和精确的目标检测器。
在论文中,验证了大量先进的技巧对目标检测性能的影响。
对当前先进的目标检测方法进行了改进,使之更有效,并且更适合在单GPU上训练;这些改进包括CBN、PAN、SAM等。
(图片来源:jiangdabai)
先详细介绍一下YOLOv4的基本组件:
YOLOv4 = CSPDarknet53(主干) + SPP附加模块(颈) + PANet路径聚合(颈) + YOLOv3(头部)
(1)输入端
无明显变化。
(2)主干网络
(3)颈部网络
(4)输出端
在YOLOv4中,确实引入了一种新的距离度量指标,称为CIOU。
CIOU是一种改进的目标检测损失函数,用于衡量预测框和真实框之间的距离。CIOU是DIoU的进一步扩展,除了考虑框的位置和形状之间的距离外,还引入了一个附加的参数用于衡量框的长宽比例的一致性。
CIOU的计算公式如下:,其中,IoU表示传统的交并比(Intersection over Union),d表示预测框和真实框中心点之间的欧氏距离,c表示预测框和真实框的对角线距离。在CIOU中,α是一个参数,用于平衡框长宽比例的一致性和框位置之间的距离。v是一个辅助项,用于惩罚预测框和真实框之间的长宽比例差异。
CIOU损失是通过最小化CIOU来优化目标检测模型。它可以作为定位损失函数的一部分,用于衡量预测框的定位准确性。通过CIOU损失的引入,YOLOv4可以更好地优化边界框的位置、形状和长宽比例,从而提高目标检测的准确性和鲁棒性。
如下图所示,在COCO目标检测数据集上,对当前各种先进的目标检测器进行了测试。可以发现,YOLOv4的检测速度比EfficientDet快两倍,性能相当。同时,将YOLOv3的AP和FPS分别提高10%和12%,吊打YOLOv3!
综合以上分析,总结出YOLOv4带给我们的优点有:
(代码地址:https://github.com/ultralytics/yolov5)
YOLOv5有YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本。文件中,这几个模型的结构基本一样,不同的是depth_multiple模型深度和width_multiple模型宽度这两个参数。就和我们买衣服的尺码大小排序一样,YOLOv5s网络是YOLOv5系列中深度最小、特征图的宽度最小的网络。其他三种都是在此基础上不断加深,不断加宽。
(图片来源:jiangdabai)
基本组件:
(1)输入端
无明显变化。
(2)主干网络
(3)颈部网络
无明显变化。
(4)输出端
无明显变化。
在COCO数据集上,当输入原图的尺寸是:640x640时,YOLOv5的5个不同版本的模型的检测数据如下:
在COCO数据集上,当输入原图的尺寸是:1280x1280时,YOLOv5的5个不同版本的模型的检测数据如下:
从上表可得知,从YOLOv5n到YOLOv5x,这五个YOLOv5模型的检测精度逐渐上升,检测速度逐渐下降。根据项目要求,用户可以选择合适的模型,来实现精度与速度的最佳权衡!
(论文地址:https://arxiv.org/pdf/2107.08430.pdf)
(代码地址:https://github.com/Megvii-BaseDetection/YOLOX?tab=readme-ov-file)
YOLOX在YOLO系列的基础上做了一系列的工作,其主要贡献在于:在YOLOv3的基础上,引入了Decoupled Head,Data Aug,Anchor Free和SimOTA样本匹配的方法,构建了一种anchor-free的端到端目标检测框架,并且达到了一流的检测水平。
此外,本文提出的 YOLOX-L 模型在视频感知挑战赛(CVPR 2021年自动驾驶研讨会)上获得了第一名。作者还提供了支持ONNX、TensorRT、NCNN和Openvino的部署版本
为什么提出YOLOX:
目标检测分为Anchor Based和Anchor Free两种方式。
在Yolov3、Yolov4、Yolov5中,通常都是采用 Anchor Based的方式,来提取目标框。
Yolox 将 Anchor free 的方式引入到Yolo系列中,使用anchor free方法有如下好处:
假设feature map的尺度为80x80,anchor based方法在Feature Map上,每个单元格一般设置三个不同尺寸大小的锚框,因此产生3x80x80=19200个预测框。而使用anchor free的方法,仅产生80x80=6400个预测框,降低了计算量。
anchor free方法的预测框只有anchor based方法的1/3,而预测框中大部分是负样本,因此anchor free方法可以减少负样本数,进一步缓解了正负样本不平衡问题。
anchor based方法的anchor box的尺度是一个超参数,不同的超参数设置会影响模型性能。anchor free方法避免了这一点。
(图片来源:jiangdabai)
YOLOX的性能超越了YOLOV5,YOLOX-X的AP值达到了51.2,超过YOLOV5-X 0.8个百分点,此外模型推理速度和参数量都具有比较大的优势。
(论文地址:https://arxiv.org/pdf/2209.02976.pdf)
(代码地址:https://github.com/meituan/YOLOv6/)
YOLOv6于2022年9月由美团视觉人工智能部发布在ArXiv。与YOLOv4和YOLOv5类似,它为工业应用提供了各种不同尺寸的模型。跟随基于锚点的方法的趋势,YOLOv6采用了无锚点的检测器。
YOLOv5/YOLOX 使用的 Backbone 和 Neck 都基于 CSPNet 搭建,采用了多分支的方式和残差结构。对于 GPU 等硬件来说,这种结构会一定程度上增加延时,同时减小内存带宽利用率。因此,YOLOv6对Backbone 和 Neck 都进行了重新设计,Head层沿用了YOLOX中的Decoupled Head并稍作修改。相当于YOLOv5而言,v6对网络模型结构进行了大量的更改。
(图片来源:cainiaoxiaoqiao)
由上图所示,从整体上看,YOLOv6的网络结构与YOLOv4、YOLOv5是很相似的,尤其是backbone和neck部分,但是其中的实现模块是有变化的;但最大的不同在于Head部分,采用的是YOLOX的hHead方式,将分类和回归分为两个支路,进行了解耦操作。
(1)输入端
无锚框,取消了YOLOv1到YOLOv5一直沿用的锚框。
(2)主干网络
YOLOv6的Backbone的实现的基本模块为RVB1_X结构,其全程为RepVGGBlock_X,表示由多个RepVGGBlock组成。
RepVGGBlock是RepVGG网络的重复模块,由多个RepVGGConv模块组成。每个RepVGGBlock由两个RepVGGConv模块组成,第一个RepVGGConv是一个3x3卷积操作,而第二个RepVGGConv是一个1x1卷积操作。
这两个卷积模块之间使用了批归一BatchNorm)和ReLU激活函数。RepVGGConv模块是RepVGG网络中的基本卷积模块,由一个卷积层、批归一化和ReLU激活函数组成。这样的设计使得RepVGGBlock具有较强的表达能力,并且可以适应不同的特征提取需求。
RepVGGBlock在RepVGG网络中被重复堆叠多次,形成了深层的网络结构。通过堆叠多个RepVGGBlock,可以提高网络的表示能力和复杂度,从而实现更准确的特征提取和目标识别。
(3)颈部网络
PANet结构类似更换为RepVGGBlock结构。
(4)输出端
YOLOv6对检测头进行了解耦,分开了边框与类别的分类过程。
YOLOv6 的检测精度和速度均优于以前最先进的模型,同时设计了 8 种缩放模型为不同场景中的工业应用定制不同规模的网络模型,可以检测不同尺度的图像从而提高检测效果,其部署简单、计算量较低,适用于实时检测。并且支持在不同平台上面的部署,简化工程部署的适配工作。但检测准确率其同时期的其他先进算法相比较低。
下表为与 COCO 2017 val 上其他 YOLO 系列的比较。FPS 和延迟是在使用 TensorRT 的 Tesla T4 上以 FP16 精确度测量的。我们的所有模型都在没有预训练或任何外部数据的情况下训练了 300 个epoch。在输入分辨率为 640×640 的情况下,我们对模型的准确性和速度性能进行了评估。'‡'表示所提出的自蒸馏方法是倾斜化的。∗"表示通过官方代码发布的模型的重新评估结果。
(论文地址:https://arxiv.org/pdf/2207.02696.pdf)
(代码地址:https://github.com/WongKinYiu/yolov7)
YOLOv7由YOLOv4和YOLOR的同一作者于2022年7月发表在ArXiv。当时,在5 FPS到160 FPS的范围内,它的速度和准确度超过了所有已知的物体检测器。与YOLOv4一样,它只使用MS COCO数据集进行训练,没有预训练的骨干。YOLOv7提出了一些架构上的变化和一系列的免费包,在不影响推理速度的情况下提高了准确率,只影响了训练时间。
首先对输入的图片 resize 为 640x640 大小,输入到 backbone 网络中,然后经 head 层网络输出三层不同 size 大小的 **feature map**,经过 Rep 和 conv输出预测结果,这里以 coco 为例子,输出为 80 个类别,然后每个输出(x ,y, w, h, o) 即坐标位置和前后背景,3 是指的 anchor 数量,因此每一层的输出为 (80+5)x3 = 255再乘上 feature map 的大小就是最终的输出了。
(1)输入端
与YOLOv5类似。
(2)主干网络
Backbone为骨干网络由CBS、ELAN、MP-1组成。
(3)颈部网络
该网络主要包括SPPCSPC、ELANW、UPSample三个子模块和Cat结构,其中,SPPCSPC模块用于提高特征提取的效率和准确率;ELANW模块相比于ELAN模块增加了两个拼接操作;UPSample模块用于实现不同层次特征的高效融合;Cat结构旨在进一步优化卷积层的效果。
(4)输出端
与YOLOv6类似。检测头负责网络最终的预测输出,针对Neck处理后的特征信息进行解耦,采用重参数化模块对Neck输出的三种不同尺寸的特征进行通道数调整,再经过1x1的卷积操作,得出目标物体的位置、置信度和类别的预测。
YOLOv7 算法提出了基于级联的模型缩放策略从而生成不同尺寸的模型,减少参数量和计算量,可以进行实时目标检测,在大数据集进行训练检测有较高精度且整体检测性能有所提升。但是其网络架构也相对复杂进行训练测试需要大量计算资源,且对小目标和密集场景的检测效果较差。
(代码地址:https://github.com/ultralytics/ultralytics)
YOLOv8 与YOLOv5出自同一个团队,是一款前沿、最先进(SOTA)的模型,基于先前 YOLOv5版本的成功,引入了新功能和改进,进一步提升性能和灵活性。
YOLOv8是一种尖端的、最先进的 (SOTA) 模型,它建立在以前成功的 YOLO 版本的基础上,并引入了新的功能和改进,以进一步提高性能和灵活性。YOLOv8 旨在快速、准确且易于使用,这也使其成为对象检测、图像分割和图像分类任务的绝佳选择。具体创新包括一个新的骨干网络、一个新的 Ancher-Free 检测头和一个新的损失函数,还支持YOLO以往版本,方便不同版本切换和性能对比。
YOLOv8 有 5 个不同模型大小的预训练模型:n、s、m、l 和 x。关注下面的参数个数和COCO mAP(准确率),可以看到准确率比YOLOv5有了很大的提升。特别是 l 和 x,它们是大模型尺寸,在减少参数数量的同时提高了精度。
整体结构上与YOLOv5类似: CSPDarknet(主干) + PAN-FPN(颈) + Decoupled-Head(输出头部),但是在各模块的细节上有一些改进,并且整体上是基于anchor-free的思想,这与yolov5也有着本质上的不同。
(1)输入端
与YOLOv7类似。
(2)主干网络
Backbone部分采用的结构为Darknet53,其中包括基本卷积单元Conv、实现局部特征和全局特征的Feature Map级别的融合的空间金字塔池化模块SPPF、增加网络的深度和感受野,提高特征提取能力的C2F模块。
(3)颈部网络
与YOLOv5类似。
(4)输出端
在损失函数计算方面,采用了Task AlignedAssigner正样本分配策略。由分类损失VFL(Varifocal Loss)和回归损失CIOU(Complete-IOU)+DFL(Deep Feature Loss)两部分的三个损失函数加权组合而成。
YOLOv8 的检测、分割和姿态模型在 COCO 数据集上进行预训练,而分类模型在 ImageNet 数据集上进行预训练。在首次使用时,模型会自动从最新的 Ultralytics 发布版本中下载。
YOLOv8共提供了5中不同大小的模型选择,方便开发者在性能和精度之前进行平衡。以下以YOLOv8的目标检测模型为例:
YOLOv8的分割模型也提供了5中不同大小的模型选择:
从下图我们可以看到,YOLOv8 在目标检测和实例分割任务上的性能都很好:
(图片来源:YOLOv8来了!)
(论文地址:https://arxiv.org/pdf/2402.13616.pdf)
(代码地址:https://github.com/WongKinYiu/yolov9)
YOLOv9是原YOLOv7团队打造,提出了可编程梯度信息(PGI)的概念来应对深度网络实现多个目标所需的各种变化。 PGI可以为目标任务计算目标函数提供完整的输入信息,从而获得可靠的梯度信息来更新网络权值。此外,还设计了一种新的轻量级网络架构——基于梯度路径规划的通用高效层聚合网络(GELAN)。 GELAN的架构证实了PGI在轻量级模型上取得了优异的结果。
下图展示了不同网络架构的随机初始权重输出特征图的可视化结果:(a) 输入图像,(b) PlainNet,(c) ResNet,(d) CSPNet,和 (e) 提议的GELAN。从这些可视化结果中,我们可以看出在不同的架构中,提供给目标函数用以计算损失的信息在不同程度上有所丢失,而提议的GELAN架构能够保留最完整的信息,并为计算目标函数提供最可靠的梯度信息。
具体来说,输入图像(a)是原始未处理的图像。接下来的四个图像(b-e)分别展示了当这个输入图像通过不同的网络架构时,在网络的某一层上的特征图。这些特征图通过网络层的权重随机初始化得到,旨在展示网络在处理数据时的特征提取能力。图中的颜色变化代表特征的激活程度,激活程度越高,说明网络对于图像的某一部分特征越敏感。
核心算法:(具体参考:http://t.csdnimg.cn/1LWuY)
(1)可编程梯度信息(PGI)
为了解决上述问题,论文提出了一种新的辅助监督框架,称为可编程梯度信息(PGI),如图3(d)所示。 PGI主要包括三个组成部分:主分支、辅助可逆分支、多级辅助信息。
从图3(d)中我们可以看出,PGI的推理过程仅使用主分支,因此不需要任何额外的推理成本。至于其他两个组件,它们仅用于训练阶段而不在推理阶段,用于解决或减缓深度学习方法中的几个重要问题:
(2)GELAN
通过结合采用梯度路径规划设计的两种神经网络架构CSPNet 和ELAN ,论文设计了兼顾轻量级、推理速度和准确性的广义高效层聚合网络(GELAN)。其整体架构如图 4 所示。论文将最初仅使用卷积层堆叠的 ELAN 的功能推广到可以使用任何计算块的新架构。
我们基于YOLOv7和Dynamic YOLOv7分别构建了YOLOv9的通用和扩展版本。在网络架构设计中,我们用GELAN替换了ELAN,GELAN使用CSPNet块作为计算块,并计划采用RepConv。我们还简化了下采样模块,并优化了无锚点的预测头。至于PGI的辅助损失部分,我们完全遵循了YOLOv7的辅助头设置。
如表1所示,与轻量级和中型模型YOLO MS相比,YOLOv9的参数减少了约10%,计算量减少了5∼15%,但AP仍然有0.4∼0.6%的提升。与 YOLOv7 AF 相比,YOLOv9-C 的参数减少了 42%,计算量减少了 22%,但达到了相同的 AP(53%)。与YOLOv8-X相比,YOLOv9-E参数减少16%,计算量减少27%,AP显着提升1.7%。上述对比结果表明,论文提出的YOLOv9与现有方法相比在各方面都有显著改进。
参考:
https://arxiv.org/pdf/2304.00501.pdf
https://www.cnblogs.com/cvlinke/p/16496988.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。