YOLO Vision 2026:

使用 Ultralytics YOLO 进行数据增强#

YOLO data augmentation examples showing original and augmented images for training

简介#

数据增强是计算机视觉中的一项关键技术,它通过对现有图像应用各种变换来人工扩充训练数据集。在训练诸如 Ultralytics YOLO 这样的深度学习模型时,数据增强有助于提高模型的鲁棒性、减少过拟合,并增强模型对现实世界场景的泛化能力。



Watch: How to use Mosaic, MixUp & more Data Augmentations to help Ultralytics YOLO Models generalize better 🚀

为什么数据增强很重要#

数据增强在训练计算机视觉模型时发挥着多种关键作用:

  • 扩充数据集:通过创建现有图像的变体,你可以在无需收集新数据的情况下有效增加训练数据集的大小。
  • 提高泛化能力:模型学会识别各种条件下的物体,从而在现实应用中更具稳健性。
  • 减少过拟合:通过在训练数据中引入差异性,模型就不太可能记住特定图像的特征。
  • 性能提升:通过适当的增强训练出来的模型通常在验证集和测试集上能获得更好的准确率

Ultralytics YOLO 的实现提供了一套全面的增强技术,每种技术都有特定的用途,并以不同的方式助力模型性能。本指南将详细探讨每个增强参数,帮助你了解何时以及如何有效地在项目中使用它们。

配置示例#

你可以使用 Python API、命令行界面 (CLI) 或配置文件来自定义每个参数。以下是每种方法设置数据增强的示例。

配置示例
import albumentations as A

from ultralytics import YOLO

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

# Training with custom augmentation parameters
model.train(data="coco.yaml", epochs=100, hsv_h=0.03, hsv_s=0.6, hsv_v=0.5)

# Training without any augmentations (disabled values omitted for clarity)
model.train(
    data="coco.yaml",
    epochs=100,
    hsv_h=0.0,
    hsv_s=0.0,
    hsv_v=0.0,
    translate=0.0,
    scale=0.0,
    fliplr=0.0,
    mosaic=0.0,
    erasing=0.0,
    auto_augment=None,
)

# Training with custom Albumentations transforms (Python API only)
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.CLAHE(clip_limit=4.0, p=0.5),
]
model.train(data="coco.yaml", epochs=100, augmentations=custom_transforms)

使用配置文件#

你可以在 YAML 配置文件(例如 train_custom.yaml)中定义所有训练参数,包括数据增强。mode 参数仅在使用 CLI 时是必需的。这个新的 YAML 文件随后将覆盖位于 ultralytics 包中的默认文件

# train_custom.yaml
# 'mode' is required only for CLI usage
mode: train
data: coco8.yaml
model: yolo26n.pt
epochs: 100
hsv_h: 0.03
hsv_s: 0.6
hsv_v: 0.5

然后使用 Python API 启动训练:

训练示例
from ultralytics import YOLO

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

# Train the model with custom configuration
model.train(cfg="train_custom.yaml")

颜色空间增强#

