人脸图像要求
活体检测和人脸搜索调用的效果,取决于你所提交图像的质量。本页汇总了采集规则、Verifik 实际执行的分数阈值,以及你可能收到的具体拒绝原因,便于你在上线前调整采集界面。
本页适用于活体检测端点(/liveness、/liveness-score)、人脸搜索端点(/search、/search-live-face、/search-active-user、/search-crops)以及人脸比对端点(/compare、/compare-live、/compare-with-liveness)。SmartEnroll 内部采用同样的规则,因此本指南同样有助于提升开户流程的完成率。
这些端点的详细文档以英文提供:Liveness Detection、Face Search (1:N)。
活体检测图像要求
活体检测比单纯的人脸比对更为严格。为确保高分辨率打印件、面具和视频回放无法绕过校验,提交的画面必须同时满足以下全部条件:
- 图像中只能有一张主要人脸。该人脸必须完整出现在画面内,且完全无遮挡地展现。不允许裁切。背景中的小面积人脸不予考虑。
- 可处理的人脸框最小尺寸为 224x224 像素。
- 人脸框与图像边界之间的留白至少为 25 像素。
- 双瞳之间的距离至少为 80 像素。
- 面外旋转角度(人脸俯仰角和偏航角)不得超过 ±30 度。
- 不支持鱼眼镜头和佩戴墨镜的图像。
违反上述任一规则的画面,会在评分之前就以质量原因被拒绝。这与分数过低是不同的结果,值得在界面中区别处理:质量问题用户可以通过重新采集解决,而分数过低意味着画面本身可用,但未被判定为真人。
呈现攻击检测
Verifik 的人脸活体检测采用呈现攻击检测(PAD),已通过 iBeta Level 2 认证,并符合 ISO 30107-3。底层引擎在覆盖打印照片、屏幕与视频回放以及 3D 面具的 iBeta Level 2 攻击集上,报告的呈现攻击分类错误率(APCER)为 0%。
阈值
Verifik 在识别引擎之上执行自己的阈值,因此下列数值才是真正约束你请求的数值。
活体检测
| 行为 | 取值 |
|---|---|
| 参数 | liveness_min_score |
| 默认值 | 0.6 |
| 可接受区间 | 0.5 – 1.0 |
| 通过规则 | liveness_score > liveness_min_score(严格大于,而非大于等于) |
| SmartEnroll 默认值 | 0.65,可按项目流程配置 |
请注意通过规则是严格比较。阈值为 0.6 时,分数恰好为 0.6 属于未通过,而非通过。
底层引擎将 >= 0.5 判定为真人。Verifik 的默认值 0.6 有意更为严格,而 0.5 的下限意味着你无法配置比引擎本身更宽松的阈值。有一个例外:/compare-live 将该下限提高到 0.52。
人脸搜索
| 参数 | 是否必填 | 默认值 | 区间 |
|---|---|---|---|
min_score | 是 | 无 — 必须自行传入 | /search 为 0.2 – 1.0,实时人脸变体为 0.5 – 1.0 |
search_mode | 是 | 无 — 必须自行传入 | FAST 或 ACCURATE |
max_results | 否 | 10 | 最多 100 |
结果按相似度分数降序返回,且仅包含高于 min_score 的条目。分数是介于 0 和 1 之间的数值,1 表示完全匹配,0 表示完全不匹配。
有两处 Verifik 的特性容易被忽略。其一,min_score 没有默认值:若省略,请求会以 409 MissingParameter 失败,而底层引擎本会套用 0.81。其二,search_mode 为必填且在引擎中没有对应项:若要以延迟为代价换取更高精度,请使用 ACCURATE;若更看重响应速度,请使用 FAST。
拒绝原因
当采集因质量原因被拒绝时,响应会带回一个稳定的原因代码。每个代码都对应上文中某项具体要求,便于你向用户展示有针对性的纠正提示,而不是笼统的失败信息。
| 原因 | 违反的要求 | 建议向用户展示的提示 |
|---|---|---|
no_face_detected | 一张完整可见的人脸 | 请在光线充足的环境中将面部置于取景框内 |
multiple_faces_detected | 仅一张主要人脸 | 请确保画面中只有你本人 |
face_occluded | 无遮挡、完整展现的面部 | 请取下遮挡面部的物品,例如口罩、眼镜或帽子 |
face_close_to_border | 与边界保持 25 像素留白 | 请稍向后退,并将面部置于取景框中央 |
face_not_centered | 与边界保持 25 像素留白 | 请将面部对准取景框中央 |
face_too_far | 224x224 人脸框、瞳距 80 像素 | 请让摄像头靠近一些,使面部占据更大画面 |
face_too_close | 不得裁切、与边界保持 25 像素留白 | 请让摄像头稍微远离一些 |
face_rotation_too_large | 俯仰角和偏航角 ±30 度 | 请正视摄像头并保持头部端正 |
poor_lighting | 完整可见的面部 | 请移至光线更明亮处,并避免身后有强光 |
另有两个原因并非采集问题:
liveness_failed— 画面可用并已完成评分,但分数未达到阈值。响应中会带回分数,便于你展示。liveness_error— 校验因无法归因于采集的原因未能完成。请按可重试情形处理。
数据处理
活体检测或搜索调用属于一次性判定,不会将人脸登记进任何集合。因此,仅提交给 /liveness 或 /search 的人脸,绝不会出现在后续的搜索结果中。若需让某张人脸可被搜索,请通过 /person 端点显式注册。
不过 Verifik 会保留每次调用的审计记录 —— 分数、结果、所套用的阈值以及请求元数据 —— 以便事后仍可核验结果并进行计费。提交的图像本身是否保留则取决于具体产品:通过 SmartEnroll 采集的图像会作为开户记录的一部分留存,而直接发送至公开活体检测和搜索端点的图像,在请求处理完成后不予保留。
说明
- 建议在界面中区分质量拒绝与分数拒绝。质量拒绝应配合具体提示、引导用户立即重试;分数拒绝则是真实的否定结果。
- 各项要求以人脸框的像素数为准,而非整幅图像。即便是 4K 照片,若人脸宽度只有 100 像素,仍不满足
224x224的规则。 - 人脸框一旦超过最小标准,提交更大的图像并不会改善结果。请优先保证良好光照以及居中的正面姿态,而非单纯提高分辨率。
- 若你的用户使用桌面网络摄像头,质量拒绝会比移动端更多:低分辨率摄像头经常产生低于最小标准的人脸框。