원문) https://arxiv.org/abs/1705.02966
You said that?
We present a method for generating a video of a talking face. The method takes as inputs: (i) still images of the target face, and (ii) an audio speech segment; and outputs a video of the target face lip synched with the audio. The method runs in real time
arxiv.org
1. INTRODUCTION
i) 개요 및 핵심 아이디어
: 대상 얼굴의 이미지와 오디오 음성 segment를 input -> 얼굴이 오디오에 맞춰 립싱크하는 영상 생성
: 실시간으로 작동하며 훈련 시 보지 못한 얼굴과 오디오가 나와도 적용이 가능하다. 핵심 아이디어는 대상 얼굴과 음성 semgent의 joint embedding을 학습하는 데 있다. 이 joint embedding은 해당 얼굴이 음성 세그먼트에 맞춰 립싱크하는 영상(video) 프레임을 생성하는 데 사용되는 임베딩이다.
ii) Speech2Vid 모델은 레이블이 없는(인간이 부여한, 명시적인 주석이 없는) 비디오를 사용해서 cross-modla self-supervision 형태로 학습을 진행한다.
iii) i와 ii를 통해 훈련 데이터셋 외부의 이미지와 오디오를 사용해도 립싱크하는 얼굴 비디오 생성이 가능하다.
2. Dataset & Speech2Vid 모델의 아키텍처
2-1. Dataset

2-2. 모델 아키텍처
크게 오디오 인코더, 아이덴티티 이미지 인코더, 말하는 얼굴 이미지 디코더 이렇게 3가지로 구성되어 있다.

Audio 인코더 : 이미지 인식을 위해 설계된 CNN 사용(VGG-M 기반). 이때 input dimension(12*35)에 맞게 filter 크기를 조정한 CNN을 사용하며 이는 오디오 임베딩 학습에 사용된 모델 구성과 유사하다.
Identity 인코더 : 얼굴 인식에 고유한 특징을 추출하도록 설계된 모듈로, VGG Face 데이터셋으로 사전 훈련된 VGG-M 네트워크를 사용하고, Convolution layer의 가중치만 갖다 사용한다.
이미지 디코더 : 위 두 인코더의 layer 특징 벡터(각 256차원)를 연결해서 input으로 받아온다. 이 특징 벡터들은 bilinear upsampling과 컨볼루션 레이어를 통해 점진적으로 upsampling되며, 근본적으로 디코더인 만큼 인코더와 순서가 반대로 구성.
- 여기서 입력 오디오는 MFCC 값으로 표현되며, 0.35초의 audio segment을 사용한다. identity 인코더 이미지는 112*112*3 차원이며 5개 이미지가 채널 방향으로 연결되어 입력된다.
| 모듈 | 입력 | 구조 및 특징 | 역할 |
| 오디오 인코더 | MFCC 값 (0.35초 오디오) | VGG-M 기반 CNN (입력 차원 조정) | 오디오 특징 추출 |
| 아이덴티티 이미지 인코더 | 스틸 이미지 (112x112x3, 5개 사용) | VGGFace 데이터셋으로 사전 훈련된 VGG-M 기반 CNN (컨볼루션 레이어 가중치 사용) | 얼굴 아이덴티티 특징 추출 |
| 이미지 디코더 | 오디오 및 아이덴티티 FC7 특징 결합 | VGG-M 역순 구조 (bilinear upsampling + convolution) | 결합된 특징 벡터로부터 말하는 얼굴 이미지 생성 |
| - | - | 두 개의 스킵 연결 (encoder-decoder 연결) | 대상 아이덴티티의 특징 보존 및 출력 이미지 품질 개선에 기여 |
3. 모델 학습 방법
1) Network
1-1. 이미지 공간 손실, contents 손실 2가지를 사용하여 훈련된다. 이미지 공간 손실로는 L1 손실(pretrained CNN에서의 L1 손실)
이 사용되며, 이는 L1손실이 L2 손실보다 덜 흐린 결과를 생성하는 경향이 있기 때문(이미지 처리 과정에서). 콘텐츠 손실은 예측 이미지와 실제 이미지 사이의 내용 표현 차이를 최소화하는 데 사용된다.
1-2. 본 논문에서는 pretrained VGGFace의 컨볼루션 레이어 액티베이션에서의 L1 손실이 사용된다.
2) 이미지 생성 CNN은 종종 화질이 낮은, 흐릿한 이미지를 생성할 때가 있다. 콘텐츠 손실을 사용하면 보다 선명한 이미지가 생성은 되지만, 이미지 선명도의 전반적인 개선을 위해 후처리 과정이 추가로 사용되었다.
2-1. 이 후처리 과정을 위해 별도의 CNN이 훈련된다. 이 CNN은 VDSR에서 영감을 받아, input-output 사이에서 이미지 차이만 학습하도록 훈련된 모델이며 훈련을 위해서는 흐릿한 스틸 이미지가 활용된다. 이때, input, 실제 및 생성 이미지 간의 정렬이 완벽하지 않아 end-to-end 훈련은 진행하지 않는다.
-> 그렇다면 무슨 데이터셋을 사용했는가?
2-2. 데이터셋 준비 과정

