Hello Computer Vision

비전공생의 DCGAN(Deep Convolutional Generative Adversarial Networks, 2016) 논문 리뷰 본문

Generative

비전공생의 DCGAN(Deep Convolutional Generative Adversarial Networks, 2016) 논문 리뷰

지웅쓰 2022. 10. 28. 22:51

지난번 GAN에 이은 두번째 논문 리뷰이다. DCGAN을 코드로 구현해본 적 있는데 GAN이 MLP로 이미지를 생성했다면

DCGAN은 CNN을 이용해 이미지를 생성한 것이 가장 큰 특징이다.

GAN 논문을 읽을 때도 익숙한 내용이지만 수식을 이해하느라 어느 정도 시간이 걸려서 이번 DCGAN논문도

읽는데 이틀은 걸릴줄 알았는데 이 논문에서는 수식이 하나도 등장하지 않아서 편하게 읽었다.

수식보다는 GAN으로 할 수 있는 많은 것들을 소개해준 논문 같다. 첫번째 논문처럼 요약보다는

논문 목차를 따라가면서 최대한 논문에 나온 부분들을 다 소개하도록 노력하겠습니다.

논문 원본 : https://arxiv.org/abs/1511.06434

 

1. Introduction

처음에는 GAN에 대한 장점들(최대우도법 활용, feature extractor) 등을 소개함과 동시에 단점들(unstable, nonsensical)을

소개한다. 장단점을 소개 후 이 논문을 통해 밝힌 것들을 말하는데 

1. 학습의 안정화 2. 판별자를 활용한 이미지 분류 활용 3. GAN 필터 시각화 4. vector 산수화 가능.

이다.

 

2. Related Work

지금까지 이루어졌던 비지도학습에 대한 연구들과 단점을 보완하려 했던 많은 연구사례들을 나열함과 동시에 기존 연구들의 단점들과 한계점들을 나열한다. 대부분이 이미지들이 blurry, incomprehensible 했다고 한다.

 

3. Approach and model architecture.

DCGAN의 구조는 다음과 같다.

GAN에서는 MLP로 이미지를 생성했다면 DCGAN에서는 CNN을 활용해서 이미지를 생성한다.

물론 그 전에도 CNN으로 이미지를 만들었던 연구는 있었지만 stable 측면에서 많이 떨어졌다고 한다.

이러한 문제점들을 해결하기 위해 3가지 접근을 통해 불안정성 문제를 해결했다고 한다.

첫번째 :  분류기에서 max pooling 대신 strided convolution 사용, 생성기에서는 TransposeCNN 사용
(Max pooling 은 미분이 되지 않기 때문에 모든 부분은 CNN으로 대체했다.)

두번째 : GAN 구조에서 최상단에 있던 fully connected layer 삭제

세번째 : 배치정규화 사용

이 외에도 모델을 훈련시킬 때 사용한 파라미터들을 다음과 같이 말한다.

배치사이즈 128, SGD사용. 가중치 초기화($\mu : 0, \sigma: 0.002$), leakyReLU(0.2), Adam, 
momentum(0.9, 0.5)  파라미터들을 사용한다.

(여기서 훈련할 때 Adam , SGD둘 다 사용한다고 나와있는데 이건 무슨 의미인지 모르겠다..)

 

그리고 여러 데이터셋에 대해 훈련을 시킨 후 결과를 보여준다.

LSUN(bedroom dataset)

 

Faces(dbpedia 에서 얻은 얼굴 데이터)

 

결과들을 살펴보면 기존 GAN보다는 좀 더 그럴듯한 이미지를 생성함을 알 수 있다.

 

그리고 해당 필터 시각화를 통해 나름 특징들을 잡아낸 것을 확인할 수 있다.

 

다음 표는 CIFAR-10 데이터셋에 대한 classification 결과이다.

결과를 보면 feature units 이 512로 적음에 비해 충분한 성능이 나오는 것을 확인할 수 있다.

이 결과를 통해 비지도학습하는 도구로도 충분히 경쟁력이 있다고 말한다.

 

다음은 latent space(잠재공간)에 대한 이해이다.

데이터셋에 대한 학습을 통해 데이터셋의 manifold를 학습하는데 latent space를 이해해보기

위해 이를 시각화했다고 한다. 여기서 memorization 이라는 말이 나오는데 

이는 새로운 이미지를 생성하는 것이 아닌 학습한 데이터를 기억하는 것을 뜻한다. 따라서 이는 좋지 않다고 할 수

있는데 이에 대해서는 해결책을 제시하거나 그러지는 않는다. 또한 walking in the latent space라는 말들이 나오는데

이는 latent space공간에서 급작스러운 변화(sharp transtion)보다는 부드러운 변화를 보여줘야 한다고 말을 하는데

이에 대해서도 해결책을 제시한다고 있지는 않고 시각화 결과를 보면 결과는 부드러운 거 같다.

(사실 이 부분은 잘 이해하지 못했습니다.. DCGAN에서는 데이터를 나름 새롭게 만들었다 정도를 이야기 하는 거 같습니다.)

 

다음은 vector arithmetic에 대한 시각화 결과이다.

자연어 처리에서는 King 을 나타내는 벡터에서 Man을 나타내는 벡터를 빼준다면 이는 Queen을 나타내는 벡터가 

되는데 이를 비전분야에서도 똑같이 적용할 수 있다고말한다. upper row에 있는 사진들에서 window를 

제거한 것이 lower row인데 잘 보면 창문이 사라진 것을 확인할 수 있다.

조금 더 쉬운 결과를 찾아보면 이렇다고 할 수 있다.

각각의 벡터로 모델을 만들어서 합해주고 빼주는 방식으로 수행했다고 합니다.

이 결과는 그래도 그럴듯해 보이는데 이미지가 자연스럽게 변하는 것이 아닌 겹쳐놓은 듯한 결과들도 많이 발생했는데

여기서는 단순히 이미지 쪽에서도 vector arithmetic 이 가능하다는 것을 확인하면 될 거 같습니다.

 

정리

수식이 없어서 읽기는 쉽게 읽었는데 여러가지를 이야기했던 논문과는 달리 이를 포스팅으로 표현하려고 보니

굉장히 이해하기 어려운 부분들이 많은 거 같습니다. 이 논문에서는 수식보다는 모델의 훈련 결과, DCGAN이

할 수 있는 것들을 중점적으로 나타냈는데 오히려 이러한 부분들이 100%이해하기 어려웠습니다.

latent space 와 manifold 이러한 개념들은 조금 더 탐구해서 공부할 필요가 있을 거 같습니다.

이 논문을 통해서는 CNN을 통한 학습의 안정성, 이미지의 vector arithmetic 가능, 모델의 단순한 memorization x등

많은 인사이트를 주는 논문 같습니다.

 

틀린 점 있다면 언제든지 지적해주시면 감사하겠습니다.