欢迎光临
我们一直在努力

【论文阅读21】HAMFace:用“难易程度“自适应Margin,统一解决人脸识别的类内变化问题

论文信息: HAMFace: Hardness Adaptive Margin Loss for Face Recognition with Various Intra-class Variations 作者: Jiazhi Li, Degui Xiao, Tao Lu, Yuqi Wei, Jia Li(湖南大学)

目录

一、这篇论文要解决什么问题?

1.1 人脸识别的拦路虎:类内变化

1.2 以前的方法怎么做的?

1.3 HAMFace的切入点

二、什么是"Hard Positive Example"(难正样本)?

三、公式逐一解析

公式1:通用Margin-based Loss(背景知识)

公式2:难样本判断函数 (Hard Example Selection)

公式3:难度缩放函数

公式4:自适应Margin函数 (核心设计)

公式5:HAM Loss(最终损失函数)

四、与之前方法的对比:创新点在哪里?

4.1 和固定Margin方法(ArcFace/CosFace)的区别

4.2 和AdaptiveFace(类级别自适应)的区别

4.3 和MagFace/AdaFace(图像质量自适应)的区别

4.4 和JAMsFace的区别

五、实验结果

跨姿态(CFP-FP / CPLFW)

跨年龄(CALFW / AgeDB-30 / CACD-VS)

混合变化(IJB-B / IJB-C,TAR@FAR=1e-4)

通用基准(LFW / MegaFace)

六、超参数分析

七、总结


一、这篇论文要解决什么问题?

1.1 人脸识别的拦路虎:类内变化

在现实场景中,同一个人的照片可能差异极大——不同年龄、不同角度、不同光线、低分辨率、有遮挡……这些都叫做类内变化(Intra-class Variation)。

类内变化是人脸识别最棘手的难题之一。现有的主流方法(ArcFace、CosFace等)在"标准"测试集上表现很好,但一碰到大姿态、跨年龄这类场景,性能就会明显下滑。

1.2 以前的方法怎么做的?

思路一(针对具体变化单独处理):

  • 专门训练一个跨姿态模型
  • 专门训练一个跨年龄模型
  • 两个合在一起用

缺点:遇到多种变化混合的场景就歇菜了,而且每种变化都要单独处理,复杂度高。

思路二(自适应Margin):

  • AdaptiveFace:按类别给不同margin
  • MagFace、AdaFace:用图像质量(feature norm)来衡量难度,给不同margin

缺点:图像质量 ≠ 样本难度。一张清晰的大姿态人脸,图像质量很高,但对模型来说很难识别;相反,一张模糊的正脸,质量低,但模型识别起来不一定困难。用图像质量代替难度,逻辑上是有偏差的。

1.3 HAMFace的切入点

HAMFace的思路非常直接:不管你是什么原因导致的难,我直接测量你有多难,然后给你分配对应大小的margin。

核心主张:

难样本(Hard Positive Examples)需要更大的margin,把它们推向类中心,从而压缩类内方差。


二、什么是"Hard Positive Example"(难正样本)?

在人脸识别中:

  • Easy Example(简单样本):正面、清晰、标准的人脸,模型很容易正确识别
  • Hard Positive Example(难正样本):同一个人的照片,但由于姿态、年龄、遮挡等原因,特征向量离类中心很远,模型容易搞错

用角度来理解: 特征向量 $x$  和它对应的类别中心权重 $W_{y_i}$ 之间的夹角 $\\theta_{y_i}$ 越大,说明这个样本越难。

直觉图示:

W_y(类中心)
/
/ ← θ小 = 简单样本(靠近类中心)
/
x_easy

W_y(类中心)
/
/
/ ← θ大 = 难样本(远离类中心)
/
/
x_hard


三、公式逐一解析

公式1:通用Margin-based Loss(背景知识)

