POSTECHIAN 기사 보기

[2020 겨울호] 1-가상 얼굴을 만들어내는 기술, Face Synthesis

  • 원지윤
  • 2021-01-22 16:00:28

2020 WINTER 기획특집 1

가상 얼굴을 만들어내는 기술, Face Synthesis

Virtual Human


삼성은 2020년 1월에 열린 CES 2020에서 ‘인공 인간 Artificial Human’ 프로젝트, ‘네온 NEON’을 발표했습니다.
네온에서 공개된 가상 인간들은 실제 인간과 매우 흡사한 모습을 보였죠.
그리고 지난 12월, Mnet에서 방송된 AI 음악 프로젝트 ‘다시 한번’은 AI 기술로
그룹 ‘거북이’의 래퍼 터틀맨(故 임성훈)의 목소리와 움직임을 똑같이 복원해 내어 놀라움을 자아냈습니다.

이로써 머지 않아 가상 인간이 우리 삶 속에 깊이 들어올 것이라 기대하게 되었습니다.

이번 기획특집의 주제는 가상 인간 Virtual Human입니다.
얼굴 합성 기술 Face Synthesis을 통해 가상 인간의 얼굴을 생성하고, 음성 합성 기술 Speech Synthesis로 목소리를 입힌 다음,

움직임을 만드는 딥러닝 기반 휴먼 모션 연구 3D Human Motion Estimation까지!

실제 인간 같은 가상 인간을 만드는 기술들에 대해 한번 알아볼까요?


가상 인간 1
삼성의 인공 인간 NEON[링크-삼성 NEON 홈페이지], 이케아의 버추얼 모델 IMMA[링크-버추얼 모델 IMMA 인스타그램] 등 실제 인물과 매우 유사하게 만들어진 가상 인물들의 모습은 많은 사람을 놀라게 하고 있는데요.
이처럼 세상에 존재하지 않는 가상의 얼굴을 새롭게 만들어내는 기술은 급속히 발전하고 있습니다. 이렇게 합성된 영상, 이미지는 전문가들조차 구별하기 어려운 수준까지 진화하고 있다고 합니다.

기존에 없던 새로운 모습의 가상 얼굴을 생성해내는 기술은 어떻게 작동하는 걸까요?
딥러닝을 기반으로 새로운 얼굴을 합성하는 기술의 원리, 함께 알아봅시다!




GAN이란?

가상 얼굴 합성에는 보통 Generative Adversarial Network(GAN)이라는 기술이 사용됩니다. 기존에 가지고 있는 인물 사진 데이터를 학습하고 그들의 특징을 분석해 실제로 존재할법한 이미지를 만들어내는 것인데요. GAN이 어떠한 모델이고 어떻게 동작하는지, ‘Generative’, ‘Adversarial’, ‘Network’ 각각의 단어가 가진 의미를 통해 자세히 알아볼까요?

먼저 ‘Generative’는 GAN이 생성 Generation 모델임을 의미합니다. 여기서 생성 모델이라는 것은 실제로 있을법한, 그럴듯한 가짜를 만들어내는 모델입니다. 수학적으로 그럴듯하다는 것은 생성된 데이터의 분포가 실제 데이터의 분포와 유사한 경우라고 말할 수 있죠.

두 번째로 ‘Adversarial’은 두 개의 모델이 적대적 Adversarial으로 서로 경쟁하면서 발전한다는 것을 의미합니다. 적대적이라는 개념은 ‘경찰과 위조지폐범’에 대입해 생각해볼 수 있는데요. 경찰과 위조지폐범이 있을 때, 처음에는 위조지폐범이 만든 지폐가 허술해서 경찰이 쉽게 검거했다고 해봅시다. 그렇게 되면, 위조지폐범은 검거되지 않기 위해 다시 기술을 발전시켜 지폐를 위조하게 되겠죠? 이처럼 위조하고, 검거되고, 위조하고 또다시 검거되고 하는 과정이 반복되면 위조지폐범은 갈수록 더 정교한 위조지폐를 만들게 되고, 경찰은 지폐의 진위를 판단하는 능력을 기르게 됩니다. GAN은 여기서 위조지폐범 역할인 생성자 Generator와 경찰의 역할인 구분자 Discriminator라는 두 가지 모델을 가지고 있는 것입니다. 그리고 이 둘을 경쟁적으로 학습시켜 높은 수준의 결과물을 얻을 수 있도록 하는 원리인데요. 생성자의 목적은 그럴듯한 가짜 데이터를 만들어서 구분자를 속이는 것이고, 구분자의 목적은 생성자가 만든 가짜 데이터와 진짜 데이터를 구분하는 것입니다. 두 모델을 함께 학습시키면서 ‘진짜와 구분할 수 없는 가짜’를 만들어내는 생성자를 얻을 수 있는 것이죠. 이것이 GAN의 핵심적인 아이디어인 적대적 학습 Adversarial Training입니다.

