CutMix
CutMix는 한 학습 이미지의 사각형 패치를 다른 이미지에 붙이고 패치 면적에 따라 레이블을 혼합하여 정확도와 위치 파악 성능을 높입니다.
CutMix는 한 학습 이미지에서 직사각형 패치를 잘라 다른 이미지의 같은 영역에 붙이고, 각 이미지가 차지하는 면적에 비례해 두 라벨을 혼합하는 데이터 증강 기법입니다. NAVER Clova AI Research의 Sangdoo Yun과 동료들은 두 가지 선행 아이디어인 무작위 영역을 제거하는 Cutout과 라벨을 혼합하는 MixUp을 결합한 방식으로 2019년 ICCV 논문에서 이를 소개했습니다. 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의 비율 λ, B의 비율 (1 − λ)로 구성되므로 개 이미지에 고양이 패치가 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는 과적합을 줄이는 정규화 기법으로 작동합니다. Meta의 Data-efficient Image Transformers(DeiT)에 사용된 학습 레시피를 비롯한 최신 비전 트랜스포머(ViT) 학습 레시피에서는 CutMix와 MixUp을 함께 적용합니다.
CutMix와 관련 증강 기법 비교#
- MixUp: 두 이미지 전체를 가중치 λ에 따라 픽셀 단위로 혼합하고 라벨도 같은 방식으로 섞습니다. 그 결과 실제 장면과 닮지 않은 반투명 오버레이가 만들어집니다.
- Cutout: 무작위 정사각형 영역을 0으로 마스킹하고 원본 라벨은 그대로 유지하므로, 마스킹된 픽셀은 학습에 정보를 제공하지 않습니다.
- Mosaic: 크기를 조정한 이미지 네 장을 하나로 타일링합니다. 객체 탐지기 학습에서 일반적으로 사용하는 증강 기법으로, 프레임에 남아 있는 모든 객체의 박스 라벨을 유지합니다.
- 인스턴스 세그멘테이션용 복사-붙여넣기: 직사각형 대신 한 이미지의 분할된 객체 인스턴스를 다른 이미지에 붙여넣습니다.
객체 탐지에서의 CutMix#
탐지에서는 모든 라벨을 하드 라벨로 유지합니다. 혼합된 클래스 벡터를 사용하는 대신 객체가 보이는 상태로 남아 있는 한 두 이미지의 박스를 모두 유지합니다. 기본적으로 비활성화된 Ultralytics YOLO cutmix 증강은 0에서 1 사이의 확률을 사용합니다. 구현 과정에서 대상 이미지의 기존 박스와 겹치지 않는 잘라내기 영역을 선택하고, 두 번째 이미지에서 같은 영역을 복사한 뒤 해당 영역 안에 면적의 최소 10%가 남아 있는 각 바운딩 박스를 유지합니다. 세그멘테이션 라벨의 경우 기준은 1%입니다. 기본적으로 학습 마지막 10 에포크에는 모자이크와 함께 CutMix도 비활성화되며, 이 설정은 close_mosaic=10으로 지정합니다.










