研究动机
一个高质量的人脸识别训练集要求身份 (ID) 有高的分离度(Inter-class separability)和类内的变化度(Intra-class variation)。然而现有的方法普遍存在两个缺点:
1)实现了大的 intra-class variation,但是 inter-class separability 很低;
2)实现了较高的 inter-class separability,但是 intra-class variation 需要用额外的模型来提高。
这两点要么使得在合成的人脸数据集训练的模型性能表现不佳,要么难以合成大型数据集。
因此,我们通过让提出的 Vec2Face 模型学习如何将特征向量转化为对应的图片,并且在生成时对随机采样的向量加以约束,来实现高质量训练集的生成。这一方法不但可以轻松控制 inter-class separability 和 intra-class variation,而且无需额外的模型进行辅助。此外我们还提出了 Attribute Operation algorithm 来定向的生成人脸属性,这一优势也可以被用来补足各类人脸任务的数据缺陷。
论文链接: https://arxiv.org/abs/2409.02979
代码链接: https://github.com/HaiyuWu/Vec2Face
Demo 链接: https://huggingface.co/spaces/BooBooWu/Vec2Face
本文的亮点可以归纳为:
此工作提出的 Vec2Face 模型首次实现了从特征向量生成图片的功能,并且向量之间的关系,如相似度,和向量包含的信息,如 ID 和人脸属性,在生成的图片上也会得到继承。
Vec2Face 可以无限生成不同身份 (synthetic ID) 的图像!之前的生成式模型 (GAN, Diffusion model, Stable diffusion model) 最多只能生成 8 万个不同身份的图像 [1]。本文利用 Vec2Face 生成了来自于 300K 个人的 15M 张图片。
用 Vec2Face 生成的 HSFace10k 训练的模型,首次在人脸识别的年龄测试集 (CALFW) 上实现了性能超越同尺度的真实数据集 (CASIA-WebFace [2])。另外,当合成数据集的 ID 数量大于 100k 后,训练的人脸识别模型在毛发测试集 (Hadrian) 和曝光度测试集 (Eclipse) 上也同样超越了 CASIA-WebFace。
主要实验
性能对比
我们在 5 个常用的人脸识别测试集 LFW [3]、CFP-FP [4]、AgeDB [5]、CALFW [6]、CPLFW [7] 上和现有的合成数据集进行了对比。
表一:对比用 Diffusion models,3D rendering,和 GAN 方法 (从上到下) 生成的合成数据集的性能。
第一:我们在生成的 0.5M 图片规模的训练集在上实现了 state-of-the-art 的平均精度(92%),并且在 CALFW 上超越了真实数据集 (CASIA-WebFace) 的精度。这证明了我们方法的有效性。第二:之前的最好的方法 Arc2Face [8] 使用了 Stable Diffusion V1.5 并且在 WebFace42M [9] 上进行微调,而我们的方法仅用了 1M 的数据进行训练。这足以证明我们方法的高效性和有效性。第三:HSFace 首次实现了 GAN 范式训练超过其他范式。
扩大数据集的有效性
因为 Vec2Face 可以无限生成不同的身份 (ID),所以我们对 Vec2Face 的 scalability 进行了测试。我们分别生成了 1M (20K ID),5M (100K ID),10M (200K ID) 和 15M (300K ID) 的数据集。在这之前最大的人脸合成训练集仅有 1.2M (60K ID)。
表二:测试 Vec2Face 在 scalability 上的表现。
从结果上看,当我们通过生成更多的 ID 来扩大数据集后,精度也随之提高,并且提高的趋势并未衰减!这证明 Vec2Face 能够有效的生成不同的身份。
计算资源对比
理论上来说,Arc2Face 也可以实现无限 ID 的生成并且扩大数据集。然而由于 SD 需要大量的计算资源来合成人脸,这在实际应用上并不高效。具体对比如下:
表三:对比 Arc2Face 和 Vec2Face 的模型大小,推理速度和 FID。对于 Arc2Face,我们使用 LCM-lora [10] 作为 scheduler 来生成图片。
对比结果显示,即使使用 4 步的 scheduler,Vec2Face 达到了 Arc2Face 的 311 倍同时保持了更高的与原图分布的相似度。
Vec2Face 的训练和生成方法
Vec2face 的训练
数据集:从 WebFace4M 中随机抽取的 5 万个人的图片。
方法逻辑:因为人脸识别模型是将人脸图像在高维空间 (512-dim) 聚类来实现 Open-set 的识别,并且由于高维空间的稀疏性,其空间内的身份总数要远远大于训练时所用的个数。因此在高维空间随机提取向量并且保证较低的相似度,那么就可以确保身份的独特性。还因为,人脸识别模型提取出的特征向量里不仅包含了身份信息,还包含了人脸属性等信息,所以对身份向量加小幅度的噪声 就可以在保证身份一致的前提下实现人脸属性的变化。因此,我们需要训练一个可以解码特征向量里的信息并且能够生成对应图片的模型。
Vec2Face 训练和推理框架。
为了让模型充分理解特征向量里的信息,我们的输入仅用预训练的人脸识别模型提取出来的特征向量(IM feature)。随后将由特征向量扩展后的特征图(Feature map)输入到 feature masked autoencoder(fMAE),来获取能够解码成图片的特征图。最后用一个图片解码器(Image decoder)来生成图片。整个训练目标由 4 个损失函数组成。
用于缩小合成图和原图之间的距离:
用于缩小合成图和原图对于人脸识别模型的相似度:
感知损失[11] 和用于提高合成图的图片质量。我们使用 patch-based discriminator [12, 13] 来组成 GAN 范式训练。
生成
因为 Vec2Face 仅需输入特征向量(512-dim)来生成人脸图片并且能够保持 ID 和部分人脸属性的一致,所以仅需采样 ID vector 并确保 即可保证生成的数据集的 inter-class separability。至于 intra-class variation,我们仅需在 ID vector 加上轻微的扰动 就能够在身份一致的情况下实现图片的多样性。
然而,由于在训练集里的大部分图像的头部姿态都是朝前的(frontal),这使得增加随机扰动很难生成大幅度的头部姿态(profile)。因此,我们提出了 Attribute Operation(AttrOP)算法,通过梯度下降的方法调整 ID vector 里的数值来使得生成的人脸拥有特定的属性。
Eq.5:
其他实验
AttrOP 的影响
我们通过 AttrOP 来定向提高生成的人脸质量和对应的头部姿态的变化。这一方法能够有效的大幅提高最终模型的性能。另外,增加头部姿态的变化度的同时也提高了在年龄测试集上的表现,从而实现了对真实数据集性能的超越。
衡量现有合成数据集的身份分离度
身份分离度是衡量数据集质量的重要指标。此实验衡量了 Vec2Face 和其他现有合成数据集内身份的分离度。具体过程:1)我们通过使用人脸识别模型提取出数据集里图片的特征;2)将他们的图片特征取平均来计算出身份特征;3)计算身份与身份之间的相似度;4)我们统计了所有身份与其他身份相似度相似度小于 0.4 的个数,从而衡量分离度。结果显示,Vec2Face 能够实现和真实数据集 WebFace4M 相同的分离度。这一优势为数据集的质量提供了保障。
Noise 采样中 σ 对于精度的影响
在本文中,σ 的大小对于 noise 的采样起到了直接的影响,从而影响到人脸属性的变化程度。于是我们对它的大小做了消融实验。结果显示,当σ 过小时 (=0.3) 和 σ过大时 (0.3, 0.5, 0.9),性能出现了大幅下降。从生成的结果上来说,过小的 σ 无法提供足够的人脸属性变化从而降低模型的泛化能力。过大的 σ 无法保持身份的一致,这会使模型无法学习到好的表达。因此,选择合适的采样范围至关重要。
ID 分离度对于精度的影响 (Avg. ID sim 越大,分离度越小)
这个实验研究了身份分离度对于精度的影响。虽然身份分离度的重要性是共识,但是目前为止并未有工作来验证它的真实性。因此,我们控制了数据集种身份与身份之间的平均相似度来进行消融实验。结果显示,高的分离度会大幅降低最终识别模型的性能,而过低的分离度也无法持续对最终性能提供帮助。
在其他识别测试集上 HSFace 和 CASIA-WebFace 的性能对比
因为前文的 5 个测试集只有对头部姿态变化和年龄变化的测试,为了更广泛的对比真实数据集和 HSFace 在其他人脸属性变化上的表现,我们引入了 Hadrian (面部毛发),Eclipse (面部光照),SSLFW (相似外表),和 DoppelVer (分身)。在 Hadrian 和 Eclipse 上,我们通过扩大数据集的规模最终超越了真实数据集的性能。然而,在 SSLFW 和 DoppelVer 上,我们并未实现超越。这一表现引出了另一个哲学方面的思考:目前来说,身份 (ID) 是由相似度进行定义。然而对于双胞胎,分身,近亲等,他们之间的人脸相似度会非常高但是他们又是不同的身份。这就暴露出单纯的用相似度来定义身份的缺点。因此,如何更好的定义不同的身份对于未来的工作至关重要。
还没有评论,来说两句吧...