경찰과 위조지폐범으로 표현한 GAN의 모델 구조


GAN의 모델 구조

마지막으로 ‘Network’는 이 모델이 인공 신경망 Artificial Neural Network 또는 딥러닝 Deep Learning으로 만들어졌다는 것을 의미합니다. GAN은 실제 데이터의 확률 분포에 근사하는 함수를 만들기 위해 딥러닝 구조를 활용하는데요. 실제 값과 데이터의 차이를 나타내는 함수인 ‘손실 함수’라는 개념을 도입해, 이 손실 함수를 최소로 만들어주는 가중치들을 찾는 것을 목표로 학습을 진행합니다. 생성자는 계속해서 이미지를 생성하고, 실제와의 차이를 최소화하는 이미지를 찾아가는 방식으로 학습하게 되는 것이죠.

GAN의 손실 함수

$$\min_{G} \max_{D} V(G,D)$$ $$ = \mathbb{E}_{\boldsymbol{x} \mathtt{\sim} p_{\text{data }}(\boldsymbol{x})} [\log D(\boldsymbol{x})] + \mathbb{E}_{\boldsymbol{z} \mathtt{\sim} p_{\boldsymbol{z}}(\boldsymbol{z})} [\log (1-D(G(\boldsymbol{z})))] $$
$G$ : 잠재 벡터 z 로부터 가짜 이미지를 출력하는 생성자 (Generator)
$D$ : 입력된 이미지가 진짜일 확률을 출력하는 구분자 (Discriminator)
$\boldsymbol{z}$ : Uniform distribution 혹은 Normal distribution으로부터 무작위로 추출된 잠재 벡터
$\boldsymbol{x}$ : 실제 데이터 분포로부터 추출된 실제 이미지
$\mathbb{E}_{\text{given distribution}} [ \cdot ]$ : 주어진 분포에 대한 평균값

GAN의 손실 함수는 $V(G,D)$로 정의할 수 있습니다. 이 식에서 $G$는 생성자로, 잠재 벡터 $\boldsymbol{z}$를 입력받아 가짜 이미지를 출력하는 함수입니다. 여기서 잠재 벡터 $\boldsymbol{z}$는 균등 분포 Uniform Distribution정규 분포 Normal Distribution에서 무작위로 추출된 값인데요. 생성자는 이렇게 단순한 분포를 사람 얼굴 이미지와 같은 복잡한 분포로 매핑 Mapping하는 함수라고 볼 수 있습니다.

구분자 $D$는 이미지를 입력받아서 그 이미지가 진짜일 확률을 $0$과 $1$ 사이의 값으로 출력하는 함수이고, $\boldsymbol{x}$는 실제 데이터 분포에서 추출된 실제 이미지를 의미합니다.

