CutMix
CutMix 会将一张训练图像的矩形区域粘贴到另一张图像上,并根据粘贴区域的面积混合两者的标签,从而提高准确率和定位性能。
CutMix 是一种数据增强技术:它从一张训练图像中裁出矩形区域,将其粘贴到另一张图像的相同位置,并根据两张图像各自所占的面积按比例混合标签。NAVER Clova AI Research 的 Sangdoo Yun 及其同事在一篇2019 年 ICCV 论文中提出了 CutMix,将两个早期方法结合起来:Cutout 移除随机区域,MixUp 混合标签。在 ImageNet 上,CutMix 将 ResNet-50 的 top-1 错误率从 23.68% 降至 21.40%,优于 MixUp 的 22.58% 和 Cutout 的 22.93%;使用 CutMix 预训练的模型在迁移到目标检测和图像描述生成任务时也表现更好。
CutMix 的工作原理#
对于每对图像 A 和 B,CutMix 会从 Beta 分布中采样混合比例 λ;默认参数 α = 1 时,该分布在 0 到 1 之间均匀分布。随后,它会绘制一个宽度和高度分别为图像宽度与高度乘以 √(1 − λ) 的方框,将其中心放在一个随机点上,再裁剪至图像边界,并把 B 中对应区域复制到 A 上。裁剪后,λ 会重新计算为 A 剩余部分所占的比例,标签则变为 λ 份 A 和 (1 − λ) 份 B。因此,在狗的图像上贴上面积占 30% 的猫图像块,目标标签就是 0.7 狗和 0.3 猫。训练时,模型会针对这个软标签最小化损失函数,方式与标签平滑相同。
PyTorch 的 torchvision 会将 CutMix 应用于整个批次,让每张图像与批次中的相邻图像配对:
import torch
from torchvision.transforms import v2
# A batch of 4 random 224x224 images labeled with classes 0-3 of 10
torch.manual_seed(0)
images = torch.rand(4, 3, 224, 224)
labels = torch.tensor([0, 1, 2, 3])
# Paste a random box from each image's neighbor in the batch and mix the labels by area
cutmix = v2.CutMix(num_classes=10)
mixed_images, mixed_labels = cutmix(images, labels)
# Image 0 received its patch from image 3
pasted = (mixed_images[0] != images[0]).any(dim=0).float().mean()
print(f"pasted area: {pasted:.3f}")
print(f"label weights for classes 0-3: {mixed_labels[0, :4].numpy().round(3)}")输出显示粘贴区域占 0.187,类别 0 的标签权重为 0.813,类别 3 的标签权重为 0.187:目标分配给每个类别的比例,等于该类别贡献的像素比例。
CutMix 为何有效#
在整张图像上训练的图像分类模型,可能只需识别一个很小但极具区分度的部分(例如狗脸)就能正确分类。CutMix 用另一张图像遮住这部分后,模型必须根据狗的身体、腿部或毛发来识别狗,因此学会利用物体更多区域的信息,从而改善弱监督定位能力和遮挡鲁棒性。混合图像中的每个像素都来自真实照片,因此模型不会在空白区域或模糊重叠图像上训练。与其他强增强一样,CutMix 作为一种正则化方法可以减少过拟合;现代视觉 Transformer(ViT)训练方案也会同时应用 CutMix 和 MixUp,包括 Meta 的高效数据图像 Transformer(DeiT)所使用的方案。
CutMix 与相关增强方法#
- MixUp:按权重 λ 逐像素混合两张完整图像,并以相同方式混合标签,因此会生成看起来不像任何真实场景的半透明叠加图像。
- Cutout:用零值遮挡一个随机方块,并保留原始标签,因此被遮挡像素不包含任何训练信息。
- Mosaic:将四张缩放后的图像拼成一张,这是训练目标检测器时常用的增强方法,可保留画面中每个物体的边界框标签。
- 用于实例分割的复制粘贴:将分割后的物体实例而非矩形区域从一张图像粘贴到另一张图像中。
目标检测中的 CutMix#
目标检测保留所有硬标签:不使用混合后的类别向量,而是保留两张图像中仍可见物体的边界框。Ultralytics YOLO 的 cutmix 增强默认关闭,接受 0 到 1 之间的概率值。其实现会选择一个与目标图像现有边界框完全不重叠的裁剪区域,从第二张图像复制相同区域,并保留至少 10% 面积位于该区域内的每个粘贴边界框;对于分割标签,这一比例为 1%。默认情况下,训练最后 10 个 epoch 会关闭 CutMix 和 mosaic,该设置由 close_mosaic=10 控制。










