模型测试指南
简介
在训练和评估您的模型之后,就该对其进行测试了。模型测试包括评估模型在实际场景中的表现。测试会考虑准确性、可靠性、公平性以及理解模型决策的难易程度等因素。目标是确保模型按预期运行,交付预期的结果,并融入应用程序的总体目标或项目。
观看: 如何测试机器学习模型 | 避免计算机视觉中的数据泄露 🚀
模型测试与模型评估非常相似,但它们是计算机视觉项目中两个不同的步骤。模型评估涉及使用指标和图表来评估模型的准确性。另一方面,模型测试检查模型学习到的行为是否与预期相同。在本指南中,我们将探讨测试您的计算机视觉模型的策略。
模型测试 vs. 模型评估
首先,让我们通过一个例子来理解模型评估和测试之间的区别。
假设您已经训练了一个计算机视觉模型来识别猫和狗,并且您想在宠物店部署此模型以监控动物。在模型评估阶段,您使用带标签的数据集来计算诸如准确率、精确率、召回率和 F1 分数等指标。例如,该模型在给定的数据集中区分猫和狗的准确率可能为 98%。
评估之后,您可以使用宠物店的图像来测试模型,以了解它在更多样化和真实的条件下识别猫和狗的能力。您检查它是否可以在猫和狗移动、在不同的光照条件下或被玩具或家具等物体部分遮挡时正确标记它们。模型测试检查模型在受控评估环境之外是否按预期运行。
准备模型测试
计算机视觉模型通过检测模式、做出预测和评估其性能来从数据集中学习。这些数据集通常分为训练集和测试集,以模拟真实世界的条件。训练数据用于训练模型,而测试数据用于验证其准确性。
在测试模型之前,请记住以下两点:
- 真实表示: 之前未见过的测试数据应与模型部署时必须处理的数据相似。这有助于真实地了解模型的能力。
- 足够的尺寸: 测试数据集的大小需要足够大,才能提供关于模型性能的可靠见解。
测试您的计算机视觉模型
以下是测试计算机视觉模型并了解其性能的关键步骤。
- 运行预测: 使用模型对测试数据集进行预测。
- 比较预测结果: 检查模型的预测与实际标签(真实值)的匹配程度。
- 计算性能指标: 计算指标,如准确率、精确率、召回率和 F1 分数,以了解模型的优势和劣势。测试侧重于这些指标如何反映真实世界的性能。
- 可视化结果: 创建诸如混淆矩阵和 ROC 曲线之类的可视化辅助工具。这些工具可以帮助您发现模型在实际应用中可能表现不佳的具体领域。
接下来,可以分析测试结果:
- 错误分类的图像: 识别并查看模型错误分类的图像,以了解它在哪里出错。
- 错误分析: 执行彻底的错误分析,以了解错误的类型(例如,假阳性与假阴性)及其潜在原因。
- 偏差和公平性: 检查模型预测中是否存在任何偏差。确保模型在不同的数据子集上表现同样出色,尤其是在包含种族、性别或年龄等敏感属性时。
测试您的 YOLO11 模型
要测试您的 YOLO11 模型,您可以使用验证模式。这是一种了解模型优势和需要改进的方面的直接方法。此外,您需要为 YOLO11 正确格式化您的测试数据集。有关如何使用验证模式的更多详细信息,请查看模型验证文档页面。
使用 YOLO11 预测多个测试图像
如果您想在存储在文件夹中的多个图像上测试您训练好的 YOLO11 模型,您可以轻松地一次性完成。您可能只想查看测试集中所有图像的预测结果,而不是使用通常用于评估验证集上模型性能并提供详细指标的验证模式。为此,您可以使用预测模式。
验证模式和预测模式之间的区别
- 验证模式: 用于通过将预测结果与已知标签(真实值)进行比较来评估模型的性能。它提供详细的指标,如准确率、精确率、召回率和 F1 分数。
- 预测模式: 用于对新的、未见过的数据运行模型以生成预测。它不提供详细的性能指标,但允许您了解模型在真实图像上的表现。
在没有自定义训练的情况下运行 YOLO11 预测
如果您有兴趣测试基本的 YOLO11 模型,以了解它是否可以在没有自定义训练的情况下用于您的应用程序,您可以使用预测模式。虽然该模型是在 COCO 等数据集上预先训练的,但在您自己的数据集上运行预测可以快速了解它在您的特定环境中的表现。
机器学习中的过拟合和欠拟合
在测试机器学习模型时,尤其是在计算机视觉中,重要的是要注意过拟合和欠拟合。这些问题会严重影响您的模型在新数据上的工作效果。
过拟合
当您的模型过度学习训练数据时,包括那些不能推广到新数据的噪声和细节,就会发生过拟合。在计算机视觉中,这意味着您的模型在训练图像上可能表现出色,但在新图像上却表现不佳。
过度拟合的迹象
- 高训练精度,低验证精度: 如果您的模型在训练数据上表现非常好,但在验证或测试数据上表现不佳,则可能存在过拟合。
- 目视检查: 有时,如果您的模型对图像中的微小变化或不相关的细节过于敏感,您可以看到过拟合。
欠拟合
当模型无法捕捉数据中的深层模式时,就会发生欠拟合。在计算机视觉中,欠拟合的模型可能甚至无法正确识别训练图像中的对象。
欠拟合迹象
- 训练准确率低: 如果您的模型无法在训练集上实现高准确率,则可能欠拟合。
- 视觉错误分类: 持续无法识别明显的特征或对象表明欠拟合。
平衡过拟合与欠拟合
关键在于找到过拟合和欠拟合之间的平衡。理想情况下,模型在训练和验证数据集上都应表现良好。通过指标和可视化检查定期监控模型的性能,并应用正确的策略,可以帮助您获得最佳结果。
计算机视觉中的数据泄露以及如何避免它
在测试模型时,需要记住的一个重要事项是数据泄露。当来自训练数据集之外的信息意外地用于训练模型时,就会发生数据泄露。发生数据泄露时,模型在训练过程中可能看起来非常准确,但在新的、未见过的数据上表现不佳。
为什么会发生数据泄露
数据泄露可能很难发现,并且通常来自训练数据中的隐藏偏差。以下是计算机视觉中可能发生的一些常见方式:
- 相机偏差: 不同的角度、光照、阴影和相机移动可能会引入不需要的模式。
- 叠加偏差: 图像中的徽标、时间戳或其他叠加可能会误导模型。
- 字体和对象偏差: 某些类中经常出现的特定字体或对象可能会扭曲模型的学习。
- 空间偏差: 前景-背景、边界框分布和对象位置的不平衡会影响训练。
- 标签和域偏差: 不正确的标签或数据类型的变化可能导致泄漏。
检测数据泄露
要查找数据泄露,您可以:
- 检查性能: 如果模型的结果出人意料地好,则可能存在数据泄露。
- 查看特征重要性: 如果一个特征比其他特征重要得多,可能表明存在泄露。
- 目视检查: 仔细检查模型做出的决策在直观上是否有意义。
- 验证数据分离: 确保在任何处理之前正确分离数据。
避免数据泄露
为了防止数据泄露,请使用包含来自不同相机和环境的图像或视频的多样化数据集。仔细检查您的数据,并检查是否存在隐藏的偏差,例如所有阳性样本都是在一天中的特定时间拍摄的。避免数据泄露将有助于使您的计算机视觉模型在实际情况下更加可靠和有效。
模型测试之后做什么
在测试您的模型之后,后续步骤取决于结果。如果您的模型表现良好,您可以将其部署到实际环境中。如果结果不令人满意,您需要进行改进。这可能涉及分析错误、收集更多数据、提高数据质量、调整超参数和重新训练模型。
加入 AI 对话
加入计算机视觉爱好者社区有助于更高效地解决问题和学习。以下是一些联系、寻求帮助和分享想法的方式。
社区资源
- GitHub Issues: 浏览 YOLO11 GitHub 仓库,并使用 Issues 选项卡提问、报告错误和建议新功能。社区和维护人员非常活跃,随时准备提供帮助。
- Ultralytics Discord 服务器: 加入 Ultralytics Discord 服务器,与其他用户和开发人员聊天、获得支持并分享您的经验。
官方文档
- Ultralytics YOLO11 文档: 查看官方 YOLO11 文档,获取有关各种计算机视觉项目的详细指南和有用提示。
这些资源将帮助您应对挑战,并及时了解计算机视觉社区中的最新趋势和实践。
总结
构建值得信赖的计算机视觉模型依赖于严格的模型测试。通过使用先前未见过的数据测试模型,我们可以对其进行分析并发现诸如 过拟合 和数据泄露之类的弱点。在部署之前解决这些问题有助于模型在实际应用中表现良好。重要的是要记住,模型测试与模型评估同样重要,以保证模型的长期成功和有效性。
常见问题
在计算机视觉中,模型评估和模型测试之间的主要区别是什么?
模型评估和模型测试是计算机视觉项目中不同的步骤。模型评估涉及使用带标签的数据集来计算诸如准确率、精确率、召回率和F1 分数等指标,从而提供对模型在受控数据集上的性能的深入了解。另一方面,模型测试通过将模型应用于新的、未见过的数据来评估模型在真实场景中的性能,确保模型学习到的行为与评估环境之外的预期相符。有关详细指南,请参阅计算机视觉项目中的步骤。
如何在多张图像上测试我的 Ultralytics YOLO11 模型?
要在多个图像上测试您的 Ultralytics YOLO11 模型,您可以使用预测模式。此模式允许您在新的、未见过的数据上运行模型以生成预测,而无需提供详细的指标。这非常适合在存储在文件夹中的较大图像集上进行实际性能测试。要评估性能指标,请改用验证模式。
如果我的计算机视觉模型出现过拟合或欠拟合的迹象,我该怎么办?
为了解决过拟合问题:
- 诸如 dropout 等正则化技术。
- 增加训练数据集的大小。
- 简化模型架构。
为了解决欠拟合问题:
- 使用更复杂的模型。
- 提供更相关的特征。
- 增加训练迭代次数或 epochs。
查看错误分类的图像,执行彻底的错误分析,并定期跟踪性能指标以保持平衡。有关这些概念的更多信息,请浏览我们关于过拟合和欠拟合的部分。
如何检测和避免计算机视觉中的数据泄露?
要检测数据泄露:
- 验证测试性能是否异常高。
- 检查特征重要性,以获得意想不到的见解。
- 直观地审查模型决策。
- 确保在处理前进行正确的数据划分。
为了避免数据泄露:
- 使用具有各种环境的多样化数据集。
- 仔细检查数据中是否存在隐藏的偏见。
- 确保训练集和测试集之间没有重叠信息。
有关防止数据泄露的详细策略,请参阅我们关于计算机视觉中的数据泄露部分。
在测试我的计算机视觉模型后,我应该采取哪些步骤?
后测试阶段,如果模型性能满足项目目标,则继续进行部署。如果结果不理想,请考虑:
- 误差分析。
- 收集更多样化和高质量的数据。
- 超参数调整。
- 重新训练模型。
从模型测试与模型评估部分获取见解,以改进和增强模型在实际应用中的有效性。
如何在不进行自定义训练的情况下运行 YOLO11 预测?
您可以使用数据集上预训练的 YOLO11 模型运行预测,以查看它是否适合您的应用程序需求。 利用预测模式可以快速了解性能结果,而无需深入进行自定义训练。