생성자 $G$는 실제와 결과물의 차이를 줄이는 것을 목표로 하기에 함수 전체의 값을 최소화시켜야 하고, 따라서 오른쪽 항에서 $\log(1-D(G(z))$가 작아지도록 해야 합니다. 그래서 $D(G(z))$가 $1$이 되도록, 즉 가짜 이미지를 진짜라고 판단하게 만들도록 학습하는 것이죠. 그리고 반대로 구분자 $D$는 함숫값을 최대화하기 위해 $\log(D(x))$와 $\log(1-D(G(z)))$를 크게 만들어야 하는데요. 그러기 위해서는 $D(x)$는 $1$, $D(G(z))$는 $0$이 되도록, 진짜 이미지는 진짜라고 가짜 이미지는 가짜라고 판단하도록 학습하게 됩니다. 이 두 모델이 이렇게 정반대의 목표를 갖고 있기에 경쟁을 통해서 균형점을 찾아가는 것이고, 결국 가짜와 진짜를 구분하기 힘든 상태인, 올바르게 이미지를 구별할 확률이 $0.5$가 되는 지점에 수렴하게 하여 높은 수준의 이미지를 만들어내는 것이죠.

하지만 GAN에서 하나의 잠재 벡터 $z$만을 이용해 학습이 진행되다 보면 특징들간의 상관관계가 발생하는 문제가 생길 수 있습니다. 예를 들어 학습 데이터 집합에 극히 드물게 대머리인 사람은 항상 선글라스를 착용하고 있는 데이터가 있다고 해봅시다. 그러면 GAN은 학습 데이터의 분포와 비슷한 분포를 지니도록 학습하기 때문에, 선글라스와 대머리의 상관관계를 발생시키게 되는데요. 그렇게 되면 무조건 대머리인 사람은 선글라스를 착용한 상태가 되도록 이미지를 생성하는 과적합 overfitting[각주 1]이 발생할 가능성이 높아집니다. 이처럼 특징들이 서로 얽혀있기(entangled) 때문에, 입력을 조금이라도 조정하게 되면 동시에 여러 특징이 영향을 받게 된다는 한계가 있는 것이죠.

3. 정교한 얼굴 생성 기술, StyleGAN

앞서 말한 한계를 극복하고, 성별, 연령, 헤어스타일 등의 특징까지 조절하며 높은 퀄리티의 이미지를 얻을 수 있도록 StyleGAN이라는 이미지 합성 기술이 개발되었는데요. 이 StyleGAN 은 생성자의 구조를 재구성함으로써 문제를 해결하였습니다.

기존의 GAN과 StyleGAN 의 생성자 구조

기존의 GAN이 갖는 생성자는 그림 3의 (a)와 같이 잠재 벡터 $z$가 직접 이미지로 변환되는 구조입니다. 그러다 보니 z는 학습 데이터의 확률 밀도를 직접적으로 따라야 하므로 문제를 해결하지 못합니다. 학습 데이터의 분포에 완전 관여를 하고 있기 때문에, 여러 특성이 얽혀있어 머리카락의 길이만 변경한다거나, 사람의 시선을 변경하는 등의 작업이 많이 제한적인 것이죠. 따라서 StyleGAN 은 Mapping Network를 통해 $z$를 중간 벡터 $w$로 먼저 변환하고, 이미지 변환 과정에서 $w$를 통해 스타일(성별, 연령, 헤어스타일 등)을 입혀 이미지를 만들어내는 방식을 택했습니다. 비선형적인, 즉 직선 형태가 아닌 함수인 Mapping Network를 사용함으로써 학습 데이터의 분포를 따를 필요가 없는 중간 벡터 $w$를 생성하고 그 덕분에 벡터 간의 상관관계가 줄어들 수 있는 것입니다.


StyleGAN 으로 생성된 이미지

실제로 StyleGAN 은 이러한 과정을 통해 위와 같은 이미지를 만들어낸다고 합니다. 정말 정교하지 않나요?



여러분도 아래의 사이트에서 직접 StyleGAN 을 통해 생성된 이미지들을 볼 수 있습니다!

StyleGAN 으로 생성된 이미지 보러 가기



지금까지 살펴본 기술들을 바탕으로 얼굴 합성, 가상 얼굴 생성 기술은 계속해서 발전되고 있습니다.
그리고 이 기술들은 가상 공간에서 실제 사람과 유사한 인공 인간을 만들어내는 데 중요한 역할을 하고 있죠.
그런데 단순히 얼굴만 만들어내는 것에서 나아가 진짜 사람처럼 말을 하고, 움직이게 하는 것도 가능하다고 하는데요.
어떻게 실제와 유사한 가상 인간을 생성해내는지 이어서 알아볼까요?


[각주]
[1] 학습 모델이 학습 데이터에 존재하는 노이즈까지 과하게 학습하는 것, 학습 데이터에 대해서는 오차가 감소하지만 실제 데이터에 대해서는 오차가 증가하게 된다.

[참고문헌]
[1] Ian J. Goodfellow. 「Generative Adversarial Networks」, 2014.
[2] Tero Karras, Samuli Laine, Timo Aila. 「A Style-Based Generator Architecture for Generative Adversarial Networks」, 2019.



기획특집 ② - 청각과 시각을 잡는 음성 합성 기술, Speech Synthesis 편으로 이어집니다.

기획특집 ② 보기

ALIMI 25기 컴퓨터공학과 원지윤

미래의 포스테키안 친구들 반가워요 :)

기사 모아 보기
공유하기
목록