(i) 비디오의 모든 얼굴 출현 탐지 및 추적, (ii) 비디오에서 누가 말하는지 판단, (iii) 탐지된 얼굴 이미지를 정식 얼굴에 정렬하는 과정
훈련 데이터셋은 LRS2 데이터셋에서 생성되었으며, 테스트는 VoxCeleb2 데이터셋의 테스트 분할을 사용한다. 정면 또는 거의 정면에 가까운 얼굴을 포함하는 고품질 비디오가 많아, 본 논문에서 채택되었다. 훈련 세트는 39.0시간 분량에 701,744개의 샘플, 검증 세트는 2.3시간에 41,874개의 샘플, 테스트 세트는 9287개의 샘플을 포함한다.
4. 평가 및 결과
1) 평가지표는 크게 픽셀 수준 유사성, 아이덴티티 보존, 립 모양 정확도 3가지
1-1. 픽셀 수준 유사성) 생성된 이미지와 실제 이미지 간의 MSE 거리로 측정
1-2. 아이덴티티 보존) 사전 훈련된 얼굴 인식 네트워크를 사용해 생성된 이미지와 실제 이미지 간의 특징 공간 거리로 측정
1-3. 립 모양 정확도) 생성된 이미지에서 오디오 샘플 검색해서 test
2)
- L1 손실로 훈련된 네트워크는 MSE 측면에서 일반적으로 콘텐츠 손실로 훈련된 네트워크보다 성능이 우수하다. 이는 MSE가 직접적인 픽셀 간 거리를 측정하기 때문. 그러나 이는 현실적인 생성을 보장하지는 않는다. 콘텐츠 손실로 훈련된 최적의 네트워크가 L1 네트워크를 근소한 차이로 능가하기도 한다 .
- 아이덴티티 보존 측면에서, 이미지 선명도 네트워크는 일반적으로 성능을 향상시키는 것으로 나타났다 . 이는 더 선명한 이미지가 더 현실적인 경향이 있기 때문일 수 있다 . 디코더의 경우, 컨볼루션과 업샘플링을 사용한 모델이 transposed convolution을 사용한 모델보다 일관되게 더 나은 성능을 보인다 .
- 립 모양 정확도를 확인하기 위해, 생성된 이미지에서 입력 오디오 프레임을 올바르게 검색할 수 있는지 검증한다 . 이를 위해 오디오-비디오 동기화를 위해 사전 훈련된 네트워크를 사용하며, 생성된 프레임의 성능이 실제 비디오보다 약간 낮긴 하지만 무작위로 검색하는 것보다는 높다.

