YOLO 全面回顾:从最初的YOLOv1到最新的YOLOv8、YOLO-NAS,以及整合了 Transformers 的 YOLO
YOLO 全面回顾
- 综述
- 评估指标
- YOLO v1
- YOLO v2
- YOLO v3
- YOLO v4
- YOLOv5 与 Scaled-YOLOv4
- YOLOR
- YOLOX
- YOLOv6
- YOLOv7
- DAMO-YOLO
- YOLOv8
- PP-YOLO, PP-YOLOv2, and PP-YOLOE
- YOLO-NAS
- YOLO with Transformers
综述
论文:https://arxiv.org/pdf/2304.00501.pdf
代码:github 搜索 YOLO 具体版本
主要是看看每个版本是怎么解决特定问题的。
首先,问题一就是在速度和准确度之间找到一个平衡。
-
最开始的 YOLO架构 为了快速处理图像,采用了一个单独的神经网络直接在整张图上进行对象检测。
-
目的就是要快,但也不能太牺牲准确度。
然后,问题二是关于提高准确度的。
- 原来的 YOLOv1 准确度还不够高,所以在 YOLOv2 和后面的版本中,他们改进了网络设计,比如加入了anchor boxes(一种框架技术),还修改了损失函数。
- 这些改进就是为了让检测更准确。
第三个问题是如何有效地处理不同大小的对象。
- 在 YOLOv3 及其后续版本中,他们采用了多尺度检测策略,这样就能更好地在不同大小的图像上检测到对象。
第四个问题涉及到计算效率。
- YOLOv4 和后续版本中,为了解决计算资源和效率的问题,进行了网络架构的改进和优化,像是权重剪枝和更高效的卷积操作。
- 这样一来,模型就更轻量了,适合在资源有限的设备上运行。
第五个问题是关于网络架构的自动化搜索,也就是 YOLO-NAS。
- 因为手动设计网络结构有其局限性,通过神经架构搜索(NAS),可以自动找到最优的网络结构,从而提升性能。
第六个问题是关于引入变换器(Transformers)。
- 这是为了改善模型对图像中对象之间复杂空间关系的理解能力。
每个版本都在针对某些特定的挑战进行优化和改进。
评估指标
用于评估模型性能的两个关键方面:对象检测指标和非极大值抑制(NMS)。
-
对象检测模型性能评估 - 平均精度(AP)
- 子问题: 如何客观评估对象检测模型的性能。
- 子解法: 使用平均精度(AP),一种基于精确度和召回率的指标。
- 目的: 通过精确度和召回率的平衡,提供一个综合评估模型性能的单一值。
- 特性: 在不同的类别和置信度阈值下评估模型,确保了全面性和可比性。
-
处理多个对象类别 - 类别平均精度(mAP)
- 子问题: 在包含多个对象类别的情况下,评估模型性能。
- 子解法: 计算每个类别的平均精度(AP),然后取这些AP的平均值(称为mAP)。
- 目的: 确保模型在每个类别上的表现都得到评估,提供更全面的性能指标。
- 特性: 适用于处理具有多个对象类别的复杂数据集,如PASCAL VOC和COCO。
-
准确的对象定位 - 交并比(IoU)
- 子问题: 如何评估模型预测的边界框与真实边界框的匹配程度。
- 子解法: 使用交并比(IoU)作为评估边界框质量的标准。
- 目的: 精确测量模型预测的边界框与实际对象的重叠程度,确保定位准确性。
- 特性: 是评估对象检测模型在精准定位对象方面表现的关键指标。
-
减少重叠边界框 - 非极大值抑制(NMS)
- 子问题: 如何处理模型产生的重叠边界框。
- 子解法: 应用非极大值抑制(NMS)技术过滤掉冗余和不准确的边界框。
- 目的: 减少重叠边界框,保留最准确的预测,提高整体检测质量。
- 特性: 用于在多个重叠预测中选择最佳预测,常用于对象检测算法的后处理。
对象检测领域中模型性能评估和优化 =
- 对象检测模型性能评估 - 平均精度 AP +
- 处理多个对象类别 - 类别平均精度 mAP +
- 准确的对象定位 - 交并比 IoU +
- 减少重叠边界框 - 非极大值抑制 NMS
YOLO v1
-
子问题与解法1: 实时对象检测的一体化方法 - YOLO的端到端架构
- 子问题: 如何在单次网络传递中完成对象检测任务?
- 子解法: YOLO采用了一种端到端的方法,通过将图像分割成网格并对每个网格预测边界框和类别概率。
- 目的: 减少计算复杂度,提高对象检测的速度。
- 特性: 通过一次性处理整个图像实现快速检测,与传统的滑动窗口或区域提案方法相比,大大加快了速度。
-
子问题与解法2: 对象定位和分类 - 网格划分和边界框预测
- 子问题: 如何在一次网络传递中确定对象的位置和类别?
- 子解法: 将输入图像划分为S×S的网格,每个网格预测B个边界框和C个类别的概率。
- 目的: 同时实现对象的定位和分类,确保检测的准确性。
- 特性: 通过在每个网格中预测多个边界框和类别概率,YOLO能够捕捉到图像中的不同对象。
-
子问题与解法3: 训练与网络设计 - YOLOv1的卷积架构
- 子问题: 如何设计一个高效的网络架构进行对象检测?
- 子解法: YOLOv1使用24个卷积层和两个全连接层,通过预训练和微调来优化模型。
- 目的: 通过卷积层捕捉特征,全连接层预测边界框和类别,以实现准确的对象检测。
- 特性: 使用1×1卷积层降低特征图数量,保持参数数量相对较低,从而提高效率。
-
子问题与解法4: 性能优化和过拟合防止 - 预训练和数据增强
- 子问题: 如何提高模型的泛化能力和检测精度?
- 子解法: YOLOv1首先在ImageNet数据集上预训练,然后在PASCAL VOC数据集上进行微调,并使用数据增强技术。
- 目的: 提高模型对新图像的适应能力,并在不同的变换下保持检测的准确性。
- 特性: 数据增强通过缩放、平移、曝光度和饱和度调整增加了训练数据的多样性。
-
子问题与解法5: 损失函数设计 - 多部分损失函数
- 子问题: 如何定义一个合适的损失函数来训练YOLO模型?
- 子解法: YOLOv1的损失函数由多个平方误差项组成,包括定位损失、置信度损失和分类损失。
- 目的: 精确度量模型在边界框预测和类别预测方面的表现,并通过不同的权重来平衡它们。
- 特性: 通过调整λcoord和λnoobj,增强模型对于边界框预测的关注,降低对没有对象的格子的关注。
-
子问题与解法6: 预测后处理 - 非极大值抑制(NMS)
- 子问题: 如何在模型预测出多个重叠边界框时选择最佳的框?
- 子解法: 应用非极大值抑制(NMS)来消除重叠的预测,只保留具有最高置信度的边界框。
- 目的: 减少冗余的检测框,提高检测的质量和准确性。
- 特性: NMS通过保留最佳预测并移除重叠的、次优的预测,优化了最终的检测结果。
-
子问题与解法7: 优化和局限性处理 - 改进YOLOv1
- 子问题: YOLOv1在哪些方面存在限制,以及如何进行优化?
- 子解法: 分析YOLOv1的局限性,包括对相同类别的对象在同一网格中的检测限制、对特定宽高比对象的检测问题,以及下采样层导致的粗糙特征学习。
- 目的: 通过识别这些问题,为未来版本的YOLO提供了改进方向。
- 特性: YOLOv1的简单架构和一次回归检测虽然快速,但在对象定位精度方面不如当时的先进方法,这促使后续版本进行了优化。
上图是一个采用3x3网格的YOLO模型,用于检测三个类别,每个网格元素预测一个类别,产生一个包含八个值的向量。
-
存在性(Existence of object): 对于每个网格单元,模型预测一个对象是否存在。
在这个例子中,只有中间和右边的网格单元预测到对象存在(值为1),其他网格的值为0,表示没有检测到对象。
-
边界框(Bounding box): 对于中间网格单元,模型预测了边界框的参数,包括:
- ( b_x ) 和 ( b_y ) 是边界框中心相对于网格单元的位置坐标。
- ( b_h ) 和 ( b_w ) 是边界框的高度和宽度相对于整个图像的比例。
-
类别标签(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 设计思路
YOLO v2
YOLOv1是一个革命性的对象检测模型,它以其速度和效率在计算机视觉领域引起了轰动。然而,尽管它的性能令人印象深刻,但它在一些关键方面仍有局限性。
例如,它在处理小物体、靠近的物体以及那些与训练数据中的形状和尺寸差异很大的物体时,表现不尽人意。
此外,YOLOv1在精确定位物体方面也存在一些挑战,特别是在复杂的背景中。
为了克服这些问题,YOLOv2引入了一系列改进措施,使得模型不仅保持了YOLOv1的快速性能,同时在准确性、灵活性和鲁棒性方面都有显著提升。
-
改善训练稳定性 - 批量归一化:
- 为什么引入:批量归一化通过规范化层的输入,可以加速训练过程并减少过拟合。
- 改进原因:YOLOv1在训练过程中可能会遇到收敛问题,批量归一化有助于缓解这一问题,提高模型的泛化能力。
-
高分辨率分类 - 分辨率提升:
- 为什么提升分辨率:高分辨率可以帮助模型捕捉到更细致的图像特征,从而提高检测的准确性。
- 改进原因:YOLOv1在处理高分辨率图像时可能不够准确,提高分辨率可以使模型更好地学习和识别详细特征。
-
结构简化 - 全卷积网络:
- 为什么使用全卷积:全卷积网络能够处理任意大小的输入图像,而不是限制在特定的输入尺寸。
- 改进原因:YOLOv1使用了全连接层,这限制了输入图像的尺寸,全卷积网络的使用提高了模型的灵活性。
-
边界框预测 - 使用锚点框:
- 为什么使用锚点框:锚点框能够为模型提供一系列预定义的边界框形状,以适应不同形状的物体。
- 改进原因:YOLOv1在预测靠近的物体或者不常见比例的物体时可能会出错,锚点框提供了一种更好的先验知识。
-
精确预测 - 维度聚类:
- 为什么使用维度聚类:通过聚类分析实际数据中的边界框,可以找到更适合的锚点框尺寸。
- 改进原因:YOLOv1可能无法很好地预测实际中的边界框尺寸,维度聚类帮助模型更准确地估计边界框。
-
直接位置预测 - 网格单元相对坐标:
- 为什么直接预测位置:这简化了预测过程,使模型可以直接预测边界框相对于网格单元的位置。
- 改进原因:YOLOv1在进行边界框定位时,对于每个网格单元中的对象,只能预测边界框的中心相对于网格单元的偏移,并且限制了每个单元只能检测一定数量的对象(通常是两个)。
这种方法在面对多个密集排列的小尺寸对象时会遇到问题,因为它可能无法准确区分紧邻的多个对象。
直接位置预测使YOLOv2能够更准确地定位每个网格单元中的多个对象,特别是当这些对象彼此非常接近时。
这一改进让模型对于小物体的检测更加敏感,并且改善了对于对象群体的定位能力。
改进原因:YOLOv1预测边界框时依赖于整个图像的全局信息,这可能导致对小物体或紧密排列的物体的位置预测不够精确。直接在网格单元内预测位置可以提高这些情况下的定位准确性。
-
更细粒度特征 - 去除一个池化层:
- 为什么去除池化层:减少池化层可以保留更多的空间信息,这对于定位小物体特别重要。
- 改进原因:YOLOv1通过池化层减少了特征图的维度,这虽然有助于减少计算量,但同时也丢失了一些细节信息。减少池化层的数量,YOLOv2能够保留更多的细节信息,提高对小对象的识别能力。
-
多尺度训练 - 灵活的输入尺寸:
- 为什么进行多尺度训练:多尺度训练使模型能够适应不同大小的输入图像,这样模型就能够更好地泛化到各种分辨率的图像上。
- 改进原因:YOLOv1在训练和测试时使用的是固定尺寸的图像,这可能限制了模型在不同尺寸输入上的表现。通过对模型进行多尺度训练,YOLOv2能够更好地适应不同尺寸的图像,从而提高了在实际应用中的适用性和鲁棒性。
通过这些改进,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 设计思路
YOLO v3
YOLOv3引入的改进针对的是提高检测精度、加强小物体识别和优化模型的泛化能力,同时保持实时性能。
YOLOv3在继承了YOLOv2的基础上进行了显著的改进,目的是为了与当时的最先进技术相匹配(跳跃链接),并保持实时性能:
-
子问题与解法1: 边界框预测的改进 - 对象性得分的引入
- 为什么使用对象性得分:通过逻辑回归为每个边界框预测一个对象性得分,这个得分对于与真实边界框重叠最多的锚点框为1,其余为0。
- 改进原因:这是因为在YOLOv2中,边界框可能会缺乏区分真实对象与背景的明确信号,通过引入对象性得分,YOLOv3能够更准确地判断边界框中是否包含对象。
-
子问题与解法2: 类别预测的改进 - 独立逻辑分类器的使用
- 为什么使用独立逻辑分类器:使用二元交叉熵训练独立的逻辑分类器,将问题构建为多标签分类。
- 改进原因:与YOLOv2不同,这样可以在同一个边界框上分配多个标签,这在某些具有重叠标签的复杂数据集上非常有用,例如同一个对象既可以标为“人”也可以标为“男人”。
-
子问题与解法3: 主干网络的改进 - Darknet-53的引入
- 为什么引入Darknet-53:YOLOv3引入了包含53个卷积层的更大特征提取器,且带有残差连接。
- 改进原因:这是为了捕获更复杂的特征表示,并加速网络的训练过程,同时与更大的ResNet-152相比提供了几乎两倍的速度。
-
子问题与解法4: 特征提取的改进 - 空间金字塔池化 (SPP)
- 为什么使用SPP:YOLOv3在主干网络中加入了修改过的SPP块,它使用不同大小的池化核来扩大感受野。
- 改进原因:这是为了提升网络在没有下采样的情况下对大范围特征的把握能力,尤其是对AP50指标的提升有显著帮助。
-
子问题与解法5: 多尺度预测的引入
- 为什么使用多尺度预测:YOLOv3在三个不同的尺度上预测三个不同大小的边界框。
- 改进原因:这有助于获取更精细的边界框,并显著提高了对小物体的预测能力,这是以往版本的主要弱点。
-
子问题与解法6: 边界框先验的改进 - 使用不同尺度的锚点框
- 为什么调整锚点框:与YOLOv2不同,YOLOv3为三个不同的尺度使用了三个先验框。
- 改进原因:这是为了在多个尺度上提供更准确的边界框预测,并且可以更好地适应不同大小的物体。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLO v4
YOLOv4的改进是为了解决之前版本YOLO系列模型在某些方面的限制,并进一步增强其检测能力。
-
子问题与解法1: 网络架构的增强 - CSPDarknet53
- 以前的问题: YOLOv3的Darknet-53虽然性能强大,但计算量较大。
- 改进的解法: 使用CSPNet结构优化Darknet-53,减少计算量。
- 为什么使用: CSPNet通过在不同阶段的连接中减少参数,既减轻了计算负担,又保持了模型的准确率。
-
子问题与解法2: 训练策略的优化 - 高级数据增强
- 以前的问题: 以前的YOLO版本在训练数据多样性和正则化方面有限。
- 改进的解法: 引入马赛克数据增强和DropBlock正则化。
- 为什么使用: 通过更复杂的数据增强提高模型泛化能力,DropBlock更适合于卷积网络的结构,提升了正则化效果。
-
子问题与解法3: 对抗性鲁棒性的提升 - 自适应对抗训练
- 以前的问题: 早期版本的YOLO可能对输入扰动不够鲁棒。
- 改进的解法: 通过自适应对抗训练增加模型鲁棒性。
- 为什么使用: 使模型在面对输入扰动时保持性能,增加了模型对抗不利条件的适应性。
-
子问题与解法4: 超参数的优化 - 遗传算法
- 以前的问题: 之前YOLO版本的超参数选择可能不是最优的。
- 改进的解法: 使用遗传算法来优化超参数选择。
- 为什么使用: 遗传算法可以系统地探索参数空间,找到最优的训练超参数组合。
综上,YOLOv4的改进主要集中在四个方面:
- 提升架构效率:通过CSPDarknet53减少了计算量,同时保持了性能。
- 增强训练策略:引入新的数据增强和正则化技术,提高了模型的泛化能力和准确率。
- 增加模型鲁棒性:自适应对抗训练提高了模型对输入变化的适应能力。
- 优化超参数选择:遗传算法确保了训练过程使用最佳的超参数。
这些改进解决了以前版本中的特定问题,例如提高模型对多样化训练数据的适应能力、提升对抗性攻击的鲁棒性,以及通过精细调整超参数来优化训练效果。
通过这些集成的改进措施,YOLOv4在不牺牲实时性能的前提下实现。
- CSPDarknet53:作为特征提取器或主干网络(backbone),它包含多个卷积层和跨阶段部分连接(cross-stage partial connections),以及用于特征提取的残差网络结构。
- CMB:代表卷积层(Convolution)+ 批量归一化(Batch Normalization)+ Mish激活函数,这是在整个网络中广泛使用的基础模块。
- CBL:这是一个包含卷积层(Convolution)、批量归一化(Batch Normalization)和Leaky ReLU激活函数的组合模块。
- SPP:空间金字塔池化(Spatial Pyramid Pooling),用于聚合不同尺度的特征,以提高感受野,并改善检测性能。
- PANet:路径聚合网络(Path Aggregation Network),用于增强不同层间的特征连接和信息流,以改善特征的表示能力。
- UP:上采样(upsampling),它将特征图的尺寸增加到更高分辨率,以用于多尺度预测。
- YOLO Head:检测头部分,它负责根据主干网络和颈部网络提供的特征进行目标的分类和定位。
网络输出是三个不同尺度的特征图,每个特征图都包含了物体的边界框(bounding box)信息和类别预测。
这些特征图的尺寸分别为 13x13
、26x26
和 52x52
,代表不同尺度的预测,以便在不同大小的图像区域中检测对象。
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLOv5 与 Scaled-YOLOv4
YOLO v5:
YOLOv5 和 Scaled-YOLOv4 的改进点是为了解决以前版本在特定场景下的局限性,如小物体检测不准确、实时性能不足等问题。
- YOLO v5 上图:CSPDarknet53主干网络与SPPF和PANet,加上对YOLOv3头部风格的引用以及SiLU激活函数
这些改进使得YOLO系列在保持实时性能的同时,也能在更多场景下提供更高的准确性和适应性。
YOLOv5的改进和特性:
-
子问题与解法1: 锚点框自适应调整 - AutoAnchor
- 为什么使用AutoAnchor: 因为传统的锚点框可能不适合所有数据集和训练配置。
- 目的: 自动调整锚点框以提高模型对特定数据集的准确性和召回率。
-
子问题与解法2: 架构优化 - 修改后的CSPDarknet53
- 为什么使用修改后的CSPDarknet53: 为了在不牺牲准确性的情况下降低计算成本。
- 目的: 提供一个强大而高效的特征提取器,加速特征提取并处理不同尺度的特征。
-
子问题与解法3: 特征金字塔网络优化 - SPPF和CSP-PAN
- 为什么使用SPPF和CSP-PAN: 为了提高网络的特征处理能力和解析度。
- 目的: 允许网络捕获更详细的信息,尤其是小尺寸的物体。
-
子问题与解法4: 数据增强策略 - Mosaic和其他增强
- 为什么使用Mosaic等增强: 为了提高网络对不同环境下物体的检测能力。
- 目的: 增强模型的泛化能力,使其对各种变化和干扰更为鲁棒。
Scaled-YOLOv4的改进和特性:
-
子问题与解法1: 模型缩放技术 - Scaling-up和Scaling-down
- 为什么使用Scaling-up和Scaling-down: 为了在准确性和速度之间找到最佳平衡。
- 目的: 提供不同性能级别的模型,以适应从嵌入式设备到高端GPU的不同计算资源。
-
子问题与解法2: 轻量级模型 - YOLOv4-tiny
- 为什么使用YOLOv4-tiny: 为了在低端设备上提供实时性能。
- 目的: 创建一个运行快速但准确度较低的模型,适合计算资源受限的场景。
-
子问题与解法3: 高性能模型 - YOLOv4-large
- 为什么使用YOLOv4-large: 为了在服务器级硬件上实现最先进的性能。
- 目的: 提供一个准确度高的模型,虽然速度较慢,但能在高资源环境中达到最好的检测效果。
YOLOR
YOLOR其实是基于YOLO之上的一个进阶版,目的是要打造一个能够同时搞定好几个任务的全能模型,就像是分类啦、发现物体啦、还有估计姿态啦这些。
要做到这一点,研究者们采取了两个主要的策略:
-
多任务学习方法 - 通用表征学习:这个想法就是让模型学到一种能通用于多个任务的知识,这样一来,不同的任务可以共享一些学到的特点,就像我们人类学习自行车骑行和滑冰时共享平衡的技能一样。
-
隐式知识编码 - 多任务表征增强:在我们的大脑里,有些知识是我们潜意识中学到的,我们可能没法清楚地解释它们,但这些知识对解决问题超有帮助。
YOLOR就是想让模型也能这样,通过编码这些隐式的知识,让模型在处理多个不同的任务时都能有更好的表现。
总的来说,YOLOR的大动作就是打通任督二脉,让模型不仅仅是单打独斗,而是能够在多个领域都发挥出色,更像一个多面手。
这种方法让模型在多个任务上都能受益,变得更聪明也更能适应不同的挑战。
YOLOX
YOLOv6
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
YOLOv7
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
DAMO-YOLO
YOLOv8
更具体过程:YOLO系列:YOLO v1-v8、YOLOx、PP-YOLOE、DAMO-YOLO、YOLOX-PAI 设计思路
PP-YOLO, PP-YOLOv2, and PP-YOLOE
YOLO-NAS