반응형

 

Abstract

  • Motion Deblurring을 위한 end-to-end 학습 방법인 DeblurGAN을 제시.
  • conditinal GAN과 content loss를 기반으로 학습.
  • Deblurring model의 품질은 Object Detection 방식으로 평가.
  • DeepDeblur보다 5배 빠르다고 소개.

 

 

1. Introduction

  • 최근 GAN을 이용해서 image super-resolution 및 inpainting 관련 분야에서 상당한 진전이 있음.
  • 이에 영감을 받아 Deblurring을 image-to-image 변환의 특별한 case로 취급.
  • Gradient Penalty와 Perceptual Loss를 가진 Wasserstein GAN을 사용하는데 이는 기존 MSE or MAE를 사용하는 경우보다 더 미세한 texture 세부 정보를 복원할 수 있다고 한다.

 

 

2. Related work

2.1 Image Deblurring

  • non-uniform blur model의 일반적인 공식.
    • I_B : 흐릿한 이미지
    • k(M) : motion field M에 의해 결정된 blur kernel k
    • I_S : 선명한 이미지
    • N : 노이즈

 

  • 일반적으로 deblurring 문제는 I_S(선명한 이미지)와 k(blur kernel)이 알려져 있지 않은 blind deblurring이다.
  • 먼저 blur kernel을 추정한 다음 deconvolution 작업을 반복 수행하여 선명한 이미지를 획득한다.

 

  • 딥러닝의 성공 이후 CNN을 기반으로 blur kernel을 추정하는 방식도 등장.
  • 또 다중 scale CNN을 사용하여 이미지를 kernel 없이 직접 deblurring 하는 end-to-end 방식 등장.

 

2.2. Generative adversarial networks

  • GAN은 생성자(generator)와 판별자(discriminator)라는 두 경쟁 network 간의 게임을 정의하는 것.
  • 생성자는 흐린 이미지를 입력으로 받아 깨끗한 이미지를 생성.
  • 판별자는 실제 샘플과 생성된 이미지를 구별하도록 학습.

 

GAN value function

 

GAN 공식 

  • P_r : 실제 데이터에 대한 확률 분포
  • P_g : 생성자(generator)에 의해 만들어진 데이터에 대한 분포
  • D(x) : 판별자가 판별하는 확률 (0~1)

 

위 공식은 G(생성자) 관점에서는 min으로 만드려고 학습하고, D(판별자) 관점에서 max로 만드려고 학습하는 함수이다.

  • 먼저 D가 식을 최대화하는 관점에서 log(D(x))와 log(1-D(~x))가 최대가 되어야 한다.
  • 따라서 D(x)는 1이 되어야 하는데 이는 log(D(x))에서 실제 데이터를 실제라고 판별.
  • log(1-D(~x))에서 1-D(~x)가 최대가 되기 위해 D(~x)가 0이 되어야 하는데 이는 만들어진 데이터(~x)를 가짜라고 판별.

 

  • G가 식을 최소화 하는 관점에서는 log(1-D(~x))가 최소가 되어야 한다. (~x = G(z))
  • 따라서 1-D(~x)가 0이 되어야 하며 이는 D(~x)가 1이 되어야 한다.
  • 즉 D(G(z))에서 생성자 G가 판별자 D를 속여 진짜로 분류하도록 생성자 G를 학습.

 

WGAN value function

 

  • vanilla version의 GAN은 mode collapse, venishing gradient 등과 같은 문제로 학습에 어려움이 있다.
  • 또한 GAN 함수를 최소화하는 것은 x에 대한 실제 데이터와 모델 분포 사이의 Jensen-Shannon divergence를 최소화하는 것과 같다.
  • 이때 JS 발산으로 인한 GAN 훈련의 어려움에 의해서 WGAN을 사용한다고 한다.

 

 

3. The proposed method

  • DeblurGAN는 blur 이미지만 입력으로 주어 선명한 이미지를 복구하는 것. (blur kernel에 대한 정보는 x)
  • Getnerator는 CNN으로 구성되어 Deblurring을 수행.
  • 학습 단계에서는 Critic(판별) network를 두고 두 network를 적대적인 방식으로 훈련한다.

 

3.1 Loss Function

 

Adverarial loss

  • WGAN-GP를 Ciritic function으로 사용.
  • Generator의 architecture 선택에 더 robust 하게 해준다고 한다.
  • Generator를 통해 나온 이미지를 Discriminator가 실제로 판단할 수 있도록 Generator를 훈련시키는 loss function.

 

Content loss

  • Content loss를 계산할 때 일반적으로 MAE, MES loss를 선택하는데 이는 픽셀 공산에서 평균을 계산하기 때문에 흐릿한 아티팩트가 발생한다.
  • 대신해서 위 Perceptual loss(지각 손실)을 제안한다. 
  • ϕ는 VGG19 network 내의 convolution에 의해 얻은 feature map.
  • W, H는 feature map의 width, height.
  • 즉, Generator에서 생성된 이미지와 실제 이미지를 VGG network를 통과시켜 각 feature map을 얻고, 각 feature map의 L2-loss를 줄이는 loss function.

 

 

  • Content loss와 Adversarial loss의 조합으로 최종 손실 함수를 계산한다.
  • Content loss는 일반적인 content를 복원하는데 중점을 두고, Adversarial loss는 texture 세부 사항을 복원하는데 중점을 둔다.

 

3.2 Network architecture

 

Genrator CNN architecture는 위 그림과 같다.

  • stride가 1/2인 2개의 stride convolution block, 9개의 residual block, 2개의 transpose convolution block을 포함.
  • 또한 blur image에 대한 residual을 학습하는데 이는 학습을 더 빠르게 만들고 일반화가 잘된다고 한다.
  • 모든 convolution layer 뒤에는 InstanceNorm layer 및 LeakyReLU를 사용.

 

Conclusion

  • kernel 없는 blind motion deblurring 방식을 제안.
  • 다중 구성 요소 손실 함수를 사용하여 최적화된 조건부 적대 네트워크인 DeblurGAN을 소개.
  • DeblurGAN으로 deblurring 한 이미지는 YOLO로 객체 감지를 했을 때, 높은 recall과 F1 Score를 기록.

 

 

 

 

 

반응형
woongs_93