工业级静默活体检测开源算法技术解析(小视科技分享)
视频链接: https://www.bilibili.com/video/BV1qZ4y1T7CH
相关背景
-
定义:无感鉴别镜头前人脸的真伪,人脸识别系统中尤为关键的安全屏障
-
应用场景:
- 高安全级别
- 刷脸支付
- 刷脸取款
- 人脸门禁
- 一般等级
- 门禁闸机
- 自助身份核验
- 互联网
- 专用设备
- 解锁,登录
- 考勤等其他刷脸设备
- 高安全级别
-
常见攻击手段:
- 电子屏幕攻击
- 2D打印攻击
- 局部无关置换
- 3D打印攻击
- 数据入侵
-
工业方案:
-
数据采集硬件
- RGB
- 双目
- 结构光
- 温感
-
算法输入
- 视频流
- 静态图/单帧
- 多模态(不止一种的输入)、
-
部署形式
- 云端
- 边端
-
任务定义
-
可行性前提
- 业务需要binary的判别结果(真/假)
- 真脸与假脸在成像机制上有区别
- 皮肤反光
- 屏幕发光
- 其他材质反光
- 可供判别的各种线索
- 摩尔纹
- 2D平面扭曲
- 光影异常(打印纸,屏幕反光)
- 边缘/边框等
- 其他人眼不可鉴别的线索
-
分类任务的挑战
- 类内扰动大(真脸,电子屏幕的人脸,2d与3d攻击放一起合计三类)
- 场景
- 攻击源
- senor等海量维度
- 类间相似度可能极高(攻击hardcase)
- 判别信息分散度高
- 摩尔纹
- 边框
- 畸变
- 光影
- 边缘设备算力十分有限
- 算法复杂度不能过大
- 算法复杂度不能过大
- 类内扰动大(真脸,电子屏幕的人脸,2d与3d攻击放一起合计三类)
-
任务的强约束
-
实时抓拍照(视频流)
- 不接受其他方式拍摄输入,不能让用户上传照片
- 无美颜等滤镜操作
-
不同尺度的不同model
-
限制抓拍照的像素区间
- 类VGA尺寸(640x480)
-
限定人脸抓取位置
- 加引导框
-
加入主动特殊光源
- 炫光活体
-
只适配特定传感器
-
算法实现
-
预处理方法
- 人脸检测
- 基于人脸box扩展 x2 x3
-
backbone网络
- mobeileFaceNet
- miniFasnetV1
- miniFasnetv2
-
注意力模块
- se模块
-
傅里叶辅助loss(7%-10%的提升)
- 正常人的频谱图片比较自然
- 照片的频谱图片比较规整
- 训练的时候使用辅助loss,infer的时候直接走softmax loss,不要辅助loss
-
多尺度融合
- 不同尺度训练的3分类模型
- 多模型进行融合
通过模型融合,让三者数据更容易区分开来
-
训练&测试
-
训练集
- 分类采样
- 量极大(1500w),维度复杂
- 经验上至少要达到百万级
-
测试集及指标
- FPR,控制FPR的大小
- TPR,保持高的TPR,用于用户的体验
- 速度
-
-
实验验证测试集指标的一致性
- 模拟真实场景进行实测
-
开源项目组件
- pytorch模型
- 预训练代码
- 训练脚本
- 安卓demo源码
部署建议
- 常见影响精度的因素
- 场景环境(真脸)
- 美颜等
- 口罩(真脸)
- sensor种类及isp处理
- 压缩裁剪等(不建议对图片进行裁剪 80-90k大小)
- 新的(逼真的)攻击手段(假脸)
- 工程应用逻辑
- 解决思路
- 建立场景测试集
- 基于测试集调整阈值
- 合理的设计业务使用逻辑(什么时候触发活体,多次活体,什么位置(三帧都成功才算成功))
- 基于场景数据进行定制训练(对特定数据进行再训练)
QA
-
数据量不大的情况下能做成活体吗?
- 至少百万级
-
任务的强约束
- 约束是需要的,不然end2end结果不太理想
-
通用模型与人脸的专用模型差异是否大
- 不太清楚
-
人脸裁剪怎么做的
- 基于人脸box,进行x2 x3的扩充
-
蒸馏的效果是否好
- 蒸馏的效果不错
-
数据增广
- 随机裁剪
- 像素扰动没有做(活体对像素比较依赖)
-
尝试过不同尺度的特征融合吗?
- 多个模型的融合
-
构建测试集的经验
- 测试集要大
- 符合真实场景(维度高,光线,硬件,环境,攻击case,fail case)
-
真实的人脸中有模糊的人脸需要丢掉吗?
- 使用人脸质量检测进行丢弃
-
硬件种类影响大吗?
- 影响大,需要多个摄像头拍摄
-
数据采集如何实施?
- 尽可能模拟真实场景,真脸就是多环境进行
-
模型融合如何做?
- 基于不同的尺度,使用效果比较好的尺度模型进行融合
-
公开的数据集是否有使用过?
- 不认同采集方法及设备,没有使用公开的数据集
- 比较依赖于实际场景
-
项目中是否使用强化学习?
- 使用过,但是效果不太理想
-
数据一定要使用数据流的帧
- 用户不能进行相关的操作
- 视频流中实时抓取的数据
-
RGB图像是否需要转化为灰度图再进行处理?
- 不建议转化为灰度图,对精度有影响