이 프로젝트는 초상화, 동물, 그림 등과 같은 임의의 시드에서 고품질 이미지를 생성할 수 있는 심층 컨벌루션 생성 적대 네트워크입니다.
이 모델은 몬트리올 대학 의 Generative Adversarial Nets (2014) 논문에 설명된 것과 같은 GAN(Generative Adversarial Network)입니다.
생성기와 판별기는 모두 Facebook AI Research (2015)의 Deep Convolutional Generative Adversarial Networks를 사용한 Unsupervised Representation Learning 논문(2015)과 같은 심층 컨벌루션 신경망이지만 몇 가지 개선 사항이 있습니다.
Nvidia 의 향상된 품질, 안정성 및 변형을 위한 Progressive Growing of GANs 논문(2017)에서 Equalized Learning Rate Layers를 추가했습니다.
Adobe Research (2019)의 Making Convolutional Networks Shift-Invariant Again 논문에서 Bilinear Upsampling / Downsampling을 추가했습니다.
Tel-Aviv University 의 SWAGAN: A Style-based Wavelet-driven Generative Model (2021) 논문에서 Wavelet Transform을 구현했습니다.
저는 Nvidia 의 A Style-Based Generator Architecture for Generative Adversarial Networks (2018) 논문에서 상수 입력이 있는 스타일 기반 아키텍처 , 매핑 네트워크 에서 학습된 스타일 , 노이즈 주입을 사용했습니다.
TomTom 및 Adobe (2019)의 MSG-GAN: Multi-Scale Gradients for Generative Adversarial Networks 논문에서 연결 건너뛰기를 추가했습니다.
Microsoft Research 의 이미지 인식을 위한 Deep Residual Learning 논문(2015)에서 Residual Block을 추가했습니다.
OpenAI (2016)의 Improved Techniques for Training GANs 논문에서 Discriminator 끝에 Minibatch Standard Deviation을 추가했습니다.
저는 Montreal University (2014)의 Generative Adversarial Nets 논문에서 원본 Non-Saturating Loss를 유지했습니다.
Nvidia 의 StyleGAN 이미지 품질 분석 및 개선 (2019) 논문에서 생성기에 경로 길이 정규화를 추가했습니다.
Google Brain 의 Improved Training of Wasserstein GANs (2017) 논문에서 Discriminator에 Gradient Penalty Regularization을 추가했습니다.
Nvidia 의 제한된 데이터를 사용하여 생성적 적대 네트워크 훈련 (2020) 논문에서 ADA(Adaptive Discriminator Augmentation)를 추가했지만 증강 확률은 훈련되지 않았으며 수동으로 설정해야 합니다 (PyTorch 구현이 누락되어 일부 증강이 비활성화됨).
나는 pytorch-fid 모듈 을 사용하여 University Linz (2017)의 Two Time-Scale Update Rule Converge to a Local Nash Equilibrium에 의해 훈련된 GANs Traininged by a Two Time-Scale Update Rule Converge to a Local Nash Equilibrium (2017)에서 훈련 중에 Fréchet Inception Distance(FID ) 계산을 추가했습니다.
Nvidia 의 StyleGAN 이미지 품질 분석 및 개선 (2019) 논문과 같은 프로젝터를 추가했습니다.
사람 얼굴 256*256 (FID: 5.97)
동물 얼굴 256*256 (FID: 6.56)
애니메이션 얼굴 256*256(FID: 3.74)
페인팅 면 256*256(FID: 20.32)
여러 데이터세트에 대해 훈련된 가중치는 Google Drive 에서 사용할 수 있습니다. .pt
파일을 다운로드하여 models
폴더에 넣으면 됩니다.
다음 명령을 실행하여 종속성을 설치합니다.
$ pip install -r requirements.txt
(CUDA를 사용하려면 PyTorch에 대한 특정 명령을 사용해야 할 수도 있습니다)
먼저, 이미지 데이터 세트를 찾아 다운로드해야 합니다 (5,000개 미만은 너무 적고 150,000개 이상이 필요하지 않음) . Kaggle 과 제가 Google Drive 에서 사용한 데이터 세트를 많이 찾을 수 있습니다.
그런 다음 training/settings.py
파일에서 데이터 세트의 경로를 지정합니다.
저처럼 고가의 24GB GPU가 없으면 기본 설정이 작동하지 않을 수 있습니다. 다음을 시도할 수 있습니다.
training.ipynb
파일을 실행하십시오 . (체크포인트 덕분에 언제든지 훈련을 중지하고 나중에 다시 시작할 수 있습니다.)
testing.ipynb
파일을 실행하여 임의의 이미지를 생성하세요.
testing/interpolation.ipynb
파일을 실행하여 부드러운 보간 비디오 이미지를 생성하세요.
실제 이미지를 잠재 공간에 투영하려면 testing/projector.ipynb
파일을 실행하세요.
testing/style_mixing.ipynb
파일을 실행하여 스타일 믹싱 보간 비디오 이미지를 생성하세요.
testing/timelapse.ipynb
파일을 실행하여 교육 타임랩스 비디오의 이미지를 생성합니다.