Paper/Generation

Arc2Face: A Foundation Model of Human Faces

룰루랄라룰루랄라 2024. 4. 12. 19:35

paperswithcode : https://paperswithcode.com/paper/arc2face-a-foundation-model-of-human-faces

 

Papers with Code - Arc2Face: A Foundation Model of Human Faces

This paper presents Arc2Face, an identity-conditioned face foundation model, which, given the ArcFace embedding of a person, can generate diverse photo-realistic images with an unparalleled degree of face similarity than existing models.

paperswithcode.com

 

오늘은 Arc2Face 논문을 살펴보았다

이전에 이용했던 Arcface 를 이용한 face generation 모델이라는 점에서 흥미가 생겼다!

 

Abstract

 

현존하는 모델들과는 비교도 안되게 다양하고 real 한 신원에 맞는 얼굴 이미지 생성 모델인 Arc2Face 를 소개한다

 

face recognition feature 들을 decoding 하려 했지만, FFHQ 같은 고해상도 데이터셋은 각 id 마다 이미지가 부족했다

그래서 WebFace42M 데이터셋을 이용하여 unpsampling 하여 사용하였다

 

또한 Arc2Face 는 Stable Diffusion Model 을 기반으로 하고, 요즘 텍스트 기반으로 생성 모델이 많은데 텍스트가 아닌 id vector(embedding) 만을 가지고 id-to-face generation 을 한다!

이러한 간단한 조건에도 불구하고 다른 모델보다 intra-class 의 유사성이 훨씬 좋다고 한다

또한 그렇기 때문에 Arc2Face 로 합성한 이미지를 이용하여 Face Recognition 모델에 학습으로도 사용할 수 있다고 말하고 있다!

 

Introduction

 

Vision, ML 에서 새로운 얼굴 이미지 생성을 위해 statistical prior 를 학습하는 것은 아주 유명한 문제다

 

PCA 를 이용한 Eigenfaces 도 있었고,

GAN 을 이용한 StyleGAN 과 변형들이 있다

 

그리고 최근에는 Diffusion Model 이라는 것이 나타났다!

이미지 분포를 모델링하고 그것으로 샘플링 할 수 있는 가능성 뿐 아니라, 

CLIP 과 같이 텍스트 설명과 이미지를 연관시켜 generation 할 수 있는 가능성 또한 보여주었다

하지만 CLIP 을 그대로 쓰기에는 id 와 연관된 정보들을 담고 있기 때문에, 저자의 목표인 신원에 맞는, id의 real 이미지와 유사한 합성 이미지 generation 에는 적합하지 않았다..

 

이 논문에서는 text를 사용하지 않고 id embedding 을 이용하여 고품질의 face image 합성을 하는 문제를 연구하고, 대규모 foundation model 의 학습을 제안했고 아래와 같이 진행했다.

 

1. id 당 이미지 수가 적은 데이터셋은 robust 한 foundation model 을 학습하기에 충분하지 않았다 -> WebFace42M 이용

2. text-based 가 아닌 id embedding 에 의존하여 학습된 encoder 사용

3. id conditioned model 을 평가하기 위한 benchmark 도 제안

 

 

Method

 

포즈나 표정, 상황별 장면 정보와 상관없이 정확하게 대상에 대한 이미지를 생성하려고 한다.

사용할 id embedding 을 위한 feature extractor 로 arcface network 를 사용했다

Stable Diffusion Model(SD) 을 이용해서 고품질 이미지에 대한 효율적인 샘플링을 가능하게 했다

 

우선 Preliminaries 를 보자면

1. face image generation 모델을 위해 feature extractor 로써 face recognition network 를 사용  (arcface 를 사용)

2. 실제 이미지의 분포를 근사화 하기 위해 denoising mechanism 을 적용

3. 훈련 중 이미지는 다양한 timesteps 't' 에서 미리 결정된 diffusion schedule 을 통해 gaussian noise 를 추가하여 왜곡 

4. Variational Autoencoder 는 효율적인 학습을 위해 이미지를 저차원 latent space 로 압축 하는 데 사용

 

이제 Arc2Face 에 대해 자세히 알아보자

크게 두가지 방식을 적용했다

 

첫번째, prior 로써 pretrained Stable Diffusion model 을 사용

 

1. base model 은 pretrained stable-diffusion-v1-5 를 사용했고

    encoder 는 CLIP, generate 는 UNet 을 사용했다

 

