[2025-1] 조환희 - SRCNN, ESRGAN
1. SRCNN (Image Super-Resolution Using Deep Convolutional Networks)
Introduction
컴퓨터 비전 분야에서, 하나의(single) 저해상도(low-resoultion) 이미지에서 고해상도(high-resoultion) 이미지로 복원하는 것은 전통적인 문제였습니다. 특히, 저해상도에서 고해상도로 바꾸는 것은 정답이 없는(ill-posed) 문제였습니다. 이렇게 정답이 없는 문제인 SR에 대해서, 지금까지의 전통적인 SOTA 기술들은 사전 지식을 통해 어느 정도 정답의 후보를 간추리려고 했습니다.
기존 방식
첫번째로, example based 방식이 있습니다. 이 기술은 저해상도/고해상도 이미지 patch의 쌍을 매핑하는 함수를 학습시켜, 미리 딕셔너리 형태로 구축하는 방식을 사용합니다. 두번째로, sparse-coding-based 방식이 있습니다. 먼저 입력될 저해상도 이미지에서 patch를 크롭해서 전처리하고 쌓습니다. 이 패치들은 저해상도 딕셔너리에 의해 sparse coefficinet로 인코딩됩니다. sparse coefficient들은 고해상도 딕셔너리를 통과해 고해상도 patch를 reconstruct 합니다. reconstruct된 패치들은 다시 모여서 최종 아웃풋을 만들어냅니다. 그러나 위와 같은 전통적인 방식들은 이런 전통적인 방식들은 SR의 pipeline의 모든 단계들에 대해서 최적화시키지는 않습니다.
논문 제안 방식
이 논문에선 저해상도 이미지와 고해상도 이미지를 처음부터 끝까지(end-to-end mapping) 통과시켜 학습하는 CNN을 생각했습니다. CNN을 이용한 SR은 기존의 방법들을 모두 아우를 수 있다고 합니다. 딕셔너리를 사용하지 않고, 패치 추출이나 모음도 Conv 레이어를 통해 이루어질 수 있습니다. 이들은 이 CNN 모델을 Super-Resolution Convolutional Neural Network, 즉 SRCNN이라고 이름 붙입니다.
이 SRCNN은 크게 네 가지 장점이 있습니다.
1) 기존 방법들보다 구조가 간단하지만 정확도가 훨씬 높다.
2) CPU에서 써도 될만큼 속도가 빠르다.
3) 모델이 크고 깊을수록, 데이터셋이 더 다양할수록 성능이 증가한다. 기존 방법들에선 그러한 방법들의 적용이 힘들다.
4) 이미지의 RGB 3채널을 처리함과 동시에 고해상도 이미지를 얻을 수 있다.
그리고 이번 연구의 기여점은 크게 세 가지가 있습니다.
1) 이미지의 초해상화를 위해 CNN을 제안했다.
2) 우리의 딥러닝 기반 SR 기술과 기존의 전통적인 SR 기술 간의 관계를 성립했다.
3) 전통적인 컴퓨터 비전 기법으로만 SR을 했는데, 이젠 SR을 할 때 딥러닝이 더 유용하다는걸 밝혔다.
Convolutional Neural Networks for Super Resolution
SRCNN의 구조
하나의 저해상도 이미지에 대하여, bicubic interpolation을 이용해 그것을 우리가 원하는 사이즈로 upscale한게 유일한 전처리 과정입니다. 이때 뒤에서 설명하겠지만, 대상 저해상도 이미지는 원본 이미지에서 특정 사이즈로 크롭한 sub-image를 특정 scale factor로 줄였다가 다시 늘림으로써 흐릿해진 이미지입니다. 마치 그림판에서 원본 이미지를 줄였다가 다시 늘리면 원본 화질이 유지되지 않고 흐릿해지는 것과 비슷합니다.
연구의 목표는 이렇게 만들어진 "저해상도" 이미지 Y를 F(Y)로 바꾸는건데, 이 F(Y)는 원본, 즉 "고해상도" 이미지 X, 다시 말하면 정답값(ground truth)과 가깝도록 만드는 매핑 함수 F를 찾는 것입니다. 이 F는 아래 세 가지 동작을 포함합니다.
1) Patch extraction and representation: CNN의 첫번째 레이어에서 저해상도 이미지 Y에서 패치를 추출하고, 각 패치들을 고차원의 벡터로 나타냅니다. 이 벡터들은 feature map 집합을 구성하며, 그 집합들의 수는 벡터의 차원과 같습니다. 첫번째 레이어의 수식은 다음과 같습니다.
인풋 이미지 Y에 Conv 필터를 통과시켜서 feature map인 W*Y를 만들고, bias B를 더한 뒤에, ReLU 함수(= 0과 0이 아닌 값 중 max를 고르는 함수)를 통과시켜 최종 매핑된 feature map F(Y)를 만듭니다. 결론적으로 우리가 알고 있는 컨볼루션 과정과 같다는 걸 알 수 있습니다.
2) Non-linear mapping: 매핑 함수는 1) 과정을 통해 만들어진 고차원의 벡터를 다른 고차원의 벡터로 비선형적으로 매핑시킵니다. 매핑된 각 벡터들은 또다른 feature map 집합을 구성하며, 그것은 곧 고해상도 이미지로 reconstruction을 하기 위해 만들어진 고차원 패치의 표현이라고 이해할 수 있습니다. 이 논문에서 non-linear mapping은 1x1 Conv 필터를 적용시키는 것이지만, 3x3, 5x5 Conv 필터에 대해서도 일반화시킬 수 있습니다. 두번째 레이어의 수식은 다음과 같습니다.
두번째 매핑(즉, 두번째 레이어)에서는 인풋 이미지의 패치에 매핑을 적용시키는게 아니라, 첫번째 매핑(즉, 첫번째 레이어)을 통과하고 나온 feature map F_1(Y)에 매핑을 적용시키는 것입니다. 그냥 자연스럽게 컨볼루션 레이어를 통과하는 것이라고 생각하면 됩니다. 그리고 비선형성을 증가시키기 위해 더 많은 컨볼루션 레이어를 붙일 수도 있습니다.
3) Reconstruction: 위 과정들을 통해 만들어진, 고해상도를 나타내는 표현들이 최종 고해상도 이미지를 만들기 위해 모여져야 합니다. 그 최종 고해상도 이미지를 나타내는 이미지는 실제 정답값 X와 비슷해야 합니다. 세번째 레이어의 수식은 다음과 같습니다.
전통적인 방법에서는 이전 과정들을 통해 만들어진 고해상도 패치들을 평균화시켜 최종 고해상도 이미지를 만드는데, 이 연구에선 linear filter를 나타내는 W_3가 평균화시키는 필터처럼 작동합니다.
결국 위에서 설명한 세 가지 동작은 각기 다른 직관에서 유래되었지만, 그것들은 모두 컨볼루션 레이어라는 똑같은 형태로 귀결됩니다. 따라서 세 가지 동작이 이루어지는 모델 구조를 살펴보면, 위와 같이 " Input → Conv+ReLU → Conv+ReLU → Conv → Output " 의 형태인, 평범한 얕은 층의 CNN 모델이 되는 것을 확인할 수 있습니다.
Training
모델 학습 시에 사용되는 손실 함수는 MSE(평균 제곱 오차)입니다. SRCNN의 결과로 나온 이미지 F(Y)와 원본 이미지 X의 차이를 계산합니다.
그리고 얼마나 잘 고해상화 되었는지는 PSNR이라는 수치를 이용합니다. PSNR은 최대 신호 대 잡음비(Peak Signal-to-noise ratio, PSNR)라고 하며, 신호가 가질 수 있는 최대 전력에 대한 잡음의 전력을 나타낸 것입니다. 주로 영상 손실 압축에서 화질 손실 정보를 평가할때 사용됩니다. PSNR은 신호의 전력에 대한 고려 없이 MSE를 이용해서 계산 할 수 있습니다. 즉 MSE가 낮을수록 높아지는 값이므로, PSNR이 높으면 더 잘 초해상화된 이미지라고 할 수 있습니다. MSE와 PSNR의 수식은 아래와 같습니다.
# 4. Experiments
- 기존 SOTA 모델들과의 비교 -
위 그래프에서, SRCNN은 모든 평가 수치상에서 sparse coding method를 포함한 다른 모든 기존 SOTA 방법들보다도 좋은 성능을 보여주었고, 눈으로 보기에도 다른 방법들보다 더 샤프하고 artifact 없는 이미지를 만들어냈습니다.
또한 SRCNN은 다른 SOTA 모델들과 비교했을때, 초해상화된 이미지를 만들어내는 시간도 월등히 빠른 것도 위 그래프를 통해 알 수 있습니다.
2. ESRGAN (Enhanced Super-Resolution Generative Adversarial Networks)
ESRGAN은 Enhanced Super-Resolution Generative Adversarial Networks로 SRGAN에 Enhanced가 더해진 의미입니다.
Introduction
SRGAN은 고해상도의 이미지를 만들 때, 현실적인 질감으로 만들어 내기도 하지만, 인공적인 디테일도 만들어 내기도 한다는 단점이 있습니다. 이 저자는 SRGAN의 시각적인 디테일을 더 향상시키기 위해 SRGAN 네트워크 구조, 2가지의 loss 총 3가지 기본요소를 연구 후 새로운 ESRGAN 모델을 제안합니다.
SRGAN과의 차이
SRGAN의 성능향상을 위해 논문에서는 크게 세가지를 바꿉니다.
1. Network Architecture
2. Relativistic Discriminator
3. Perceptual Loss
1. Network Architecture
SRGAN에서는 Batch Normalization(BN)을 사용하지만, train 데이터셋과 test 데이터셋의 통계치가 달라 BN을 사용하면 artifact 현상이 생기게 되며, 일반화 성능이 저하됩니다.
따라서 저자들은 안정적인 학습과 일관된 성능을 위해 BN을 제거했습니다. BN을 제거함으로 계산 복잡도, 메모리 사용량에서 이점이 생깁니다.
기존의 SRGAN의 구조는 그대로 사용하며 Block만 교체한 모습입니다.
RRDB는 기존 SRGAN의 Residual Block 보다 더 깊고 복잡한 구조로, 주 경로에서 dense block을 사용하는데, 이로 인해 네트워크 용량은 커지게 됩니다.
추가로
- Residual scaling: 불안정성을 방지하기 위해 주 경로에 추가하기 전에 0과 1 사이의 상수를 곱해 residuals 스케일을 축소
- Smaller initialization: residual 구조는 초기 매개변수 분산이 작을 수록 더욱 쉽게 학습 가능
등의 기술도 이용했습니다.
2. Relativistic Discriminator
기존의 SRGAN의 판별자는 하나의 input 이미지(x)가 진짜이고 자연스러운 것일 확률을 추정했습니다. relativistic discriminator는 실제 이미지(Xr)가 가짜 이미지(Xf) 보다 상대적으로 더 현실적일 확률을 예측합니다.
이를 통해 기존의 GAN에 비해 더 안정적이고 일관된 학습을 제공하며, 판별자와 생성자 간의 경쟁을 더 직관적으로 조절하는 방법을 도입했습니다.
3. Perceptual Loss
기존에는 activation 이후에 feature map을 사용했지만, activation 전에 feature map을 사용함으로써 SRGAN보다 더 효과적인 perceptual loss(Lpercep)를 개발하였고, 이를 통해 기존에 있던 2가지의 문제점을 해결했습니다
1) 매우 깊은 네트워크 activation 이후에 활성화된 features들은 매우 sparse함으로, 낮은 성능으로 이어집니다.
2) 활성화 후 feature들을 사용하는 것은 ground-truth 이미지와 비교했을 때 일관성이 없는 복원된 밝기를 유발합니다.
(왼쪽 그래프 빨간색 gt, 파란색 after activation, 초록색 before activation)
활성화 후 대부분의 feature들은 소극적(inactive)으로 된 반면, 활성화 전 feature들은 더 많은 정보들을 가지고 있습니다.
Total Loss
최종적으로 loss는 perceptual loss, RaGan loss, L1 loss가 사용됩니다.
Network Interpolation
PSNR-oriented network(Gpsnr)을 학습한 후, 미세 조정을 통해 GAN-based network(Ggan)를 얻었습니다. 이것으로 기존 GAN 방식의 학습이 진행되면서 perceptual quality가 좋아져도 artifact가 생기는 문제를 어느정도 해결합니다. 또 모델을 재학습시킬 필요없이 지속적으로 지각 품질과 정확도의 균형을 유지할 수 있게 해줍니다.
결과 비교