Search

FaceShifter: Towards High Fidelity And Occlusion Aware Face Swapping

Created
8/26/2021, 5:23:00 AM
Tags
FaceShifter
Deepfake
FaceSwap
일시
Empty
발표자
고우영
✅main
포스팅 종류
논문리뷰

Abstract

FaceShifter는 high fidelity(충실도)와 occlusion한 2-stage face swap framework이다. 기존 방법들은 target image로부터 제한된 정보로만 동작하는 단점이 있다. FaceShifter는 대상 속성(target attributes)에 철저하게 적응하도록 활용하고 통합하여 high-fidelity한 변환된 얼굴을 생성한다. 저자는 다중 레벨 대상 얼굴 속성을 추출하기 위한 새로운 속성 인코더(attributes encoder)를 제안한다. 그리고 얼굴 합성을 위해 정체성(identity)과 속성(attributes)을 적응적으로 통합하기 위해 AAD(Adaptive Attentional Denormalization) layer를 이용한 Generator를 제안한다. Challenging facial occlusions을 해결하기 위해 2-stage로 구성된 HEAR-Net(Heuristic Error Acknowledging Refinement Network)를 제안한다. Manual annotation 없이 self-supervised 방식으로 anomaly regions을 복구하도록 학습되었다. Wild face들에 대한 광범위한 실험은 타 SOTA 방법들과 비교하여 FaceShifter가 더 지각적으로 매력적이고 정체성을 유지함을 보인다.

1. Introduction

