리샘플링은 이미지의 해상도를 조절하는 과정으로, 업샘플링(확대) 또는 다운샘플링(축소)에 사용됩니다. 이 과정에서 새 픽셀의 값을 어떻게 정할지를 결정하는 것이 보간(Interpolation) 방식입니다.
대표적인 보간 방식은 다음 세 가지입니다:
방식 | 특징 |
---|---|
Nearest Neighbor | 가장 가까운 픽셀 복사, 빠름 |
Bilinear | 주변 4개 픽셀 평균, 부드러움 |
Area | 영역 평균, 앨리어싱 방지에 최고 |
항목 | Nearest | Bilinear |
---|---|---|
연산 속도 | ✅ 매우 빠름 | ❌ Nearest보다 느림 |
이미지 품질 | ❌ 저화질, 블록 느낌 | ✅ 부드러운 전환, 자연스러움 |
연산 복잡도 | 낮음 (픽셀 1개 참조) | 중간 (픽셀 4개 + 계산) |
추천 사용처 | 속도 최우선 | 품질과 속도 균형 필요 |
다운샘플링은 해상도를 줄이는 과정이라 디테일이 사라지거나 왜곡되기 쉽습니다. 이때 발생하는 현상이 앨리어싱(Aliasing)입니다.
이런 현상은 고주파 정보를 충분히 처리하지 못하고 잘못 샘플링했을 때 발생합니다.
방식 | 특징 |
---|---|
Nearest | 픽셀 1개만 참조, 빠름, 품질 낮음 |
Area | 다수 픽셀 평균, 느림, 품질 높음, 앨리어싱 방지 |
Area는 단순한 Nearest가 아니라 "저역 통과 필터(Low-pass filtering)"를 수행하는 고급 방식입니다.
import torch.nn.functional as F
# 업샘플링
F.interpolate(input, scale_factor=2, mode='nearest') # 빠름
F.interpolate(input, scale_factor=2, mode='linear') # 느림
# 다운샘플링
F.interpolate(input, scale_factor=0.5, mode='nearest') # 빠름
F.interpolate(input, scale_factor=0.5, mode='linear') # 느림
nearest
는 연산량이 적어 항상 빠르며,
linear
는 보간 계산 때문에 느리지만 품질은 우수합니다.
상황 | 추천 방식 | 이유 |
---|---|---|
속도가 최우선 | Nearest | 가장 단순한 계산, 빠른 처리 |
품질이 중요 | Bilinear | 부드러운 보간, 적절한 품질과 속도 균형 |
다운샘플링 시 앨리어싱 방지 최우선 | Area (INTER_AREA ) | 고주파 성분 제거, 가장 부드럽고 정확한 다운샘플링 |
이미지 보간 방식 선택은 단순한 속도 문제가 아니라, 시각 품질과 정보 보존에 직접적인 영향을 미칩니다. 실시간 처리가 중요한 경우에는 Nearest
, 품질이 중요한 경우에는 Bilinear
, 그리고 특히 다운샘플링에서 앨리어싱을 방지하고 싶을 땐 반드시 Area
방식을 고려하세요!