티스토리 뷰
※ Coursera의 Build Basic Generative Adversarial Networks (GANs) 강의를 듣고 작성한 글입니다.
Week4에서는 conditional GAN과 controllable GAN에 대해 학습합니다.
Conditional & Unconditional GAN
class가 있어서 class에 해당하는 이미지를 생성하는 것이 conditional GAN입니다. Unconditional이라면 어떤 class의 이미지가 생성될지 모르는 것이죠.
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 자체를 수정합니다.
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 강의가 끝났습니다. 공부하면서 정리하는거라 부족한 점이 많을 거라 피드백 부탁드려요~
'Deep Learning' 카테고리의 다른 글
Building Basic GAN, Week3 - Lecture (0) | 2024.03.24 |
---|---|
ReST (0) | 2024.02.16 |
Building Basic GAN, Week2 - Lecture (0) | 2024.02.03 |
Building Basic GAN, Week1 - Lecture (2) | 2024.01.28 |
Enhancing Multi-Camera People Tracking with Anchor-Guided Clustering and Spatio-Temporal Consistency ID Re-Assignment (1) | 2024.01.20 |
- DSP
- Deep learning
- ML Pipeline
- design pattern
- MLOps
- 운영체제
- 딥러닝
- mode collapse
- 3d object detection
- 신호처리
- Building Basic GAN
- TRACKING
- 디지털신호처리
- pcb
- Generative Model
- image
- Gan
- Raspberry Pi
- Depth estimation
- conditional GAN
- ML
- controllable GAN
- feature
- depthmap
- AI
- deeplearning
- Operating System
- machine learning
- OS
- depth
- Total
- Today
- Yesterday
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |