朋友做行政,年会前要把员工合影里的人跟证件照对上号,问有没有能直接出相似度的软件。他试了某在线网站,传两张照片回来一个 0.83,他不确定这数字算高还是低。

0.83 这个分数不能跨平台比

各家阈值都是自己定的。Face++ 的比对接口返回 0 到 100,官方建议 60 以上算同一个人;百度人脸比对给的是 0 到 1,一般 0.8 以上判定通过;腾讯云也差不多。同一对照片换一家,分数就变了,别拿 A 家的 0.83 去套 B 家的标准。

先分清 1:1 和 1:N

1:1 是「这两张是不是同一人」,验证身份用。1:N 是「这张脸在库里排第几」,考勤、找重复照片用。N 越大误识别越多,几万人的库必须配活体检测,否则拿张照片就能过。

能直接上手的几个选择

  • CompreFace:开源,docker 一条命令起服务,自带网页界面上传比对,离线可跑。
  • InsightFace:Python 库,模型准,适合自己写脚本批量跑。
  • 云 API:百度、腾讯、阿里都有,按调用次数计费,不用管模型和显卡。

本地跑一段最小代码:

from deepface import DeepFace; print(DeepFace.verify(img1_path='a.jpg', img2_path='b.jpg'))

证件照和生活照的差距

同一个人,正脸证件照和侧脸逆光自拍,相似度能掉到 0.6 以下。角度超过 30 度、戴帽子口罩、强逆光,都会让特征提取跑偏。要做批量匹配,尽量让两边照片的光线和姿态接近,先做人脸检测裁出对齐后的人脸再比对,准确率能上一个台阶。

别把照片随便往在线站上传

人脸属于敏感个人信息,个人信息保护法里按生物识别信息单独管。员工照片拿去比对,得先说明用途并取得同意。图省事传给来路不明的免费网站,风险不在技术层面。

结论:临时比对几张,用开源的 CompreFace 本地部署最省心;要接进业务系统、量又大,走云 API 更划算。分数只作参考,最终阈值按自己业务的实际样本调。