헷개정 - 헷갈리는 개념 정리

Resize(size)? CenterCrop(size)?

cch8ii 2025. 9. 26. 14:11

데이터 증강을 위해 사용할 수 있는 라이브러리 중 torchvision.transforms 이 존재한다. 

주로 Compose 함수를 활용해 내부에 다양한 Augmentation 함수를 넣어 한 번에 적용시켜준다. 

 

transforms = Compose([RandomHorizontalFlip(p=0.5),
			RandomResizedCrop(size=(224, 224)),
			ColorJitter(brightness=0.5),
			Resize(size),
			CenterCrop(size),
			ToTensor(),])

 

그런데 주로 Resize 후 CenterCrop을 진행한다. Resize는 들어온 이미지를 말 그대로 리사이즈해주는 것이고 CenterCrop도 자르는데 왜 같은 사이즈로 Resize하고 CenterCrop을 진행할까?

 

일단 먼저 각각의 함수가 어떻게 작동하는지 알아야 한다.

 

Resize(size)

Resize는 짧은 쪽을 기준으로 size를 맞춘다. 특히 비율을 유지하면서 크기만 조정한다는 것이 가장 큰 특징이다.

예시: `Resize(256)` 시
- 800x600 → 341x256
- 600x800 → 256x341

 

CenterCrop(size)

CenterCrop은 정확히 size x size 크기로 중앙 부분을 자른다. 만약 객체가 중앙에 위치하는 데이터셋이라면 유용한 메서드이다.

예시: `CenterCrop(256)` 시
- 341x256 → 256x256
- 256x341 → 256x256

 

 

왜 그럼 Resize하고 CenterCrop을 진행할까?

모델에서 모든 입역 이미지는 같은 크기가 되어야 한다. 이때 우리는 객체가 찌그러지지 않길 바라며 객체가 정 가운데에 있다고 가정할 때가 많다.

만약 Resize(224, 224)를 하게 된다면 비율이 다른 모든 이미지가 정사각형으로 강제 변형되어 왜곡이 발생하고 성능 저하가 발생할 가능성이 높다.

때문에 Resize → CenterCrop 을 진행하여 비율 유지로 자연스러운 이미지를 보존하고 표준화된 입력 크기를 보장한다.

 

 

참고 사이트