Face swapping은 target image의 attributes(머리 자세(head pose), 얼굴 표정, 빛, 배경)를 보존하면서, target image의 identity를 source image 속 사람의 identity로 대체하는 작업이다. 쉽게 말해 target image의 얼굴을 source image의 사람 얼굴로 바꾸는 작업이다. Face swapping은 movie comparison, computer game, privacy protection 분야에서 잠재적 활용성이 높아 각광받고 있다.
Face swapping의 어려운 점은 두 이미지에서 identity와 attributes를 어떻게 추출하고 적응적으로 재조합 할것인가 이다. 초기 replacement-based works은 간단하게 안쪽 얼굴영역의 pixel만 대체했다. 그래서 자세와 원근법의 변화에 민감하다. 3D-based works은 자세와 원근법 차이를 다루기 위해 3D 모델을 사용한다. 하지만 3D 얼굴 구조의 정확성과 강건성이 모두 만족스럽지 못하다. 최근 GAN-based works는 인상적인 좋은결과를 보여준다. 그러나 realistic 하고 high-fidelity한 생성은 여전히 challenging 하다.
본 논문은 face swapping의 fidelity를 향상시키는데 집중했다. 더 지각적으로 매력적(perceptually appealing)인 결과를 만들기 위해 생성된 swapped face는 target face의 자세와 표정을 공유하고, 불일치 없이 균일하게 target image에 fitting해야 한다. Swapped face의 rendering은 빛의 방향, 강도, 색깔에 충실해야 한다. 그리고 swapped face의 pixel resolution은 target image resolution과 일치해야 한다. 이는 간단한 alpha와 Poisson blending으로 해결될 수 없다. Swapped face의 생성할 때 target image attributes의 철저하고 적응적인 통합은 target image의 attributes(scene lighting, image resolution)는 realistic한 swapped face를 만드는데 도움이 될 수 있다.
그러나 기존 FS 방법은 이런 통합의 필요를 무시하거나 철저하고 적응적인 방법으로 수행하는 능력이 부족했다. 특별히, 많은 이전 방법들은 swapped face를 생성하기 위해 target image로 부터 오직 자세와 표정 가이드만 사용하고 target face의 마스크를 이용하여 blend 한다. 이 과정은 artifacts를 야기하기 쉽다. Swapped face를 생성할 때, 자세와 표정 뿐만 아니라, target image에 대하여 지식을 거의 활용하지 못한다. 이는 scene lighting이나 image resolution 같은 target attributes를 거의 존중할 수 없다. 그래서 이 방법들은 source image 얼굴의 정체성을 보존하지 못한다. 아래 그림은 전형적인 실패 사례 이다.
위 그림은 FaceForensics++ dataset에 대한 이전 방법들의 실패 사례 이다. FaceSwap 방법은 inner face region을 생성한 후 target face에 섞는 하는 방법이다. 이러한 전략은 artifacts가 생성되기 쉽다.
1.
코 부분에 빛의 결함(1행 3열)
2.
Source identity의 얼굴 모양을 보존하는데 실패(2행 3열)
3.
Image resolution 불일치(3행 3열)
반면 FaceShifter는 이러한 문제가 없다.
Target attributes의 철저하고 적응적인 통합하는 high-fidelity FS를 위해 GAN-based 네트웍인 AEI-NET(Adaptive Embedding Integration Network)를 디자인했다. RSGAN, IPGAN은 target attributes를 single vector로 압축한다. 이와 달리 본 모델은
1.
multi-level attributes encoder로 다양한 공간 해상도에서 target attributes를 추출한다.
2.
어디서 attributes나 identity embedding을 통합할지 적응적으로 학습하기 위한 AAD(Adaptive Attentional Denormalization) Generator를 설계했대.
이런 적응적 통합은 single level 통합(RSGAN, FSNet, IPGAN)에 비해 상당한 성능 향상을 가져온다. 이 두 향상으로 제안하는 AEI-Net은 위 그림에서 보는것과 같이 불일치, 빛, 얼굴 모양 문제를 해결할 수 있다.
더욱이 facial occlusion은 FS에서 항상 challenging하다. 기존 방법들은 occlusion-ware face mask를 얻기 위하여 face segmentation을 학습하였다. 반면에 우리는 maual annotation 없이 자기주도학습(self-supervised learning)으로 face anomaly region을 복원한다. 같은 얼굴 사진을 source와 target 모두에 넣었을 때 AEI-Net이 잘 학습됐다. 재구성된 얼굴 사진이 입력사진으로 부터 여러 영역에서 deviation이 있으면 이러한 일탈(deviation)은 face occlusion의 위치의 힌트가 된다. 그래서 우리는 더 좋은 결과를 위해 재구성 에러(reconstruction error)를 이용하는 HEAR-Net(Heuristic Error Acknowledging Refinement Network)를 제안한다. 이 방법은 더 많은 이상징후 유형(anomaly types)(안경, 그림자, 반사효과, 다른 uncommon occlusion)을 식별한다.
학습 방법
1) Subject-Aware FS: 새로운 입력사진(source&target)을 위해서 새로운 입력사진의 비디오(source&target video)로 학습이 필요하다.
특정 인물을 위해 특정 모델학습이 필요하다.
CageNet for Nicolas Cage, SwirtNet for Talor Swift
DeepFakes
2) Subject-Agnostic FS: 대상 얼굴들의 학습 없이 바로 얼굴쌍에 적용 가능하다.
FaceShifter는 Subject Agnostic 방식이다.
실험들은 제안한 방법이 다른 SOTA 방법들보다 더 realistic하고 더 입력에 충실함을 보인다.

2. Methods

Identity를 제공하기 위한 source image(XsX_s)와 attributes(자세, 표정, 배경빛, 배경)을 제공하기 위한 target image, XtX_t가 필요하다. FaceShifter는 2-STAGE로 진행된다. 1) AEI-Net(high-fidelity face swap, Ys,t^\hat{Y_{s,t}}을 생성), 2) HEAR-Net(facial occlusion을 핸들링 하고 결과를 refine, Ys,tY_{s,t}) 이다.
1.
AEI-Net
입력 : source image, target image
출력 : Ys,t^\hat{Y_{s,t}}(source로 부터 identity를, target으로 부터 attribute를 배움)
2.
HEAR-Net
입력 : Ys,t^\hat{Y_{s,t}}(AEI-Net의 출력)
출력 : Ys,tY_{s,t}(facial occlusion을 해결)

