1.2 识别范式与整体流程


1.2 识别范式与整体流程

本节摘要:人脸识别不是一种单一操作,而是一组"识别范式"——一对一验证(核验你自称是谁)、一对多搜索(在海量库里找你是谁)、活体检测(确认眼前是活人而非照片)。本节把判断"该用哪种范式"的方法交给你,并把后续贯穿全书的七工位流水线一次排开,作为后面所有章节的空间坐标。

学习目标

阅读完本节,你应当能够:

  1. 说出一对一验证、一对多搜索、活体检测三者的目标与本性问题。
  2. 对照业务需要选对识别范式的组合。
  3. 复述流水线的七个工位及各自"进什么、出什么"。

一、问题与直觉

三年前给公司大楼装门禁,采购问你:"要验证还是搜索的?"你可能一时语塞——不都是刷脸吗?差别大了。门禁是"你说你叫张三,我核一下脸对不对",这叫验证,库可能就几百人;可如果是警方从一段监控里捞出一个身影,要在几百万人的库底里指出"这人姓甚名谁",这叫搜索,库是百万级。两者连评估指标都不同:验证关心"报销率"(让本人过,卡掉别人),搜索关心"能不能在头几名里找对人"。

再深一层还有第三种:无论是验证还是搜索,如果你遇到的设备抬起来的是张高清打印照片、一段翻拍的手机视频,模型一样会"放行"——因为它只看了"像不像",没看"是不是活的"。所以真正上线的系统,几乎都额外带一层活体检测,专门区别真人和伪造物。理解这三种范式,是选型的第一道分水岭。

二、核心原理:三种范式与一条流水线

验证、搜索、活体:三台不同的断案台

范式 你要回答 输入 规模 关心的指标
一对一验证 1:1 "他是不是他自称的人" 一张脸 + 一个待核身份 单条比对 误识率、正确接受率
一对多搜索 1:N "他是这堆人里的谁" 一张脸 + 整座库 万级到百万级 头 N 命中率、搜索耗时
活体检测 "这是不是活的" 一张脸画面 单张 防伪漏检率、拒绝率

验证的场景典型是手机解锁、刷脸支付、远程开户——你带着"我是我"的声明来,系统只做一道判断题。搜索的场景典型是安防追逃、海量库会员识别——系统主动从人群中指出身份。活体检测是个"守门员",在验证或搜索都发无忧时,负责把照片、视频、面具挡在门外。大多数系统是这三者按需叠起来的:比如"1:N 找人 + 活体防伪"的组合,在零售会员识别中很常见。

七工位流水线:整套技术的骨架

无论哪种范式,底层都跑在一条几乎固定的流水线上。别看它长,每段只干一件事,下一段的输入恰是上一段的输出。

  • 采集与预处理:拿到画面,去噪、调光、把色彩和尺度摊平,保证后段看得顺。
  • 人脸检测:确定"有没有脸、框在哪里、大概多大多角度"。
  • 人脸对齐:把检测框里歪着、偏着、大小不一的脸,摆成一个统一的标准网格(眼睛对准、鼻子居中)。
  • 特征提取:把对齐后的脸编码成一段向量——几百维的浮点数,就是第 1.1 节说的"身份签名"。
  • 特征比对:把新向量和库里注册过的向量逐一比较,算相似度/距离。
  • 判定与活体:分数对阈值,落在界内则认下,界外则拒绝;关键场景再加活体检测把关。

按识别范式,前四段几乎通用,差别主要出在比对段的策略和二段后的活体。这条流水线在第 2 章会被逐段拆开、填进原理,第 3、4 章再给每段配上算法与工程实现。先记住它,后面所有知识都能在这条线上找到落脚点。

为了让你直观感受"检测—对齐—特征—比对"在代码层是什么手感,下面给出一个演示性的最小化骨架(示意,非完整实现):

# 最小识别流水线的"分诊台"抽象 def step_detect(frame): return bboxes # 出一堆候选框 def step_align(bbox): return aligned # 摆正到标准网格 def step_embed(aligned): return vector # 压成身份签名 def step_match(vector, db): best, score = None, -1 for pid, ref in db.items(): s = cosine(vector, ref) # 比较方向 if s > score: best, score = pid, s return best, score db = {"alice": embed(align(detect(photo_a))), "bob": embed(align(detect(photo_b)))} query_vec = embed(align(detect(live_shot))) print(step_match(query_vec, db)) # 输出 (最接近的身份, 相似度分)

这段骨架的价值是把"七工位"压缩成四步可执行逻辑,并点出比对段的核心是"算相似度"。真实的工程远比这精细——检测要出多框、对齐要出 68 至 106 个关键点、特征要几百维、比对要上索引加速——这些分别在后面章节逐一展开。

三、工程实践要点

  • 选范式看"你是否有一个待核身份"。用户声称自己是 X,那就 1:1;你不知道他是谁,才用 1:N。
  • 1:N 的库一旦上百万,暴力逐条比对不可行,得上倒排索引+向量检索,这部分在第 4.5 节展开。
  • 活体检测永远别省在金融、门禁这类"冒充代价高"的场景,它决定了整道闸门的信用。

💡 关键直觉:验证是"判卷",搜索是"查档",活体是"验身"。三件事解决的问题不同,别指望同一个部署全部覆盖,也别把它们的指标混在一起写进一个验收报告。

⚠️ 常见坑:用验证场景的指标去验收搜索系统。1:1 的误识率再好看,也说明不了"在百万库里前 10 名找到人"有多难。

本节要点回顾

  • 三种范式:验证 1:1(核验身份)、搜索 1:N(调库查档)、活体(验明真身),可叠加组合。
  • 七工位:采集→检测→对齐→特征→比对→判定,末端按需接入活体。
  • 选型口诀:有待核身份用验证,不知道是谁用搜索,代价高必加活体。
  • 评估分离:验证、搜索、活体各有一套验收指标,不可混用。

这一章把总图立起来了。下一章就钻进流水线的第一个工位,从"图像到底是怎么送到检测前"讲起。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U