#how-it-works#guide

动物面相分析原理:从 478 个坐标点到条件比较

作者 WhatZoo 团队 · 发布于 2026年5月22日 · 更新于 2026年9月21日

实现核对 · 2026年9月21日

了解七项输入、必要条件、匹配数量、无候选时的再次比较,以及最高分并列时的随机选择。

人脸检测与动物分类是两个步骤

WhatZoo 在浏览器中用 MediaPipe Face Landmarker 获取 478 个人脸关键点。该模型不预测动物名称或性格。随后,应用比较预先编写的条件,选择动物名称。模型加载和处理时间取决于设备及网络环境。

代码使用的七项指标

当前 calculateMetrics 使用 x、y 坐标。距离是这两个轴上的欧氏距离,不使用 z 坐标进行深度分析。

  • 眼部倾斜值:(33 号 y − 133 号 y + 362 号 y − 263 号 y)× 100,不是以度为单位的角度。
  • 眼间距比: 33 号与 362 号的距离 ÷ 脸宽。
  • 脸部纵横比: 脸高 ÷ 脸宽。
  • 鼻宽比: 102 号与 331 号的距离 ÷ 脸宽。
  • 嘴宽比: 61 号与 291 号的距离 ÷ 脸宽。
  • 下巴比: 17 号与 152 号的距离 ÷ 脸高。
  • 微笑标记: 0 号和 17 号的平均 y,减去 61 号和 291 号的平均 y,判断结果是否大于 0.01。

脸宽取 234 号与 454 号的距离,脸高取 10 号与 152 号的距离。转换成比例仍不能消除角度、表情或遮挡的影响。这些不是医疗测量,也不表示经过验证的准确率。

比较候选的顺序

  1. 检查每个配置的必要条件,其中可能包含多个比较。
  2. 通过的候选得 1 分,每满足一项细节条件再加 1 分。目前每个配置最多三项细节条件。这是计数,不是加权或基于距离的相似度。
  3. 只有没有任何候选通过必要条件时,才忽略必要条件,对全部配置比较细节匹配数量。分数低本身不会触发这一步。
  4. 多个候选并列最高分时,用 Math.random 选一个。没有候选时使用默认配置。

例如 A 和 B 都通过必要条件与两项细节条件,各得 3 分。如果这是最高分,两者都有可能被选中。3 分不代表 75% 的相似度或性格准确率。

同一照片也可能出现不同结果

换照片可能改变坐标和条件匹配。即使测量值相同,最高分并列时也可能选出不同动物。因此不保证同一个人始终得到同一名称。层级用于内容分类,不衡量职业能力、性格或人的优劣。

应用不会为了这一步分类把分析照片和面部坐标发送到服务器。单人分析可能将结果动物 ID 发给统计 API,普通网站分析则独立运行。可在方法论和图鉴中查看指标与各动物的条件。