2.1 AEI-NET(Adaptive Embedding Integration Network)

첫 번째 stage에선 high-fidelity face swap인 Ys,t^\hat{Y_{s,t}}을 생성한다. 이 때 Ys,t^\hat{Y_{s,t}}XsX_s(source image)의 identity를 보존하면서 XtX_t(target image)의 attributes를 보존해야 한다. 이 두 목적을 이루기 위해 모델은 세가지 파트로 구성된다
AEI-NET
1.
Identity Encoder (Zid(Xs)Z_{id}(X_s))
대량의 2D face data로 학습된 face recognition model(arcface, 마지막 fc layer이전)로 source image 임베딩 수행
2.
Multi-level Attributes Encoder(Zatt(Xt)Z_{att}(X_t))
Face attributes(자세, 표정, 빛, 배경)는 identity 보다 더 많은 공간정보(spatial information)가 필요하다. 기존 방식들은 압축하여 single vector로 나타냈지만, 본 연구에선 attritutes의 디테일을 유지하기 위해 multi-level feature map을 이용한다.
target image(XtX_t)를 U-Net 구조 인코더에 입력한다. 그리고 U-Net 디코더에서 생성된 feature map들을 attributes embedding 이라고 정의한다. 아래에서 Zattk(Xt)Z_{att}^k(X_t)는 Unet 디코더의 k번째 level의 feature map이다. n은 feature level 개수이다. attribute embedding을 학습하기 위하여 attribute annotation이 필요 없다. Ys,t^\hat{Y_{s,t}}XtX_t는 같은 attribute embedding을 갖기 때문이다. 이 때 n=8n=8 이다.
3.
Adaptive Attentional Denormalization Generator
위에서 구한 두 임베딩, Identity embedding, Attribute embedding을 통합하여 Ys,t^\hat{Y_{s,t}}를 생성하는 Generator를 만든다.
이전 연구들은 이 두 feature를 단순히 concatenation 하여 사용하였는데, 이는 blurry한 결과를 만들 수 있다.
그래서 대신 AAD(Adaptive Attentional Denormalization) layer를 이용한다. 이는 SPADE, AdaIn에서 착안하였다. AAD는 multi-feature level에서 feature 통합을 위해 denormalization을 수행한다.
AAD layer 구성
1.
Attribute integration (AkA^k)
zattkz_{att}^k(attributes encoder의 출력)가 입력일 때, 아래 수식을 통해 attributes embedding을 구한다.
2.
Identity integration (IkI^k)
zidkz_{id}^k(identity encoder의 출력)가 입력일 때, 아래 수식을 통해 attributes embedding을 구한다.
3.
Adaptively attention mask (houtkh_{out}^k) → 중요!
identity와 attribute를 효과적인 구간을 나누어 적응적으로 통합한다.
이미지에서 어떤 부분은 identity를, 또 어떤 부분은 attribute를 가져온다. 아래 그림을 보면, MkM^k가 높은 부분(흰색)은 identity를, 낮은 부분은(검정색) attributes를 참조함을 알 수 있다.
MkM^khkh^k에 CNN과 sigmoidsigmoid를 통과한 attention mask로 0 or 1 값을 갖는다.
element-wise combination of AkA^k and IkI^k weighted by the mask MkM^k
Training Loss
1.
Adversarial loss → ??
Ys,t^\hat{Y_{s,t}}를 realistic하게 만들기 위해 학습
다운샘플된 output image에 multi-scale discriminator loss
2.
Identity preservation loss
Identity는 source image와 같도록 학습
identity 임베딩의 cosine 유사도로 유사하면 0에 가까워 지도록 학습
3.
Attributes preservation loss
Attributes는 target과 같도록
생성된 이미지와 target 이미지의 attribute embedding를 구하여 L2 distance가 가깝도록 학습
4.
Reconstruction loss
학습할 때 source와 target image가 같다면 reconstruction error가 0이 되도록
5.
AEI-Net loss
위 4개의 loss를 1:10:5:10 비율로 통합하여 학습

