CutMix
CutMix pega un parche rectangular de una imagen de entrenamiento sobre otra y combina sus etiquetas según el área del parche, lo que mejora la precisión y la localización.
CutMix es una técnica de aumento de datos que recorta un parche rectangular de una imagen de entrenamiento, lo pega sobre la misma región de otra y mezcla las dos etiquetas en proporción al área que ocupa cada imagen. Sangdoo Yun y sus colegas de NAVER Clova AI Research la presentaron en un artículo de ICCV de 2019 como combinación de dos ideas anteriores: la eliminación de una región aleatoria de Cutout y la mezcla de etiquetas de MixUp. En ImageNet, CutMix redujo el error top-1 de una ResNet-50 del 23,68 % al 21,40 %, por delante de MixUp, con un 22,58 %, y Cutout, con un 22,93 %. Además, los modelos preentrenados con esta técnica también se transfirieron mejor a la detección de objetos y la generación de descripciones de imágenes.
Cómo funciona CutMix#
Para cada par de imágenes A y B, CutMix toma una proporción de mezcla λ de una distribución Beta, que con el parámetro α = 1 predeterminado es uniforme entre 0 y 1. Después, dibuja un rectángulo cuya anchura y altura son la anchura y la altura de la imagen multiplicadas por √(1 − λ), lo centra en un punto aleatorio, lo recorta hasta los bordes de la imagen y copia esa región de B sobre A. Tras el recorte, λ se vuelve a calcular como la fracción de A que queda, y la etiqueta pasa a ser λ partes de A y (1 − λ) partes de B. Así, un parche de gato del 30 % sobre una imagen de un perro produce una etiqueta objetivo de 0,7 para el perro y 0,3 para el gato. El entrenamiento minimiza la función de pérdida respecto a esta etiqueta suave, igual que con el suavizado de etiquetas.
torchvision de PyTorch aplica CutMix a todo un lote, emparejando cada imagen con la imagen contigua del lote:
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)}")Imprime un área pegada de 0,187 y pesos de etiqueta de 0,813 para la clase 0 y 0,187 para la clase 3: la proporción del objetivo asignada a cada clase equivale a la proporción de píxeles que aporta.
Por qué funciona CutMix#
Un modelo de clasificación de imágenes entrenado con imágenes completas puede acertar al reconocer una pequeña parte muy discriminativa, como la cara de un perro. Cuando CutMix cubre esa parte con otra imagen, el modelo tiene que reconocer al perro por el cuerpo, las patas o el pelaje, así que aprende a usar una mayor parte de cada objeto, lo que mejora la localización con supervisión débil y la robustez frente a la oclusión. Todos los píxeles de la imagen mezclada siguen procediendo de fotos reales, por lo que el modelo nunca se entrena con regiones vacías ni mezclas fantasmagóricas. Como otros aumentos de datos intensos, CutMix actúa como regularización que reduce el sobreajuste, y las recetas de entrenamiento modernas para transformadores de visión (ViT), incluida la utilizada por Data-efficient Image Transformers (DeiT) de Meta, aplican CutMix y MixUp conjuntamente.
CutMix frente a aumentos de datos relacionados#
- MixUp: Mezcla dos imágenes completas píxel a píxel con el peso λ y mezcla sus etiquetas del mismo modo, lo que produce superposiciones semitransparentes que no se parecen a ninguna escena real.
- Cutout: Enmascara un cuadrado aleatorio con ceros y conserva la etiqueta original, por lo que los píxeles enmascarados no aportan información al entrenamiento.
- Mosaic: Combina cuatro imágenes redimensionadas en una, un aumento de datos estándar para entrenar detectores de objetos que conserva la etiqueta de caja de cada objeto que siga dentro del fotograma.
- Copiar y pegar para la segmentación de instancias: Pega instancias de objetos segmentadas, en lugar de rectángulos, de una imagen en otra.
CutMix en la detección de objetos#
La detección conserva todas las etiquetas como categorías únicas: en lugar de un vector de clases mezclado, mantiene las cajas de ambas imágenes siempre que sus objetos sigan siendo visibles. El aumento de datos cutmix de Ultralytics YOLO, desactivado de forma predeterminada, acepta una probabilidad entre 0 y 1. Su implementación elige una región de corte que no se solapa con ninguna de las cajas existentes de la imagen objetivo, copia la misma región de una segunda imagen y conserva cada caja delimitadora pegada que mantenga al menos el 10 % de su área dentro de la región, o el 1 % en el caso de las etiquetas de segmentación. De forma predeterminada, CutMix se desactiva junto con mosaic durante las 10 últimas épocas de entrenamiento, según lo establecido por close_mosaic=10.










