首页 / AI 实验室 / 把人脸验证装进浏览器:6.5MB 模型实现门禁级 1:1 比对
视觉识别实战 · 2026-09

把人脸验证装进浏览器:6.5MB 模型实现门禁级 1:1 比对

视觉识别实战 2026-09 阅读约 7 分钟
人脸验证涉及敏感生物信息,最理想的隐私设计是照片根本不上传。我们用 face-api.js 在浏览器本地完成人脸检测与对齐,仅上传对齐后的人脸小图,服务端用 ArcFace 模型做 1:1 比对。本文记录架构设计与两个关键踩坑。

架构:浏览器检测对齐,服务端比对

face-api.js(TensorFlow.js)提供三个轻量模型:人脸检测 190KB、68 关键点 90KB、特征提取 6.3MB。前两个在浏览器完成人脸检测与关键点定位;按双眼参考点做相似变换,裁出 112×112 的标准人脸小图上传;服务端用 InsightFace ArcFace(w600k_r50)提取 512 维特征,与白名单做余弦相似度 1:1 比对。

隐私效果:访客照片不离开浏览器,传输的仅是对齐后的人脸小图(比对完成即丢弃),满足最小化采集原则。

踩坑一:浏览器端模型的区分度天花板

我们最初把特征提取也放在浏览器(face-api.js 128 维特征),服务端只做比对。实测六张完全不同人的人脸,两两余弦相似度高达 0.79~0.91——无论阈值怎么设,陌生人都会被误判为白名单人员。

结论:face-api.js 的 128 维特征可以做人脸检测与对齐,但做不了可靠的跨人判别。判别必须交给服务端的工业级模型(ArcFace 512 维:同人 0.5~0.8,陌生人 <0.25,界线分明)。

踩坑二:对齐参考点偏移 14px 的代价

ArcFace 模型对输入人脸有严格的空间规范(双眼中心参考位约 y=51.6)。我们最初把双眼中心放在 y=66——仅 14px 的偏移,导致两个不同人的相似度虚高到 0.56(误通过),而修正为标准参考位后,同一个对比的相似度骤降到 0.12(正确拒绝)。

教训:做人脸特征比对,对齐环节的亚像素级精度都值得较真。

实测数据

同人验证(含亮度 +25%、旋转 4°、缩放 85% 变体):相似度 0.886~1.0,全部正确通过。陌生人:最高相似度 0.076,全部正确拒绝。检测+对齐在浏览器端毫秒级完成,服务端比对为常数开销。

有类似需求?

联系御码,获取与贵司业务匹配的技术方案与报价。

📞 18105711537