발표영상
https://www.youtube.com/watch?v=YIRpPG7TJ9c
SinGAN의 Point
- 일반적인 GAN 네트워크의 경우 여러장의 이미지를 통해 학습하는 반면 SinGAN은 단 하나의 자연 이미지만으로도 GAN을 충분히 학습시키고 이미지를 생성해낼 수 있다.
- SinGAN은 동일한 방식으로 네트워크를 학습함에도 여러개의 application에 활용할 수 있다. 즉, 하나의 이미지로 학습된 SinGAN은 Image Editing, Image Animation, Super-Resolution, Paint-to-image, Harmonization 등 다양한 application에 성공적으로 활용된다.
- 즉, 한장의 이미지로 SinGAN네트워크를 학습한 후 SinGAN 네트워크를 사용하는 것만으로도 사용자가 특정한 입력에 대한 적절한 아웃풋을 만드는 다양한 application에 적용할 수 있다.

SinGAN의 등장 배경 ( Super-Resolution의 관점)
- PGGAN(ProGAN이라고도 한다)의 아이디어는 점진적인 학습으로, 처음부터 복잡한 네트워크를 학습하는 것이 아닌 쉬운 부분부터 잘 학습해보자는 것으로 학습이 진행되는 과정에서 점진적으로 고해상도의 이미지를 만들 수 있도록 한다. PGGAN은 점점 모델에 레이어를 붙여서 추가적으로 learnable parameter를 학습해나가는 것으로 모델의 capacity를 늘려가는 것이 특징이다.
- 이렇게 Super-Resolution이란 일반적으로 딥러닝에서 해상도를 높이는 방법이다. 한 때 트렌드는 SISR이라고 해서 Single Image Super-Resolution으로 한 장의 저해상도 이미지의 해상도를 키우는 기술에 대한 연구 분야였다.
- 이 때 Neural Network를 학습하는 방법에 따라서 구분이 되는데 일반적으로는 외부의 다양한 이미지를 사용하여 학습시키는 방식이 Externally trained Network였는데, 학습이 완료되면 테스트 시기에 특정 저해상도 이미지로부터 고해상도 이미지를 얻을 수 있게 된다. 이게 가능한 이유는 다수의 이미지 데이터에 존재하는 다양한 feature 특징값을 네트워크가 학습하고, 이렇게 학습한 정보를 반영할 수 있기 때문이다.
- 반면에 이렇게 외부 데이터셋 없이 Super-Resolution을 하는 방법도 있다. 대표적으로 자기 반복성이 존재하는 경우로 주로 자연 이미지에서 두드러지는데, 건축물에 유사한 난간이 여러개 있는 이미지를 참고할 수 있다. 근처의 유사한 patch를 참고해서 복원해낼 수 있는 것이다. 이렇게 하나의 이미지 내부에서 여러개의 유사한 patch가 반복되는 것을 internal data repetition 즉, 내제된 데이터 반복이라고 하고, 이러한 속성이 존재할 경우 반복되는 patch들 중에서 크기가 작은 patch의 해상도를 높이고자 할 때 유사하게 생긴 크기가 큰 patch를 참고한다면 보다 효과적으로 해상도 복원이 가능할 것이라는 아이디어다.
- 사실 이렇게 자기 반복성이 존재하는 경우에는 아무리 외부 데이터가 많더라도 해상도가 크게 개선되지 않을 수 있다. 오히려 이렇게 자기자신으로부터 정답을 찾을 수 있다. 이러한 자기 반복성 속성은 CVPR 2018에 발표된 Zero Shot Super-Resolution의 아이디어가 되기도 했고, 이러한 시점부터 한장의 이미지로부터 학습을 하는 방법이 많은 주목을 받게 된다. 물론 한장의 이미지만 학습데이터로 사용되기 때문에 그 한장의 이미지에 대해서만 오버피팅되는 등의 한계가 존재한다는 것과, semantic한 정보가 정해진 이미지들(얼굴은 눈2개 입1개 코1개)과 같은 경우 어려운 접근 방식에 한계가 존재한다는 점이 단점으로 부각된다.
ProGAN과 SinGAN의 비교
- ProGAN은 하나의 GAN네트워크에 점진적으로 layer를 추가해가면서 학습한다. 반면 SinGAN은 점진적으로 학습을 진행하는 것은 마찬가지이나, GAN네트워크 자체를 여러개 사용한다. 즉, 스케일마다 GAN 네트워크를 따로 둔다. (다만, 이러한 구조로 인해 각각의 GAN 네트워크는 상대적으로 capacity가 작은 가벼운 네트워크를 사용한다.)
- 둘은 전반적으로 유사하다. 초기에는 Coarse한 이미지를 생성하도록 하고, 후반부에는 완전히 Finest한 이미지를 생성하도록 한다.
SinGAN의 네트워크 구성
- Generator에서는 먼저 Coarse한 정보를 가진 이미지를 생성하고, 이 이미지를 다음 스케일의 생성자에 입력으로 넣어 coarse한 정보에 fine한 정보를 추가해주는 형태로 학습이 진행된다. 즉 피라미드의 위쪽의 G로 올라갈수록 보다 세밀한 정보를 추가하게 된다.