本节摘要:活体检测(Liveness Detection)回答一个比"你是谁"更先决的问题——"眼前这到底是不是一个活人"。它专门与照片、翻屏视频、打印面具这类伪造物对抗,是验证与搜索之外的第三道闸。本节讲清它为什么必要,梳理动作指令、打印检测、深度真伪判别与多模态四条路线,以及各自面对的攻击与成本。
想象最朴素的一次攻击:把印着陌生人脸的高清 A4 照片举到门禁摄像头前。前几节一路顺风——检测出框、对齐、提出特征、和库比对,余弦相似度给到 0.99,门开了。可你举的是张纸,不是人。问题出在哪?识别只验证了"这脸和注册脸像",从来没验证过"这是一张有呼吸的脸"。
这就是活体检测存在的理由:它不关心你是谁,只盯你别是假的——照片要有光照的呼吸、视频要有眨眼转头的连贯、面具要有弹性。为什么它躲不掉?因为"比对通过"只说明"像",而"活体通过"才加上了"是真的"。两者合起来,冒充者就必须同时过"像"和"活"两关,伪造成本一下被抬高不止一个量级。
最简单的一代是"指令互动"——让你眨眼、摇头、张嘴、左右转头。系统逐帧跟踪关键点,验证这些动作真实发生、顺序连贯。它挡得住静态照片,但有一个天生的裂缝:攻击者只要预录一段包含这些动作的视频就能骗过去,所以纯动作指令挡不住"活视频"。
动作指令的体验代价也高——每次都要真人配合做动作,双双抬了门槛。于是行业往"静默活体"走:不问指令,靠被动分析判断。
第二种思路盯"打印物的物理缺陷":屏摄有摩尔纹与屏幕呼吸,照片有交界高光与平面边缘,面具会有褶皱反光。通过分析纹理、边缘、光谱信息,能认出"这是一张纸或一块屏"的痕迹。它挡得住相当一部分静态攻击,但遇到高质量打印或视频直出就捉襟见肘。
现代活体主要是深度学习二分类:喂一组人脸帧,网络学习"真实活人脸"与"照片/视频/合成脸"在纹理、光照一致性、微动等维度上的分布差异。它关注去重影、眼神细微游移、皮肤反光模式这类"不太好伪造"的细节,配上中心化检测框、多角度对照,能扛较高等级的翻拍攻击。代价是它本身需要大量真实攻击样本来训练,数据渠道是隐形成本。
最硬核的场景同时用多路信号——红外相机抓的肤色热成 RGB 互补,深度相机抓的 3D 几何能识别"打印物是平的、面具是空的"。多模态活体几乎把"伪造一张同时骗过多路信号的脸"的成本抬到高不可攀,代价是需要专门传感硬件与更高算力。
# 活体的"闸门语义":给一组帧,判真伪二分类 def liveness(frames): feats = [encoder(f) for f in frames] # 每组帧编码 prob = predictor(pool(feats)) # 判出"是真人的概率" return low_pass := prob > 0.8 # 到底给不给过
这段示意说明它在系统的位置:像流水线末端一道独立闸门,拿到帧序列输出"真/假",只是判断的维度不是身份,而是生机。
| 活体路线 | 挡得住 | 挡不住 | 成本 |
|---|---|---|---|
| 动作指令 | 静态照片 | 预录动作视频 | 低,需用户配合 |
| 打印检测 | 相纸/屏摄痕迹 | 高质量打印、视频直出 | 中 |
| 深度真伪判别 | 照片、视频、合成脸 | 极逼真的 3D 高仿 | 中高,需数据 |
| 多模态叠闸 | 单路伪造几乎全被拦 | 骗过多路信号的高仿 | 高,需专用硬件 |

路线没有通吃,靠"叠"。命门是别让攻击者只钻一路的空子。
一句话直觉:活体和识别分成两道闸。识别赌"像",活体赌"真",两道都过才算数;缺一道,冒充的杠杆就被留给了攻击者。
选哪一级活体,本质是算"攻防成本"这笔账。一张打印照的攻击成本几乎为零,所以哪怕最低端的场景也不该裸奔;但要挡住 3D 面具、深度合成,防守投入就直线上升,既要专用硬件,又要海量攻击数据。实践的判断原则是:让"成功伪造一次"的代价,高过"伪造者能预期的收益"。手机解锁这种低频低价值交互,动作+深度的轻方案就够;金融、门禁这种要么钱要命的高价值闸门,才值得砸多模态——多花在防伪上的每一块钱,都要对应到"一次被成功冒充会损失多少"。
评测活体比评测识别更容易自欺,一道过硬的评测要做四件事:第一,攻击集要够"真"——必须放真实打印照、翻拍视频、3D 面具,而不是只在纯真人样本上跑;第二,攻击集要与训练集严格分开,防止模型"记住"了攻击样本;第三,要分场景测,手机弱光、闸机逆光对活体的影响不同,别拿一个场景的成绩代表全部;第四,报指标要同时给"真人通过率"和"攻击拦截率",两者缺一,活体的成色就说不清。记住那句反直觉的话:一套只在美观样本上显威的活体,往往在对真实攻击时原形毕露。
一个常见的工程诱拐:既然识别准确率这么高,能不能让识别顺带把伪造也判了?答案是别。识别网络学的是"像不像登记过的人",它天生没有"这个动作是真的还是演出来的"这种标签;你指望它看穿一张打印照,等于让考官看见照片就放行——它根本没学这个任务。活体的职责必须由专门的活体模块(动作、打印检测、真伪判别、多模态)承担,和识别各司其职、两道闸都过才算数。
到这一步,一条流水线从像素走到了"身份+真凭"的双重结论。下一章,我们把这条链上每个工位的"算法内脏"一件件拆出来给你看。