2.2 HEAR-NET(Heuristic Error Acknowledging Refinement Network)

두번째 stage(HEAR-NET)에선 첫번째 stage인 AEI-Net에서 생성한 이미지(Ys,t^\hat{Y_{s,t}})의 facial occlusion을 제거한 이미지(Ys,tY_{s,t})를 생성하기 위한 모델이다.
AEI-Net에서 target image의 attributes(자세, 표정, 빛)를 유지하려고 학습하지만, target image에 occlusion이 있으면 실패한다. 이를 해결하기 위해 기존 연구들은 occlusion-aware face mask를 구하기 위한 face segmentation network를 사용하였는데, 이는 mannual annotation을 달아야 하는 단점이 있고, unseen occlusion에 대해선 취약하다.
그래서 HEAR-Net은 target image에 occlusion이 있을 때, 이러한 occlusion을 제거하는 방법을 제시한다. 위 그림은 머리나 체인이 얼굴을 덮고 있는 occlusion 경우이다.
방법 : source와 target에 같은 이미지를 AEI-Net에 입력하면 reconstructed image에서 occlusion이 사라진다. 그래서 target image와 reconstructed image의 error로 occlusion의 위치를 알 수 있다. 이 때 error는 어느부분이 anomal한 지 알려주기 때문에 heuristic error(occlusion 위치)라고 부른다.
위의 관찰에서 영감을 받아 face image를 정제하는 HEAR-Net을 설계했다. 우선 heuristic error를 다음과 같이 구한다.
Yt=XtAEInet(Xt,Xt)∆Y_t = X_t − AEInet(X_t, X_t)
그리고 heuristic error와 first-stage result를 U-Net 구조(5번씩 UP/DOWN 샘플) HEAR-Net에 입력한다.
Ys,t=HEARnet(Ys,t^,Yt)Y_{s,t}=HEAR_{net}(\hat{Y_{s,t}}, ∆Y_t)
입력 : Ys,t^\hat{Y_{s,t}}, Yt,t^\hat{Y_{t,t}}(AEI-Net의 출력), XtX_t
HEAR-Net은 mannual한 annotation 없이 self-supervised 방식이다. target image(with or without occlusion regions)를 이용한다.
occlused face가 적어 다양한 데이터셋(EgoHands, GTEA Hand2K, ShapeNet)으로 augment data를 생성하였다. 가릴 물체들을 random rotation, rescaling, color matching 후 face image에 섞었다.
출력 : Ys,tY_{s,t}(facial occlusion을 해결)
HEAR-Net loss
1) Identity preservation loss
source image의 identity를 유지하기 위한 loss
2) Change loss
1-stage(AEI-Net) 결과와 2-stage(HEAR-Net) 결과가 너무 차이나지 않기 위한 loss
3) Reconstruction loss
학습할 때 source와 target image가 같다면 reconstruction error가 0이 되도록
4) HEAR-Net loss(Total loss)
위 세 loss를 통합한 loss

3. Experiments

3.1. Implementation Detail

각 얼굴 이미지를 구하기 위해 아래와 같이 작업을 수행한다.
1) Face detection
2) 각 얼굴 이미지에 대해 5-point landmark 수행
3) Face align
landmark를 이용하여 얼굴을 수평으로 정렬
4) Face crop
배경을 포함하여 whole face부분을 자르고 256x256 해상도로 변환하여 저장
학습 데이터
AEI-Net training data
CelebA-HQ, FFHQ, VGGFace
HEAR-Net training data
위 데이터셋 중, heuristic error가 높은 TOP-10%만 선별하여 학습.
추가적인 occlusion augmentation data(EgoHands, GTEA Hand2K, ShapeNet)

3.2. Comparison with Previous Methods