$\\mathcal{L} = -\\frac{1}{N}\\sum_{i} \\log \\frac{\\exp(s \\cdot \\psi(\\theta_{y_i}, m))}{\\exp(s \\cdot \\psi(\\theta_{y_i}, m)) + \\sum_{j \\neq y_i} \\exp(s \\cdot \\cos\\theta_j)}$

这是SphereFace、CosFace、ArcFace的统一形式。

参数说明:

符号含义
$s$ 缩放因子(通常为64),防止cos值太小
$m$ 固定margin值
$y_i$ 第 $i$ 个样本的真实类别标签
$\\theta_j$ 特征向量与第 $j$  类权重的夹角
$\\psi(\\theta_{y_i}, m)$ margin函数,不同方法定义不同

三种经典方法的margin函数:

$\\psi^{SphereFace}(\\theta_{y_i}, m) = \\cos(m \\cdot \\theta_{y_i})$

$\\psi^{CosFace}(\\theta_{y_i}, m) = \\cos(\\theta_{y_i}) - m$

$\\psi^{ArcFace}(\\theta_{y_i}, m) = \\cos(\\theta_{y_i} + m)$

共同缺陷: $m$ 是固定常数,对所有样本一视同仁,完全忽略了样本的难易程度。


公式2:难样本判断函数 $h(x)$(Hard Example Selection)

h(x) = \\begin{cases} 0, & \\text{if } \\theta_{y_i} + m \\leq \\min(\\text{inter}) \\\\ 1, & \\text{if } \\theta_{y_i} + m > \\min(\\text{inter}) \\end{cases}

参数说明:

符号含义
$\\theta_{y_i}$ 样本特征与正确类别权重的夹角(越大越难)
$m$ 固定的角度margin
$\\min(\\text{inter})$ 样本与所有非正确类别权重夹角中的最小值
$h(x)=0$ 简单样本
$h(x)=1$ 难正样本

通俗理解: 如果一个样本加上固定margin之后,仍然比它"最相似的错误类别"更接近正确类别,那它就是简单样本;反之,它已经快被错误类别"抢走"了,就是难样本。

场景理解

假设训练集有5个人(5个类别),每个类别有一个"代表向量"(权重向量  W),可以理解为这个人的"标准模板"。

现在来了一张照片 x,它的真实身份是 第1个人。

计算所有夹角

模型会计算 x 的特征向量与每个类别模板之间的夹角:

x 与 W₁(正确类,第1人)的夹角 = θ_y ← 这是"正确类"的角度
x 与 W₂(错误类,第2人)的夹角 = 60°
x 与 W₃(错误类,第3人)的夹角 = 45° ← 最小!最相似的错误类
x 与 W₄(错误类,第4人)的夹角 = 80°
x 与 W₅(错误类,第5人)的夹角 = 70°

那么  min(inter) 就是45° ,也就是"所有错误类别中,和 x 最像的那个类别"的夹角。

为什么用这个值来判断难易?

h(x) 的判断条件是:

\\theta_{y_i} + m > \\min_{j \\neq y_i} (\\text{inter}_{i,j})

拆开来说就是:

  • 如果正确类的角度 + margin 仍然比最危险的错误类角度小,说明样本还比较安全,是简单样本
  • 如果正确类的角度 + margin 已经超过了最危险的错误类,说明这个样本快被"抢走"了,是难正样本

打个比方

x 是一张张三的照片,W3​ 是李四的模板,两者夹角只有45°,说明这张照片"长得有点像李四"。

如果张三这张照片本身识别就不太准( \\theta_{y_i} ​​ 较大),再加上margin之后,已经比45°更大了,意味着模型更倾向于认为它是李四——这就是 难正样本,需要更大的margin把它往张三的方向"压"回去。

这个函数来自作者团队之前的工作IHEM,HAMFace在此基础上进一步设计了自适应margin。


公式3:难度缩放函数 $s(x)$

$s(x) = 1 - \\cos\\theta_{y_i}$

