티스토리 뷰

Deep Learning

Building Basic GAN, Week4 - Lecture

seoyoung02 2024. 3. 28. 06:40

※ Coursera의 Build Basic Generative Adversarial Networks (GANs) 강의를 듣고 작성한 글입니다.

 

Week4에서는 conditional GAN과 controllable GAN에 대해 학습합니다.

 

Conditional & Unconditional GAN

class가 있어서 class에 해당하는 이미지를 생성하는 것이 conditional GAN입니다. Unconditional이라면 어떤 class의 이미지가 생성될지 모르는 것이죠. 

Conditional GAN input

 

Conditinoal gan은 one-hot vector를 사용하여 class에 대한 정보를 넣어줍니다. generator에는 1차원의 noise vector가 들어가므로 one-hot vector를 noise vector 뒤에 concat하여 input으로 사용합니다. Discrimintor에서도 마찬가지로 class를 반영하여 input을 넣어줍니다. Generator와는 다르게 input이 이미지로 (3xHxW)의 형태입니다. 따라서 one-hot vector도 이에 맞추어 (class 수 x H x W)의 형태로 변하고, 해당하는 class의 (H x W) matrix의 값이 1이 됩니다. 이렇게 discriminator에 class도 같이 넣어주게 되면 학습할 때 class가 맞지 않는 이미지가 생성되었을 떄 fake라고 판단하여 class에 맞는 이미지를 생성하도록 학습합니다.

Controllable Generation

Controllable Generation이란 noise vector에서 원하는 특성을 가지는 부분을 찾아 해당 부분을 조정하여 생성하는 것 입니다. 예를 들어 머리 색의 특성에 영향을 주는 부분의 값을 수정하여 같은 이미지이지만 머리 색만 파란색이 되도록 하는 것이죠.

controllable과 conditional GAN은 비슷해보이지만 차이가 있습니다. 일단 목표하는 바 자체가 다릅니다. Controllable은 이미지에서 원하는 특성을 조정하고자 하는 것이고, conditional은 원하는 클래스의 이미지를 만들고자 하는 것이죠. 그래서 controllable에는 라벨이 필요 없지만 conditional에는 클래스를 나타내는 라벨이 필요합니다. Conditional에는 해당 라벨을 one-hot 벡터로 만들어 z vector에 붙여서 사용하고, controllable은 z vector 자체를 수정합니다.

vector algebra in z space

 

GAN에서 이미지를 생성하기 위해 넣는 noise vector $z$는 z-space에 존재하고, 두 z 벡터를 interpolation하여 GAN에서 이미지를 생성하면 두 이미지의 특징을 interpolation 비율에 따라 모두 가지는 이미지를 생성합니다. 

이러한 특성을 이용해 완전히 같지만 머리 색만 다른 이미지들에서 두 이미지의 z vector의 차이는 머리 색의 차이를 의마하게 됩니다. 따라서 또 다른 이미지의 z vector에서 앞서 얻었던 머리 색 차이 z vector를 빼서 생성하면 동일한 이미지의 머리 색만 다른 이미지가 생성되는 것입니다.

 

하지만 모든 경우에 이러한 연산이 가능하지는 않습니다. z vector에는 이미지의 다양한 특성들이 얽혀있기 때문입니다. 이를 Z space entanglement라고 합니다. 이렇게 vector 값에 여러 특성들이 연결되어 있는 경우 연산을 하더라고 원하는 특정 특성만 변하는 것이 아니라 연관되어 있는(correlated) 특성들도 변하게 됩니다. 여성 얼굴 이미지에 수염을 넣기 위해 z vector를 수정하면 남성적인 이미지로 변하는 것 처럼요.

어떻게 z vector를 조절해야 원하는 특성을 변화시킬 수 있는 지 찾는 방법으로 Classifier Gradients가 있습니다. 이 방법은 generator를 freeze하고, pre-trained된 모델이 생성된 이미지가 원하는 특성을 가지고 있는지 판단해 z vector를 업데이트 합니다. 

 

disentangle하는 방법은 z vector뒤에 classification을 위한 one-hot vectordmf 붙이는 것입니다. 이건 라벨링이 필요하다는 단점이 있어 loss 계산하는 방법도 사용된다고 합니다.

 

 

 

 

이렇게 4주차로 Building Basic GAN 강의가 끝났습니다. 공부하면서 정리하는거라 부족한 점이 많을 거라 피드백 부탁드려요~

댓글
최근에 올라온 글
Total
Today
Yesterday
최근에 달린 댓글
링크
공지사항
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함