본문 바로가기
공부/TIL•기타

SRMD

by svcbn 2025. 11. 6.

11/05
SRMD 는 이미지 업스케일링을 위한 CNN 기반 방식이다.
처음엔 무슨 알고리즘인가 했는데, 찾아보니 그런건 아니고 딥러닝을 통한 업스케일링 방법이라는 듯. 찾다보니 논문까지 들어가서 읽게 되었는데ㅋㅋ 적당히 이해한대로 정리만 하고 끝내야되겠다 싶다..
일단 용어정리부터 먼저
- SRMD : Single Convolutional Super-Resolution Network for Multiple Degradations
벌써부터 어지럽다.. 왜 약어가 저렇게 되냐고 하면, 논문좀 쓴 지인들한테 들었는데 사실 그럴싸한 단어를 여러개 가져다놓고 멋진 단어와 적당히 괜찮은 약어가 나오게끔 고른다고 한다ㅋㅋㅋㅋ 한마디로 만든 사람 취향(?). 그래야 학회에서 발표할 때 더 멋있다고(?)
번역하자면 다중 열화를 위한 단일 합성곱 초해상도 네트워크. 괜히 공부할때 원어로 하는게 아니다.
- CNN : Convolutional Neural Network
주로 이미지 인식, 분류, 분할 등 CV(Computer Vision) 분야에서 사용하는 딥러닝의 한 종류인 인공 신경망 구조.
이게 뭔가 해서 이것도 잠깐 봤는데, 이미지를 이해하기 위해 특징 추출 - 분류 단계를 거쳐 판단을 내리는 방식이다. 요약하면 필터를 사용해 이미지의 계층적 특징을 학습하고, Pooling 으로 정보를 압축한 뒤, 전통적인 신경망인 Fully Connected Layer 로 최종 결정을 내리는 구조라는데, 더 가면 머신러닝까지 공부해야 될 것 같아서... 대충 MLP를 읽어보고 느낌만 잡았다.


그러면, 이 SRMD 업스케일링이 뭔지 본론으로 들어가자.
요약하자면, 저해상도 이미지(LR)흐릿함(블러 커널, k), 노이즈(σ) 를 추측하도록 학습시켜, CNN을 통해 원본으로 추정되는 고해상도 이미지를 생성하는 것이다. 이게 왜 되냐고 하면...
그림판으로 뚝딱.. 은 아니고 GPT를 시켜 만들어낸 이미지와 함께...
먼저, 이런 원본 이미지가 있다고 하자.
 

그리고, 이 이미지에 적용할 블러와 노이즈 맵을 임의로 생성한다. 논문을 보면 12가지정도 노이즈 패턴을 사용한 것 같던데.. 일단은 간단하게 해보면
 

좌: blur map / 우: noise map

이렇게 블러맵과 노이즈맵을 제공한다. 이 맵을 추정하는 것이 이제 저자의 아이디어였는데, 차원이 다른 y(LR), k(blur), σ(noise) 를 함께 고려하는 단일 네트워크를 위해, Dimensionality Stretching 을 통해 커널의 차원 표현을 공간 크기만큼 (t+1) 장의 맵으로 생성하고, 이를 CNN 입력으로 주어 생성하자는 것. 더 깊게 들어가려면 배경지식이 필요해 보인다...
 

화질이 이상한게 아니다. 위에서 본 블러와 노이즈가 적용된 것. 최종적으로 이런 이미지가 완성되고, 여러 샘플들을 계속 주입해 딥러닝을 하는 것이다. 여기서 방법이 나오는데,
원본 > 블러,노이즈 적용 > 흐릿한 이미지 의 과정에서, 흐릿한 이미지와 블러와 노이즈 정보는 이랬어, 원본은 이거야. 추론해봐. 의 과정을 학습하게 되고, 이 학습의 결과로 흐릿한 이미지에서도 블러값과 노이즈값을 추출하여, 원본을 생성할 수 있게 되는 것이다.
 

다시 말해,
학습은 원본 > 블러,노이즈 적용 > 변조 이미지의 순서로 제공하여 학습시키고,
그 결과로 흐릿한 원본 이미지 > 블러, 노이즈 추측 > 고해상도 추론 의 과정이 가능하게 된 것이다.
아니.. 이런 생각을 어떻게 하나 몰라... 세상에는 똑똑한 사람이 너무 많다. 보니까 CV쪽에서 가장 저명한 학회인 CVF에 실린 모양. 진짜 대단하다.
사실 제일 중요한 것은 저 블러맵과 노이즈맵을 추출하는 과정에서 Dimensionality Stretching 을 하기 위한 방법인데, 이 부분은 정말로 개념 이외에는 이해할 수가 없어서ㅋㅋㅋ
아래로는 논문을 요약한 내용과, 원문 그리고 실험을 해볼 수 있는 소스코드를 남겨놓고 마무리


 

문제 정의 (SISR with multiple degradations)

