[파이토치 딥러닝] GAN으로 사람 얼굴 만들기
GAN으로 사람 얼굴 만들기
데이터 살펴보기
- Celeba 데이터셋을 사용하여 사람 얼굴을 생성하는 GAN 모델을 학습한다.
- 데이터셋은 데이터 폴더에 압축을 해제하여 사용한다.
데이터 전처리
- 이미지 전처리를 위해 torchvision.transforms 모듈을 사용한다.
- Resize, CenterCrop, ToTensor, Normalize 등의 전처리 방법을 적용한다.
- ImageFolder를 사용하여 데이터셋 객체를 만든다.
GAN 생성자 정의하기
- 생성자는 업샘플링 층과 배치 정규화층을 쌓아서 만든다.
- 생성자는 특징 공간의 벡터를 입력으로 받아 이미지를 생성한다. 이때 마지막 층은 각 픽셀의 값을 결정하는 층으로 배치 정규화층을 사용하지 않는다.
GAN 감별자 정의하기
- 감별자는 합성곱 신경망을 사용한다.
- 입력 이미지가 실제인지 가짜인지를 판별하는 이진분류 작업을 수행한다.
- 합성곱 층과 배치 정규화층을 쌓아서 감별자를 구성한다.
GAN 학습하기
- 생성자와 감별자를 번갈아가면서 학습시킨다.
- 생성자는 가짜 이미지를 생성하여 감별자를 속이도록 학습한다.
- 감별자는 실제 이미지와 생성자가 만든 가짜 이미지를 올바르게 판별할 수 있도록 학습한다.
- 손실 함수와 옵티마이저를 정의하고 학습을 진행한다.
생성된 이미지 확인하기
- 학습이 완료된 생성자를 사용하여 가짜 이미지를 생성한다.
- 생성된 가짜 이미지를 시각화하여 확인한다.
결론
- GAN을 사용하여 사람 얼굴을 생성하는 모델을 학습하였다.
- 생성된 가짜 이미지는 진짜와 구별하기 어려울 정도로 실제와 유사한 품질을 가지고 있다.