通俗理解: 这个函数用来量化样本的难度,并把难度映射成一个缩放系数。

  • 当 $\\theta_{y_i} \\to 0$(样本很简单,特征靠近类中心):$s(x) \\to 0$,缩放系数接近0
  • 当 $\\theta_{y_i} \\to \\pi/2$(样本很难,特征远离类中心):$s(x) \\to 1$,缩放系数接近1

函数是凸增函数(如论文Fig.4所示),这意味着越难的样本,$s(x)$ 增长越快,体现了对极难样本的重点关注。


公式4:自适应Margin函数 $m(x)$(核心设计)

$m(x) = m + t \\cdot h(x) \\cdot s(x)$

参数说明:

符号含义
$m$ 基础固定margin(与ArcFace相同)
$t$ 缩放因子,控制自适应margin的幅度,论文取 $t=0.20$
$h(x)$ 难样本判断(0或1)
$s(x)$ 难度缩放系数(连续值,越难越大)

三种情况分析:

① 简单样本($h(x)=0$):

$m(x) = m + t \\cdot 0 \\cdot s(x) = m$

退化为固定margin,和ArcFace完全一样。

② 难正样本($h(x)=1$,代入 $s(x)$):

$m_h(x) = m + t \\cdot (1 - \\cos\\theta_{y_i})$

$\\theta_{y_i}$ 越大(越难),$m_h(x)$ 越大,施加的惩罚越强。

③ 极端情况($t=0$):

$m(x) = m$

整体退化为标准ArcFace。

一句话总结公式4的设计思路: 简单样本用固定margin保持稳定训练,难正样本根据难度动态加大margin,像楔子一样把难样本"挤压"回类中心。


公式5:HAM Loss(最终损失函数)

\\mathcal{L}_{\\text{HAM}} = -\\frac{1}{N} \\sum_{i=1}^{N} \\log \\frac{e^{s \\cdot \\cos(\\theta_{y_i} + m(x_i))}}{e^{s \\cdot \\cos(\\theta_{y_i} + m(x_i))} + \\sum_{j \\neq y_i}^{n} e^{s \\cdot \\cos \\theta_j}}

这个公式分两种形式:

对简单样本(Easy examples,$h(x)=0$):

\\mathcal{L}_{\\text{HAM-E}} = -\\frac{1}{N} \\sum_{i=1}^{N} \\log \\frac{e^{s \\cdot \\cos(\\theta_{y_i} + m)}}{e^{s \\cdot \\cos(\\theta_{y_i} + m)} + \\sum_{j \\neq y_i}^{n} e^{s \\cdot \\cos \\theta_j}}

→ 等价于标准ArcFace,简单样本的训练不受影响。

对难正样本(Hard examples,$h(x)=1$):

\\mathcal{L}_{\\text{HAM-H}} = -\\frac{1}{N} \\sum_{i=1}^{N} \\log \\frac{e^{s \\cdot \\cos(\\theta_{y_i} + m_h(x_i))}}{e^{s \\cdot \\cos(\\theta_{y_i} + m_h(x_i))} + \\sum_{j \\neq y_i}^{n} e^{s \\cdot \\cos \\theta_j}}

其中 $m_h(x) = m + t \\cdot (1 - \\cos\\theta_{y_i})$, margin随难度动态增大。

训练中的比例: 简单样本数量远多于难正样本,主导整体训练方向;难正样本虽少,但通过更大的margin得到重点优化。


四、与之前方法的对比:创新点在哪里?

4.1 和固定Margin方法(ArcFace/CosFace)的区别

维度ArcFace/CosFaceHAMFace
Margin粒度 全局固定,所有样本相同 样本级别,每个样本不同
难样本处理 和简单样本一视同仁 专门分配更大margin
自适应依据 无 样本与类中心的角度距离 $\\theta_{y_i}$

4.2 和AdaptiveFace(类级别自适应)的区别

AdaptiveFace按类别(class-level)分配margin,同一个人的所有照片用同一个margin。

HAMFace按样本(sample-level)分配margin,同一个人的照片中,难的那张用大margin,简单的那张用小margin,粒度更细。

