[Paper Review] Learning Correction Filter via Degradation-Adaptive Regression for Blind Single Image Super-Resolution

ghgh5317·2024년 8월 2일
0

PaperReview

목록 보기
1/4

ICCV 2023 Paper 에서 나온 논문으로 이전에 포스팅한 Blur2Blur와 비슷하게 Correction Filter를 통해 Degradation을 Know Distribution으로 바꾸는 것으로 보인다.

Abstract

→ 기존의 SR 방법들은 Benchmark dataset에서 성능이 좋지만, LR의 Degradation이 학습 데이터셋에 없는 경우에는 SR 성능이 좋지 않다.
이 부분을 해결하기 위해 Correction Filter via Degradation-Adaptive Regression for Blind Single Image Super-Resolution 요거를 학습한다.
구체적으로 GAN을 통해 Image Region에 있는 Degradation을 추정하게 된다. 다음으로 DARM을 사용하여 공간적으로 변하는 방식으로 Degradation을 알려진 Degradation으로 변경해주는 Correction Filter를 학습한다.
여기서 DARM의 경우는 가볍고, 여러 Known Degradation에 대해서 쉽게 최적화할 수 있다.

Introduction

기존의 연구가 된 SR 모델을 활용하기 위해서 유용한 information을 손상시키지 않고 LR Degradation를 robustify되게 한다.
기존의 연구와 비교 : (a) 대부분의 BlindSR (b) Ours인데, BlindSR의 경우 LR Degradation을 추정한 다음 SR Network을 학습했는데 Ours의 경우 DARM을 통해 Correction Filter를 학습하는 방법을 제안한다. 이 방법으로 Correction Filtering을 거치고 SISR (미리 학습된)이 모든 Testset에 대해 Complex Degradation에 adapt하게끔 하게 한다. 추가적으로 Metric Learning을 통해 Metric space에서 Unquantifiable degradation을 매핑할 수 있게 도와주는 DM loss도 제안한다.

Contribution Point
1) Blind Single Image Super Resolution을 위해 공간적으로 Correction Filter를 학습하는 새로운 unsupervised learning을 시도하여 off-the-shelf super resolution 모델의 adapting ability를 늘렸다.
2) 여러 사전에 정의된 filter based dictionary에서 정확하게 correction filter를 학습할 수 있는 가벼운 DARM 모델을 제안한다.
3) DM Loss를 제안한다.
4) Syn Dataset & Real Dataset에서 본 논문이 정성적 정량적 성능을 일관되게 향상시킬 수 있다.

Method


y=HRy=HR이니까 SRSRyy'을 찾는 방법은 (5)번 수식
(6) 수식을 통해 모르는 Degradation을 Known Degradation으로 변경할 수 있다.
고로 C (correction operator)을 사용하겠다는건데, C는 convolution with a correction filter로 적용하게 된다.
이걸 DARM에 적용시켜 학습하겠다는 것


(a)에서 DARM 학습 시켜서 Filter만드는걸 학습하고 (b)에서 학습된 filter를 사용하여 Pre-defined Degradation으로 바꾼다.

  1. Generation of Training Data
  • LR이 주어졌을 때, all region의 degradation을 off-the-shelf super resolution 모델에서 사용되는 degradation으로 보정하는 것이 목표다. 그래서 해당 모델은 Fig3처럼 LR을 잘라 X=xiX=x_i를 생성한다. 이때 각 xix_i는 해당 영역의 degradation을 가지고 있고, X는 LR 이미지의 각 영역의Degradation을 다루고 있다.
  • 그 다음 LR을 잘라 Y=yiY=y_i를 만들고 이거는 X의 Degradation과 유사한 Degradation을 갖도록 2배 or 4배 Donwscaling한 이미지를 학습하기 위한 목적이다.
  • Known Downsampling을 사용하여 Patch Y를 Deagradation을 적용하고, 학습을 위해 동일한 크기의 패치 Xi=xibX_i = x_i^b를 생성한다.
  1. Spatial-Variant Degradation Estimation
  • XXXbX_b는 not paired라 correction filter를 직접적으로 학습할 수 없다.
  • 따라서 GAN 기반을 사용하여 Xc=xicX_c = x_i^c를 학습하고, 이를 통해 X와 동일한 Degradation을 가진 XcX_c를 얻는다.
  • 그래서 이걸 위해 G와 D 모델을 사용한다. ⇒ 이를 통해 각 local patch xcx_c에 대한 다양한 Degradation을 학습하게 된다.
  • 이 방법으로 성능을 향상시키기 위해 local degradation을 모두 가지고 있는 XcX_c를 학습할 수 있다.
  • 이때 더 정확한 Degradation을 학습하기 위해 DM Loss를 도입한다.
  1. Learning Correction Filters cia DARM
  • Fig2에 나온 것처럼 XcX_cXbX_bpaired의 학습 데이터를 사용하여 DARM을 L1 Loss와 DM Loss를 사용하여 Correction Filter를 학습한다.
  • 또한 XXXbX_b의 paired가 아닌 데이터셋에서도 DM Loss를 사용하여 Network를 학습한다.
  • DARM을 통해 XCX_CXX를 각각 XbX_b'XaX_a로 표현할 수 있다.

여러개의 Gaussian Filter를 combine해서 correction filter를 얻을 수 있다.
또한 효율성을 위해 DARM에 경량화된 Residual Network를 도입했는데, 이 Network는 RCAB 2개와 head에 convolution layer, final convolution layer로 구성되어있다.

  1. Loss Function
  • 다른 loss는 다 생략한다. (아는거라..)
  • DM Loss

    Real world에서는 Degradation을 single adversarial learning에서 찾아내기 어려워 DM loss를 제안한다.
    DSEM을 사용하여 목표 degradation과 추정된 Degradation 간의 거리는 modeling한다. (Fig4)

    여기서 S가 Degradation score estimation operation이다. = DSEM에서 나온 것.
    두 부분에 대해 DM Loss를 사용하게 되는데 하나는 G (Downscaling generator)이고, 하나는 DARM에 의해 생성된 결과에 대해 사용한다.

Experiments

Dataset : RealSRSet과 synthetic dataset (NTIRE2017 & 2018)
Metric : PSNR SSIM (YCbCr의 Y channel) / LPIPS (RGB)
Patch size : 32 x 32 / 128 x 128 (x4) | 64 x 64 / 128 x 128 (x2)
iteration number : set to 3000
optimizer : Adam
initial learning rate : 10 ^ -3 decayed by 0.5 after each 750 iterations
Data Augmentation : random rotate 90, 180, 270 / horizontally flipping
HW & lib : NVIDIA 3090 GPU / Pytorch 1.12.0

profile
instagram @sjoo_0709

0개의 댓글