预测下一代?教你搭建超好玩的项目-亲属关系人脸生成模型

论文:StyleGene: Crossover and Mutation of Region-level Facial Genes for Kinship Face
Synthesis

导读

论文 StyleGene: Crossover and Mutation of Region-level Facial Genes for Kinship Face Synthesis 发表在计算机视觉与模式识别顶级会议 CVPR 2023 上,由深圳大学计算机与软件学院计算机视觉研究所独立完成。
该工作提出了一种高保真且面部属性可控的亲子关系人脸合成方法,该方法通过隐空间对人脸各区域进行基因编码,并模拟基因的交叉变异过程,来构建后代的基因表示。多个数据集上的定量定性和问卷调查的实验展示了该方法的有效性。

引言

高保真度亲子人脸合成有许多潜在的应用,例如亲子验证,寻找长期失踪儿童和社交媒体分析等。然而,由于缺乏大规模、高质量的亲子关系标注数据,合成具有遗传关系的高质量后代人脸具有挑战性。本文目标是在不依赖亲属关系标注数据的情况下,实现高保真度且面部属性可控的亲子关系人脸合成。

本文方法首先使用无亲子关系标注的人脸数据,学习面部区域基因表示以及它和生成器的 latent space 之间的关系。再利用本文提出的 Crossover 和 Mutation 过程来构建后代的基因表示,从而利用预训练的生成器合成高保真的人脸图像。

技术贡献

本工作主要贡献如下:

  1. 基于所提出的区域级面部基因对面部遗传关系进行建模,来合成具有可控面部遗传区域的高保真亲属面孔;
  2. 提出了一种新的遗传策略,它通过模拟交叉变异过程来合成后代的遗传表示。提出的基因库在突变过程中引入,可显著增加后代人脸的多样性;
  3. 多个数据集的验证实验表明本文方法在生成后代面孔的质量和多样性方面优于现有方法。

方法介绍

人们通常是基于脸部相似度来判断照片中的人是否有亲子关系。目前已有研究表明遗传关系主要发生在父母和孩子之间的面部局部区域。本文基于此,构建亲子关系遗传模型。 

本文提出了区域等级的面部基因(Region-level Facial Gene, RFG)提取框架来解决这个问题。提出使用图像等级的基因编码器(Image-based Gene Encoder, IGE)、隐向量级的基因编码器(Latent-based Gene Encoder,LGE)和基因解码器来学习给定面部图像的 RFG,以及 RFG 与 StyleGAN2 的隐空间之间的关系。
上图展示了本方法推理阶段的流程。输入父母的图像,首先使用预训练的 Inversion encoder 将父母双方的图片映射到 Generator 的 latent space。然后使用本文提出的 LGE 提取 RFGs,然后通过 Crossover 和 Mutation 过程组合出后代的基因表示。最后使用基因解码器将后代基因重新映射回 Generator 的 latent space,使用预训练 Generator生成后代人脸图像。 

结果展示

本文方法在不同输入图像质量下都能够合成高质量的后代人脸,并能够使后代的种族与父母的保
持一致。下图是在FIW 数据集(a)和 FF-Database 数据集(b)上的定性对比

下图展示了本方法控制后代面部年龄和性别的实验结果,它的控制是基于基因库的分组条件实现的,而不依赖于其他属性控制方法。 

部署步骤

第一步:下载源码 

git clone https://github.com/CVI-SZU/StyleGene.git
cd StyleGene

第二步:环境搭建

# 创建虚拟环境
conda create -n stylegene python=3.9
# 激活环境
conda activate stylegene
# 安装包
pip3 install -r requirements.txt
```
**Requirements:**
- Python 3.9
- torch 1.12.1
- Pillow 9.2.0
- einops 0.3.2
- easydict 1.10
- gradio 3.32.0
- opencv-python 4.5.4.60
- pandas 1.4.4
- numpy 1.21.5
- ninja

第三步:下载权重文件

mkdir checkpoints
cd checkpoints
git clone https://huggingface.co/wmpscc/StyleGene
# 放置模型在checkpoints路径下面,如下所示:
StyleGene
└── checkpoints
    ├── e4e_ffhq_encode.pt
    ├── geneFactorPool.pkl
    ├── res34_fair_align_multi_7_20190809.pt
    ├── shape_predictor_68_face_landmarks.dat.bz2
    ├── stylegan2-ffhq-config-f.pt
    └── stylegene_N18.ckpt

第四步:编写test.py运行程序

from models.stylegene.api import synthesize_descendant
from PIL import Image

mother = "3.jpg"
father = "4.jpg"
# 0-2', '3-9', '10-19', '20-29', '30-39', '40-49', '50-59', '60-69', '70+'
attributes = {'age': '3-9', 'gender': 'male', 'gamma': float(0.47), 'eta': float(0.4)}
img_F, img_M, img_C = synthesize_descendant(father, mother, attributes)
image_father = Image.fromarray(img_F)
image_mother = Image.fromarray(img_M)
image_child = Image.fromarray(img_C)
image_father.save("image_father.jpg")
image_mother.save("image_mother.jpg")
image_child.save("image_child.jpg")

open_father = Image.open("image_father.jpg").resize((480, 480))
open_mother = Image.open("image_mother.jpg").resize((480, 480))
open_child = Image.open("image_child.jpg").resize((480, 480))
width = open_father.width+open_mother.width+open_child.width
height = max(open_father.height,open_mother.height, open_child.height)
new_image = Image.new("RGB", (width,height))
new_image.paste(open_father, (0, 0))
new_image.paste(open_mother, (open_father.width, 0))
new_image.paste(open_child, (open_father.width+open_mother.width, 0))
new_image.save("family.jpg")

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值