rueki

SinGAN: Learning a Generative Model from a Single Natural Image 리뷰 본문

paper review

SinGAN: Learning a Generative Model from a Single Natural Image 리뷰

륵기 2021. 7. 24. 00:16
728x90
반응형

ICCV 2019에 나온 SinGAN에 대해 오늘 리뷰해보고자 한다.

기본적인 컨셉은 하나의 이미지로 훈련을 해서 생성을 하겠다라는 것이다. Unconditional GAN의 개념을 따르며, 네트워크 구조도 pyramid of fully convolutional Gan이라는 점이다.

 

1. introduction

single natural image로 unconditional generation을 하는데 기존의 GAN은 많은 데이터가 학습에 필요했으며, 이 분포를 통해서 이미지를 생성해내곤 했다. 그러나 여기서는 하나의 이미지로 이미지 생성을 이루어내는데 이게 가능한 것은 네트워크 구조가 큰 특징인 것 같다. CNN기반의 피라미드 구조, 그리고 보통은 Generator 및 Discriminator 모델 크기가 꽤 큰데 여기서는 Simple한 구조의 Generator를 사용하며 매 스케일마다 정의를 하게 된다.

 

Figure 2를 보면, 하나의 이미지를 통해 학습한 모델에 비슷한 특성의 이미지 혹은 엉뚱한 이미지를 집어넣은 이미지로 inference를 하여도 훈련시켰던 이미지의 feature와 유사한 texture를 가지며 출력값을 뱉어내게 된다.

결과적으로 학습을 통해서, 내부 Patch의 Statistic한 정보를 가지고 훈련하는데, 이를 유지하며 고 퀄리티의 이미지를 생성할 수 있다고 한다.

 

 

2. Related Work

기존에 Single image를 통한 훈련은 그 하나의 입력 이미지에 overfit 되기가 매우 쉽다. 그래서 internal Gan based model이 이를 커버했지만, Conditional GAN 기반이고 무작위 샘플을 그리는데 사용하지 않는다고 한다.

의미있는 샘플을 생성하지 않지만 SinGAN은 texture에 제한 없으며 natural image를 다룰 수 있다.

즉, realistic한 이미지 샘플을 생성할 수 있는데, 이는 complex한 texture와 non-reptitive global structure로 구성되어 있다. 그리고 image manipulation task에서 single image에 대한 multiple scale의 모든 겹치는 패치를 서로 다른 source로 여긴다고한다.

 

3. Method

본문에서의 주요 관점은 unconditional generative model인데, Figure 4를 보면 앞서 언급한 pyramid의 의미가 대략 뭔지 알 것이다. GN 부터가 작은 스케일의 generator인데 첫 input으로는 GAN의 기본적 컨셉에 맞게 Noise가 들어가게 된다. 그래서 노이즈를 통해서 ˜x를 생성하는데 여기서 특징이 이 생성한 값을 다음 scale의 Generator에 노이즈와 함께 입력으로 들어가게 된다는 것이다. 이를 통해서 위의 스케일로 갈 수록 세밀한 정보가 추가가 된다는 점이 장점이다.

 

요약을 하면, 작은 스케일에 대해서 생성을 할 경우, 대략적인 정보만을 가진 이미지를 output으로 가질 것이다. 이 정보를 가진 이미지를 다음 scale에서 입력으로 추가로 줄 경우, 해당 스케일에 대한 이미지를 생성할 때 정보가 추가가 되기 때문에 더 detail하게 나오게 된다는 것이다.

 

Discriminator에서는 결국 생성이미지와 real image와 판별을 해야하는데 여기서는 조금 다른 컨셉으로 이미지의 패치를 비교한다. 즉 생성이미지의 patch와 real image의 patch를 비교하는데, high level에 갈 수록 더 디테일한 patch를 다루게 된다.

coarest scale에서 시작해서 finest scale까지 가면서 하나의 이미지에 대해 생성을 디테일하게 할 수 있다는 점이 SinGAN의 특징으로 보면 될 것 같다.

 

Figure 5를 위의 설명과 같이 보면 쉽게 이해가 될 것이다. 여기서 Generator가 simple한 구조를 가지는데 5개의 Conv block을 가지는데 한 블럭당 보통 conv - Batch Norm - Leaky Relu를 구성하고 있으며 기본적으로 residual concept을 가지고 있다.

 

4. Training

여기서는 2가지 loss, Adversarial loss와 reconstruction loss로 구성이 되어있다.

Adversarial loss는 기본적인 Gan loss에 대한 concept과 동일하며, 패치 단위의 이미지 분포에 대해 비교를 하며 loss를 계산하게 된다. 그리고 여기서도 WGAN-GP loss를 사용한다. WGAN-GP 에 대해서는 추후에 다루어보고자 한다.

 

위의 loss는  Reconstruction loss를 나타내는데, 노이즈가 0이면 동일 이미지를 생성하게 되는데, 여기서의 역할은 실제이미지와 같게 정확하게 학습하게끔 하는 역할이다. 이전 스케일에서의 이미지와 노이즈를 통해 생성한 것과 해당 스케일의 실제 이미지와의 비교를 통한 loss로 볼 수 있으며, RMSE(root mean squared error)를 이용한다.

728x90
반응형
Comments