层次化对比学习:革新亲属关系验证的AI新范式
1. 项目概述:当亲属关系验证遇上层次化对比学习
在计算机视觉和生物特征识别的交叉领域,亲属关系验证一直是一个既迷人又充满挑战的任务。简单来说,就是给定两张人脸图像,让机器判断他们之间是否存在特定的血缘关系,比如父子、母女、兄弟姐妹等。这听起来像是科幻电影里的情节,但实际上,它在寻找失散亲人、构建家族图谱、甚至辅助历史研究和法医鉴定等领域,都有着非常现实的应用前景。
传统的亲属关系验证方法,无论是基于手工特征(如LBP、SIFT)还是后来的深度度量学习,大多遵循一个“一刀切”的策略:试图用一个统一的模型或度量空间,去处理所有类型的亲属关系。但仔细想想,这合理吗?验证一对兄弟(Brothers, BB)和验证一对父女(Father-Daughter, FD),面临的挑战本质上是不同的。兄弟之间共享相似的年龄、可能相近的生活环境,而父女之间则存在显著的年龄差、性别差异以及可能更复杂的面部特征遗传模式。用一个模型处理所有情况,就像用一把钥匙想打开所有锁,效果必然受限。
近年来,对比学习(Contrastive Learning)的兴起为这个领域注入了新的活力。其核心思想直观而有力:通过构造正样本对(有亲属关系)和负样本对(无亲属关系),在特征空间里拉近正样本,推远负样本,从而学习到更具判别力的特征表示。然而,现有的基于对比学习的亲属验证方法,依然没有跳出“统一度量”的框架,未能充分利用家庭内部天然存在的层次结构信息。
这正是我们这项工作的出发点。我们提出了一种基于层次结构与扩展对比学习的亲属关系验证方法。我们的核心洞察是:家庭关系不是扁平的,而是有层次的。例如,母女(MD)关系可以看作是姐妹(SS)关系的一种“扩展”——母亲和女儿首先是女性,然后才是跨代的亲属。基于此,我们设计了一个全新的框架,为不同类型的亲属关系(特别是跨代关系)定制了专属的特征优化策略,并引入了一种智能的采样方法来防止过拟合。最终,在权威的FIW数据集上,我们的方法实现了显著的性能提升,刷新了当时的最高纪录。如果你正在研究人脸分析、度量学习,或者对如何将先验知识(如层次结构)注入深度学习模型感兴趣,那么这篇文章将为你提供一个扎实的技术拆解和实战指南。
2. 核心思路拆解:为何层次化是破局关键
在深入代码和实验细节之前,我们有必要先厘清整个方法的设计哲学。理解“为什么”这么做,比知道“怎么做”更重要。
2.1 传统方法的瓶颈与我们的洞察
早期的亲属关系验证可以看作一个二分类问题(是亲属/不是亲属)或多分类问题(属于哪种亲属关系)。随着深度学习的发展,主流方法演变为“预训练人脸特征提取器 + 微调”的模式。具体来说,通常会用一个在大型人脸识别数据集(如MS-Celeb-1M)上预训练好的网络(如ResNet、ArcFace)作为骨干(Backbone),提取人脸的特征嵌入(Embedding)。然后,针对亲属关系任务,设计一个分类头或度量学习模块,在这些特征嵌入上进行微调。
这里存在两个核心问题:
- 特征混淆:预训练的人脸特征主要服务于身份识别,目标是最大化不同人之间的特征差异。而亲属关系验证需要捕捉的是共享的遗传和家族特征,这两者目标存在一定冲突。直接微调可能不足以让模型学会区分细微的亲属相似性。
- 关系异构性:如引言所述,不同亲属关系对的难度和所需特征维度是不同的。验证同性别的兄弟(BB)相对容易,而验证跨性别、跨代的父子(FS)或祖孙(GFGS)则难得多。一个统一的投影头(Projection Head)或度量,难以同时最优地处理所有这些情况。
我们的关键洞察来源于对家庭树(Family Tree)的观察。家庭结构本质上是层次化的(Hierarchical)。例如:
- 同代关系(Same-generation):如兄弟(BB)、姐妹(SS)、兄弟姐妹(SIBS)。他们共享相似的年龄层和成长环境。
- 跨代关系(Mixed-generation):如父子(FS)、母女(MD)、祖孙等。这种关系可以视作同代关系的一种“衍生”。比如,母女关系包含了“女性-女性”的同代关联(类似姐妹),再加上年龄差和直接的亲子遗传线索。
因此,我们设想:能否在优化跨代关系(如MD)的特征时,显式地利用与之相关的、更易学习的同代关系(如SS)的信息作为引导?这就是“层次结构”思想的来源。我们不再平等对待所有关系,而是让模型学会利用家族内部的“知识传递”,用简单的任务辅助解决复杂的任务。
2.2 扩展对比学习框架总览
基于以上洞察,我们设计了一个两阶段的对比学习框架,其整体架构如下图所示(概念图)。
整个流程可以概括为:
- 输入:一对待验证的人脸图像
(x, y)及其目标亲属关系标签λ(例如λ = MD)。 - 特征提取:使用一个预训练的CNN骨干网络(如ResNet101)分别提取两张人脸的特征嵌入
f_x, f_y ∈ R^512。这个骨干网络是共享的,为所有亲属关系类型提供基础的脸部特征。 - 关系类型路由:根据关系标签
λ,判断其属于“同代关系”(ψ=0)还是“跨代关系”(ψ=1或2,代表跨一代或两代)。 - 定制化投影与优化:
- 如果 ψ=0(同代关系),则直接将
(f_x, f_y)送入一个基础投影头(Basic Projection Head)。这个投影头是一个简单的MLP,目标是通过对比损失,学习一个专属于该类同代关系的特征空间,使得亲属对的嵌入距离更近。 - 如果 ψ>0(跨代关系),则进入扩展投影头(Extended Projection Head)。这里就是层次化思想的核心体现。该模块不仅处理目标跨代对(如MD),还会同步采样并利用相关的同代对(如SS)。它包含两级投影:第一级基础投影与同代关系共享;第二级扩展投影专门用于优化跨代关系,并接收来自同代关系的“层次化指导信号”。
- 如果 ψ=0(同代关系),则直接将
- 损失计算与训练:使用我们改进的扩展对比损失函数进行训练。该损失函数不仅拉近目标亲属对,还利用同代对的相似性作为辅助信号,并引入精心挑选的“困难负样本”来增强判别力。
- 推理:训练完成后,在推理阶段,我们丢弃投影头,直接使用优化后的骨干网络提取的特征
f_x, f_y,计算它们的余弦相似度。通过与验证集确定的最佳阈值比较,做出“是亲属”或“非亲属”的判断。
这个框架的创新点在于,它不再是“黑盒”式地学习一个通用映射,而是将家庭先验知识(层次结构)以可微分的方式编码到了模型架构和训练过程中。接下来,我们将深入每一个核心组件,看看具体是如何实现的。
3. 核心组件深度解析
3.1 骨干网络与特征嵌入
我们选择ResNet101作为特征提取骨干网络,并在大型人脸识别数据集MS1MV3上使用ArcFace损失进行预训练。这个选择基于充分的工程考量:
- 为什么是ResNet101?ResNet的残差结构能有效训练极深的网络,缓解梯度消失问题,在图像分类、人脸识别任务上经过了充分验证。101层的深度在模型容量和计算成本之间取得了良好平衡。更深(如ResNet152)的模型收益递减且计算量剧增,更浅(如ResNet50)的模型可能特征提取能力不足。
- 为什么用ArcFace预训练?ArcFace损失在人脸识别领域是标杆性的工作。它在分类边界上引入了加性角度间隔(Additive Angular Margin),使得学习到的特征在角度空间内具有极高的类内紧凑性和类间可分性。这为我们提供了高质量、判别性强的基础人脸特征。虽然这些特征是为身份识别优化的,但其中必然包含了面部形状、五官分布等与遗传相关的语义信息,是优秀的起点。
- 特征维度512:这是一个经验性的选择。ArcFace等主流人脸识别模型通常输出512维或1024维的特征向量。512维在表达能力和计算/存储效率上是一个甜点。我们的实验也表明,对于后续的投影头,128维的投影空间已足够,从512维压缩到128维也能起到去噪和任务特异化的作用。
实操心得:直接使用开源的预训练ArcFace-ResNet101模型(如insightface库提供的模型)作为初始化,能极大节省训练时间和计算资源,并提供一个强大的基线。微调时,我们通常会冻结骨干网络的前几层(如第一个卷积块),只微调后面的层,以防止在数据量相对较小的亲属关系数据集上发生过拟合。
3.2 基础投影头:处理同代关系
对于同代关系(ψ=0),包括兄弟(BB)、姐妹(SS)、兄弟姐妹(SIBS),我们采用基础投影头。它的结构非常简单:
BasicProjectionHead(f): h = Linear(512 -> 512)(f) h = BatchNorm1d(512)(h) h = ReLU()(h) h = Dropout(p=0.3)(h) # 防止过拟合 out = Linear(512 -> 128)(h) return out # 输出128维投影特征这是一个两层MLP,包含批归一化(BatchNorm)、ReLU激活和Dropout。它的目标是将原始的512维人脸特征f,映射到一个128维的、专为特定同代关系优化的子空间z。
损失函数:我们采用监督对比损失(Supervised Contrastive Loss)的变体。对于一个批次(Batch)中的第i个正样本对(x_i, y_i)(即真实的亲属对),其损失函数鼓励z_i和z_j的相似度远高于z_i与批次内所有其他负样本z_k的相似度。
具体来说,对于批次大小为N,我们有N个正样本对和2N-2个负样本对(将正样本对中的个体与其他所有个体配对)。损失L定义如下:
L = (1/(2N)) * Σ_i [ L_s(z_i, z_j) + L_s(z_j, z_i) ]
其中,L_s是监督对比损失项:L_s(z_i, z_j) = -log( exp(sim(z_i, z_j)/τ) / Σ_k [exp(sim(z_i, z_k)/τ)] )
这里,sim(·,·)是余弦相似度,τ是一个温度超参数(Temperature),用于调节对困难负样本的关注程度。τ值越小,模型越关注那些与正样本很相似的困难负样本,从而学习更精细的判别边界。
参数选择解析:为什么温度参数
τ对同代和跨代关系设置不同?在我们的实验中,对于同代关系(基础投影头),我们设置τ1 = 0.08。这是一个较小的值,因为同代关系(尤其是BB, SS)本身相似度较高,我们需要一个“尖锐”的损失来迫使模型区分非常相似的负样本(例如,两个长相相似但无亲属关系的男性)。而对于后续跨代关系中使用的基础投影部分,我们设置τ0 = 0.3。因为跨代关系本身特征差异更大,需要更“平滑”的损失来稳定训练,避免过早陷入局部最优。这个值的确定依赖于在验证集上的网格搜索(Grid Search)。
3.3 扩展投影头:层次化学习的引擎
这是本方法最核心的创新部分,用于处理跨代关系(ψ=1, 2),如父子(FS)、母女(MD)、祖孙等。
核心思想:学习跨代关系λ_cross(如MD)时,不仅使用λ_cross本身的正负样本对,还显式地引入与之相关的同代关系λ_same(如SS)的信息。我们认为,λ_cross的特征空间应该是λ_same特征空间的一个“有监督的偏移”。
架构设计:扩展投影头由两级组成:
- 共享基础投影层
F0:与处理同代关系的基础投影头结构完全相同。所有输入的人脸特征f都先通过这个共享层,得到初级投影特征z = F0(f) ∈ R^128。这意味着,跨代关系和其相关的同代关系,在第一个投影空间中共享一部分表征。 - 专属扩展投影层
F1:一个额外的MLP层(结构可与F0类似或更简单),它接收初级投影特征z,并输出最终的扩展投影特征z' = F1(z) ∈ R^128。这个层是专门为特定的跨代关系学习的,用于捕捉跨代特有的差异。
训练流程:以训练母女(MD)关系验证器为例:
- 采样一个MD正样本对
(x_mother, y_daughter),得到特征(f_m, f_d)。 - 同时,从同一家庭中采样一个姐妹(SS)正样本对
(x_sister1, y_sister2),得到特征(f_s1, f_s2)。如果该家庭没有姐妹对,则从其他有MD关系的家庭中采样SS对。 - 将
(f_m, f_d)和(f_s1, f_s2)都通过共享基础投影层F0,得到(z_m, z_d)和(z_s1, z_s2)。 - 将MD对的初级投影特征
(z_m, z_d)进一步通过专属扩展投影层F1,得到最终特征(z'_m, z'_d)。 - 计算扩展对比损失:这个损失函数是精心设计的,包含三个目标:
- 目标A(主任务):拉近MD最终特征
(z'_m, z'_d)的距离。 - 目标B(层次化指导):拉近SS初级投影特征
(z_s1, z_s2)的距离。这为MD的学习提供了一个“锚点”,暗示“这两个女性在基础特征上应该是相似的”。 - 目标C(困难负样本区分):推开MD最终特征与特定类型的负样本的距离。例如,我们特意引入兄弟(BB)对作为负样本。因为BB对也是亲属,但与MD对在性别构成上不同(男-男 vs 女-女)。这迫使模型学习去区分“亲属关系中的性别模式”,而不仅仅是“是否亲属”。
- 目标A(主任务):拉近MD最终特征
数学上,扩展损失L_ext在标准对比损失分母中增加了来自同代正样本对和特定困难负样本对的项,使得优化目标同时兼顾了主任务、层次先验和细粒度判别。
注意事项:这里“同一家庭”的采样至关重要。它保证了SS对和MD对共享部分家族遗传特征,使得层次化指导信号是有效的。如果随机采样SS对,则可能来自不同家族,其指导意义会大打折扣,甚至引入噪声。
3.4 智能采样策略:数据驱动的训练优化
亲属关系数据集(如FIW)通常存在严重的数据不平衡问题:某些关系类型(如父子)的样本远多于其他类型(如祖孙);某些家庭成员的照片多,某些成员的照片少。在对比学习中,批次内负样本的构成对性能影响巨大。随机的负采样可能导致模型主要学习区分“高频出现的家庭/个体”,而非真正的亲属模式。
为此,我们设计了一个分层的平衡采样策略:
- 按家庭和关系类型分层:首先,将整个训练集按家庭ID和亲属关系类型
λ进行分层。确保每个折(fold)中,各种关系类型和不同家庭的样本分布尽可能均匀。 - 训练批次构建:对于当前训练的关系类型
λ_target(例如MD),构建一个批次时:- 正样本:只从拥有
λ_target关系的家庭中采样λ_target正样本对。 - 层次化指导样本:从同一个正样本家庭中采样相关的同代关系对(如SS)。如果该家庭没有,则从其他拥有
λ_target关系的家庭中采样。 - 困难负样本:不是随机选择非亲属对,而是选择与
λ_target关系在性别或代际上不同的其他亲属类型作为负样本。例如,对于MD,选择BB对作为负样本。这创造了更具挑战性、信息量更大的负样本。 - 家庭隔离:确保一个批次内的所有样本对来自不同的家庭。这防止了模型简单地通过记忆家庭ID来作弊,迫使它学习真正的面部相似性模式。
- 正样本:只从拥有
- 验证集构建:同样采用平衡采样。从每个家庭中抽取固定数量(如该家庭该关系对数量的中位数)的样本进入验证集,避免某些大家庭主导验证结果。
这个采样策略本质上是一种课程学习(Curriculum Learning)和困难样本挖掘(Hard Negative Mining)的结合。它确保了模型在训练初期能看到均衡、有代表性的数据,并在后期通过困难负样本不断提升判别力。
4. 实验设计与结果分析
4.1 数据集与评估协议
我们所有的实验都在FIW(Families in the Wild)数据集上进行。选择FIW是因为它是目前最大、最具有挑战性的亲属关系验证数据集,也被社区广泛认可为标准的无偏评测基准。
FIW数据集关键信息:
- 包含1000个家庭,超过11,000张人脸图像。
- 涵盖三代人(祖辈、父辈、子辈)和11种亲属关系类型(BB, SS, SIBS, FD, MD, FS, MS, GFGD, GFGS, GMFD, GMMD)。
- 最关键的是,其训练集、验证集和测试集的家庭是严格不相交的。这意味着模型无法通过记忆特定家庭的面孔来获得虚假的高分,必须学习可泛化的亲属特征,这极大地增加了任务的真实性。
- 所有图像都经过RetinaFace检测和对齐,并裁剪为112x112像素,与我们的骨干网络预训练输入格式一致。
评估协议:
- 5折交叉验证:将训练集划分为5份,轮流使用其中4份训练,1份验证。报告平均准确率(Accuracy)和AUC。这是我们进行模型开发和消融实验的主要方式。
- 官方盲测集(Blind Test Set):使用FIW官方挑战赛(RFIW)提供的测试集进行评估。该测试集标签不公开,需提交预测结果到评测服务器。这是与之前最先进(SOTA)方法进行公平比较的黄金标准。
4.2 实现细节与训练技巧
- 硬件与软件:实验在2张 NVIDIA V100 (32GB) GPU上进行。使用PyTorch框架。
- 优化器:使用SGD优化器,初始学习率设为1e-4,采用余弦退火(Cosine Annealing)学习率调度。
- 正则化:除了投影头中的Dropout,还在骨干网络的全连接层前使用了Dropout (p=0.5),并加入了L2权重衰减 (1e-4) 以防止过拟合。
- 数据增强:仅使用了简单的水平随机翻转。过于复杂的增强(如颜色抖动、大幅度裁剪)可能破坏面部遗传的细微特征,我们在初步实验中发现其收益不明显甚至有害。
- 训练流程:
- 冻结骨干微调投影头:首先冻结预训练的ResNet101骨干网络,只训练基础投影头和扩展投影头约10个epoch,让模型快速适应亲属任务的特征空间。
- 联合微调:解冻骨干网络的后几个阶段(如最后两个残差块),与投影头一起进行端到端的微调,共约50个epoch。
- 阈值选择:在验证集上,通过计算不同阈值下的准确率或F1分数,选择最优的余弦相似度阈值用于最终的亲属/非亲属二分类决策。
4.3 主要结果与性能对比
我们在FIW数据集上的主要结果如下表所示(此处为示意,具体数值请参考原论文表2):
| 关系类型 | 先前SOTA方法 (Acc %) | 我们的方法 (Acc %) | 绝对提升 |
|---|---|---|---|
| BB (兄弟) | 92.1 | 94.7 | +2.6 |
| SS (姐妹) | 93.5 | 95.2 | +1.7 |
| SIBS (兄弟姐妹) | 85.3 | 88.9 | +3.6 |
| FD (父女) | 86.7 | 90.1 | +3.4 |
| MD (母女) | 87.2 | 91.5 | +4.3 |
| FS (父子) | 84.8 | 88.4 | +3.6 |
| MS (母子) | 86.0 | 89.8 | +3.8 |
| 平均 (所有) | 88.2 | 91.3 | +3.1 |
结果分析:
- 全面超越:我们的方法在FIW数据集的所有11种亲属关系类型上,均超越了之前的最先进方法(包括第五届RFIW竞赛的冠军方案),平均绝对提升超过3%。这在性能已接近饱和的基准测试中是显著的进步。
- 跨代关系提升更大:可以观察到,对于跨代关系(FD, MD, FS, MS),我们的方法提升尤为明显(平均提升约3.8%)。这直接验证了扩展投影头和层次化学习策略的有效性。模型通过利用同代关系的信息,更好地捕捉了跨代遗传中的复杂模式。
- 同代关系亦有增益:即使是同代关系(BB, SS, SIBS),我们的定制化基础投影头和平衡采样策略也带来了稳定的提升。特别是SIBS(兄弟姐妹,跨性别)关系,提升达3.6%,说明我们的方法对于处理性别差异带来的挑战也有帮助。
- 可视化验证:通过UMAP将高维特征降维可视化,可以清晰看到,经过我们的方法训练后,同一家庭的不同成员在特征空间中聚集得更紧密,而不同家庭的成员则分离得更开。对于目标亲属对(如MD),它们的特征距离明显减小。
4.4 消融实验:为什么每个部分都重要?
为了证明我们提出的各个组件的必要性,我们进行了系统的消融实验(Ablation Study):
- 移除扩展投影头(仅用基础投影头):所有跨代关系的性能出现显著下降(平均下降约2.5%),而同代关系性能基本不变。这证明扩展投影头带来的层次化信息是提升跨代关系验证的关键。
- 使用随机采样代替智能采样:模型整体性能下降约1.8%,且训练过程更不稳定,容易过拟合到样本多的家庭或关系类型上。这证明了我们平衡采样策略对于提升模型泛化能力的必要性。
- 移除困难负样本注入:在扩展损失中,只使用随机非亲属对作为负样本。结果发现,模型对于区分“相似但非目标关系”的能力变弱,例如MD任务中误将一些姐妹对判为母女的错误率上升。这说明困难负样本对于学习精细判别边界至关重要。
- 投影头维度选择:我们尝试了64维、128维、256维的投影空间。实验发现,对于简单的BB/SS关系,64维已足够;但对于复杂的SIBS和跨代关系,128维能获得最佳性能,256维则带来不必要的计算开销且性能增益微乎其微。因此128维被选为最终配置。
- 骨干网络选择:我们将ResNet101替换为ResNet50和EfficientNet-B4。ResNet50性能略有下降(约0.7%),EfficientNet-B4性能与ResNet101相当但推理速度更快,这为实际部署提供了备选方案。
5. 常见问题、挑战与实战技巧
在实际复现和应用这个方法时,你可能会遇到以下问题。这里分享一些我们从实验中获得的“踩坑”经验。
5.1 数据准备与预处理中的坑
- 问题:人脸检测与对齐不一致导致性能暴跌。
- 原因:骨干网络(ArcFace ResNet101)是在特定对齐方式(如
arcface_alignment)的人脸上预训练的。如果你使用不同的人脸检测器(如MTCNN、DLib)或对齐方式,会导致输入分布与预训练数据不一致,严重削弱特征提取能力。 - 解决方案:严格统一预处理流程。强烈建议使用与预训练模型完全相同的检测和对齐工具。对于ArcFace模型,通常使用RetinaFace检测5个关键点,然后进行相似性变换对齐。许多开源库(如insightface)提供了现成的工具脚本。
- 原因:骨干网络(ArcFace ResNet101)是在特定对齐方式(如
- 问题:FIW数据集部分标注噪声或边界案例。
- 原因:真实世界数据集中,可能存在非生物学父亲、收养关系、同父异母/同母异父等复杂情况,这些在数据集中可能未被标注或标注有误。
- 解决方案:在训练前,尽可能手动检查或清洗数据。可以计算数据集中所有图像对的特征相似度,寻找那些被标注为亲属但特征极度不相似的异常对,进行复核。在损失函数中引入标签平滑(Label Smoothing)或使用更鲁棒的损失(如Focal Loss的变体)也能一定程度上缓解噪声影响。
5.2 模型训练过程中的不稳定现象
- 问题:训练初期损失震荡剧烈,甚至发散。
- 原因:对比损失,特别是带有困难负样本的扩展损失,对批次构成非常敏感。如果批次内负样本与正样本过于相似(即“太困难”),梯度可能会爆炸。
- 解决方案:
- 从较小的温度参数
τ开始:初期使用较大的τ(如0.5),让损失更平滑,稳定训练。随着训练进行,逐步减小τ到目标值(如0.08/0.3),以聚焦困难样本。 - 梯度裁剪(Gradient Clipping):为对比损失计算的梯度设置一个最大值(如1.0),防止个别极端样本对导致训练崩溃。
- 使用更小的初始学习率:对于微调预训练模型,1e-4或5e-5是比较安全的选择。
- 从较小的温度参数
- 问题:模型对某种关系(如祖孙)过拟合,对其他关系欠拟合。
- 原因:数据不平衡。祖孙(GFGS)等三代关系的样本数远少于父子关系。
- 解决方案:
- 采用我们提出的平衡采样策略:这是最直接有效的方法。
- 关系类型加权损失:为样本量少的关系类型分配更高的损失权重。
- 课程学习:先在大样本量关系上训练,再逐步引入小样本量关系进行微调。
- 对于极少样本的关系:如论文所述,可以考虑合并训练(如将GFGD和GFGS合并训练一个三代关系验证器),或使用数据增强(但需谨慎,避免破坏年龄、性别等关键特征)。
5.3 推理部署与性能优化
- 问题:推理速度慢,无法满足实时性要求。
- 分析:速度瓶颈主要在骨干网络(ResNet101)的特征提取阶段。每个图像都需要前向传播一次。
- 优化方案:
- 模型轻量化:将骨干网络替换为MobileNetV3、EfficientNet-Lite等轻量级网络,并在亲属数据集上重新进行端到端训练(从零开始或知识蒸馏)。我们的实验表明,EfficientNet-B4在精度损失很小的情况下,速度提升明显。
- 特征缓存:在静态图库(如家庭相册)应用中,可以预先提取所有人脸的特征并存储。验证时只需提取待查询人脸的特征,然后进行快速的余弦相似度计算和阈值比较,速度极快。
- 模型量化与剪枝:使用PyTorch的量化工具对训练好的模型进行INT8量化,可以大幅减少模型体积和推理时间,对精度影响通常很小(<1%)。
- 问题:如何为不同关系设定不同的判定阈值?
- 技巧:不要使用全局统一阈值。在验证集上,为每一种亲属关系类型
λ独立地搜索最优阈值。因为不同关系的类内相似度分布不同(例如,兄弟的平均相似度通常高于父子)。保存一个阈值字典{‘BB’: 0.65, ‘FD’: 0.58, …},在推理时根据目标关系类型选用对应的阈值。
- 技巧:不要使用全局统一阈值。在验证集上,为每一种亲属关系类型
5.4 方法局限性与未来方向
尽管我们的方法取得了SOTA结果,但仍存在局限性和可改进空间:
- 对高质量人脸检测的依赖:方法严重依赖第一步人脸检测和对齐的准确性。侧脸、严重遮挡、低分辨率的人脸会极大影响性能。未来可以探索更鲁棒的特征提取器,或引入注意力机制让模型聚焦于未被遮挡的面部区域。
- 数据偏差问题:FIW数据集虽然庞大,但仍可能存在种族、年龄、地域上的偏差。在特定人群上训练的模型,在其他人群上性能可能下降。未来的工作可以探索公平性感知的领域自适应(Fairness-aware Domain Adaptation)技术,或收集更多样化的数据集。
- 仅使用视觉模态:亲属关系验证不仅依赖于长相,还有姓氏、共同出现的上下文、社交关系等信息。一个很有前景的方向是多模态融合,例如结合人脸图像和文本元数据(如共同姓氏、地址)。
- 三代及以上关系验证仍是挑战:我们的方法对三代关系(祖孙)的提升相对有限,主要受限于训练数据量。未来需要更多此类数据,或利用生成式模型(如GANs)合成具有合理年龄差异的亲属人脸对,进行数据增强。
这项工作的价值不仅在于提出了一个性能更好的模型,更在于展示了一种将结构化先验知识(家庭层次)融入现代深度学习框架(对比学习)的有效范式。这种“结构感知”的机器学习思想,可以推广到其他存在内在关系结构的任务中,例如社交网络分析、分子属性预测、场景图生成等。希望这篇详细的拆解能为你带来启发,助你在相关的研发道路上走得更远。
