赞
踩
论文:https://arxiv.org/pdf/2304.00501.pdf
代码:github 搜索 YOLO 具体版本
主要是看看每个版本是怎么解决特定问题的。
首先,问题一就是在速度和准确度之间找到一个平衡。
最开始的 YOLO架构 为了快速处理图像,采用了一个单独的神经网络直接在整张图上进行对象检测。
目的就是要快,但也不能太牺牲准确度。
然后,问题二是关于提高准确度的。
第三个问题是如何有效地处理不同大小的对象。
第四个问题涉及到计算效率。
第五个问题是关于网络架构的自动化搜索,也就是 YOLO-NAS。
第六个问题是关于引入变换器(Transformers)。
每个版本都在针对某些特定的挑战进行优化和改进。
用于评估模型性能的两个关键方面:对象检测指标和非极大值抑制(NMS)。
对象检测模型性能评估 - 平均精度(AP)
处理多个对象类别 - 类别平均精度(mAP)
准确的对象定位 - 交并比(IoU)
减少重叠边界框 - 非极大值抑制(NMS)
对象检测领域中模型性能评估和优化 =
子问题与解法1: 实时对象检测的一体化方法 - YOLO的端到端架构
子问题与解法2: 对象定位和分类 - 网格划分和边界框预测
子问题与解法3: 训练与网络设计 - YOLOv1的卷积架构
子问题与解法4: 性能优化和过拟合防止 - 预训练和数据增强
子问题与解法5: 损失函数设计 - 多部分损失函数
子问题与解法6: 预测后处理 - 非极大值抑制(NMS)
子问题与解法7: 优化和局限性处理 - 改进YOLOv1
上图是一个采用3x3网格的YOLO模型,用于检测三个类别,每个网格元素预测一个类别,产生一个包含八个值的向量。
存在性(Existence of object): 对于每个网格单元,模型预测一个对象是否存在。
在这个例子中,只有中间和右边的网格单元预测到对象存在(值为1),其他网格的值为0,表示没有检测到对象。
边界框(Bounding box): 对于中间网格单元,模型预测了边界框的参数,包括:
类别标签(Class labels): 模型还预测了三个可能的类别(c1, c2, c3),其中c1为1,表示该模型预测中间网格单元包含的对象属于第一个类别。
这张图里的数字代表了模型预测的概率值或者坐标偏移值。
例如,中间网格单元的( P_c )值为1,意味着模型非常确信该网格中存在一个对象。
而( b_x = 0.82 ) 和 ( b_y = 0.60 ) 表示边界框的中心位置,( b_h = 0.25 ) 和 ( b_w = 0.48 ) 表示边界框的高度和宽度。
这种方法允许模型以单次前向传播来检测图像中的多个对象及其位置。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLOv1是一个革命性的对象检测模型,它以其速度和效率在计算机视觉领域引起了轰动。然而,尽管它的性能令人印象深刻,但它在一些关键方面仍有局限性。
例如,它在处理小物体、靠近的物体以及那些与训练数据中的形状和尺寸差异很大的物体时,表现不尽人意。
此外,YOLOv1在精确定位物体方面也存在一些挑战,特别是在复杂的背景中。
为了克服这些问题,YOLOv2引入了一系列改进措施,使得模型不仅保持了YOLOv1的快速性能,同时在准确性、灵活性和鲁棒性方面都有显著提升。
改善训练稳定性 - 批量归一化:
高分辨率分类 - 分辨率提升:
结构简化 - 全卷积网络:
边界框预测 - 使用锚点框:
精确预测 - 维度聚类:
直接位置预测 - 网格单元相对坐标:
这种方法在面对多个密集排列的小尺寸对象时会遇到问题,因为它可能无法准确区分紧邻的多个对象。
直接位置预测使YOLOv2能够更准确地定位每个网格单元中的多个对象,特别是当这些对象彼此非常接近时。
这一改进让模型对于小物体的检测更加敏感,并且改善了对于对象群体的定位能力。
改进原因:YOLOv1预测边界框时依赖于整个图像的全局信息,这可能导致对小物体或紧密排列的物体的位置预测不够精确。直接在网格单元内预测位置可以提高这些情况下的定位准确性。
更细粒度特征 - 去除一个池化层:
多尺度训练 - 灵活的输入尺寸:
通过这些改进,YOLOv2不仅在处理各种尺寸和比例的对象方面更加灵活,而且还提高了整体的检测精度,尤其是在复杂场景和高分辨率图像中的表现。
v2 损失函数,由三部分组成:
定位损失(Localization Loss): 这部分损失负责测量模型预测的边界框与真实边界框(Ground Truth, GT)之间的差异。
它使用平方和误差来计算边界框的中心位置 ( x, y ) 和尺寸 ( w, h ) 的预测误差。
如果一个对象确实在网格单元内被检测到(表示为 ( 1_{ij}^{obj} )),则会计算这部分损失。
置信度损失(Confidence Loss): 这部分损失衡量模型对存在对象的边界框的置信度预测的准确性。
它包括两部分:当一个对象被检测到时的置信度误差(对应于 ( 1 i j o b j ( 1_{ij}^{obj} (1ijobj),以及当一个对象未被检测到时的置信度误差(对应于 1 i j n o o b j 1_{ij}^{noobj} 1ijnoobj), λ n o o b j \lambda_{noobj} λnoobj 是一个缩放因子,用于调整不包含对象的边界框的损失权重。
分类损失(Classification Loss): 这部分损失负责测量模型对每个类别预测概率的准确性。只有当一个对象在网格单元内出现时,才会计算这部分损失。
整个损失函数结合了这三个部分,使得模型在训练时能够同时学习如何准确地定位对象、如何判断对象的存在,并且正确分类对象,减少各种类型的预测误差。
v2 中用于预测边界框的锚点框(Anchor Boxes)机制和边界框的预测方式:
图7(Anchor boxes): YOLOv2为每个网格单元定义了多个锚点框。
这些锚点框是具有预定义宽高比的矩形框,设计用来捕捉训练数据中常见的对象形状。
在预测时,每个网格单元可以使用这些锚点框来预测对象的位置和尺寸,而每个锚点框都有一个预测值集合,包括边界框的中心、宽度、高度和对象类别。
图8(Bounding boxes prediction): 这张图详细展示了如何从预测值 t x , t y , t w , t h t_x, t_y, t_w, t_h tx,ty,tw,th 计算最终的边界框坐标。
t x t_x tx 和 t y t_y ty 通过一个sigmoid函数得到,确保输出值在 0 到 1 之间,表示边界框中心相对于网格单元的位置。
这些值然后与网格单元的偏移量 c x , c y c_x, c_y cx,cy 相加,得到边界框中心的最终位置。
边界框的宽度 b w b_w bw 和高度 b h b_h bh 是通过对预测值 t w t_w tw 和 t h t_h th 应用指数函数并乘以锚点框的原始宽度 p w p_w pw 和高度 p h p_h ph 来计算的,以获得最终的尺寸。
这种方法允许YOLOv2根据网格单元的位置动态调整边界框的尺寸,同时通过锚点框处理各种形状和大小的对象,在提高模型的灵活性和准确性方面是很重要的。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLOv3引入的改进针对的是提高检测精度、加强小物体识别和优化模型的泛化能力,同时保持实时性能。
YOLOv3在继承了YOLOv2的基础上进行了显著的改进,目的是为了与当时的最先进技术相匹配(跳跃链接),并保持实时性能:
子问题与解法1: 边界框预测的改进 - 对象性得分的引入
子问题与解法2: 类别预测的改进 - 独立逻辑分类器的使用
子问题与解法3: 主干网络的改进 - Darknet-53的引入
子问题与解法4: 特征提取的改进 - 空间金字塔池化 (SPP)
子问题与解法5: 多尺度预测的引入
子问题与解法6: 边界框先验的改进 - 使用不同尺度的锚点框
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLOv4的改进是为了解决之前版本YOLO系列模型在某些方面的限制,并进一步增强其检测能力。
子问题与解法1: 网络架构的增强 - CSPDarknet53
子问题与解法2: 训练策略的优化 - 高级数据增强
子问题与解法3: 对抗性鲁棒性的提升 - 自适应对抗训练
子问题与解法4: 超参数的优化 - 遗传算法
综上,YOLOv4的改进主要集中在四个方面:
这些改进解决了以前版本中的特定问题,例如提高模型对多样化训练数据的适应能力、提升对抗性攻击的鲁棒性,以及通过精细调整超参数来优化训练效果。
通过这些集成的改进措施,YOLOv4在不牺牲实时性能的前提下实现。
网络输出是三个不同尺度的特征图,每个特征图都包含了物体的边界框(bounding box)信息和类别预测。
这些特征图的尺寸分别为 13x13
、26x26
和 52x52
,代表不同尺度的预测,以便在不同大小的图像区域中检测对象。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLO v5:
YOLOv5 和 Scaled-YOLOv4 的改进点是为了解决以前版本在特定场景下的局限性,如小物体检测不准确、实时性能不足等问题。
这些改进使得YOLO系列在保持实时性能的同时,也能在更多场景下提供更高的准确性和适应性。
YOLOv5的改进和特性:
子问题与解法1: 锚点框自适应调整 - AutoAnchor
子问题与解法2: 架构优化 - 修改后的CSPDarknet53
子问题与解法3: 特征金字塔网络优化 - SPPF和CSP-PAN
子问题与解法4: 数据增强策略 - Mosaic和其他增强
Scaled-YOLOv4的改进和特性:
子问题与解法1: 模型缩放技术 - Scaling-up和Scaling-down
子问题与解法2: 轻量级模型 - YOLOv4-tiny
子问题与解法3: 高性能模型 - YOLOv4-large
YOLOR其实是基于YOLO之上的一个进阶版,目的是要打造一个能够同时搞定好几个任务的全能模型,就像是分类啦、发现物体啦、还有估计姿态啦这些。
要做到这一点,研究者们采取了两个主要的策略:
多任务学习方法 - 通用表征学习:这个想法就是让模型学到一种能通用于多个任务的知识,这样一来,不同的任务可以共享一些学到的特点,就像我们人类学习自行车骑行和滑冰时共享平衡的技能一样。
隐式知识编码 - 多任务表征增强:在我们的大脑里,有些知识是我们潜意识中学到的,我们可能没法清楚地解释它们,但这些知识对解决问题超有帮助。
YOLOR就是想让模型也能这样,通过编码这些隐式的知识,让模型在处理多个不同的任务时都能有更好的表现。
总的来说,YOLOR的大动作就是打通任督二脉,让模型不仅仅是单打独斗,而是能够在多个领域都发挥出色,更像一个多面手。
这种方法让模型在多个任务上都能受益,变得更聪明也更能适应不同的挑战。
YOLOX 是一个在YOLOv3基础上改进的对象检测模型,主要是为了提高准确性并简化训练过程。
在YOLOv3中,分类和定位任务是通过耦合的头部(coupled head)执行的,这意味着相同的特征图被用于这两种任务。
具体来说,它使用了 1x1
卷积层来降低特征通道,然后通过 3x3
卷积层来进行类别置信度(分类)和定位(回归)的预测。
相比之下,YOLOX采用了解耦的头部设计(decoupled head),它首先使用 1x1
卷积层将特征通道减少到256,然后添加了两个平行的分支,每个分支都有两个 3x3
卷积层,分别用于类别置信度(分类)和定位(回归)任务。
在这种设计中,定位任务还包括了交并比(IoU)的分支,这是为了提高边界框定位的准确性。
解耦的头部允许模型分别学习分类和定位的最优特征,助于提高整体检测性能。
通过这种方式,YOLOX可以更准确地区分不同的对象,并更精确地定位它们。
YOLOX 的改进点:
无锚点架构:这是从YOLOv2起就一直用的锚点(anchor-based)检测器的一个大转变。
YOLOX 借鉴了 CornerNet、CenterNet 和 FCOS 这些无锚点的先进对象检测器的思路,摒弃了锚点。
去掉锚点之后,训练和解码过程都简化了不少,而且还提升了模型的准确率。
多正样本:为了解决去掉锚点后产生的大量不平衡问题,YOLOX使用了中心采样技术,通过将中心区域的3×3面积定义为正样本,来增强模型的学习能力。
解耦头部:之前的研究表明,分类置信度和定位准确性之间可能存在不一致。
YOLOX就把这两个任务分开,用两个不同的头部来处理,一个负责分类,另一个负责回归,这样做不仅提升了模型的准确率,还加快了模型的收敛速度。
高级标签分配:有研究表明,当多个对象的边界框重叠时,标签分配可能会出现歧义。
YOLOX受到这些研究的启发,提出了一种简化的分配方法simOTA,通过解决一个最优传输问题来分配标签,有效提高了模型的性能。
强化增强:YOLOX采用了MixUp和Mosaic这样的强化数据增强方法。
作者发现,在使用这些增强方法后,在ImageNet上的预训练就不再那么有益了,但这些强化的增强技术显著提高了模型的准确率。
通过这些改进,YOLOX在速度和准确性之间找到了一个最优平衡点,达到了2021年的最先进水平。
YOLOv6 是由美团视觉AI部门在2022年发布的一种新的对象检测模型,设计目的是为了提高检测速度和准确性。
背部(Backbone):它使用了一种新的以RepVGG模块为基础的结构,用于从输入图像中提取特征。
这些模块有助于网络学习到复杂的视觉模式,而且它们是层级排列的,以捕捉从低级到高级的特征。
脖子(Neck):它包括空间金字塔池化快速(SPPF)模块和多个卷积模块(Conv Modules),这些模块处理来自背部的特征并通过上采样(Upsample)和连接(Concat)操作将特征结合起来,以增强网络对不同尺度的特征感知。
头部(Head):头部则负责对分类和边界框回归任务进行预测。
YOLOv6采用了与YOLOv5类似的卷积模块,但使用了解耦头部,与YOLOv5的耦合头部不同,这样做可以更有效地分离这两个任务。
整个架构的目的是提高目标检测的准确性和效率,YOLOv6在保持YOLO系列快速实时检测的优势的同时,通过新的结构和技术提升了模型的性能。
图中还展示了特定的网络层如何连接,以及每个部分如何贡献于最终的损失计算,这对于模型训练和优化至关重要。
YOLOv6的创新点:
新的背景网络(Backbone):基于RepVGG的EfficientRep,使用高度并行结构,提高了处理速度。这种结构对比之前的YOLO背景网络有更高的并行度。
之所以使用这种结构,是为了增强模型处理大规模数据的能力。
标签分配:采用了TOOD中介绍的任务对齐学习方法。
改进了标签分配的准确性,提高了模型识别对象的能力。
新的分类和回归损失函数:使用了分类的VariFocal损失和SIoU/GIoU回归损失。
新的损失函数有助于提升模型预测边界框的准确性和分类的可信度。
自我蒸馏策略:用于回归和分类任务,以增强模型的泛化能力和准确性。
检测用量化方案:使用RepOptimizer和通道级蒸馏,这有助于模型在不牺牲准确性的前提下提高检测速度。
YOLOv6提供了从YOLOv6-N到YOLOv6-L6的八种不同规模的模型版本,以适应不同的应用场景和硬件要求。
在MS COCO数据集上的评估结果显示,最大的模型在NVIDIA Tesla T4上可以达到57.2%的AP和大约29FPS的速度。
YOLOv6的目的是在保持YOLO系列实时检测的传统的同时,通过创新的网络结构和训练策略,提升模型的性能和效率。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLOv7 是由 YOLOv4 和 YOLOR 的原作者在 2022 年发布的目标检测模型。
它在速度和准确性上超越了所有已知的目标检测器,同时没有使用预训练的模型,仅仅依赖于 MS COCO 数据集进行训练。
YOLOv7 提出了一些架构上的改变和一系列的“免费好处”(bag-of-freebies),这些改变提高了准确性,但只增加了训练时间,而不影响推断速度。
YOLOv7 的架构,它在网络设计中引入了 ELAN(Efficient Layer Aggregation Network)块,以增强模型的学习和代表性能力,并修改了RepVGG,去除了身份连接。
从输入图像到最终损失计算的整个流程,包括如下几个部分:
解决方案与改进点:
扩展高效层聚合网络(E-ELAN):
基于连接的模型的模型缩放:
计划重参数化卷积:
辅助头的粗标签分配和主头的精细标签分配:
卷积-批量标准化-激活中的批量标准化:
YOLOR中的隐式知识:
指数移动平均作为最终推理模型:
与YOLOv4和YOLOR的对比:
YOLO v7 在不牺牲检测速度的前提下,通过一系列的架构优化和训练策略的改进,实现了对于早期版本的显著提升。
改进包括提高了模型的学习效率、简化了模型结构以适应不同的硬件需求,并且增强了模型对于各种数据分布的适应能力。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
DAMO-YOLO 是阿里巴巴集团在2022年发布的目标检测模型,结合了那时候的技术进步,旨在解决以前YOLO版本的不足并提升性能。
改进点:
神经架构搜索(NAS):
大型颈部(Neck):
小型头部(Head):
AlignedOTA标签分配:
知识蒸馏:
与之前的YOLO模型的对比:
组成 =
在整体解决方案中,每种改进都旨在提高模型的性能,无论是在准确性、速度还是适应性方面。这些改进让 DAMO-YOLO 在目标检测任务中取得了显著的成绩。
YOLOv8 是 Ultralytics 公司开发的目标检测模型,它在 YOLOv5 的基础上进行了改进,并提供了多个版本以支持不同的视觉任务。
改进点:
改进的CSPLayer(现称为C2f模块):
锚点无关模型与解耦头部:
使用CIoU和DFL损失函数:
YOLOv8-Seg语义分割模型:
与之前的YOLO模型的对比:
组成 =
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
首先,PP-YOLO 是在 2020 年由百度的研究人员基于 YOLOv3 开发出来的。
这个模型使用了 PaddlePaddle 这个深度学习平台,所以有了 PP 这个名字。
PP-YOLO 引入了好几个提升检测器准确率的技巧,但它保持了原来的速度不变。
作者的目标不是发明一个全新的检测器,而是通过一步一步的改进来展示如何构建一个更好的检测器。
PP-YOLO 在很多方面都进行了创新,但也有一些是借鉴了 YOLOv4 的技巧,只是实现方式有所不同。
PP-YOLO 的变化主要包括:
然后是 PP-YOLOv2,这个模型在 2021 年发布,它在 PP-YOLO 的基础上做了四点改进,这些改进使得性能从 45.9% 的 AP 提升到了 49.5%。这些改进包括:
最后,PP-YOLOE 是在 2022 年发布的,它在 PP-YOLOv2 的基础上又做了进一步的提升,实现了 51.4% 的 AP 和更快的检测速度。
PP-YOLOE 的主要改进点包括:
每一次迭代和新版本的 YOLO 模型,都是为了解决之前版本中存在的问题,如提高对小物体的检测准确性、加速模型的训练和推理速度,以及优化模型的整体结构以提高准确率。
就像以前的 YOLO 版本一样,作者通过调整主干网络和颈部的宽度和深度,生成了多个不同规模的模型。
这些模型被命名为 PP-YOLOE-s(小型)、PP-YOLOE-m(中型)、PP-YOLOE-l(大型)和 PP-YOLOE-x(超大型),以适应不同的应用场景和硬件需求。
这些模型的目的是为了在保持高效的同时,提供各种规模的解决方案,以满足不同性能和资源限制的需求。
例如,小型和中型模型可能更适合资源受限的环境,而大型和超大型模型则旨在实现最高的性能,尽管这可能意味着需要更多的计算资源。
YOLO-NAS 是由 Deci 公司发布的目标检测模型,专为检测小型物体、提高定位准确性和提升性能与计算比率而设计
改进点:
量化感知模块:
自动架构设计:
混合量化方法:
自动标记数据的预训练:
具体的架构和训练过程:
训练数据:
发布的模型和性能:
YOLO-NAS 的目的是提供一个高性能的模型,能够在实时边缘设备上准确地检测小型物体,同时具有高效的性能计算比。
通过 AutoNAC 系统的帮助,用户可以找到最适合他们特定用途的结构,这项技术不仅考虑了数据和硬件,还考虑了推理过程中的其他因素,如编译器和量化。
这些模型的发布,展示了 Deci 在构建、优化和部署深度学习模型方面的专业能力。
在深度学习的多个领域,包括视觉在内,Transformer模型已经取得了突破性的进展。
因此,自然会有尝试将Transformer与YOLO结合起来用于目标检测。
YOLO结合Transformer技术的几个尝试:
YOLOS:
ViT-YOLO:
MSFT-YOLO:
NRT-YOLO:
YOLO-SD:
DEYO:
每个子解法都是为了在特定的应用场景中提高YOLO模型的表现,通过引入Transformer的全局特征提取能力和注意力机制来强化模型对复杂数据的理解能力,最终提高目标检测的准确性和鲁棒性。
ViT-YOLO:
MHSA-Darknet Backbone:这是模型的主干网络,结合了多头自注意力机制(Multi-Head Self-Attention, MHSA)和跨阶段部分连接(Cross-Stage Partial, CSP)的块。这种设计旨在捕获全局特征并提高模型的表示能力。
BiFPN Neck:该网络使用双向特征金字塔网络(Bi-directional Feature Pyramid Network, BiFPN)来整合来自不同阶段的特征。BiFPN 有助于在不同的尺度上改善特征的融合,从而提高对对象的定位和分类能力。
Detection Head:头部包括多个多尺度检测头,用于在不同分辨率上进行目标检测。这样的设计允许模型在不同尺寸的特征图上检测不同大小的物体。
整个架构旨在提高目标检测的准确性,特别是在复杂场景中,同时保持对小物体的高敏感性。
通过在不同层次上融合特征,模型能够更好地理解图像内容,实现更精确的检测。
这种架构通常需要较大的计算资源,但它提供了更精细的视觉理解能力。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。