Super Resolution
초해상도는 보간으로 복원할 수 없는 세부 정보를 예측해 저해상도 이미지에서 고해상도 이미지를 재구성합니다. 모델과 코드를 다룹니다.
초해상도(SR)는 저해상도 입력에서 더 높은 해상도의 이미지 또는 동영상을 복원하는 컴퓨터 비전 기술군입니다. 바이큐빅 보간과 같은 기존 업스케일링 방식은 기존 픽셀을 더 큰 격자에 펼칠 뿐이므로, 윤곽선이 흐려지고 미세한 텍스처가 뭉개집니다. 학습된 SR 모델은 저해상도와 고해상도 이미지 쌍에서 학습한 패턴을 바탕으로 선명한 윤곽선, 글자 획, 직물이나 나뭇잎의 질감과 같은 누락된 고주파 디테일을 예측합니다. 단일 이미지 초해상도(SISR)는 한 장의 이미지를 사용하고, 동영상 초해상도는 같은 장면에 대한 정보를 조금씩 다르게 담은 인접 프레임도 활용합니다.
초해상도의 작동 방식#
초해상도는 잘못 정의된 문제입니다. 서로 다른 고해상도 이미지가 같은 저해상도 이미지로 축소될 수 있으므로, 모델은 자연 이미지에 대해 학습한 정보를 바탕으로 가장 그럴듯한 결과를 선택해야 합니다. 학습 쌍은 고해상도 이미지를 흐리게 만들고, 2× 또는 4×와 같은 배율로 다운샘플링하고, 노이즈와 압축을 적용해 생성합니다. 이 열화 모델에 따라 네트워크가 처리할 수 있는 실제 입력이 결정됩니다. Real-ESRGAN은 여러 열화 과정을 무작위로 연결해 학습하므로, 실제 사진과 동영상뿐만 아니라 깔끔하게 다운샘플링된 이미지도 복원할 수 있습니다.
아키텍처는 다른 딥러닝 분야와 함께 발전해 왔습니다. SRCNN은 2014년에 3계층 합성곱 신경망(CNN)이 기존 기법보다 뛰어난 성능을 보인다는 점을 입증했습니다. ESPCN은 저해상도에서 합성곱을 수행하고, 마지막에 채널을 더 큰 이미지로 재배열하는 서브픽셀 합성곱으로 업스케일링하므로 실시간 1080p 동영상에 충분히 빠릅니다. EDSR은 다수의 잔차 블록을 쌓았고, SwinIR은 시프트 윈도우 비전 Transformer 블록으로 모델을 구성했으며, 디퓨전 모델은 반복적인 노이즈 제거를 통해 디테일을 생성합니다.
손실 함수는 무엇을 "더 나은" 결과로 볼지 결정합니다. L1 또는 평균 제곱 오차와 같은 픽셀 손실은 원본에 대한 충실도를 극대화하지만, 가능한 결과를 평균 내므로 이미지가 매끄럽게 보입니다. SRGAN은 심층 특징을 기반으로 하는 지각 손실과 생성적 적대 신경망(GAN)에서 가져온 적대적 손실을 추가해 선명하고 사실적인 텍스처를 생성합니다. 그러나 픽셀 단위로 실제 장면과 일치하지 않을 수 있으며, 세부 묘사를 만들어 내면 증거로 오인될 수 있는 의료 및 법과학 영상에서는 위험 요소가 됩니다.
초해상도 측정#
충실도는 평균 제곱 오차를 데시벨 단위의 로그 척도로 나타내는 최대 신호 대 잡음비(PSNR)와 구조적 유사도 지수(SSIM)로 측정합니다. LPIPS와 같은 지각 지표는 심층 특징을 비교해 사실성에 대한 사람의 판단을 더 잘 반영합니다. 아래 비교에서는 이미지를 4배 축소한 다음 바이큐빅 보간 및 OpenCV의 사전 학습된 ESPCN 모델로 복원합니다.
import urllib.request
import cv2 # cv2.dnn_superres requires: pip install opencv-contrib-python
# Download a pretrained 4x ESPCN model and a test image cropped to a multiple of 4
urllib.request.urlretrieve("https://github.com/fannymonori/TF-ESPCN/raw/master/export/ESPCN_x4.pb", "ESPCN_x4.pb")
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
original = cv2.imread("bus.jpg")[:1080, :808]
# Simulate a low-resolution capture by shrinking the image 4x
low_res = cv2.resize(original, (202, 270), interpolation=cv2.INTER_CUBIC)
# Upscale 4x with bicubic interpolation and with the learned ESPCN model
bicubic = cv2.resize(low_res, (808, 1080), interpolation=cv2.INTER_CUBIC)
sr = cv2.dnn_superres.DnnSuperResImpl_create()
sr.readModel("ESPCN_x4.pb")
sr.setModel("espcn", 4)
espcn = sr.upsample(low_res)
# Higher PSNR means the reconstruction is closer to the original image
print(f"Bicubic: {cv2.PSNR(original, bicubic):.2f} dB, ESPCN: {cv2.PSNR(original, espcn):.2f} dB")Bicubic: 19.51 dB, ESPCN: 20.52 dB을 출력합니다. 1dB의 향상은 약 21% 낮은 평균 제곱 오차에 해당하며, 모델 파일 크기는 약 100KB입니다.
초해상도와 관련 용어 비교#
- 이미지 복원: 노이즈 제거, 디블러링, 압축 아티팩트 제거 등 열화된 이미지에서 깨끗한 이미지를 복원하는 더 넓은 분야입니다. 초해상도는 픽셀 수도 늘리는 복원 작업이며, 최신 모델은 여러 열화 유형을 한 번에 처리하는 경우가 많습니다.
- 이미지 인페인팅: 누락되거나 마스킹된 영역을 채우는 반면, 초해상도는 전체가 존재하지만 거친 이미지의 모든 부분에 디테일을 추가합니다.
- 프레임 보간: 기존 프레임 사이에 프레임을 합성해 시간 해상도를 높이며, 공간 초해상도에 대응하는 시간축 작업입니다.
- 생성형 AI: 텍스트-이미지 모델은 프롬프트를 바탕으로 이미지를 생성합니다. 초해상도는 입력 이미지를 조건으로 사용하며 해당 이미지의 콘텐츠에 충실해야 합니다. 많은 이미지 생성기가 마지막 단계에서 디퓨전 업스케일러를 사용합니다.
실제 적용 사례#
- 게임: NVIDIA DLSS는 프레임을 낮은 해상도로 렌더링한 다음 신경망으로 업스케일링해 비슷한 시각적 품질을 유지하면서 프레임 속도를 높입니다.
- 동영상 스트리밍 및 아카이브: 방송사와 필름 복원 전문가는 표준 화질 및 아카이브 영상을 HD와 4K 디스플레이용으로 업스케일링합니다.
- 위성 이미지 분석: 분석가는 저비용 영상의 선명도를 높여 건물, 도로 및 차량을 지도화합니다.
- 의료 영상 분석: 연구 시스템은 더 빠른 저해상도 촬영으로부터 고해상도 MRI를 복원해 환자가 스캐너 안에 머무는 시간을 단축합니다.
초해상도는 저해상도 원본에서 작은 객체를 탐지하기 위한 전처리 단계로도 사용됩니다. Ultralytics YOLO26은 모든 입력을 기본값으로 640픽셀인 imgsz으로 조정할 때 쌍선형 보간을 사용하므로, 320×240 카메라 프레임은 탐지 전에 2배 확대됩니다. 보간 대신 2배 초해상도 모델을 사용하면 얼굴, 번호판, 항공 영상의 차량과 같이 작고 멀리 있는 객체의 윤곽선을 복원해 탐지기에 전달할 수 있습니다.