2. 이미지를 detect & crop 하여 face recognition 모델을 이용하여 id embedding 추출

 

3. CLIP 은 text 기반이고, 사용하려는것은 id embedding 이기 때문에

    CLIP 과의 호환성을 위해 "photo of a <id> person" 과 같은 단순한 프롬프트에서

    <id> 를 id embedding 으로 대체 하여 token sequence 를 생성한다

 

4. 이 sequence 가 encoder 에 들어 가고 clip output space C 에 매핑 된다

    clip encoder 의 latent space 에 projection 하는 것

 

5. encoder를 통과하여 나온 conditioning embedding 과 UNet 을 이용하여 face image generation 

 

overview figure 를 통해 보자면 이러한 방식으로 진행된다

 

 

 

두번째, 고품질 데이터셋을 자동으로 정제, 생성 하여 이전 성능을 해치지 않게 효율적 학습이 가능

 

WebFace42m 이 데이터셋이 방대하고 id 마다 많은 샘플 수, 다양한 identities 를 가지고 있어 사용하려고 했으나,

1. 저품질, face recognition 에 맞추어 타이트하게 크롭된 이미지 등의 문제

2.  pretrained SD backbone 은 512x512 사이즈로 설계되었고, arc2face 를 fine-tune 하려면 유사한 사이즈가 요구 됨

-> blind face restoration 에서 sota 를 달성한 GFPGAN 을 이용하여 정제 및 upsampling 을 통해 448x448 사이즈와 1m identities, 21m images 를 가진 데이터셋을 얻었

 

이렇게 얻은 데이터셋으로 arc2face 를 학습했으나,

아무래도 face recognition 학습을 위해 잘려진 이미지를 gan 하여 사용한것이라 만족스럽지 못했고

-> FFHQ 와 CelebA-HQ 로 fine-tune 을 하여 최종모델을 완성했다 ( UNet, CLIP fine-tune )

따라서 최종 모델은 512x512 크기의 FFHQ-aligned 이미지를 생성한다고 한다!

 

 

Experiments

 

ID-consistent Generation

 

id 마다 유사하게 generation 되었는지 확인하기 위해 4가지 측정 방식을 사용하였다

1. input 과 generated face 간의 id feature 의 cosine similarity 를 계산한 id similarity 평가

2. 동일한 id 이미지 간의 LPIPS(Pairwise Perceptual Distance) 를 계산하여 generation 의 다양성 평가

3. EMOCAv2 를 이용하여 각 샘플에 대해 FLAME 모델의 expression, pose 의 parameters 를 예측하고, 같은 id 사이의 이미지 간 expression, pose 의 average pairwise l2 distance 계산하여 평가

4. FID metric 을 이용한 이미지 품질 평가

 

위와 같은 평가 방식으로 다른 모델 들과 비교하였을때 Arc2Face 가 모두 최상의 수치를 보였다!

 

Face Recognition with Synthetic Data

 

합성 데이터를 이용하여 face recognition 모델을 학습한 후 face recognition 모델에 대해 (lfw, cfp-fp 등 데이터셋 에서) 평가하였을때 다른 합성 모델들에 비해 좋은 결과를 보였다

하지만 real 데이터만을 썼을때 보다는 성능이 떨어졌다

 

Pose /Expression Control

 

controlNet 과 결합하여 학습하면 3d reference 와 이미지를 이용하여 input 을 reference 에 맞는 포즈 및 표현으로 컨트롤 되어진 이미지를 generation 할 수 있다고 한다

논문에 나온 figure 를 보니 결과가 좋아 보인다

 

 

 

Conclusion

 

large scale diffusion model 로 face generation 할때 face recognition 으로 얻은 id embedding 이 얼마나 영향을 끼치는지 알아보았다.

text 를 사용하지 않고 arcface 로 id embedding 을 추출하여 image 를 생성하는 메커니즘을 선택했다

 

여러 실험을 통해 이러한 방식이 facial id 를 잘 재현한 이미지를 생성한다는 것을 입증하였다

현존하는 다른 방식들에 비해 훨씬 실제같고 id 일관성이 좋은 이미지 생성을 하였다

 

 

 

 

generation ai 는 잘 접하지 않아서 어려웠던 부분들이 많았으나, 이전에 사용했던 arcface 와 연관된 논문이라 좀 더 재밌게 보게되었다.

다른 gen 들도 많이 살펴 보아야 겠다