- 목적
- 아이디어
Conditional GAN의 경우, 기존 GAN모델에서 카테고리 정보 y 를 추가하여 생성하는 이미지에 대한 부류 정보를 주었다. 이에 착안하여 사람 얼굴을 z벡터로 인코딩할 수 있는 인코더 E를 학습시킨 후, z와 y(연령 정보)를 Generator에 입력하면 해당하는 나이로 변환되는 네트워크를 구현한다
- 기본 구조
- 설명
우선, 기존 Conditional GAN (이하 Age-cGAN) 모델에 사람 이미지와 해당하는 나이대 y를 넣어주면서 학습시킨다.
이렇게 학습된 Age-cGAN은 z와 y를 통해 가짜 얼굴을 만들 수 있을 뿐, 기존 사람 얼굴을 잠재 벡터 z로 변환하지 못한다. 따라서 사람 얼굴을 z로 인코딩할 수 있는 인코더가 필요하게 된다.
E를 학습시키는 방법은 간단하다. 이전 단계에서 학습된 Age-cGAN에 10만개의 사람 얼굴을 만들도록 한다. (잠재 벡터 z는 N(0,1) 에서 샘플링하고, 목표 나이대 y는 균등분포에서 샘플링한다)
이렇게 생성된 10만개의 샘플을 인코더에 입력으로 주고, 해당 이미지에 해당하는 잠재 벡터 z와의 유클리디안 거리를 최소화하는 z'를 만들어내도록 학습한다.
이렇게 하면 z벡터로 만들어진 사람 이미지를 다시 벡터 z'로 인코딩하는 인코더가 완성된다.
(z' 과 z 사이의 유클리디안 거리를 최소화하도록 E를 학습시킨다)
이제 y0 연령대에 해당하는 사람 얼굴을 z0벡터로 인코딩하는 인코더가 완성되었다. Age-cGAN의 Generator에 z0와 y0를 넣어주어 복원된 얼굴을 보면, 무언가 부족하다. 따라서 개인의 identity 를 보존하도록 조금 수정해 줄 필요가 있다.
이 과정을 논문에서는 Identity Preserving Optimization 이라고 한다.
Identity Preserving Optimization 방법은 2가지로 제시하는데, 픽셀별 보정 방법인 Pixelwise 방법과 개인의 identity 보존을 최대화 할 수 있는 별도의 방법(IP라 칭함)을 제시한다.
Pixelwise 방법은 원본 이미지와의 픽셀별 유클리디안 거리를 최소화하도록 보정하므로, 머리 색깔이나 수염의 유무 등처럼 미세한 픽셀별 정확도에 있어서 강점을 보였고, IP(Identity Preserving) 방법은 전체적 특징을 파악하므로 얼굴 골격의 형태나 눈의 모양 등에 있어서 강점을 보였다. IP 최적화 방법은 아래의 최적화 방법을 따른다.
여기서 FR(x) 함수는 CNN기반 얼굴 인식 네트워크인 FaceNet을 사용했다고 한다.
FaceNet은 얼굴의 전체적 특징(identity)를 파악하므로, 당연히 이를 활용한 IP방법이 Pixelwise방법보다 훨씬 더 얼굴에 대한 정보를 잘 보존하게 된다.
아래의 표는 두 이미지 속의 사람이 같은 사람인지를 판별해 주는 SOTA 오픈소스 기술인 OpenFace 넷의 판별 결과이다.
최초로 인코딩된 z0벡터의 경우, 원본 이미지와 같은 사람으로 인식하는 확률이 53.2%,
Pixelwise 최적화를 거치고 난 뒤, 원본 이미지와 같은 사람으로 인식하는 확률이 59.8%
Identity-Preserving 최적화를 거치고 난 뒤 원본 이미지와 같은 사람으로 인식하는 확률이 82.9%
이제 IP 방법을 통해 z0벡터를 z*벡터로 최적화하였다. 이렇게 생성된 z*벡터를 원하는 나이대인 y와 함께 Age-cGAN의 Generator 에 넣어 주면 목표로 하는 노화 이미지가 생성된다. 아래의 (d)가 그 결과이다.