AI 扫脸测试

同一张脸,两个扫脸工具为什么给出不同分数

一张照片丢进两个扫脸 App,分数能差二十点。差别来自关键点数量、归一化分母、训练数据和滤镜,文末给一套在家就能跑的对比方法。

发布 更新
扫脸准确度面部关键点AI 面部分析对比测试

先说结论

同一张照片,丢进两个扫脸 App,分数差二十点很正常。两个 App 都没坏。分数不是你脸上的某种属性,而是一条流水线的输出,而流水线的每一段都埋着选择题。选择题换了答案,数字就变了。

其中三个选择决定了大部分差距:量的是脸上哪些点、这些测量值除以什么、以及得到的比值落在 App 自己那把尺子的哪个位置。还有第四个,大多数人根本不会想到——它发生在 App 看到画面之前。

1. 它们量的不是同一批点

扫脸模型都建立在关键点方案上,而这些方案彼此并不通用:

差别在哪儿?拿鼻宽举例。68 点方案里只有两个鼻翼点和一段距离;468 点网格上,鼻子附近有好几对候选点,公式挑哪一对,量出来的宽度就差几个百分点。下颌宽同理:密集网格最外侧的那个脸颊点,和 68 点方案里的下颌角,根本不是同一个解剖位置。两个 App 都可以老老实实写着"下颌宽",量的却是你脸上不同跨度的两段。

点多不等于更准。网格越密,公式可选的余地越大,也就越容易和隔壁工具对不上。

2. 每个比值都需要分母,而它们挑的分母不同

像素距离本身没有意义——分辨率一变、离镜头远近一变、裁剪切法一变,数字就跟着变。所以所有工具都会把原始距离除以某个东西,变成比值。常见的分母有四种:

分母表现
瞳距跨裁剪稳定,但对眼角检测很敏感
包围盒宽度受头发、耳朵和背景抠图影响
颧骨宽最接近"脸宽",但这个点本身很软、会漂
眉到下巴的高度随表情和下颌姿态变化

两个 App 可以量出完全相同的鼻翼跨度,却报出不同的"鼻宽比",原因只是一个除以颧骨宽、另一个除以包围盒。如果包围盒把你的头发也算进去,分母变大,所有比值一起变小——整齐地变小。这就是为什么你什么都没变,整张脸的分数却掉了。

有个好用的判别法:换发型数字会动、换表情数字不动,那它多半用的是包围盒当分母。

3. 训练数据不是中立的

关键点模型是从标注照片里学出来的,学过哪些照片,决定了它在哪些脸上准。Google 公开的 Face Mesh 说明里提到训练集约三万张图像。不管具体构成如何,没有任何一个数据集能同等代表所有人群。这个领域公认的薄弱环节也很一致:极端头部角度、暗光、眼镜/胡须/头发遮住面部,以及在标注集里出现较少的肤色。

落到实际使用中,就是一个你看不见的误差。下颌角偏两三个像素,在预览里根本看不出来,但换算成比值就是实打实的变化,而这个比值后面会被映射到 0–100,斜率还挺陡。输入端一点点错,输出端一大截差。

同一个 App、同一个人,换盏灯分数就变,也是这个道理。那不是"状态不好",是检测器置信度在动。

4. 模型跑之前,画面已经被改过一遍

多数手机摄像头在任何 App 拿到画面之前就已经处理过一帧:磨皮、色调映射,有的还会直接重塑脸型。这带来两个后果。

第一,磨皮抹掉了关键点模型用来找边缘的纹理梯度——唇线、双眼皮褶、鼻翼两侧。关键点开始漂。

第二,重塑改变了几何形状本身。模型随后测的是被重塑过的那张脸,而且测得很准。它没错,只是喂给它的输入已经不是你。

一个读原始相机缓冲的 App,和一个读已经处理过的预览画面的 App,就算算法一模一样,结果也会不一样。

5. 最后一步是设计出来的,不是测出来的

就算关键点相同、分母也相同,数字还是会不同,因为把比值变成分数是一次设计决策。常见写法是:取比值 r,夹在最小值与最大值之间,线性映射到 0–100。端点一挪,所有分数跟着挪。

A 工具的 70 分可能意味着"区间中段、略高于平均";B 工具的 70 分可能意味着它自己样本里的前 10%。这些端点没有对齐任何外部标准,只是让分布在一两百张测试图上看起来合理。

所以绝对分数没法跨 App 比较。排序稍微能比一点,但也只在相似的一小撮脸之间成立。

一套你真的能跑起来的对比

诀窍是把自己这个变量去掉。一张打印出来的照片是物理常量:几何一样、光线一样,每一次都一样。

  1. 选一张清晰的正脸照,用哑光纸打印,高度约 15 厘米。
  2. 贴在墙上,与眼睛同高。用一盏灯从正面打光,拉上窗帘。
  3. 用每个工具扫这张打印件,间隔十分钟扫两次,两个数字都记下来。
  4. 再用真人自拍重复一遍:距离 60 厘米,镜头与眼睛同高,关掉滤镜。
  5. 列一张表:工具、打印件分数、自拍分数、差值。

怎么读这张表:

拿五张脸比排序,是唯一能跨过"刻度不同"这道坎的比法。绝对数字不通用,排序有时通用。

如果你发现波动主要来自自己这一端,先把输入固定下来:自拍角度指南 讲了距离、镜头高度和光线;脸型分析器 则适合用来验证——同一张照片连传两次,看同一条流水线会不会自己跟自己打架。

那你拿到的分数该怎么看

以上这些不会让测试变得不好玩,只会让它变得可读。两个 App 对你的脸意见不一致时,这个不一致是关于 App 的事实——它们的关键点、分母、训练集、刻度——不是关于你的事实。在认真对待一张截图之前,知道这一点挺重要。

常见问题

同一张照片,为什么两个 App 分数不同?

关键点方案不同、同一个比值用了不同分母、训练数据不同、最终刻度的端点不同。其中任何一条,都足够让分数差出十分。

分数高的那个更准吗?

不是。这里根本没有一个"真值"可供对准。分数高通常只说明它的刻度锚点更低,或者它的公式正好奖励了你身上的某个特征。

哪种关键点数量最准?

没有统一答案,要看任务。68 点成熟、便宜;468 或 478 点覆盖密集,适合做形状分析。准确度主要来自训练集和它跟你拍摄条件的匹配程度,而不是点数本身。

试试免费的扫脸测试

15 个纯娱乐测试。上传一张自拍拿到分数,然后按它值得被认真的程度对待它。

打开测试