[2019 ICCV] Real Image Denoising With Feature Attention 본문

ML & DL/Paper Review

[2019 ICCV] Real Image Denoising With Feature Attention

eremo2002 2022. 7. 23. 00:07

https://openaccess.thecvf.com/content_ICCV_2019/papers/Anwar_Real_Image_Denoising_With_Feature_Attention_ICCV_2019_paper.pdf

 

Abstract

  • Deep CNN은 공간적으로 invariant noise를 포함한 이미지에서 성능이 잘 나오지만 real noise에는 제한적이고 multiple stage 모델링이 필요하다.
  • 본 논문에서는 denoising 알고리즘의 practicability를 높이기 위해 RIDNet이라는 single-stage blind real image denoising network를 제안한다.
  • RIDNet은 residual on residual structure 구조를 통해 low-frequency information이 잘 전달하고 channel attention을 적용하였다.

 

Introduction

  • 이미지를 획득하는 과정에서 noise corruption은 불가피하게 발생하고 이는 이미지의 visual quality를 저하시키기 때문에 이미지에서 noise 정보를 제거하는 것이 중요합니다. practical denoising 알고리즘이라면 noise의 표준편차 정보를 모르더라도 공간적으로 variant, invariant noise를 잘 처리할 수 있어야 합니다. 그러나 현재 SOTA 모델들의 경우 이러한 부분에서 거리가 있기에 practical denoising 알고리즘이라고 보기엔 무리가 있습니다. 따라서 저자는 synthetic noise나 real noise에 관계 없이 noise를 잘 처리할 수 있는 efficient single CNN 모델을 새롭게 제안합니다.
    • 여기서 synthetic noise는 AWGN를 의미합니다. 즉, synthetic noise는 잘 제거하지만 real noise를 제거하지 못하는 알고리즘은 practical 하다고 보기 어렵습니다.
  • 본 논문의 주요 contribution은 다음과 같습니다.
    • real image denoising을 위한 two-stage CNN 모델을 제안합니다. 단, one stage model만으로도 SOTA를 달성했습니다.
    • denoising에서 feature attention을 처음으로 적용하였습니다.
    • 기존 모델들이 단순히 레이어를 연속적으로 쌓아 depth는 깊어지지만 성능향상엔 크게 도움이 안되었지만 저자는 module 수를 늘려 성능향상을 이끌어 냈습니다.
    • synthetic image dataset, real image noise dataset에서 SOTA를 달성하였습니다.

 

 

 

