【人脸识别中的“类内差异”和“类间差异】

【人脸识别中的“类内差异”和“类间差异】

核心问题:人脸识别中的“类内差异”和“类间差异”

想象你在教一个小朋友认人:

类间差异(不同人之间的区别):

目标:让小朋友能分清“爸爸”和“妈妈”。方法:指着爸爸说“这是爸爸”,指着妈妈说“这是妈妈”。对应DeepID1:只用SoftmaxLoss训练模型分类,模型只学会“爸爸和妈妈是不同的人”。 类内差异(同一个人的不同状态):

问题:如果爸爸换了发型、戴上口罩,小朋友可能认不出来了(因为训练时没见过这种样子)。对应DeepID1的缺陷:模型没学过“同一个人不同照片的特征要相似”,所以容易误判。

DeepID1为什么不够好?

场景1:同一人误判(类内差异大)

例子: 训练时只有爸爸的正面照,测试时输入爸爸的侧脸照。

DeepID1可能输出:“这不是爸爸”(因为侧脸特征和正面特征差异大)。本质:模型没被要求“爸爸的不同照片特征必须接近”。

场景2:不同人误判(类间差异小)

例子: 训练时没有“双胞胎”数据,测试时遇到双胞胎兄弟。

DeepID1可能输出:“这两人是同一个人”(因为特征偶然接近)。本质:模型只保证已知类别分得开,但无法处理未知类别的相似性。

DeepID2的改进:加一个“验证老师”

DeepID2在SoftmaxLoss(分类老师)基础上,新增了一个验证Loss(L2/L1 Loss),相当于第二个老师:

SoftmaxLoss老师:

负责教模型“分清不同人”(类间差异)。比如:“爸爸和妈妈的特征距离要远”。 L2/L1 Loss老师:

负责教模型“同一个人的不同照片要相似”(类内差异)。比如:“爸爸的正面照和侧脸照的特征距离要近”。

实际效果对比

情况DeepID1(只有Softmax)DeepID2(Softmax + L2/L1)同一人的不同照片可能误判为不同人(特征差异大)更可能正确识别(特征被强制接近)不同人的相似照片可能误判为同一人(特征偶然接近)更可能正确区分(类间差异被保持)

再举个栗子🌰

假设人脸特征是“身高”:

DeepID1:

只要求“爸爸身高>180cm,妈妈身高<160cm”(类间差异)。但爸爸有时穿鞋(+5cm)、有时光脚(-5cm),模型可能把穿鞋和光脚的爸爸当成两个人。 DeepID2:

额外要求“爸爸的身高波动必须小”(类内差异),比如强制穿鞋和光脚的身高差<3cm。同时保持“爸爸和妈妈的身高差>20cm”(类间差异)。

总结

DeepID1:单任务(分类),可能“粗心大意”。DeepID2:双任务(分类+验证),既“火眼金睛”又“心细如发”。关键:通过联合优化,模型在未知数据(如新角度、新表情)上更鲁棒。

类似生活中:不仅要学会区分苹果和橘子(类间差异),还要知道“青苹果和红苹果都是苹果”(类内差异)。

相关推荐

不知道如何定盘?总有一种方法适合你!
oa.house365.com

不知道如何定盘?总有一种方法适合你!

📅 06-28 👁️ 6723
历届世界杯会徽(logo)赏析
oa.house365.com

历届世界杯会徽(logo)赏析

📅 06-27 👁️ 2467
火影忍者究极冲击全人物使用技巧
oa.house365.com

火影忍者究极冲击全人物使用技巧

📅 06-30 👁️ 5775