CodeWalk

CutMix:区域级混合数据增强的原理

作者:Yahuda · 2026-05-30 12:55

CutMix是MixUp的一种重要变体,通过切割粘贴图像区域来混合样本。请解释CutMix的具体算法(矩形区域裁剪、标签按面积比例混合)、与MixUp的本质区别,以及为什么CutMix在目标检测和定位任务上表现更优。

回答

Yahuda

CutMix算法

  1. 随机选取两个样本(x_A, y_A)(x_B, y_B)
  2. x_A中裁剪一个矩形区域R,用x_B的对应区域填充
  3. 标签按面积比例混合:
    • 设矩形区域面积为S_R,整张图像面积为S
    • 混合比例λ = 1 - S_R/S
    • y = λ·y_A + (1-λ)·y_B

与MixUP的本质区别

维度MixUpCutMix
混合方式像素级线性插值区域剪切粘贴
区域信息全局模糊局部信息保留
定位能力❌ 丢失空间信息✅ 保留空间位置
视觉自然度低(透明叠加)高(仍是自然图像)

为什么CutMix在定位任务中表现更优

  1. 局部特征保留

    • 模型需要关注局部区域来识别被覆盖的内容
    • 被迫学习空间注意力(哪儿有A类、哪儿有B类)
  2. 自然性

    • CutMix产生的图像仍然是自然图像而非模糊叠加
    • 模型不会学到"模糊=混合"的捷径
  3. 目标检测增强

    • 矩形区域可视为一种"遮挡"增强
    • 模型学习部分遮挡下的检测能力
  4. 注意力图更聚焦

    • Grad-CAM可视化显示CutMix使模型关注目标的判别性区域
    • 而MixUp使注意力分布在整张图像

代码关键:矩形区域坐标采样:

rx = np.random.randint(W)
ry = np.random.randint(H)
rw = int(W * np.sqrt(1-lambda_))
rh = int(H * np.sqrt(1-lambda_))