资讯动态

Ultralytics YOLO 数据增强参数权威参考:augmentation-args 逐项详解与源码印证

发布时间:2026/9/9 23:48:02 来源:尧图企业网站定制
Ultralytics YOLO 数据增强参数权威参考augmentation-args 逐项详解与源码印证【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics数据增强是 YOLO 训练流程中提升模型泛化能力、抑制过拟合的核心手段。Ultralytics 将全部可调增强参数统一收敛在一份参数宏docs/macros/augmentation-args.md中并通过页面引用渲染进训练与配置文档。本文以这份参数宏为骨架结合仓库中的默认配置、增强流水线源码与配套指南逐项解析每个增强参数的类型、默认值、取值范围、适用任务与底层实现帮助你快速定位并调优自己训练任务的增强策略。这份参数宏是什么、在哪里被引用docs/macros/augmentation-args.md是 Ultralytics 文档体系中的可复用 Jinja 参数宏由 docs/build_docs.py 中定义的render_jinja_macros()渲染。它在当前仓库中被两处文档页以{% include macros/augmentation-args.md %}的方式引入从而保证一份表格、多处同步显示训练模式文档的增强设置小节配置参数文档的 Augmentation Settings 小节宏表中的默认值全部以{{ hsv_h }}、{{ mosaic }}等模板占位符书写构建文档时由 docs/build_docs.py 读取 ultralytics/cfg/default.yaml 中的同名键并自动填入。也就是说本文表格中展示的默认值即当前仓库的全局训练默认值改default.yaml或通过 Python/CLI/YAML 传入同名参数即可覆盖。增强参数总览表下表完整复刻参数宏的 21 个增强参数含类型、当前仓库默认值、适用任务与取值范围。各参数对应的视觉示例与扩展说明见文末关联的数据增强指南。ArgumentTypeDefaultSupported TasksRangeDescriptionhsv_hfloat0.015detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0以色轮的比例调整图像色相引入色彩多样性帮助模型在不同光照条件下泛化。对classify仅在auto_augmentNone时生效hsv_sfloat0.7detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0按比例改变图像饱和度色彩强度用于模拟不同环境条件。对classify仅在auto_augmentNone时生效hsv_vfloat0.4detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0按比例改变图像明度亮度帮助模型在多种光照下稳定工作。对classify仅在auto_augmentNone时生效degreesfloat0.0detect,segment,semantic,depth,pose,obb0.0 - 180在指定角度范围内随机旋转图像提升模型对不同朝向目标的识别能力translatefloat0.1detect,segment,semantic,depth,pose,obb0.0 - 1.0按图像尺寸比例在水平和垂直方向平移图像帮助学习检测部分可见目标scalefloat \| tuple0.5detect,segment,semantic,depth,classify,pose,obb0 - 1浮点或显式(min, max)元组不适用于classify按增益系数缩放图像模拟相机距离不同时目标的大小变化shearfloat0.0detect,segment,semantic,depth,pose,obb-180 - 180按角度对图像进行剪切变形模拟目标从不同视角被观察的效果perspectivefloat0.0detect,segment,semantic,depth,pose,obb0.0 - 0.001对图像施加随机透视变换增强模型对三维空间中目标的理解能力flipudfloat0.0detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0以指定概率上下翻转图像在不改变目标特征的前提下增加数据多样性fliplrfloat0.5detect,segment,semantic,depth,classify,pose,obb0.0 - 1.0以指定概率左右翻转图像有助于学习对称目标、增加数据集多样性bgrfloat0.0detect,segment,semantic,depth,pose,obb0.0 - 1.0以指定概率将图像通道从 RGB 交换为 BGR提升对错误通道顺序的鲁棒性mosaicfloat1.0detect,segment,semantic,pose,obb0.0 - 1.0将四张训练图像拼接为一张模拟不同的场景构成与目标交互对复杂场景理解非常有效mixupfloat0.0detect,segment,semantic,pose,obb0.0 - 1.0将两张图像及其标签混合成合成图通过引入标签噪声与视觉变化增强泛化能力cutmixfloat0.0detect,segment,pose,obb0.0 - 1.0将两张图像的部分区域组合在保持区域分界清晰的同时制造部分遮挡场景提升鲁棒性copy_pastefloat0.0segment,obb0.0 - 1.0被粘贴的合格目标占比flip模式在图像内镜像复制目标mixup模式中该值同时作为跨图应用概率copy_paste_modestrflipsegment,obb-指定 copy-paste 策略可选flip与mixupauto_augmentstrrandaugmentclassify-应用预定义增强策略randaugment、autoaugment或augmix以通过视觉多样性提升模型性能erasingfloat0.4classify0.0 - 1.0训练期间随机擦除图像局部区域促使模型关注不那么明显的特征augmentationslistNonedetect,segment,semantic,depth,pose,obb-自定义 Albumentations 变换仅 Python API。接受变换对象列表满足定制化增强需求说明scale若传入(min, max)元组形式仅对几何类任务生效分类训练会从浮点值推导自身裁剪范围1.0 - scale到1.0传入元组会抛出TypeError详见 scale 小节。颜色空间类增强HSV 三分量hsv_h、hsv_s、hsv_v三者的语义都是围绕当前值做对称随机偏移参数值为增益幅度实际偏移量在-hsv_*与hsv_*之间均匀随机。三者默认值0.015 / 0.7 / 0.4来自 ultralytics/cfg/default.yaml。hsv_h色相注意当取值超过0.5时色相会在色轮上回绕因此0.5与-0.5的表现一致。适合户外光照剧烈变化、同一物体颜色随环境偏移的场景如阳光下的香蕉偏黄、室内偏青绿。hsv_s饱和度模拟天气与相机设置差异。例如晴天鲜艳的红色交通标志在雾天会显得灰暗。hsv_v明度模拟光照强弱差异例如阳光下亮眼的苹果在阴影中会明显变暗。对分类任务的特别限制三者仅在auto_augmentNone即未启用自动增强策略时才被应用见宏表描述与 classify_augmentations() 实现。源码实现三个参数在 v8_transforms() 中被合并为单个RandomHSV(hgain, sgain, vgain)变换一次完成类实现见 RandomHSV。几何类增强旋转、平移、缩放、剪切与透视这五个参数都作用于空间仿射/透视矩阵在源码中统一由 RandomPerspective 负责并由 v8_transforms() 传入。偏移量在-value与value之间随机采样其中translate、shear、perspective在 x、y 两个轴各采样一次独立随机值。degrees0.0 - 180旋转范围[-degrees, degrees]。默认0.0关闭。航拍无人机等目标朝向任意的场景建议开启。translate0.0 - 1.0平移量为图像尺寸的比例。默认0.1训练默认已有轻微平移。帮助模型处理部分出画的目标。scale浮点或元组这是几何参数中唯一支持两种形态的参数。浮点形态scale0.5表示缩放因子在1 - scale到1 scale即 0.5x - 1.5x间采样元组形态scale(0.5, 2.0)直接设定缩放范围。浮点值超出0.0 - 1.0会触发ValueError需要超过 2 倍放大时请改用元组。默认值0.5意味着默认训练中图像缩放可上下浮动 50%。shear-180 - 180剪切变形会迅速扭曲图像建议从小值起步逐步增大。与透视不同剪切保持对边平行、不引入消失点可模拟非垂直视角拍摄。perspective0.0 - 0.001数值极小但效果显著模拟深度/角度变化下的透视缩短适用于无人机倾斜视角等场景。图像翻转与通道扰动flipud/fliplr概率参数由 RandomFlip 实现。取值即翻转概率1.0表示全部翻转、0.0关闭。默认flipud0.0、fliplr0.5左右翻转是训练默认开启的。注意姿态估计任务依赖data.yaml中的flip_idx关键点索引映射若数据集中未定义flip_idx源码会直接关闭fliplr/flipud并给出警告见 v8_transforms 中的逻辑。bgr概率参数交换 RGB/BGR 通道顺序由 Format 变换在输出阶段处理用于提升对相机库通道顺序不一致的鲁棒性。组合式图像级增强Mosaic、MixUp 与 CutMix三者都会把多张图的信息合并进同一张训练样本源码上都继承自BaseMixTransform需要从数据集中额外采样图像。mosaic默认1.0将当前图与另外 3 张图拼接为 4 宫格实现在 Mosaic。对小目标检测与上下文理解帮助很大。四条值得注意的行为拼接中心随机决定可能在图像内部也可能在外部另外 3 张图从近期已加载图像缓冲区采样cacheram时从整个数据集采样采用有放回采样同一图像可在一张 mosaic 中出现多次mosaic 中心位置、拼接难度会拖慢收敛属于更难但更鲁棒的增强可通过close_mosaic默认 10见 default.yaml在训练末尾关闭设epochs200、close_mosaic20即第 180 个 epoch 起关闭。mixup默认0.0按概率将两张图按比例像素混合标签同步混合实现在 MixUp。混合比例来自np.random.beta(32.0, 32.0)分布即每张图大约各占一半并略有波动。cutmix默认0.0从一张图裁剪矩形贴到另一张图实现在 CutMix。与 mixup 的全局像素混合不同cutmix 保留贴入区域的原像素强度与局部特征用于制造真实遮挡场景。算法细节贴入区域不能与已有框重叠且只有保留面积足够的目标框才会被保留——检测标签的阈值是0.110%带分割多边形标签时为0.011%该阈值当前实现不可修改。统一关闭行为close_mosaic触发时mosaic、copy_paste、mixup、cutmix四种多图变换在同一个 epoch同时关闭而几何、HSV、翻转与 Albumentations 变换继续运行。Copy-Paste 增强copy_paste与copy_paste_modeCopy-Paste 需要多边形segment或旋转框obb标签在 CopyPaste 中实现具体语义由copy_paste_mode决定flip模式默认copy_paste表示被复制的合格目标占比对象来自当前图像自身的水平镜像。例如一张图有 6 个合格目标、copy_paste0.5则会新增 3 份镜像副本。mixup模式对象从随机采样的另一张数据图像复制此时copy_paste同时作为该操作是否执行的概率。IoA 冲突检测任何模式下待粘贴目标都会与目标图中已有目标计算 IoA相交面积比仅当所有 IoA 均低于0.330%时才允许粘贴该阈值当前不可修改。此逻辑在 get_params() 方法中基于bbox_ioa实现。流水线位置差异flip模式作用于单张图像插入到仿射变换之前mixup模式需要跨图操作作为带pre_transform的组合追加在流水线末尾见 v8_transforms() 中的分支逻辑。这也解释了文档中copy_paste默认flip模式在单图内工作而mixup模式跨图组合的表述。分类任务专属auto_augment与erasing这两个参数只作用于classify任务使用独立的 torchvision 训练流水线 classify_augmentations()auto_augment默认randaugment三选一的自动策略——randaugment随机选择变换并配以统一幅值计算开销小autoaugment应用从 ImageNet、CIFAR10、SVHN 等数据集上学习到的预定义策略只能选用无法在 Torchvision 内训练新策略augmix通过随机组合简单变换制造多样性。传None即关闭自动策略此时hsv_h/hsv_s/hsv_v才对分类生效。erasing默认0.4随机擦除概率对应 torchvision 的RandomErasing。其scale、ratio、value子参数在当前实现中不可调整固定为(0.02, 0.33)、(0.3, 3.3)与0。高级定制自定义 Albumentations 变换augmentationsaugmentations是一个仅 Python API 可用的列表参数接收 Albumentations 变换对象由 Albumentations 变换应用。注意以下行为传入后完全替换默认的 Albumentations 变换集默认集见 类的默认列表Blur、MedianBlur、ToGray、CLAHHE各p0.01另有p0的RandomBrightnessContrast、RandomGamma、ImageCompression。页面上的mosaic、hsv_h、degrees等其他增强不受影响、仍独立运行。训练器保存 checkpoint 时会用A.to_dict()序列化这些变换因此序列化后的列表可以在 YAML/CLI 中往返传递这保证了resume恢复训练时能还原自定义变换。注意空间类变换会改变几何Ultralytics 会自动调整标注框但复杂变换可能仍需额外配置叠加过多或过重的变换会明显拖慢每个 epoch。适用范围是detect/segment/semantic/depth/pose/obb不含classify分类走独立流水线。官方示例要求 Albumentations 1.4.22即 Python 3.9。import albumentations as A from ultralytics import YOLO model YOLO(yolo26n.pt) # 加载预训练模型 # 定义自定义 Albumentations 变换替换内置默认集 custom_transforms [ A.Blur(blur_limit7, p0.5), A.GaussNoise(std_range(0.0124, 0.0277), p0.3), A.CLAHE(clip_limit4.0, p0.5), A.RandomBrightnessContrast(brightness_limit0.2, contrast_limit0.2, p0.5), A.HueSaturationValue(hue_shift_limit20, sat_shift_limit30, val_shift_limit20, p0.5), ] model.train(datacoco8.yaml, epochs100, augmentationscustom_transforms, imgsz640)三种配置方式与底层流水线所有上表参数均可通过 Python、CLI 或 YAML 自定义文件传入自定义 YAML 会整体覆盖 ultralytics/cfg/default.yamlmode仅在 CLI 下必填。from ultralytics import YOLO model YOLO(yolo26n.pt) # 方式一Python 关键字参数 model.train(datacoco8.yaml, epochs100, hsv_h0.03, hsv_s0.6, hsv_v0.5) # 方式二全部关闭未列出的参数保持默认 model.train( datacoco8.yaml, epochs100, hsv_h0.0, hsv_s0.0, hsv_v0.0, translate0.0, scale0.0, fliplr0.0, mosaic0.0, erasing0.0, auto_augmentNone, )# CLI 方式 yolo detect train datacoco8.yaml modelyolo26n.pt epochs100 hsv_h0.03 hsv_s0.6 hsv_v0.5# train_custom.yamlmode 仅 CLI 必需 mode: train data: coco8.yaml model: yolo26n.pt epochs: 100 hsv_h: 0.03 hsv_s: 0.6 hsv_v: 0.5从源码看检测/分割等任务非分类的增强最终由 v8_transforms() 组装为一条确定顺序的Compose流水线Mosaic概率mosaicCopyPasteflip模式插在仿射前mixup模式以组合形式追加在末尾RandomPerspective合并degrees/translate/scale/shear/perspectiveMixUp与CutMix均以pre_transform组合为输入各自按概率触发Albumentationsp1.0内置默认集或自定义augmentationsRandomHSVhsv_h/hsv_s/hsv_v垂直/水平RandomFlipflipud/fliplr。理解这条顺序有助于解释一些现象例如 Copy-Paste 在仿射之前基于原图粘贴而 mixup/cutmix 是在仿射之后再做多图合成。选型与调参建议默认值已是稳妥起点默认的hsv_h0.015、hsv_s0.7、hsv_v0.4通常无需大改多数目标检测任务可直接沿用mosaic1.0、fliplr0.5、scale0.5的默认组合。相机视角是否固定是几何增强的开关若部署时相机位姿固定不变可考虑关闭degrees/translate/scale/shear/perspective以加速收敛若视角多变则保留它们换取鲁棒性。mosaic需谨慎评估它会让标签语义产生局部目标 多目标的样本。若这类遮挡/多目标情况在你的业务中不可接受可调低概率或调大close_mosaic让它更早退出训练。小目标与类别不均衡场景mosaic对小目标、copy_paste对罕见类别的实例分割/旋转框任务价值突出。保持简单从最小增强集开始按需逐步叠加任何增强都应尽量模拟生产环境的真实数据分布避免引入与线上无关的分布偏差。Albumentations 是否启用训练日志中出现albumentations: Blur[...]即说明albumentations包已安装并应用了默认低概率变换每个p0.01。这些默认变换无法通过default.yaml参数关闭——需要卸载该包或通过augmentations参数传入自定义列表来整体替换。延伸阅读仓库内完整教程YOLO 数据增强指南含每个参数的开启/关闭对比图增强实现类参考文档 augment 模块 与源码 ultralytics/data/augment.py全局默认值ultralytics/cfg/default.yaml宏表默认值的唯一来源包含本宏的页面训练模式文档、配置参数文档相关集成指南Albumentations 集成【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价