CNN Denoiser

  • 논문에서 제안하는 모델은 크게 3가지 module로 구성됩니다.
    • feature extraction
    • feature learning residual on the residual module
    • reconstruction

  • feature extraction module은 입력 이미지로부터 feature를 추출하는 첫 번째 conv layer를 의미합니다.
  • feature extraction module에서 추출된 feature는 feature learning residual the residual module로 입력됩니다. feature learning residual the residual module은 논문에서 제안하는 enhancement attention module(EAM)이라고 보면 됩니다.
  • EAM의 output은 reconstruction module로 입력되어 input image와 동일한 size의 output을 만들어냅니다.
  • feature extraction, reconstruction이라는 나름대로 의미 있는(?) 네이밍을 사용했지만 실제론 그저 모델의 가장 첫번째 conv layer, 가장 마지막 conv layer를 의미합니다. 모델의 핵심은 EAM이라고 보면 될 것 같습니다.
  • Loss 함수는 L1을 사용하였습니다.

 

 

 

 

 

  • EAM에 대해서 좀 더 살펴보겠습니다.
  • 우선 아래 EAM에서 residual block이 여러 개 반복되는 걸 볼 수 있는데 이러한 residual on the residual architecture 구조를 통해 네트워크의 depth가 깊어지더라도 denoising 성능향상이 가능하다고 말합니다.

 

 

 

 

 

 

  • 저자는 EAM의 first part를 merge-and-run unit이라고 부릅니다. (검은색 box로 표시된 부분) 여기서 input feature는 두 path로 나뉘어 입력되며 두 path에서 서로 다른 dilation을 적용하고 concat합니다. 이를 통해 object 크기에 robust하도록 receptive field를 다양하게 가져가겠다는 의도를 알 수 있습니다.

 

 

 

 

 

 

 

  • 이후 2개의 conv layer로 구성된 residual block으로 입력되고 이후 3개의 conv layer로 구성된 enhanced residual block으로 입력됩니다. (검은색 box로 표시한 부분)
    • enhanced residual block의 마지막 conv layer는 1x1 conv를 사용하여 feature를 flatten하기 위해 사용한다고 말하는데 이 부분은 잘 이해가 되지 않았습니다. 원래 resnet의 residual block에서 1x1 conv를 사용하는 목적은 element-wise addition 연산이 가능하도록 channel size를 맞춰주는 용도로 사용하는데 RIDNet의 EAM 안에서 feature map의 channel size는 모두 같기 때문에 channel 크기를 맞춰주는 용도는 아닌 거 같고요. 개인적인 생각으로는 1x1 conv가 f.c layer와 비슷한 역할을 하기 때문에 channel attention을 사용하기 전에 channel axis에 따라 feature extraction을 한 번 더 수행하려는 목적이 아닌가 하는 생각이 듭니다. 정확한 의도는 잘 모르겠습니다.

 

 

 

 

 

 

 

  • 그림에서 볼 수 있는 것처럼 전체 아키텍처에서는 EAM을 4개만 사용합니다. 단순히 residual module을 반복하는 것만으로는 성능향상이 되지 않아 Long Skip Connection을 사용하게 됩니다.
    • feature extractor module의 feature를 가져와서 final EAM output feature와 연결
    • input image와 reconstruction module의 output feature를 연결
  • (input image + reconstruction module’s output feature)를 사용하는 이유는 denoised image를 학습하기 보다 residual(noise) 정보를 학습시키려는 의도이며 noise의 sparse representation으로 인해 original image를 학습시키는 것보다 더 빠른 학습이 가능하게 됩니다.
    • denoised feature에 noisy image를 더해줌으로써 noise의 sparse representation을 의도함

 

 

 

 

 

 

 

 

 

 

  • denoising method에서 channel feature는 equal 하게 처리되는 경우가 많은데 이는 적절하지 않다고 말합니다. 즉 이미지에 존재하는 핵심 content를 학습하기 위해 channel feature 사이의 relationship에 대한 attention을 부여합니다. channel attention은 다른 image recognition task에서도 많이 활용되는 기법입니다.
  • 일반적으로 이미지는 low-frequency region과 high-frequency region으로 구성되어 있는데 conv layer는 local information만 추출하므로 global contextual 정보를 추출하는 건 불리합니다. 따라서 global average pooling을 통해 이미지 전체에 대한 정보를 압축하고 복원하는 과정을 통해 channel dependency를 계산하여 input feature에 곱해줍니다.

 

 

 

 

 

 

 

Experiments

  • 정량적 지표를 몇 가지 살펴보겠습니다. 우선 논문에서 제안하는 LSC, SSC, LC, FA를 모두 사용했을 때 성능이 가장 높게 나왔습니다. (사실 사람이 구분하기엔 어려울정도의 미세한 차이가 아닐까 합니다..)

 

 

 

 

  • Noise level이 좀 더 증가하더라도 기존 모델대비 향상된 성능을 보여줍니다.

 

 

 

 

 

 

  • 도자기의 윗부분 패턴은 다른 모델들에 비해 denoising도 잘 되고 패턴 복원도 잘 되었지만 아래쪽에 있는 지그재그 패턴은 아예 사라져버리는 문제가 있습니다. sigma 값을 좀 줄여서 약한 noise를 주면 패턴이 뭉게지지 않을 수도 있을 거 같습니다.

 

 

 

 

 

 

 

 

  • real-world noisy image의 경우 다른 모델들이 over-smoothing 되거나 별 주위에 있는 noise를 잘 제거하지 못하지만 RIDNet은 detail한 정보, structure 정보는 살리면서도 noise를 잘 제거한다고 하는데 저는 눈으로는 봐서는 잘 모르겠습니다.

 

 

 

 

 

  • 이 이미지는 그나마 잘 보이는 거 같습니다. 강아지 얼굴쪽에 있는 noise들이 다른 모델들에 비해 훨씬 잘 제거가 되었고 글러브 표면에 있는 noise 역시 잘 제거가 되었습니다.

 

 

 

 

 

 

 

 

 

Conclusion

  • 본 논문에서는 synthetic noise, real-world noise를 제거하기 위한 새로운 CNN을 제안하였습니다. 논문에서 사용한 LSC, SSC, SC, CA 등의 테크닉을 통해 low-frequency 정보가 네트워크에 잘 전달될 수 있게 하였으며 EAM이라는 새로운 구조의 모듈을 제안한 것이 가장 핵심인 것 같습니다.

 

Comments