- 위 figure 11은 모델 출력의 시각화를 보여주며, 입 움직임이 각 단어의 소리를 반영함을 알 수 있다 .

위 [Figure 12]는 다양한 설정에서 생성된 얼굴을 보여주며, 스킵 연결과 여러 개의 아이덴티티 이미지 사용의 중요성을 시각적으로 보여준다 .
- 스킵 연결은 입력 이미지에서 생성 출력으로 얼굴 특징을 전달하는 데 중요하다. 스킵 연결이 없으면 생성된 이미지는 대상 아이덴티티의 특징을 잃는다. 또한 여러 개의 스틸 이미지를 아이덴티티 예시로 사용하는 것이 생성된 얼굴의 품질을 향상시킨다 . 이는 입이 벌린 이미지와 닫힌 이미지를 모두 제공하여 네트워크가 덜 환각적으로 생성할 수 있도록 돕고, 미세한 얼굴 움직임의 영향을 줄이기 때문!
6. 비디오 재더빙 응용 및 blending
- Speech2Vid 모델은 다른 오디오 세그먼트를 사용하여 소스 비디오를 시각적으로 재더빙하는 데 응용할 수 있다 .
- 재더빙된 얼굴을 비디오 프레임에 자연스럽게 블렌딩하기 위해 두 가지 방법을 제안한다: Poisson 편집 기반 방법과 네트워크 기반 방법
Poisson 편집 기반 블렌딩
- 이 방법은 Speech2Vid 모델의 출력을 소스 비디오에 블렌딩하기 위해 사용된다
- 주요 단계는 다음과 같다
- (i) 소스 비디오에서 아이덴티티를 위한 스틸 이미지 얻기
- (ii) 주어진 오디오와 아이덴티티로 얼굴 비디오 생성
- (iii) 생성된 비디오의 랜드마크를 소스 비디오 프레임에 다시 정렬
- (iv) 정렬된 얼굴을 소스 비디오 프레임과 시각적으로 블렌딩

네트워크 기반 블렌딩 - 이 방법은 소스 비디오의 '컨텍스트'를 고려하여 출력 프레임을 생성하도록 Speech2Vid 모델을 수정한다 .
- 네트워크 아키텍처는 기존 Speech2Vid 모델과 동일하지만, 소스 비디오의 정보를 캡처하기 위해 '컨텍스트' 인코더가 추가된다 .

컨텍스트 인코더가 추가된 네트워크 아키텍처 이미지 ⬆️- 네트워크의 입력은 오디오, '아이덴티티' 이미지, '컨텍스트' 이미지 세 가지이다 . '컨텍스트' 이미지는 입 영역이 가려진 타겟 프레임이다 .
- '컨텍스트' 이미지는 네트워크에 원하는 얼굴 방향, 배경, 조명에 대한 정보를 제공하여 블렌딩을 돕는다 .
- 이 네트워크의 출력은 '컨텍스트' 이미지 생성에 사용된 프레임과 정확히 일치하므로, 재더빙된 생성 프레임을 네트워크 출력으로 간단히 대체할 수 있다 .
- 네트워크 기반 블렌딩 결과는 Poisson 편집 기반 방법보다 일관되게 우수하며, 특히 정면이 아닌 경우에 효과적
6. 결론 및 contribution
본 연구는 speech2vid 모델이 모든 아이덴티티의 얼굴이 어떤 소스의 입력 오디오에 맞춰 말하는 비디오를 생성할 수 있음을 보여주었다 . 이는 오디오 소스에서 직접 비디오 데이터를 생성하는 것의 가능성을 시사한다 . 또한, 원본 화자와 독립적인 다른 오디오 소스를 사용하여 비디오를 재더빙하는 것이 가능함을 입증하였다 .향후 연구 방향으로는 이 모델을 오디오에만 의존하는 컴퓨터 얼굴 애니메이션에 적용할 수 있을 것이다.