정성평가(Qualitative Comparison)
Faceshifter VS (FaceSwap, Nirkin et al., DeepFakes, IPGAN, FSGAN)
1) Source face의 shape을 무시하고, target face의 contour에만 맞춘 문제
1~4행, 1~2행
2) Target image 정보가 누락되어 source의 빛이 반영
3행, 3~5행
3) IPGAN은 single-level attributes를 쓰므로 해상도가 감소하는 blending 불일치 문제 발생 및 target 표정을 못 담음
4) 그에 반해 FaceShifter는 high fidelity하고 source face shape를 잘 보존하며, target의 빛과 해상도를 잘 유지함
정량 평가(Quantitative Comparison)
모든 실험은 FaceForensics++ 데이터셋의 test set(10K)로 진행함.
각 비디오당 10 frames씩 sampling힘
ID retrieval, pose, expression error를 평가함
ID retrieval : test data에 대해 FS를 수행한 후 임베딩을 구하여 nearest face를 검색. original video에서 올바른 source 인물을 찾을 수 있는지
타 알고리즘 대비 높은 ID 검색 성능
Pose/Expression error
swapped face와 target face의 자세와 표정 차이 비교
'Finegrained head pose estimation without keypoints'를 이용하여 pose/expression vector를 구한 후 비교
Face landmark를 사용하지 않음, landmakr를 사용하면 swapped face와 target face와 불일치가 생김
사람 평가(Human Evaluation)
테스트 데이터셋에서 랜덤으로 20개씩 얼굴을 뽑아서 100명에게 평가
1) id. : source face와 가장 비슷한 identity의 사진은?
2) attr. : target face와 가장 pose&expression이 유사한 사진은?
3) realism : 가장 realistic한 사진은?

3.3. Analysis of the Framework

Adaptive Embedding Integration
MkM^k를 사용하지 않고, 단순 더하거나 합친 경우
1) 단순 더함: houtk=Ak+Ikh_{out}^k=A^k+I^k
2) 단순 합침: houtk=Concat[AK,Ik]h_{out}^k=Concat[A^K, I^k]
3) Adaptive embedding integration : (1Mk)Ak+MkIk(1-M^k)A^k+M^kI^k
Blurry&ghosting artifacts 문제 발생
Multi-level Attributes
AEI-Net : AEI-Net의 8개 feature를 모두 쓴 경우
Compressed : AEI-Net의 8개 feature 중 3개 feature만 쓴 경우
target image의 정보를 잃으므로 blurry한 artifacts 문제
Attribute embedding 분석
Query 사진과 test data를 대상으로 attribute embedding을 수행하여 representation을 나타내 보자.
각 attribute embedding값들 Zattk,k=1,..8Z_{att}^k, k=1, ..8을 모두 256x256으로 resize 한 후 concatenate 하여 PCA로 512차원으로 나타냄.
512차원의 attributes embedding을 L-2 distance 순으로 정렬하면 아래 그림과 같이 Top-n을 찾을 수 있다.
값이 가까운 사진을 검색하니 pose, 머리 색, 스타일, 표정, 심지어 선글라스 유무도 찾을 수 있었다.
선글라스도 찾는것으로 보아 2-stage 없이 1-stage 만으로도 target face의 occlusion을 보존함을 확인하였다.
Second Stage Refinement
1-stage(AEI-NET)의 결과(Ys,t^\hat{Y_{s,t}}, 3번째 줄)를 2-stage(HEAR-NET)를 이용하여 Ys,tY_{s,t}(4번째 줄)로 변환
1-stage 결과는 잘 생성되었지만 때때로 occlusion이 있을 수 있다.
HEAR-NET은 다양한 occlusion(hand, hair, face painting, mask, translucent object, eyeglasses, headscarf, floating text, color-shift)도 극복할 수 있다.
(6)에서 head pose, (10)에서 color변환 성공

3.4. More Results on Wild Faces

Single well-trained two-stage model로 다양한 wild face image 변환
large pose, uncommon lighting, occlusion 상황에서도 변환 성공

4. Conclusion

AEI-Net으로 identity와 attribute를 적절히 조합하는 face swapping을 구현하였고, HEAR-Net으로 anomaly region을 찾아서 occlusion을 복구하였다.

5. Reference