본문 바로가기
AC-GAN/본 논문

AC-GAN

by kkkkk1023 2024. 11. 22.

Introduction & Background

이전에 설명한 CGAN에서 C를 충분하게 활용하지 못한다는 문제가 있었다. 즉, 조건부 생성이 제대로된 건지 알 수 없다. 

따라서, ACGAN에서는 이러한 문제를 해결하고자 Auxiliary Classifier를 이용해서 C에 해당하는 이미지가 제대로 생성된건지 확인하는 과정을 추가하였다.  

 

1. 구조적 요소 추가: Auxiliary Classifier

: 기존 GAN의 구조에 Auxiliary Classifier를 추가해서 특정 클래스에 맞는 이미지를 생성할 수 있도록 한다.

 

2. 특화된 손실 함수 사용: Ls & Lc

: 기존 GAN과 다른 Loss Function을 이용해서 더 정확하고 품질 높은 이미지를 생성한다.

 

3. 변동성 평가지표 도입: Inception Score와 MS-SSIM

: ACGAN에서 생성된 이미지들 잘 분류되고, 다양성을 가지는지에 대한 새로운 지표를 도입해서 성능 향상에 기여한다. 

 


AC-GANs

 

  1. 초기에는 노이즈 벡터와 조건 C를 함께 입력 받아 조건에 맞지만 진짜같지 않은 이미지를 생성한다.
  2. 판별 모델은 이미지가 진짜인지 아닌지와 동시에, 클래스 정보에 맞는 이미지인지도 확인을 하여 생성 모델에게 피드백을 제공한다.
  3. 학습된 생성 모델은 노이즈 벡터의 특징을 기반으로 이미지 셋에 있는 특정 클래스의 이미지들과 같이 실제와 유사한 이미지를 생성한다.

 

Auxiliary Classifier의 역할

1. 클래스에 맞는 이미지 생성

 

 

2. 분류 정확도 향상 

 

 

3. 훈련 안정성 향상

 

 

 

: 우선 Discriminator는 Neural Network이므로, 입력값의 특징을 학습해서 real과 fake만 분류하는(이진 분류하는)한다.

Discriminator가 클래스의 정보도 분류를 해야하기 때문에 기존에 이진 분류를 하던 것 보다 입력 값의 더 많은 특징을 학습해야한다. 그렇게 되면 Discriminator가 분류하는 퀄리티가 올라갈 것이고, 또 이를 속이기 위해서는 더 퀄리티가 좋은 Generator가 만들어질 것이다. 이러한 이유로 클래스에 맞는 품질이 높은 이미지가 생성이 될 것이고 Discriminator의 정확도가 올라갈 것이다.

 

또한, GAN에서 모드 붕괴가 일어나는 이유가 진짜인지 가짜인지만 속이면 되니깐 Generator에서는 Discriminator가 진짜라고 생각하는 이미지의 특징을 담은 하나의 종류의 이미지만 생성해서이다. 하지만 ACGAN에서의 Generator는 클래스 정보까지 확인을 하기 때문에, 해당 클래스에 맞는 각각의 이미지를 생성해야하기 때문에 하나의 이미지만 생성하는 문제인 모드 붕괴가 일어날 확률이 줄어든다. 즉 훈련 안정성이 향상된다.

 

 

 


 

 

GAN의 Loss 함수

 

 

D는 Lc + Ls를 최대화하려고 노력한다. -> 이 돈의 출처가 어디인지? + 이 돈이 10000원짜리가 맞는지에 대한 판단을 최대화하는 것

G는 Lc - Ls를 최대화하려고 노력한다. -> 이 돈의 출저는 모르도록 + 이 돈이 10000원짜리가 맞는지에 대한 판단을 최대화하는 것

 


Results

1. Inception Score와 MS-SSIM을 통한 이미지 품질 평가

 

  • Inception Score
    • 생성된 모든 이미지의 전체 클래스 분포 -> 생성된 이미지의 다양성
  • MS-SSIM
    • 생성된 이미지의 구조가 원본 이미지의 구조와의 유사도 정도
    • 구조적 유사성이란 밝기, 대비, 구조가 유사한지 살펴보는 것이다. 

따라서, Inception Score를 통해서 전체 데이터의 분포와 이미지의 다양성을 측정하고, MS-SSIM을 이용해서 각 이미지의 품질을 측정한다. 


 

2. 고해상도 이미지 출력의 중요성

저해상도 이미지를 단순히 크기를 늘리는 것만으로는 구별 가능성을 높일 수 없으며, 고해상도 이미지를 생성해야 구별 가능성이 향상된다. AC-GAN 모델은 고해상도 이미지를 생성하는 데 성공적으로 구별 가능성을 높이는 성능을 보여주고 있다. 즉, 128 × 128 해상도의 이미지를 생성할 때 더 높은 정확도를 달성하여, 클래스 간의 구별이 더 잘 이루게 만들었다. 

 

따라서 ACGAN은 고해상도 출력을 통해서 분류를 잘 하도록 만들었다. 

 

 

 

 

 

 


 

3. 실제 이미지 유사성과 다양성의 상관관계 분석: MS-SSIM과 Inception Score 결과 비교

 

MS-SSIM의 점수에 따른 유사성을 시각화한 것

 

  • 상단(Row 1) 이미지는 AC-GAN으로 생성(synthesized) 된 이미지들이고,
  • 하단(Row 2) 이미지는 실제 훈련 데이터(real) 이미지들이며,
  • 이를 비교해보면, 예컨대 artichoke 클래스의 생성 이미지는 높은 MS-SSIM 점수(=이미지들끼리 서로 비슷)가 나타나, 다양성이 낮다는 점을 알 수 있다는 내용입니다

 

 


 

 

4. 이전 모델들에 비해서 더 나은 ACGAN

 

  • 검은선들: 학습이 성공적으로 진행되어 클래스 내부 이미지들이 다양해진 클래스들
  • 빨간선: 학습이 했음에도, 클래스 내부 이미지들이 다양하지 않은 클래스

 

ACGAN은 기본적으로 이전 모델들보다 개선 되어 대부분의 클래스에서는 다양한 이미지를 생성하고 있지만, 특정 클래스(빨간선)에서는 모드 붕괴가 일어난다는 것을 알려준다.

 

즉, ACGAN에서도 모드붕괴를 완벽하게 해결하지는 못했다.


5. 과적합되지 않은 AC-GAN

  • 최근접 이웃 분석
    • 생성된 이미지와 훈련 데이터 간의 L1거리를 측정해서 최근접 이웃 찾는다. 즉, 생성 이미지와 유사한 이미지를 찾는다.
    • 최근접 이웃이 생성된 이미지와 적합하지 않다는 것을 관찰하게되어 AC-GAN은 과적합되지 않았음을 의미한다.
     

  • 잠재 공간 보간
    • 잠재 벡터 사이를 선형으로 연결해서 중간 지점을 계산하여 점점 다른 이미지로 변환되도록 하는 것이다.
    • 과적합된 모델은 각 잠재 벡터들이 같은 이미지만 생성한다. 따라서, 잠재 공간 보간을 해도, 같은 이미지만 생성된다. 하지만 ACGAN에서는 잠재 공간 보간을 통해서 다양한 이미지가 생성되기 때문에, 과적합되지 않았다.


 

6. 클래스 분할과 이미지 생성

 

클래스가 많아질수록, 모델이 생성하는 이미지의 품질이 떨어진다. 따라서 AC-GAN에서는 10개의 클래스를 한 그룹으로 만들어서 훈련을 진행했다.