인공지능/공부

생성형 인공지능 입문 9주차 3차시 - 유명 인물 생성 실습

이게될까 2024. 5. 2. 15:43
728x90
728x90

1. 데이터셋: CelebA

CelebA (Celebrity Faces Attributes) 데이터셋은 대규모 얼굴 속성 데이터셋으로, 10,177명의 유명인의 얼굴 이미지 202,599개로 구성되어 있습니다. 이 이미지들은 다양한 포즈와 배경을 가지며, 40개의 얼굴 속성에 대한 레이블이 포함되어 있습니다. 이 데이터셋은 얼굴 인식, 얼굴 특징 검출, 랜드마크(또는 키포인트) 위치 인식 등의 연구에 널리 사용되며, GAN을 통한 얼굴 이미지 생성 연구에도 자주 활용됩니다.

2. DCGAN의 생성기와 판별기

DCGAN (Deep Convolutional Generative Adversarial Network) 은 컨볼루션 신경망을 사용하여 GAN의 안정성을 향상시킨 모델입니다. DCGAN에서는 다음과 같이 생성기와 판별기가 구성됩니다:

  • 생성기 (Generator): 랜덤 노이즈 벡터를 입력으로 받아, 이를 업샘플링하면서 점점 이미지 해상도를 높여가는 과정을 통해 최종적으로 가짜 이미지를 생성합니다. 주로 transpose convolution (역 컨볼루션 또는 프랙셔널 컨볼루션) 레이어를 사용하여 차원을 확장합니다.
  • 판별기 (Discriminator): 입력받은 이미지가 진짜인지 가짜인지를 판별합니다. 일반적인 컨볼루션 신경망 구조를 사용하여 이미지를 점점 작은 차원의 특성으로 압축하고, 마지막에는 하나의 스칼라 값 (진짜 혹은 가짜를 나타내는 확률)을 출력합니다.

3. Loss Function

DCGAN의 핵심적인 학습 메커니즘은 다음 두 가지 손실 함수를 최소화하는 것입니다:

  • Adversarial Loss: 이는 GAN의 기본이 되는 손실 함수로, 생성기가 생성한 이미지를 진짜로 분류하도록 판별기를 속이려 하고, 판별기는 진짜 이미지와 가짜 이미지를 정확히 구분하려고 합니다. 생성기의 손실은 판별기가 가짜 이미지를 진짜로 잘못 판별한 경우 감소하며, 판별기의 손실은 진짜 이미지를 진짜로, 가짜 이미지를 가짜로 정확히 판별할 때 감소합니다.
  • Binary Cross Entropy (BCE) Loss: 일반적으로 판별기에서는 진짜 이미지에 대해서는 1, 가짜 이미지에 대해서는 0의 값을 목표로 하는 BCE 손실 함수를 사용합니다. 생성기에서는 판별기가 생성한 가짜 이미지를 진짜로 판단하도록 만드는 것이 목표입니다.

4. 학습 손실

DCGAN을 학습시킬 때, 생성기와 판별기는 경쟁적으로 학습됩니다. 생성기의 목표는 판별기를 속여 가짜 이미지를 진짜로 인식하게 만드는 것이고, 판별기의 목표는 가짜와 진짜를 정확히 구분하는 것입니다. 학습 과정에서 이 두 네트워크의 손실은 서로 영향을 주며 변화합니다. 생성기의 학습이 좋아질수록 판별기의 작업은 더 어려워지고, 판별기가 너무 강력해지면 생성기가 진짜 같은 이미지를 만드는 데 어려움을 겪을 수 있습니다. 이 균형을 맞추는 것이 핵심입니다.

epoch이 진행될수록 얼굴이 선명해진다.

mode collapse - mode가 깨져서 원하는 방향으로 generation이 안되는 현상
DCGAN이 이 것을 해결했다.

G = latent vector (셀럽에 대한 feature를 가진다)

마지막에 1개인 이유 == real과 fake 분류

LeakyReLU가 성능이 더 좋았다.

학습이 완료되면 생성기만 사용하고, 판별기는 버린다.

728x90