반응형
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 공식
- 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를 학습.
- 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를 기록.
반응형
'DeepLearning > GAN' 카테고리의 다른 글
[GAN] DeblurGAN-v2: Deblurring (Orders-of-Magnitude) Faster and Better (0) | 2024.03.26 |
---|