Meet YOLO26: next-gen vision AI.

Link to this section关于模型评估与微调的见解#

训练完 YOLO 模型后,下一步是衡量其表现并进行微调以缩小差距。评估使用 mAPIoU 等指标来量化准确性,而微调则通过调整训练参数来增强薄弱环节,从而使模型符合你的项目目标。本指南介绍了关键评估指标、如何解读这些指标,以及能提升模型能力的微调技术。



Watch: Insights into Model Evaluation and Fine-Tuning | Tips for Improving Mean Average Precision

评估和微调位于计算机视觉项目工作流的末尾阶段,此时训练已在进行中,你需要验证模型是否准确、高效且准备好进行部署。

Link to this section关键评估指标#

各种指标用于衡量模型的有效性。这些性能指标提供了清晰的数字洞察,指导你进行改进,以确保模型实现预期目标。

Link to this section置信度分数#

置信度分数代表模型对于检测到的物体属于特定类别的确定程度。其范围从 0 到 1,分数越高表示置信度越高。置信度分数有助于过滤预测结果;只有置信度分数高于指定阈值的检测结果才会被视为有效。

没看到预测结果?

在运行推理时,如果你没看到任何预测结果且已检查过其他所有设置,请尝试降低置信度阈值。有时阈值太高,会导致模型忽略有效的预测。降低阈值可以让模型考虑更多的可能性。这可能无法满足你的最终项目目标,但却是了解模型能力并决定如何进行微调的好方法。

Link to this section交并比#

交并比 (IoU) 是目标检测中的一项指标,用于衡量预测的边界框与真实边界框的重叠程度。IoU 值的范围从 0 到 1,其中 1 代表完全匹配。IoU 至关重要,因为它衡量了预测边界与实际物体边界的吻合程度。

Intersection over Union Overview

Link to this section平均精度均值 (Mean Average Precision)#

平均精度均值 (mAP) 用于衡量目标检测模型的整体性能。它查看检测每个目标类别的精度,对这些分数取平均值,并给出一个数字,显示模型识别和分类目标的准确程度。

最常报告的 mAP 指标有两个:

  • mAP@.5: 衡量在 IoU 阈值为 0.5 时的平均精度。此指标检查模型是否能在较宽松的准确性要求下正确找到目标。它关注的是目标位置是否大致正确,无需完美的定位,有助于查看模型在检测目标方面是否表现良好。
  • mAP@.5:.95: 对在多个 IoU 阈值下计算出的 mAP 值取平均值,范围从 0.5 到 0.95,步长为 0.05。该指标更为详细且严格。它全面地展示了模型在不同严格程度下识别物体的准确性,对于需要精确目标检测的应用程序尤为有用。

其他 mAP 指标包括 mAP@0.75(使用更严格的 0.75 IoU 阈值)以及 mAP@small、medium 和 large(评估不同尺寸物体的精确度)。

Mean average precision mAP metric

Link to this section评估 YOLO26 模型#

你可以使用验证模式来评估已训练的 YOLO26 模型。如需更深入了解每个指标的计算和解读方式,请参阅 YOLO26 性能指标指南。

Link to this section处理可变图像尺寸#

在不同尺寸的图像上评估模型有助于了解其在多样化数据集上的表现。rect=true 验证参数会根据长宽比对图像进行分组,并将每个批次填充到适合的最小形状,这样即使矩形图像也不必强制转换为正方形进行评估。

imgsz 参数设置验证期间使用的图像尺寸,以正方形应用。如果你没有明确设置它,YOLO26 将重复使用模型设置中保存的值(官方预训练模型为 640,或者是自定义检查点训练时所用的尺寸)。使用 rect=true 时,YOLO26 会将长边限制为 imgsz,并将短边填充到步长的倍数,从而保持长宽比。请根据你的数据集维度和可用的 GPU 显存调整 imgsz

Link to this section访问 YOLO26 指标#

为了详细了解模型的性能,你可以通过几行 Python 代码访问特定的评估指标。下面的代码片段加载模型、运行验证并打印最有用的指标。

用法
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Run validation on your dataset
results = model.val(data="coco8.yaml")

# Overall metrics
print("mAP50-95:", results.box.map)  # mAP at IoU 0.50:0.95
print("mAP50:", results.box.map50)  # mAP at IoU 0.50
print("mAP75:", results.box.map75)  # mAP at IoU 0.75
print("Mean precision:", results.box.mp)
print("Mean recall:", results.box.mr)
print("Fitness:", results.box.fitness())  # weighted score used for model selection

# Per-class metrics
print("Class indices evaluated:", results.box.ap_class_index)
print("Per-class mAP50-95:", results.box.maps)

# Per-image precision, recall, F1, TP, FP, and FN
print("Per-image metrics:", results.box.image_metrics)

# Per-stage timing breakdown in milliseconds per image
print("Timing breakdown (ms/image):", results.speed)

请注意,fitness() 是一个方法,必须使用括号调用,而像 mapmap50mp 这样的指标则是直接访问的属性。

