论文链接:Microsoft Face Synthetics
项目代码:GitHub
了解更多数据合成相关论文:Handsome-Synthetic-Data
1. 引言
这篇论文提出了一种仅使用合成数据在真实场景(in-the-wild)下实现人脸分析的方法。研究者通过优化数据生成过程,解决了真实数据与合成数据之间的领域差距(domain gap),证明合成数据不仅能够在准确性上媲美真实数据,还可以开辟新的研究方向。
核心贡献
- 提出了一种生成高真实感和多样性合成数据的方法,适用于各种人脸分析任务。
- 展示了使用合成数据训练的模型在关键点定位和人脸分割任务中能够实现与真实数据相当的性能。
- 进行了详细的消融研究,验证了合成数据生成过程中关键组件的作用。
- 提供了公开的数据集和代码,供研究者进一步使用和改进。
2. 相关研究
合成数据的挑战
- 真实数据的成本与问题:
- 标注真实数据昂贵且耗时。
- 存在隐私、伦理和数据偏差等问题。
- 领域差距:
- 真实数据与合成数据在分布上的差异使得模型难以泛化。
现有解决方案的局限性
- 数据混合:将合成数据与真实数据结合,但需要大量真实数据作为补充。
- 域适配:将合成数据转化为更接近真实数据的形式,但可能导致标签信息丢失。
- 领域对抗训练:通过学习领域不变特征来忽略差异,但训练复杂度较高且效果有限。
本文研究的重点在于直接提升合成数据的质量,从根本上减少领域差距。
3. 方法解析
3.1 合成数据生成框架
研究者利用视觉特效 (VFX)技术设计了一套高度程序化的合成数据生成流程,能够生成大规模、高质量、带有精确标签的人脸图像。其核心包括以下部分(这里简单概括下,方法部分比较复杂大家可以看原论文和代码):
3.1.1 3D 人脸模型
- 生成式参数化模型:
- 基于 511 个高质量 3D 人脸扫描数据构建参数化模型。
- 模型采用 7,667 个顶点和 7,414 个多边形构成网格,骨骼结构包括头部、颈部和双眼关节。
- 参数定义:
- 身份参数:表示不同个体的形状变化。
- 表情参数:表示表情引起的形状变化。
- 姿态参数:定义骨骼关节的旋转。
- 网格生成函数:
- 利用线性混合蒙皮(Linear Blend Skinning, LBS)计算网格顶点的位置变化。
3.1.2 表情
- 从标注有面部关键点的 2D 图像中拟合生成 27,000 个表情参数。
- 补充了一组由手动动画生成的表情序列,生成更丰富、极端的表情。
- 额外随机化眼球注视方向,并调整眼睑姿态,使表情更自然。
3.1.3 纹理
- 收集了 200 组高分辨率(8192×8192)纹理,包括:
- 反照率纹理:捕捉皮肤颜色。
- 位移贴图:用于模拟皮肤的几何细节,包括粗略纹理和微观细节。
- 使用基于物理的材质模型结合次表面散射(Subsurface Scattering, SSS),实现高度逼真的皮肤效果。
3.1.4 头发和服饰
- 头发:
- 创建了包含 512 种头发样式、162 种眉毛、142 种胡须和 42 种睫毛的头发库。
- 每种头发以 3D 头发丝表示,总计超过 10 万根头发丝。
- 服饰:
- 创建了 30 种不同风格的服饰,包括正式装、休闲装和运动装。
- 补充了头饰、面饰和眼镜,共计 54 种配件。
- 服装通过非刚性笼形变形技术适配不同脸型。
3.1.5 渲染
- 使用 Cycles 光线追踪渲染器生成图像。
- 随机选择相机位置、焦距、景深和照明条件,模拟不同环境。
- 使用 448 张高动态范围图像(HDRI)作为背景和光照源。
3.2 数据标注
- 每张合成图像同时生成丰富的标签,包括关键点坐标、分割掩码、深度图、法线图等。
- 标签完全准确且一致,无需人工干预。
4. 实验与结果
4.1 实验任务
- 人脸分割:将图像中的像素分为不同类别(如皮肤、嘴巴、鼻子)。
- 关键点定位:识别人脸中关键点的二维坐标。
4.2 实验结果
-
人脸分割:
-
在 Helen 和 LaPa 数据集上的性能接近最先进技术。
-
使用合成数据的模型与真实数据训练的模型相当。
-
-
关键点定位:
-
在 300W 数据集上,模型性能优于部分真实数据训练的模型。
-
-
消融研究表明,数据增强、头发和服饰对模型性能提升具有重要作用。
5. 优势与局限性
优势
- 数据质量高:标签精确且多样,避免标注误差。
- 领域差距小:通过高真实感的合成数据大幅缩小真实数据的差距。
- 适用范围广:支持多种任务,如密集关键点定位、眼球追踪等。
局限性
- 当前模型无法模拟低领口服装或全身姿态。
- 表情相关的皱纹效果不足。
- 独立采样参数可能导致不常见但合理的组合(如带胡子的女性人脸)。