ICCV 2023 Paper 에서 나온 논문으로 이전에 포스팅한 Blur2Blur와 비슷하게 Correction Filter를 통해 Degradation을 Know Distribution으로 바꾸는 것으로 보인다.
→ 기존의 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에 대해서 쉽게 최적화할 수 있다.
기존의 연구가 된 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에서 본 논문이 정성적 정량적 성능을 일관되게 향상시킬 수 있다.
이니까 된 을 찾는 방법은 (5)번 수식
(6) 수식을 통해 모르는 Degradation을 Known Degradation으로 변경할 수 있다.
고로 C (correction operator)을 사용하겠다는건데, C는 convolution with a correction filter로 적용하게 된다.
이걸 DARM에 적용시켜 학습하겠다는 것
(a)에서 DARM 학습 시켜서 Filter만드는걸 학습하고 (b)에서 학습된 filter를 사용하여 Pre-defined Degradation으로 바꾼다.
여러개의 Gaussian Filter를 combine해서 correction filter를 얻을 수 있다.
또한 효율성을 위해 DARM에 경량화된 Residual Network를 도입했는데, 이 Network는 RCAB 2개와 head에 convolution layer, final convolution layer로 구성되어있다.
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