数据增强在计算机视觉中的应用

数据增强是一种通过变换现有图像数据集来创建新图像的过程。例如,可以通过增加或减少亮度来增强图像,这有助于模型在不同的光照条件下更好地识别目标。同样,可以通过改变图像的角度来增强,帮助模型在不同角度下检测物体。数据增强可以应用于多种机器学习任务,如音频处理和计算机视觉。本文将重点讨论计算机视觉中的增强方法,特别是在目标检测、分割和分类这三个流行的视觉任务中,增强数据如何提高性能。

数据增强的方法

计算机视觉中,数据增强的方法多种多样,从改变亮度到向图像添加随机噪声。以下是一些最常见的增强方法:

  • 旋转:通过不同的角度(例如90度、180度)旋转图像。如果模型需要识别角度不同的物体,这种方法非常有用。
  • 随机裁剪:在随机位置裁剪图像。这可能导致裁剪穿过物体,使模型更好地学习如何识别不完全在视图中的物体。
  • 曝光:增加或减少图像的亮度。如果模型可能在不同光照条件下使用,这种方法很有用。
  • 模糊:对图像应用模糊效果。
  • 翻转:将图像上下或左右翻转。如果识别文本,应避免使用这种增强。
  • 饱和度:改变图像中颜色的强度。如果生产环境中的光照条件可能变化,这种增强很有用。
  • 随机噪声:在图像上添加白色和黑色像素。这使得图像更加“模糊”。
  • 马赛克增强:将不同的图像组合在一起。对于航拍图像项目特别有用。

增强可以应用于整个图像,或者在目标检测中应用于边界框。边界框是图像中包含要识别物体的兴趣区域。

数据增强的最佳实践

了解了增强的基本知识后,可能会想知道:“如何使用增强来扩展数据集并创建更强大的模型?” 非常好的问题!

最佳起点是先训练一个没有任何增强的模型,以便了解模型在基础数据集上的表现。如果模型在没有增强的情况下表现不佳,很可能需要解决数据集中的其他问题。提出问题,如“数据集中的图像是否代表了用例?”并审核标签的质量,将有助于解决数据集质量问题。

一旦对模型的初始版本和数据集感到满意,就可以开始应用增强。增强分为两种类型:基于颜色的(光度)和基于几何的。基于颜色的增强(例如,对比度、改变饱和度和改变亮度)在正确应用时很少会降低性能。例如,随机改变亮度5%通常是很安全的,如果模拟暗室,应该考虑做得更多。

鉴于基于颜色的增强在逻辑上应用时不太可能降低性能(即,用户旨在模拟的现实世界设置中的图像预览),建议首先应用这些增强,而不是逐步进行。对于基于几何的增强(例如,旋转、剪切、裁剪和翻转图像),建议选择性地进行并进行测试。更多的几何增强并不总是更好。

最适合数据集的增强方法取决于试图识别的内容。如何知道要应用哪些增强?查看上面的列表,并根据描述判断每种增强是否可能影响模型性能。

最重要的是,进行实验!思考哪些增强可能产生影响,测试并评估它们的影响,然后决定在生产中使用哪些增强来训练模型的版本。从基于颜色的增强开始,然后逐步尝试适合用例的几何增强。

如何生成增强数据

可以构建自定义脚本,使用开源库,或使用像Roboflow这样的软件来增强数据。Roboflow的数据集版本控制功能允许跟踪数据集的不同版本。增强应用于数据集版本,而不是基础数据集,因此可以轻松地尝试不同的增强。

要使用Roboflow增强数据,首先注册一个免费账户并按照应用内引导操作。然后,在主页上点击“创建新项目”按钮。为项目选择一个名称,并选择项目的任务类型(检测、分类、分割):

# 假设的代码示例 roboflow.create_project(project_name="项目", task_type="detection")

创建项目后,将图像上传到Roboflow。可以通过拖放图像文件夹来实现。如果尚未在数据集中标记图像,可以在Roboflow Annotate中进行标记。

点击右上角的“保存并继续”按钮,然后等待图像上传。这可能需要一些时间,具体取决于数据集中有多少图像。

上传图像后,点击Roboflow仪表板侧边栏中的“生成”链接:

# 假设的代码示例 roboflow.generate_augmentations(project_id="项目ID")

这将带进入一个页面,可以在其中应用增强和数据预处理步骤:

对于本指南,正在使用一个太阳能电池板数据集。应用亮度增强是有意义的,因为数据集中的航拍图像可能包含在暗光和亮光条件下的房子。还可以应用马赛克增强,这将合并不同的图像。这种增强通常用于航拍图像数据集。如果可能遮挡兴趣物体的噪声(例如,鸟类、树木部分等),可以添加噪声增强。

要应用增强,点击添加增强按钮。将弹出一个窗口,可以从中选择不同的增强:

# 假设的代码示例 augmentation = roboflow.select_augmentation(augmentation_name="brightness")

选择想要应用的增强。然后,如果需要,将被要求配置增强。可用的选项将取决于想要应用的增强。例如,对于噪声增强,可以控制向图像中引入多少噪声:

# 假设的代码示例 augmentation.configure(noise_level=5)

一旦选择了所有想要应用到数据集的增强,将被要求选择想要生成的数量。建议从不超过3倍的倍数开始。

配置完增强后,点击页面底部的“生成”。这将生成数据集版本。生成数据集版本所需的时间将取决于数据集中有多少图像。

生成增强图像后,将被带到一个页面,可以在那里导出数据集或在Roboflow上训练模型:

恭喜!已成功将增强应用于计算机视觉数据集。现在拥有通过拥有更多样化的数据集来提高模型鲁棒性所需的知识和工具。

通过将变换应用于数据集中的图像来生成增强图像。添加增强图像可以帮助模型泛化并更好地理解想要识别的目标。在生成增强图像之前,请确保模型达到了良好的基线性能水平。向不适合目的的数据集添加增强图像将不会有效。一旦对数据集感到满意,就可以应用增强。建议从基于颜色的增强开始,然后尝试适合用例的几何增强。

使用Roboflow,可以轻松地在不编写代码的情况下生成增强图像。工具带有数据集版本控制工具,让轻松跟踪和存储数据集的不同版本,从而帮助在尝试不同的增强时轻松管理数据集。

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