机器视觉模型训练、验证和测试集的划分

机器视觉项目中,防止模型过拟合并准确评估模型性能的一个关键步骤是将数据集划分为训练集、验证集和测试集。虽然这个概念听起来简单,但在实际操作中却有很多细节需要注意。

计算机视觉项目中的数据集划分

如果正在从事计算机视觉项目,可以考虑使用Roboflow来管理训练/测试数据集分割、数据集版本控制等。Roboflow是训练和部署计算机视觉目标检测和分类模型的最简单方式。

在训练计算机视觉模型时,会向模型展示示例图像以供学习。为了引导模型收敛,模型使用损失函数来告知模型离正确预测有多近或多远。损失函数是描述模型“坏度”的一种方式。损失函数的值越小,模型越好。

模型基于损失函数制定预测函数,将图像中的像素映射到输出。在训练过程中,模型可能会过度拟合到训练集,即模型可能学习到一个过于特定的函数,它在训练数据上表现良好,但无法泛化到它从未见过的图像上。

训练集、验证集测试集的作用

为了防止模型过拟合,需要将数据集划分为训练集、验证集和测试集。训练集是为训练模型而保留的数据集的最大部分。在训练后,对这些图像的推理需要谨慎,因为模型已经有机会查看并记住正确的输出。

建议将数据集的70%分配给训练集。(如果是高级用户并且对不使用默认设置感到舒适,已经在Roboflow中使更改这些默认设置变得更容易。)

验证集是在训练期间使用的数据集的独立部分,用于了解模型在未用于训练的图像上的表现如何。在训练期间,通常会在每个训练周期后持续报告验证指标,如验证mAP或验证损失。使用这些指标来了解模型在验证集上能达到的最佳性能。可以选择在这一点停止训练,这个过程称为“早停”。

建议将数据集的20%保留用于验证集

测试集的重要性

在所有训练实验结束后,可能对模型在验证集上的表现有了一定的了解。但重要的是要记住,验证集指标可能在模型创建过程中影响了,从这个意义上说,可能会过度拟合到验证集的新模型。

由于验证集在模型创建中被大量使用,因此保留一个完全独立的数据集——测试集非常重要。可以在项目结束时在测试集上运行评估指标,以了解模型在生产环境中的表现如何。

建议将数据集的10%分配给测试集。

预处理和增强与训练、验证、测试的关系

训练、验证和测试的概念自然影响了为训练和部署计算机视觉模型做准备时应该如何处理数据。预处理步骤是用于标准化所有三个分割的数据集的图像转换。示例包括静态裁剪图像或将其灰度化。所有预处理步骤都应用于训练、验证和测试。

图像增强用于通过对训练图像进行轻微修改来增加训练集的大小。这些仅适用于训练集,并且不应用于评估程序。在评估中,希望使用位于验证和测试集中的真实图像。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485