머신러닝&딥러닝/생성모델(15)
-
cGAN (2014)의 간단한 오버뷰
cGAN (conditional generative adversarial nets)은 2014년에 나온 꽤 고전적인 생성모델 논문이다. NeurIPS에 출판된 GAN 논문과 달리, cGAN은 GAN에 conditioning을 추가한 정도의 architecture로 따로 출판된 적은 없으며 arxiv preprint로만 있다. https://arxiv.org/abs/1411.1784 물론 RoCGAN 등 cGAN의 후속 연구는 좋은 학술지나 컨퍼런스에 많이 실렸다. Conditional Generative Adversarial NetsGenerative Adversarial Nets [8] were recently introduced as a novel way to train generative model..
2025.01.22 -
OpenAI Guided-diffusion 코드분석 Part 1: Gaussian Diffusion 유틸
OpenAI에서 제공하는 Guided-diffusion repository(https://github.com/openai/guided-diffusion)는 Ho et al.의 DDPM 모델부터 DDIM 샘플링, 그리고 classifier guidance까지 줄 수 있는 다양한 디퓨전 유틸리티가 들어 있다. GitHub - openai/guided-diffusionContribute to openai/guided-diffusion development by creating an account on GitHub.github.com Classifier guidance는 지난 포스팅 (https://cascade.tistory.com/120)에서 설명했으니 본 포스팅에서는 OpenAI guided-diffusi..
2024.08.18 -
VAE latent는 어떻게 생겼을까? (feat. PCA)
AutoEncoder는 전통적인 Encoder-Decoder 구조이다. 이 중 Variational AutoEncoder(VAE)는 Encoder q로 latent 분포의 평균과 분산을 샘플링하고, 이를 결합하여 latent space를 만드는 reparametrization trick을 이용한다. 이러한 VAE는 latent vector가 주어지면 학습된 decoder로 새로운 이미지를 generation할 수 있다. 그렇다면, 잘 학습된 VAE의 latent space는 어떻게 생겼을까? 클래스가 구분된 input image를 latent로 보내면, latent 안에서도 클래스끼리 clustering이 되어 있을까? 본 포스팅에서는 https://github.com/Jackson-Kang/Pytor..
2024.08.14 -
Classifier Guidance 논문리뷰 (Diffusion Models Beat GANs on Image Synthesis, 2021)
본 논문은 OpenAI에서 발표한, unconditional image generation만 가능했던 디퓨전 계열 아키텍처에 최초로 컨디셔닝을 적용한 논문이다. 이를 Classifier Guidance라고 한다. IntroductionDDPM이 등장하였지만, 아직까지 이미지 생성의 많은 task의 SOTA는 GAN이 가지고 있었다. 하지만 Diffusion이 GAN에 비해 좋은 성능을 보이는 부분들도 있었다. GAN은 디퓨전에 비해 diversity가 적은데, IS, FID, Prec 등은 이를 반영하지 않는다. 또한, GAN은 하이퍼파라미터를 제대로 설정하지 않으면 쉽게 collapse한다. 저자들은 GAN과 디퓨전의 이러한 성능차이는 두 가지에서 온다고 가설을 세웠다.GAN은 divesity - fi..
2024.08.14 -
DDIM 논문 리뷰 - 샘플링 가속과 consistency
본 포스팅에서는 DDPM의 일반화 버전인 DDIM을 리뷰하려고 한다. DDPM과 무엇이 어떻게 다른 걸까? IntroductionGenerative model의 역사GAN은 VAE(2013), autoregressive model(2016), normalizing flow(2015) 보다 나은 sampling quality를 가지지만, training stability가 낮고 데이터 분포의 mode를 제대로 커버하지 못할 수 있다. 최근 생성모델은 score based network(NCSN)이나 iterative model(DDPM)과 같은 모델이 좋은 성능을 보이고 있으나, DDPM의 치명적인 단점은 샘플링 속도가 매우 느리다는 것이다. DDIM(Denoising Diffusion Implicit M..
2024.08.14 -
DDPM pytorch 코드분석
본 포스팅에서는 간단한 코드로 구현한 디퓨전 모델(DDPM)의 pytorch 구현 코드를 분석하려고 한다. 코드는 https://colab.research.google.com/drive/1sjy9odlSSy0RBVgMTgP7s99NXsqglsUL?usp=sharing#scrollTo=LQnlc27k7Aiw 를 참고하였다. 작성자는 DeepFindr이다. DDPM 논문에 대해 어느 정도 이해하고 있다는 전제 하에 작성하였기 때문에, 논문 내용을 모르는 사람은 먼저 읽고 오길 바란다. https://arxiv.org/abs/2006.11239 논문에는 diffusion loss에 대한 증명과 왜 사용할 수 있는지에 대한 내용이 주로 담겨있기 때문에 어디부터 코드로 구현해야 할지 감이 잘 잡히지 않을 수도 있..
2024.08.13