色调调整(hsv_h#

  • 范围0.0 - 1.0
  • 默认值0.015
  • 用法:在保持色彩关系的同时改变图像颜色。hsv_h 超参数定义了偏移幅度,最终的调整值在 -hsv_hhsv_h 之间随机选择。例如,在 hsv_h=0.3 的情况下,偏移量在 -0.30.3 之间随机选择。对于大于 0.5 的值,色调偏移会绕过色环,这就是为什么在 0.5-0.5 之间增强效果看起来是一样的。
  • 目的:特别适用于光照条件会显著影响物体外观的户外场景。例如,香蕉在强烈的阳光下看起来更黄,而在室内看起来可能更发绿。
  • Ultralytics 的实现RandomHSV
-0.5-0.250.00.250.5
色调偏移 -0.5 增强色调偏移 -0.25 增强无增强的原始图像色调偏移 0.25 增强色调偏移 -0.5 增强

饱和度调整(hsv_s#

  • 范围0.0 - 1.0
  • 默认值0.7
  • 用法:修改图像中颜色的强度。hsv_s 超参数定义了偏移幅度,最终的调整值在 -hsv_shsv_s 之间随机选择。例如,在 hsv_s=0.7 的情况下,强度在 -0.70.7 之间随机选择。
  • 目的:帮助模型处理多变的天气条件和相机设置。例如,红色交通标志在晴天可能显得非常鲜艳,但在雾天可能看起来暗淡且褪色。
  • Ultralytics 的实现RandomHSV
-1.0-0.50.00.51.0
饱和度 -1.0 灰度增强饱和度 -0.5 增强无增强的原始图像饱和度 0.5 增强饱和度 1.0 鲜艳增强

亮度调整(hsv_v#

  • 范围0.0 - 1.0
  • 默认值0.4
  • 用法:更改图像的亮度。hsv_v 超参数定义了偏移幅度,最终的调整值在 -hsv_vhsv_v 之间随机选择。例如,在 hsv_v=0.4 的情况下,强度在 -0.40.4 之间随机选择。
  • 目的:对于需要适应不同光照条件进行表现的模型至关重要。例如,红苹果在阳光下看起来很亮,但在阴影中看起来要暗得多。
  • Ultralytics 的实现RandomHSV
-1.0-0.50.00.51.0
亮度 -1.0 暗度增强亮度 -0.5 增强无增强的原始图像亮度 0.5 增强亮度 1.0 亮度增强

几何变换#

旋转(degrees#

  • 范围0.0180
  • 默认值0
  • 用法:在指定的范围内随机旋转图像。degrees 超参数定义了旋转角度,最终的调整值在 -degreesdegrees 之间随机选择。例如,在 degrees=10.0 的情况下,旋转角度在 -10.010.0 之间随机选择。
  • 目的:对于物体可能以不同方向出现的应用至关重要。例如,在航空无人机影像中,车辆可能朝向任何方向,要求模型无论旋转角度如何都能识别物体。
  • Ultralytics 的实现RandomPerspective
-180-900.090180
旋转 -180 度增强旋转 -90 度增强无增强的原始图像旋转 90 度增强旋转 180 度增强

平移(translate#

  • 范围0.0 - 1.0
  • 默认值0.1
  • 用法:按图像大小的随机比例水平和垂直平移图像。translate 超参数定义了平移幅度,最终调整值在 -translatetranslate 范围内随机选择两次(每个轴一次)。例如,在 translate=0.5 的情况下,x 轴上的平移在 -0.50.5 之间随机选择,并且在 y 轴上的相同范围内选择另一个独立的随机值。
  • 目的:帮助模型学习检测部分可见的物体,并提高对物体位置的稳健性。例如,在车辆损坏评估应用中,汽车零部件可能会根据摄影师的位置和距离完全或部分出现在画面中,平移增强将教会模型无论其完整性或位置如何都能识别这些特征。
  • Ultralytics 的实现RandomPerspective
  • 注意:为简单起见,下面应用的平移对于 xy 轴每次都是相同的。未显示值 -1.01.0,因为它们会将图像完全平移出画幅。
-0.5-0.250.00.250.5
平移 -0.5 偏移增强平移 -0.25 偏移增强无增强的原始图像平移 0.25 偏移增强平移 0.5 偏移增强

缩放(scale#

  • 范围0.0 - 1.0
  • 默认值0.5
  • 用法:在指定范围内按随机因子调整图像大小。scale 超参数定义了缩放因子,最终调整值在 1-scale1+scale 之间随机选择。例如,在 scale=0.5 的情况下,缩放在 0.51.5 之间随机选择。
  • 目的:使模型能够处理处于不同距离和大小的物体。例如,在自动驾驶应用中,车辆可能出现在离相机远近不一的位置,需要模型无论其大小如何都能识别它们。
  • Ultralytics 的实现RandomPerspective
  • 注意
    • 未显示值 -1.0,因为它会使图像消失,而 1.0 仅仅导致 2 倍缩放。
    • 下表中显示的值是通过超参数 scale 应用的值,而不是最终的缩放因子。
    • 如果 scale 大于 1.0,则图像可能非常小或被翻转,因为缩放因子是在 1-scale1+scale 之间随机选择的。例如,在 scale=3.0 的情况下,缩放在 -2.04.0 之间随机选择。如果选择了负值,则图像会翻转。
-0.5-0.250.00.250.5
缩放 0.5 倍缩小增强缩放 0.75 倍缩小增强无增强的原始图像缩放 1.25 倍放大增强缩放 1.5 倍放大增强

错切(shear#

  • 范围-180+180
  • 默认值0
  • 用法:引入沿 x 轴和 y 轴使图像倾斜的几何变换,在保持平行线的同时有效地将图像的一部分向一个方向移动。shear 超参数定义了错切角度,最终调整值在 -shearshear 之间随机选择。例如,在 shear=10.0 的情况下,x 轴上的错切在 -1010 之间随机选择,并且在 y 轴上的相同范围内选择另一个独立的随机值。
  • 目的:帮助模型泛化由于轻微倾斜或斜视角度引起的视角变化。例如,在交通监控中,汽车和交通标志等物体可能由于相机位置不正而显得歪斜。应用剪切增强可确保模型学会在这种偏斜扭曲下依然能识别物体。
  • Ultralytics 的实现RandomPerspective
  • 注意
    • shear 值可能会迅速使图像扭曲,因此建议从较小的值开始并逐渐增加它们。
    • 与透视变换不同,剪切不会引入深度或消失点,而是通过改变物体的角度同时保持对边平行来扭曲物体的形状。
-10-50.0510
剪切 -10 度增强剪切 -5 度增强无增强的原始图像剪切 5 度增强剪切 10 度增强

透视(perspective#

  • 范围0.0 - 0.001
  • 默认值0
  • 用法:沿 x 轴和 y 轴应用完整的透视变换,模拟从不同深度或角度观察时对象的外观。perspective 超参数定义了透视幅度,最终调整值在 -perspectiveperspective 之间随机选择。例如,在 perspective=0.001 的情况下,x 轴上的透视在 -0.0010.001 之间随机选择,并且在 y 轴上的相同范围内选择另一个独立的随机值。
  • 目的: 透视增强对于处理极端视点变化至关重要,特别是在物体由于透视偏移而显得缩短或变形的场景中。例如,在无人机目标检测中,建筑物、道路和车辆会根据无人机的倾斜度和高度而显得被拉伸或压缩。通过应用透视变换,模型可以学会在这些透视引起的变形下识别物体,从而提高其在实际部署中的鲁棒性。
  • Ultralytics 的实现RandomPerspective
-0.001-0.00050.00.00050.001
Perspective -0.001 transformationPerspective -0.0005 transformation无增强的原始图像Perspective 0.0005 transformationPerspective 0.001 transformation

上下翻转(flipud#

  • 范围0.0 - 1.0
  • 默认值0
  • 用法:通过沿 y 轴反转图像来执行垂直翻转。此变换将整个图像上下镜像,但保留对象之间的所有空间关系。flipud 超参数定义了应用变换的概率,值为 flipud=1.0 确保所有图像都被翻转,值为 flipud=0.0 完全禁用该变换。例如,在 flipud=0.5 的情况下,每张图像都有 50% 的几率被上下翻转。
  • 目的: 适用于物体可能倒置的场景。例如,在机器人视觉系统中,传送带或机械臂上的物体可能以各种方向被抓取和放置。垂直翻转有助于模型识别物体,无论其定位如何。
  • Ultralytics 的实现RandomFlip
flipud 关闭flipud 开启
无增强的原始图像垂直翻转增强已启用

左右翻转(fliplr#

  • 范围0.0 - 1.0
  • 默认值0.5
  • 用法:通过沿 x 轴镜像图像来执行水平翻转。此变换在保持空间一致性的同时交换左右两侧,这有助于模型泛化到以镜像方向出现的对象。fliplr 超参数定义了应用变换的概率,值为 fliplr=1.0 确保所有图像都被翻转,值为 fliplr=0.0 完全禁用该变换。例如,在 fliplr=0.5 的情况下,每张图像都有 50% 的几率被左右翻转。
  • 目的: 水平翻转广泛用于目标检测、姿态估计和人脸识别,以提高对左右变化的鲁棒性。例如,在自动驾驶中,车辆和行人可能出现在道路的任一侧,水平翻转有助于模型在两种方向下都能同样好地识别它们。
  • Ultralytics 的实现RandomFlip
fliplr 关闭fliplr 开启
无增强的原始图像水平翻转增强已启用

BGR 通道交换(bgr#

  • 范围0.0 - 1.0
  • 默认值0
  • 用法:将图像的颜色通道从 RGB 交换为 BGR,改变颜色表示的顺序。bgr 超参数定义了应用变换的概率,bgr=1.0 确保所有图像都经历通道交换,bgr=0.0 禁用该交换。例如,在 bgr=0.5 的情况下,每张图像都有 50% 的几率从 RGB 转换为 BGR。
  • 目的: 增强对不同颜色通道顺序的鲁棒性。例如,当训练必须跨各种相机系统和成像库工作(其中 RGB 和 BGR 格式可能被不一致地使用)的模型时,或者在将模型部署到输入颜色格式可能与训练数据不同的环境时非常有用。
  • Ultralytics 的实现Format
bgr 关闭bgr 开启
无增强的原始图像BGR 通道交换增强

马赛克(mosaic#

  • 范围0.0 - 1.0
  • 默认值1
  • 用法:将四张训练图像组合成一张。mosaic 超参数定义了应用变换的概率,mosaic=1.0 确保所有图像都组合在一起,mosaic=0.0 禁用该变换。例如,在 mosaic=0.5 的情况下,每张图像都有 50% 的几率与其他三张图像组合。
  • 目的: 对于改善小目标检测和上下文理解非常有效。例如,在野生动物保护项目中,动物可能出现在不同的距离和比例上,马赛克增强通过从有限的数据中人工创建多样化的训练样本,帮助模型学习在不同大小、部分遮挡和环境背景下识别同一物种。
  • Ultralytics 的实现Mosaic
  • 注意
    • 即使 mosaic 增强使模型更具鲁棒性,它也可能使训练过程更具挑战性。
    • 通过将 close_mosaic 设置为训练结束前应关闭数据增强的轮数,可以在训练快结束时禁用 mosaic 增强。例如,如果 epochs 设置为 200close_mosaic 设置为 20,则 mosaic 增强将在 180 轮之后被禁用。如果 close_mosaic 设置为 0,则 mosaic 增强将在整个训练过程中保持启用状态。
    • 生成的马赛克的中心由随机值决定,既可以在图像内部,也可以在图像外部。
    • mosaic 增强的当前实现组合了从数据集中随机挑选的 4 张图像。如果数据集很小,则可能会在同一个马赛克中多次使用同一张图像。
mosaic 关闭mosaic 开启
无增强的原始图像Mosaic 四图拼接增强已启用

Mixup(mixup#

  • 范围0.0 - 1.0
  • 默认值0
  • 用法:以给定概率混合两张图像及其标签。mixup 超参数定义了应用变换的概率,mixup=1.0 确保所有图像都混合,mixup=0.0 禁用该变换。例如,在 mixup=0.5 的情况下,每张图像都有 50% 的几率与另一张图像混合。
  • 目的: 提高模型的鲁棒性并减少过拟合。例如,在零售产品识别系统中,Mixup 通过混合不同产品的图像来帮助模型学习更健壮的特征,教导它即使在产品被部分遮挡或被拥挤货架上的其他产品遮挡时,也能识别出这些产品。
  • Ultralytics 的实现Mixup
  • 注意
    • mixup 比例是从 np.random.beta(32.0, 32.0) beta 分布中挑选的随机值,这意味着每张图像大约贡献 50%,并带有微小变化。
第一张图像,mixup 关闭第二张图像,mixup 关闭mixup 开启
用于 MixUp 混合的第一张图像用于 MixUp 混合的第二张图像MixUp 混合增强已启用

CutMix(cutmix#

  • 范围0.0 - 1.0
  • 默认值0
  • 用法:以给定概率从一张图像中剪切矩形区域并将其粘贴到另一张图像上。cutmix 超参数定义了应用变换的概率,cutmix=1.0 确保所有图像都经历此变换,cutmix=0.0 完全禁用它。例如,在 cutmix=0.5 的情况下,每张图像都有 50% 的几率将其某个区域替换为来自另一张图像的补丁。
  • 目的: 在保持局部特征完整性的同时创建真实的遮挡场景,从而增强模型性能。例如,在自动驾驶系统中,CutMix 帮助模型学习识别即使被其他物体部分遮挡的车辆或行人,从而提高在物体相互重叠的复杂现实环境中的检测准确度。
  • Ultralytics 的实现CutMix
  • 注意
    • 剪切区域的大小和位置是每次应用时随机确定的。
    • 与全局混合像素值的 mixup 不同,cutmix 在剪切区域内保持原始像素强度,从而保留局部特征。
    • 只有在区域与任何现有边界框不重叠时,才会将其粘贴到目标图像中。此外,仅保留在粘贴区域内保留其原始面积至少 0.1(10%)的边界框。
    • 此最小边界框面积阈值无法通过当前实现进行更改,默认设置为 0.1
第一张图像,cutmix 关闭第二张图像,cutmix 关闭cutmix 开启
用于 CutMix 的第一张图像用于 CutMix 的第二张图像CutMix 增强已启用

分割专用增强#

Copy-Paste(copy_paste#

  • 范围0.0 - 1.0
  • 默认值0
  • 用法:仅适用于分割任务,此增强根据指定概率(由 copy_paste_mode 控制)复制图像内部或图像之间的对象。copy_paste 超参数定义了应用变换的概率,copy_paste=1.0 确保所有图像都被复制,copy_paste=0.0 禁用该变换。例如,在 copy_paste=0.5 的情况下,每张图像都有 50% 的几率复制来自另一张图像的对象。
  • 目的: 特别适用于实例分割任务和稀有目标类别。例如,在工业缺陷检测中,某些类型的缺陷出现频率较低,复制粘贴增强可以通过将这些缺陷从一张图像复制到另一张来人工增加其出现次数,从而在无需额外缺陷样本的情况下帮助模型更好地学习这些欠代表性的案例。
  • Ultralytics 的实现CopyPaste
  • 注意
    • 如图所示,copy_paste 增强可用于将对象从一张图像复制到另一张图像。
    • 一旦选定要复制的对象,就会根据目标图像中已有的所有对象计算其 IoA,而不管 copy_paste_mode 如何。仅当所有 IoA 值都低于 0.3(30%)时才粘贴该对象;如果任何 IoA 值等于或高于 0.3,则不粘贴。
    • IoA 阈值无法通过当前实现进行更改,默认设置为 0.3
copy_paste 关闭copy_paste 开启,且带有 copy_paste_mode=flip可视化 copy_paste 过程
未经增强的原始图像复制粘贴增强已启用复制粘贴增强动画演示

Copy-Paste 模式(copy_paste_mode#

  • 选项'flip''mixup'
  • 默认值'flip'
  • 用法:确定用于复制粘贴增强的方法。如果设置为 'flip',则对象来自同一张图像,而 'mixup' 允许从不同图像复制对象。
  • 目的: 允许灵活地将复制的物体整合到目标图像中。
  • Ultralytics 的实现CopyPaste
  • 注意
    • 对于两个 copy_paste_mode 选项,IoA 原理是相同的,但复制对象的方式不同。
    • 根据图像尺寸,物体有时可能被部分或全部复制到画面之外。
    • 根据多边形标注的质量,复制的物体可能会与原始物体产生细微的形状差异。
参考图像copy_paste 选择的图像copy_paste 开启,且带有 copy_paste_mode=mixup
用于 MixUp 混合的第二张图像未经增强的原始图像带有 MixUp 模式的复制粘贴

分类专用增强#

自动增强(auto_augment#

  • 选项'randaugment''autoaugment''augmix'None
  • 默认值'randaugment'
  • 用法:应用用于分类的自动化增强策略。'randaugment' 选项使用 RandAugment,'autoaugment' 使用 AutoAugment,'augmix' 使用 AugMix。设置为 None 会禁用自动增强。
  • 目的: 为分类任务自动优化增强策略。具体区别如下:
    • AutoAugment:此模式应用从 ImageNet、CIFAR10 和 SVHN 等数据集中学习到的预定义增强策略。用户可以选择这些现有的策略,但不能在 Torchvision 中训练新策略。为了发现特定数据集的最佳增强策略,需要外部库或自定义实现。参考 AutoAugment 论文
    • RandAugment:应用具有统一幅度的随机变换选择。这种方法减少了对广泛搜索阶段的需求,在提高模型鲁棒性的同时使其计算效率更高。参考 RandAugment 论文
    • AugMix:AugMix 是一种数据增强方法,通过简单变换的随机组合创建多样化的图像变体,从而增强模型鲁棒性。参考 AugMix 论文
  • Ultralytics 的实现classify_augmentations()
  • 注意
    • 本质上,这三种方法的主要区别在于定义和应用增强策略的方式。
    • 你可以参考这篇文章,其中详细比较了这三种方法。

随机擦除(erasing#

  • 范围0.0 - 0.9
  • 默认值0.4
  • 用法:在分类训练期间随机擦除图像的一部分。erasing 超参数定义了应用变换的概率,erasing=0.9 确保几乎所有图像都被擦除,erasing=0.0 禁用该变换。例如,在 erasing=0.5 的情况下,每张图像都有 50% 的几率擦除一部分。
  • 目的: 帮助模型学习稳健的特征,防止对特定图像区域的过度依赖。例如,在人脸识别系统中,随机擦除有助于模型对诸如太阳镜、口罩或其他可能部分遮挡面部特征的物体变得更加稳健。这迫使模型利用多个面部特征来识别人,而不是仅仅依赖可能被遮挡的独特特征,从而提高了在现实世界中的表现。
  • Ultralytics 的实现classify_augmentations()
  • 注意
    • erasing 增强附带了 scaleratiovalue 超参数,这些超参数无法通过当前实现进行更改。正如 PyTorch 文档中所述,它们的默认值分别位居 (0.02, 0.33)(0.3, 3.3)0
    • erasing 超参数的上限设置为 0.9,以避免将变换应用于所有图像。
erasing 关闭erasing 开启(示例 1)erasing 开启(示例 2)erasing 开启(示例 3)
无增强的原始图像随机擦除示例 1随机擦除示例 2随机擦除示例 3

高级增强功能#

自定义 Albumentations 变换(augmentations#

  • 类型:Albumentations 变换的 list
  • 默认值None
  • 用法:允许你使用 Python API 提供自定义的 Albumentations 变换来进行数据增强。此参数接受在训练期间应用而不是默认 Albumentations 变换的 Albumentations 变换对象列表。
  • 目的: 通过利用丰富的 Albumentations 变换库,提供对数据增强策略的细粒度控制。当你需要超出内置 YOLO 选项的专用增强(如高级颜色调整、噪声注入或领域特定变换)时,这特别有用。
  • Ultralytics 的实现Albumentations
自定义 Albumentations 示例
import albumentations as A

from ultralytics import YOLO

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

# Define custom Albumentations transforms
custom_transforms = [
    A.Blur(blur_limit=7, p=0.5),
    A.GaussNoise(var_limit=(10.0, 50.0), p=0.3),
    A.CLAHE(clip_limit=4.0, p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
]

# Train with custom Albumentations transforms
model.train(
    data="coco8.yaml",
    epochs=100,
    augmentations=custom_transforms,  # Pass custom transforms
    imgsz=640,
)

要点:

  • 仅限 Python API: 自定义 Albumentations 变换目前仅支持通过 Python API 使用。它们无法通过 CLI 或 YAML 配置文件指定。
  • 替换默认变换:当你通过 augmentations 参数提供自定义变换时,它们会完全替换默认的 Albumentations 变换。默认的 YOLO 增强(如 mosaichsv_hhsv_sdegrees 等)保持活动状态并独立应用
  • 边界框兼容性: 使用空间变换(改变图像几何形状的变换)时请谨慎。Ultralytics 会自动处理边界框调整,但某些复杂的变换可能需要额外的配置。
  • 丰富的库:Albumentations 提供了 70 多种不同的变换。探索 Albumentations 文档以发现所有可用选项。
  • 性能考量: 添加过多的增强或使用计算密集型的变换可能会减慢训练速度。建议从少量变换开始,并监控训练速度。

常见用例:

  • 医学成像: 对 X 射线或 MRI 图像增强应用弹性形变或网格畸变等专用变换
  • 航空/卫星图像: 使用针对俯视视角优化的变换
  • 低光照条件: 应用噪声和亮度调整来模拟具有挑战性的光照环境
  • 工业检测: 为质量控制应用添加类缺陷模式或纹理变体

兼容性说明:

  • 需要 Albumentations 1.0.3 或更高版本
  • 兼容所有 YOLO 检测和分割任务
  • 不适用于分类任务(分类任务使用不同的增强流水线)

有关 Albumentations 和可用变换的更多信息,请访问官方 Albumentations 文档

常见问题解答#

  • 选择正确的增强方法取决于你的具体用例和数据集。以下是一些帮助你决定的通用指南:

    • 在大多数情况下,颜色和亮度的微小变化是有益的。hsv_hhsv_shsv_v 的默认值是一个很好的起点。
    • 如果相机的视角是一致的并且在模型部署后不会改变,你大概可以跳过诸如 rotationtranslationscaleshearperspective 之类的几何变换。但是,如果相机角度可能会变化,并且你需要模型更具鲁棒性,最好保留这些增强。
    • 仅当部分遮挡的对象或每张图像多个对象是可以接受的且不会改变标签值时,才使用 mosaic 增强。或者,你可以保持 mosaic 处于活动状态,但增加 close_mosaic 值以便在训练过程的早期禁用它。

    简而言之:保持简单。从少量的增强开始,根据需要逐渐增加。目标是提高模型的泛化能力和稳健性,而不是让训练过程过于复杂。此外,请确保你应用的增强反映了模型在生产环境中会遇到的相同数据分布。

  • 如果安装了 albumentations 软件包,Ultralytics 会自动使用它应用一组额外的图像增强。这些增强在内部处理,不需要额外的配置。

    你可以在我们的技术文档以及我们的Albumentations 集成指南中找到所应用变换的完整列表。请注意,只有概率 p 大于 0 的增强处于活动状态。这些刻意以低频应用,以模拟现实世界的视觉伪影,例如模糊或灰度效果。

    你还可以使用 Python API 提供你自己的自定义 Albumentations 变换。有关更多详细信息,请参阅高级增强功能部分。

  • 检查 albumentations 软件包是否已安装。如果未安装,你可以运行 pip install albumentations 来安装它。一旦安装,该软件包应会被 Ultralytics 自动检测并使用。

  • 你可以通过创建自定义的数据集类和训练器来定制数据增强。例如,你可以将默认的 Ultralytics 分类数据增强替换为 PyTorch 的 torchvision.transforms.Resize 或其他变换。有关实现细节,请参阅分类文档中的自定义训练示例

评论