단일 영상 초해상(SISR)에서 실제 저해상(LR) 이미지는 보통 블러 커널 (k)로 흐려지고, 다운샘플링 (\downarrow_s) 되고, 가우시안 잡음 (n)이 더해진 것으로 모델링한다. 따라서 우리가 학습해야 할 함수는
[
\hat{x} = F(y, k, \sigma; \Theta)
]
이다. 즉 입력 LR 이미지 (y)뿐 아니라 커널 (k)노이즈 레벨 (\sigma)까지 함께 고려하는 단일 네트워크를 목표로 한다. 문제는 (y, k, \sigma)의 차원이 서로 다르다는 점이다. 이를 해결하려고 저자는 Dimensionality Stretching을 제안한다.

핵심 아이디어: Dimensionality Stretching

  • 커널 임베딩: (p\times p) 블러 커널을 벡터화한 뒤, PCA로 (t)-차원(논문은 보통 (t=15))으로 압축한다.
  • 열지도로 확장: (커널의 (t)-차원 표현 + (\sigma))를 공간 크기 (W\times H)복제(stretch) 하여 ((t+1))장의 degradation maps (M \in \mathbb{R}^{W\times H\times (t+1)})로 만든다. 이렇게 하면 (y)와 (M)을 채널 방향으로 연결(concatenate) 해 CNN 입력으로 줄 수 있다. 이 방식은 공간적으로 비균일(spatially variant) 한 열지도도 다룰 수 있게 해 준다.

네트워크 구조 (SRMD)

모델 이름은 SRMD. 입력은 (\underbrace{W\times H\times C}{\text{LR}} \oplus \underbrace{W\times H\times (t+1)}{\text{degradation maps}}) 이고, 본체는 3×3 Conv + BN + ReLU를 쌓은 plain CNN. 마지막에 sub-pixel convolution(ESPCN)으로 업스케일한다. 복잡한 아키텍처 대신 입력 쪽에 열지도를 붙여 단일 모델로 다양한 열화 조건을 처리한다.

학습 세팅(열화 공간 샘플링)

  • 커널: 이소트로픽/애니소트로픽 가우시안 커널(크기 (15\times15)), 스케일별로 커널 폭/고유값 스케일 범위를 설정하여 광범위하게 샘플링하고, 많은 커널을 모아 PCA 투영행렬을 학습(에너지 99.8% 유지, (t=15)).
  • 노이즈: AWGN (\sigma \in [0, 75]). RGB 채널로 학습하며 BSD, DIV2K, WED 등 대규모 컬러 데이터로 학습 데이터를 합성한다.
  • 합성: HR (\xrightarrow{\otimes k}) blur (\xrightarrow{\downarrow s}) bicubic downsample (\xrightarrow{+; \mathcal{N}(0, \sigma^2)}) LR 패치를 만든다.

또한 논문은 기본적으로 bicubic 다운샘플러를 쓰지만, direct downsampler(예: 카메라 파이프라인)도 데이터 기반으로 근사해 포함할 수 있음을 보인다.

왜 잘 동작하나? (해석)

  • MAP 관점: SISR은 (\hat{x}=F(y,k,\sigma;\Theta))를 근사하는 문제이고, CNN은 사전(prior)을 내재화할 수 있어 여러 열화 조건하나의 모델로 다룰 수 있다. Dimensionality stretching이 서로 다른 차원의 ((y,k,\sigma))를 동일한 공간 차원으로 정렬해 CNN에 주입할 수 있게 한다.
  • 공간 가변 열화: 열지도 (M)을 위치별로 다르게 줄 수 있어(= non-uniform) spatially variant blur/노이즈도 처리 가능.

결과 요약

  • 다양한 열화 조건(bicubic 외, direct downsampler, 다양한 가우시안 커널, 잡음 수준)에 대해 단일 SRMD/SRMDNF로 선행 방법(VDSR 등)보다 시각적 선명도/엣지 복원이 우수. 특히 열화 가정 불일치(mismatch) 상황에서 기존 단일 가정 모델은 성능 저하가 두드러지지만, SRMD는 견고하다.
  • 실사진(real LR)에서도 압축 아티팩트 등 다양한 왜곡에 대해 부드러움/과평활 없이 선명한 HR을 복원.
  • 결론: 열화 파라미터(커널+노이즈)를 dimensionality stretching으로 degradation maps로 바꿔 입력에 붙이는 단순 전략만으로, bicubic을 넘어서는 다양한 열화공간 가변성까지 실용적으로 커버.

-  소스코드

GitHub - cszn/SRMD: Learning a Single Convolutional Super-Resolution Network for Multiple Degradations (CVPR, 2018) (Matlab)

Learning a Single Convolutional Super-Resolution Network for Multiple Degradations (CVPR, 2018) (Matlab) - cszn/SRMD

github.com

 
- 논문 원문
https://openaccess.thecvf.com/content_cvpr_2018/papers/Zhang_Learning_a_Single_CVPR_2018_paper.pdf

'공부 > TIL•기타' 카테고리의 다른 글

문서 객체 모델(DOM)  (0) 2025.11.10
Deprecated  (0) 2025.11.07
개발 반성회  (1) 2025.11.05
SQL  (0) 2025.01.05
OpenGL / DirectX / Vulkan / Metal  (0) 2024.11.26