[Paper] https://arxiv.org/pdf/2308.14256v2
[Github] https://github.com/modelscope/facechain (v 3.0.0 tag 로 들어가면 됩니다.)
Abstract
최근 personalized image generation 분야가 굉장히 이슈인데요, 이로 인해 한 인물의 여러 이미지들로부터 그 인물의 identity를 학습하는 text-to-image 모델들이 많이 공개되고 있습니다. 하지만 대부분의 방법들은 크게 2가지의 문제점을 갖고 있습니다.
- 생성된 인물 사진들이 입력 이미지들의 얼굴형, 얼굴 특징을 나타내지 못하고 서로 다른 인물들 임에도 output은 고유한 특성을 갖고 있습니다.
- 생성된 얼굴이 뒤틀리거나, 흐릿한 등 불완전합니다.
이러한 문제점들을 해결하기 위해 본 논문에서는 얼굴과 관련된 perceptual understanding model(face detection, deep face embedding extraction, and facial attribute recognition) 을 결합한 personalized portrait generation 프레임워크인 FaceChain을 제안합니다.
1. Introduction
앞서 설명했듯이 human-centric content generation의 경우 pre-trained text-to-image은 입력 얼굴들의 identity를 유지하는데 많은 한계점이 있습니다. 이러한 문제점을 해결하기 위해 얼굴 이미지들에서 identity를 학습하고, text prompt에 따라 이미지를 생성하는 process들을 따르고 있습니다. 기존의 방법들은 LoRA (Low-Rank Adaptation)을 사용하거나 identity 정보를 학습하는 Identifier-based 를 사용했는데요, 이 방법들은 abstract 절에서 기술한 문제점을 갖는다고 합니다.
따라서 본 논문에서는 얼굴의 특징들을 보존하고 스타일까지 제어가능한 FaceChain을 소개합니다. 본 모델은 2개의 LoRA모델을 사용함으로써 개인화된 스타일과 identity를 통합 할 수 있도록 했다고 합니다. 또한 talking head와 같이 여러 방면으로 활용이 가능해 personalized image generation 분야에 많은 기여를 할 수 있을 것으로 기대하고 있습니다.
2. Architecture
본 모델은 Stable Diffusion을 기반으로 하며, personalized portrait generation 프로세스를 캡슐화하여 설계했습니다. 간단한 구조 설명은 다음과 같습니다.
style stability 와 ID consistency 를 개선하기 위해 2개의 LoRA(style-LoRA + face-LoRA)를 사용합니다. 2개의 LoRA모델은 각각 학습되는데 style-LoRA 는 offline으로 face-LoRA는 online으로 학습됩니다. 또한 입력 이미지들의 일관성을 유지하기 위해 크기, 피부 품질, 방향등을 정규화합니다. inference 단계에서는 LoRA모델의 weight를 diffusion에 통합하여 이미지를 생성합니다. 아래 그림은 FaceChain의 전체 구조도입니다.
2.1 Data Processing
2.1.1 Face Extraction
입력 데이터들로 부터 일련화된 얼굴 이미지를 얻기 위해 몇가지 process 들 거칩니다. 그 과정을 다음과 같습니다.
1) 돌아간 얼굴을 찾기 위한 Image Rotation
2) face landamark를 이용한 Face Rotation
3) 얼굴 영역을 자르고 중앙에 위치 시킴, 그 다음 human parsing을 위해 Masked-attention Mask Transformer모델을 사용하여 머리 영역에 마스크를 생성하고 분할(Face Region Crop and Segmentation)
4) 입력 이미지들의 피부 품질 개선을 위한 Skin Retouching
2.1.2 Label Tagging
test-to-image 방식을 활용하려면 각 입력 이미지에 tagging을 해주어야합니다. tag 생성시 주의 점은 아래와 같습니다.
- 얼굴표정, 액세서리 등 특정 이미지에만 있는 특징들은 image-tag간 정확한 관계 유지를 위해 정확하게 라벨링 해야 합니다.
- 눈, 입술, 귀 등 identity와 관련된 tag는 곡 사용하지 않아도 됩니다.
- "man" 과 같이 인물의 전반적을 특성을 tagging해주는 것이 더 효과적일 수 있습니다.
본 논문에서는 먼저 text annotation 모델인 DeepDanbooru 로 tag를 구한뒤, FairFace를 통해 성별, 나이 score를 얻은 후 후처리합니다. 따라서 tag는 아래 표의 6가지 중 하나(trigger word)로 분류됩니다.
2.2 Model Training
본 논문에서 제공하는 hyper-parameter는 다음과 같습니다.
- LoRA rank = 32
- learning rate = 1e-4
- Epoch = 20
- optimizer = AdamW
2.3 Model Inference
Inference단계에서는 face-LoRA model 과 style-LoRA model을 Stable Diffusion 에 통합합니다. 각 LoRA 모델 별로 각각 wegith를 줄 수 있습니다. 본 논문에서는 각각 0.25와 1.0으로 설정했습니다. 그 다음 stable diffusion모델을 이용해 입력 prompt에 맞게 이미지를 생성합니다. 생성 quality를 높히기 위해 Template Face Selection, Face Fusion, Similarity Ranking 등의 후처리도 진행됩니다.
2.4 Model Post Processing
- Template Face Selection: 입력 이미지들을 Face Quality Assessment (FQA) 모델을 이용해 quality score를 구합니다. 가장 높은 score를 가진 얼굴이 tamplate image가 됩니다.
- Face Fusion : Face Fusion모델을 이용해 생성된 이미지에 있는 얼굴을 template 얼굴과 fusion합니다.
- Similarity Ranking: 최종적으로 생성된 이미지들은 template 이미지와 유사도를 계산합니다. 생성된 사진과 입력 이미지 사이의 고유한 통계적 차이를 고려해, Random Temperature Scaling 모델을 이용해 facial similarity를 계산합니다. 마지막으로 similarity가 높은 이미지가 최종적으로 출력됩니다.
3. Result
별도의 코드 실행 없이 아래 사이트에서 바로 테스트 해 볼 수 있습니다.
https://huggingface.co/spaces/modelscope/FaceChain