results.box.image_metrics 属性是一个按图像文件名索引的字典,包含每张图像在 IoU 为 0.5 时的 precisionrecallf1tpfpfn。预处理、推理、损失计算和后处理的时间记录在 results.speed 字典中。综合这些信息,你可以准确定位模型表现不佳的图像并进行相应微调。

Link to this section微调你的模型#

微调采用预训练模型并调整其参数,以提高在特定任务或数据集上的性能。这也被称为模型重训练,它让模型能更好地理解并预测它将在现实应用中遇到的数据。根据评估结果,通过密切关注一些关键参数和技术,你可以重新训练模型以获得最佳结果。

Link to this section从更高的学习率开始#

在常规训练过程中,学习率从低值开始,并在前几个 epoch 逐渐增加以稳定初始更新。微调时,模型已经携带了来自预训练的有用特征,因此你可以跳过这种预热,直接开始适应新数据。

Set the warmup_epochs training argument to 0 in model.train() to disable the warmup phase. Training then continues from the pretrained weights at the configured base learning rate (lr0) instead of ramping up to it, adjusting to the nuances of your new data.

在不进行学习率预热的情况下微调
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Fine-tune with the warmup phase disabled
model.train(data="coco8.yaml", epochs=10, warmup_epochs=0)

Link to this section针对小目标进行图像平铺#

图像分块(tiling)可以提高对小目标的检测准确性。通过将大图分割成更小的部分(例如将 1280x1280 的图像拆分为多个 640x640 的片段),你可以保留原始分辨率并让模型从高分辨率碎片中学习。Ultralytics 在推理时通过 SAHI 分块推理支持这一点。在对分块图像进行训练时,请确保为每个新片段正确调整你的标签。

Link to this section结论#

评估和微调是将训练好的模型变成可靠且可部署模型的关键:像 mAP 和 IoU 这样的指标可以暴露弱点,而有针对性的参数调整则能解决这些问题。从验证模式开始对模型进行基准测试,然后应用上述微调技术,并不断尝试新的参数、技术和数据集进行迭代。如果过程中出现问题,请在 Ultralytics GitHub 存储库Ultralytics Discord 服务器 上向社区提问。

Link to this section常见问题解答#

Link to this section评估 YOLO26 模型性能的关键指标是什么?#

为了评估 YOLO26 模型性能,重要的指标包括置信度分数、交并比 (IoU) 和平均精确度均值 (mAP)。置信度分数衡量模型对每个检测到的物体类别的确定程度。IoU 评估预测的边界框与真实情况的重叠程度。平均精确度均值 (mAP) 汇总了各类的精确度分数,mAP@.5 和 mAP@.5:.95 是针对不同 IoU 阈值的两种常见类型。在我们的YOLO26 性能指标指南中了解更多关于这些指标的信息。

Link to this section我该如何为我的特定数据集微调预训练的 YOLO26 模型?#

Fine-tuning a pretrained YOLO26 model involves adjusting its parameters to improve performance on a specific task or dataset. Start by evaluating your model with metrics, then set the warmup_epochs training argument to 0 in model.train() so the learning rate starts at the configured base value immediately instead of ramping up. During evaluation, parameters like rect=true help handle varied image sizes effectively. For more detailed guidance, refer to our section on fine-tuning your model.

Link to this section在评估 YOLO26 模型时,我该如何处理可变的图像尺寸?#

为了在评估期间处理不同的图像尺寸,请在 YOLO26 中使用 rect=true 参数,它会按长宽比对图像进行分组并填充每个批次,而不是强制每张图像都变成正方形。imgsz 参数设置验证的图像尺寸;如果你不覆盖它,YOLO26 将重复使用模型保存的值(官方预训练模型为 640)。根据你的数据集和 GPU 显存调整 imgsz。有关详细信息,请访问我们关于处理不同图像尺寸的部分。

Link to this section我该采取哪些实际步骤来提高 YOLO26 模型的平均精确度均值?#

提高 YOLO26 模型的平均精确度均值 (mAP) 涉及几个步骤:

  1. 调整超参数:尝试不同的学习率、批次大小和图像增强。
  2. 数据增强:使用 Mosaic 和 MixUp 等技术来创建多样化的训练样本。
  3. 图像分块:将大图像拆分为更小的分块,以提高小目标的检测准确性。

有关具体策略,请参阅我们关于微调你的模型的详细部分。

Link to this section我该如何在 Python 中访问 YOLO26 模型评估指标?#

运行验证后,你可以使用 Python 访问 YOLO26 模型评估指标:

用法
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n.pt")

# Run validation
results = model.val(data="coco8.yaml")

# Access key metrics
print("Mean average precision at IoU=0.50:", results.box.map50)
print("Mean average precision at IoU=0.50:0.95:", results.box.map)
print("Mean recall:", results.box.mr)
print("Class indices evaluated:", results.box.ap_class_index)

分析这些指标有助于你微调和优化你的 YOLO26 模型。如需更深入了解,请查看我们的 YOLO 性能指标指南。

评论