4.3 和MagFace/AdaFace(图像质量自适应)的区别

方法自适应依据难点
MagFace Feature norm(特征模长)≈ 图像质量 质量高的给大margin
AdaFace Feature norm ≈ 图像质量 质量高的受重视,质量低的被忽略
HAMFace $\\theta_{y_i}$(与类中心的角度)= 识别难度 难的给大margin

关键区别: MagFace和AdaFace用图像质量代替难度,逻辑上存在偏差——一张清晰的大角度侧脸,图像质量高,但识别难度同样高。HAMFace直接用角度距离衡量难度,更加直接准确。

4.4 和JAMsFace的区别

上一篇JAMsFace的创新是:把角度和余弦两个空间的margin联合使用,并按类别做自适应。

HAMFace的创新是:按样本难度做自适应,粒度更细,且自适应依据从"类别样本数量"变成了"每个样本与类中心的角度距离"。

两篇论文解决的是不同侧面的问题:

  • JAMsFace关注的是类间不均衡(长尾分布)
  • HAMFace关注的是类内不均衡(同一类内的难易样本不均衡)

五、实验结果

HAMFace在9个基准数据集上进行了验证,覆盖跨姿态、跨年龄、混合变化和通用场景。

跨姿态(CFP-FP / CPLFW)

方法CFP-FPCPLFW
ArcFace 98.27 92.08
MagFace 98.46 92.87
IHEM 99.03 93.25
HAMFace 99.06 93.33

相比ArcFace,CFP-FP提升了0.79%,CPLFW提升了1.25%,在跨姿态场景改善明显。

跨年龄(CALFW / AgeDB-30 / CACD-VS)

方法CALFWAgeDB-30
ArcFace 95.45 98.15
AdaFace 96.02 98.17
HAMFace 96.27 98.45

混合变化(IJB-B / IJB-C,TAR@FAR=1e-4)

方法IJB-BIJB-C
ArcFace 94.25 95.65
MagFace 94.51 95.97
HAMFace 95.04 96.46

通用基准(LFW / MegaFace)

方法LFWMegaFace
ArcFace 99.83 81.03
CurricularFace 99.80 81.26
HAMFace 99.87 81.54

六、超参数分析

论文做了两个关键超参数的消融实验:

超参数 $t$(控制自适应margin的幅度)

$t$LFWCFP-FPAgeDB-30
0(=ArcFace) 99.42 95.23 94.27
0.10 99.45 96.91 94.48
0.20 99.53 97.13 94.60
0.25 99.40 96.71 94.55

$t=0$ 时完全退化为ArcFace,随着 $t$ 增大性能提升,但过大会导致训练不稳定,最优值为 $t=0.20$。

超参数 $m$(基础固定margin)

实验表明 $m=0.5$ 效果最佳,与ArcFace的推荐值保持一致。


七、总结

HAMFace的核心思想一句话概括:

不用图像质量,不用类别数量,直接用样本与类中心的角度距离来衡量难度,然后给难正样本分配更大的自适应margin,把它们"挤"回类中心。

方法的简洁之处在于:整个设计就是在ArcFace的基础上,把固定margin $m$ 替换成了动态margin $m(x) = m + t \\cdot h(x) \\cdot s(x)$,实现简单,但效果显著。

HAMFace的亮点:

  • 自适应粒度:样本级别(比类级别更细)
  • 自适应依据:识别难度而非图像质量(更直接)
  • 方法简洁:无需特殊网络结构,即插即用
  • 场景通用:一个模型统一应对跨姿态、跨年龄、混合变化等多种场景

局限性:

  • 自适应依据($\\theta_{y_i}$)的合理性有一定假设:角度大 = 样本难,这在某些场景下可能不完全成立
  • 引入了新的超参数 $t$,需要额外调参

赞(0)
未经允许不得转载:171主机测评 » 【论文阅读21】HAMFace:用“难易程度“自适应Margin,统一解决人脸识别的类内变化问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址