一种人脸活体检测方法及装置
文献发布时间:2023-06-19 11:29:13
技术领域
本发明涉及人工智能领域,更具体的说,是涉及一种人脸活体检测方法及装置。
背景技术
目前,人脸识别技术已广泛应用于各个行业和领域,而人脸识别技术中的人脸活体检测,一直是人脸识别技术中的研究重点。
目前人脸活体检测方法主要可以分为两类,一类是基于纹理特征的方法,另一类是基于时间的方法。其中基于纹理特征的方法是从人脸图像中的纹理信息来判断活体和非活体。基于纹理信息获取方式又可分为传统方法和深度学习方法。传统方法需要手工设计特征提取方法,基于深度学习的方法不需要人为设计特征,它依靠深度学习模型强大的学习能力自动提取特征完成人脸活体检测任务。基于时间的方法主要从连续帧中获得时间线索做人脸活体检测。基于时间的方法早期是需要捕获视频帧中嘴的动作,眼睛的动作(眨眼)来判断活体和非活体,近年来有更加通用的方法获得视频中更加有效的时间线索,比如基于CNN-LSTM的方法。
通常来说,基于纹理的人脸活体检测方法使用单帧人脸图像做活体检测,速度相对较快,但提取的特征比较局限,在复杂场景下容易出错;基于时间的方法是用视频(连续多帧)做人脸活体检测,检测精度较高,但速度相对较慢。
发明内容
有鉴于此,本发明提供如下技术方案:
一种人脸活体检测方法,包括:
构建活体检测模型,所述活体检测模型的卷积层包括第一卷积处理与线性映射处理的结合;
将待检测人脸图像输入所述活体检测模型,得到输出值;
基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果。
可选的,所述活体检测模型的卷积层包括中心差分卷积与线性映射的串联处理。
可选的,所述构建活体检测模型,包括:
获取数据集,并将所述数据集划分为训练数据集和验证数据集;
搭建数据模型,所述数据模型的卷积层包括第一卷积处理与线性映射处理的结合;
初始化所述数据模型;
基于所述训练数据集对所述数据模型进行训练,得到活体检测模型。
可选的,所述数据模型的训练终止条件为所述数据模型的损失函数的输出小于第一设定值或训练轮数达到第二设定值。
可选的,在所述得到活体检测模型后,还包括:
采用所述验证数据集对所述活体检测模型进行验证,确定活体检测阈值。
可选的,所述采用所述验证数据集对所述活体检测模型进行验证,确定活体检测阈值,包括:
将所述验证数据集输入所述活体检测模型得到的所有输出结果归一化为0到1之间的数值;
设置N个阈值,统一每一个所述阈值下的活体检测率,所述阈值的取值处于0到1的区间之中,所述N为正整数;
将活体检测率最大的所述阈值确定为活体检测阈值。
可选的,所述基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果,包括:
在所述输出值小于所述活体检测阈值的情况下,确定所述待检测人脸图像对应的对象为非活体;
在所述输出值大于或等于所述活体检测阈值的情况下,确定所述待检测人脸图像对应的对象为活体。
一种人脸活体检测装置,包括:
模型构建模块,用于构建活体检测模型,所述活体检测模型的卷积层包括第一卷积处理与线性映射处理的结合;
输出确定模块,用于将待检测人脸图像输入所述活体检测模型,得到输出值;
结果确定模块,用于基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果。
可选的,所述活体检测模型的卷积层包括中心差分卷积与线性映射的串联处理。
可选的,所述模型构建模块包括:
数据集获取模块,用于获取数据集,并将所述数据集划分为训练数据集和验证数据集;
模型搭建模块,用于搭建数据模型,所述数据模型的卷积层包括第一卷积处理与线性映射处理的结合;
初始化模块,用于初始化所述数据模型;
模型训练模块,用于基于所述训练数据集对所述数据模型进行训练,得到活体检测模型。
经由上述的技术方案可知,与现有技术相比,本发明实施例公开了一种人脸活体检测方法及装置,方法包括:构建活体检测模型,所述活体检测模型的卷积层包括第一卷积处理与线性映射处理的结合;将待检测人脸图像输入所述活体检测模型,得到输出值;基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果。上述实现方案中的卷积处理采用卷积处理和线性映射处理结合的方式,既能提取人脸图像中利于活体检测的有效特征,提高活体精度,也具有运算量小,模型轻量的特点,因此采用该方案可以在保证人脸活体检测精度的同时可使得人脸检测速度更快。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种人脸活体检测方法的流程图;
图2为本发明实施例公开的构建活体检测模型的流程图;
图3为本发明实施例公开的人脸活体检测模型结构示意图;
图4为本发明实施例公开的活体检测模型的训练流程示意图;
图5为本发明实施例公开的一种人脸活体检测装置的结构示意图。
具体实施方式
为了引用和清楚起见,下文中使用的技术名词的说明、简写或缩写总结如下:
人脸识别:判断当前人脸是谁,即判断人脸的身份。
人脸活体检测:判断当前获得的人脸是来自活体(真人),还是来自非活体(如照片,视频,3D头模,头套伪装,真人戴面具)等。
Face Anti-Spoofing:简称FAS,人脸防欺骗,人脸活体检测的另一种叫法。在人脸活体检测中通常用real表示活体,fake表示非活体。
CNN:卷积神经网络,深度学习方法的一种。
CDC:中心差分卷积。
CDCN:一种人脸活体检测模型。
ghostnet:一种通用分类模型。
FAR:一种评价人脸活体检测效果的指标,把非活体检测成活体的数量除以所有非活体的总数量。
LSTM:Long Short-Term Memory的简称,是一种时间循环神经网络。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请实施例可以应用于电子设备,本申请对该电子设备的产品形式不做限定,可以包括但并不局限于智能手机、平板电脑、可穿戴设备、个人计算机(personalcomputer,PC)、上网本等,可以依据应用需求选择。
图1为本发明实施例公开的一种人脸活体检测方法的流程图,参见图1所示,人脸活体检测方法可以包括:
步骤101:构建活体检测模型,所述活体检测模型的卷积层包括第一卷积处理与线性映射处理的结合。
具体的,所述活体检测模型的卷积层可以包括中心差分卷积与线性映射的串联处理。关于其中的串联,即将中心差分卷积的处理结果作为线性映射的输入。
本申请实施例中,构建的活体检测模型将原始的卷积层做了转变处理,转变后的卷积层中将第一卷积处理与线性映射处理进行结合,使得人脸活体检测能够同时具有第一卷积处理方式和线性映射处理的优点。本申请对第一卷积处理方式并不做固定限制,其可以是任何已有的具有较好实现效果的卷积处理方式,如CDC。
在后面的实施例中,将对构建活体检测模型的具体实现做详细说明,在此不再过多介绍。
步骤102:将待检测人脸图像输入所述活体检测模型,得到输出值。
本实现需要将待检测人脸图像进行数据化处理,才能够实现对其是否为活体的判断。在活体检测模型构建完成后,可以将其投入线上使用。本实施例中,活体检测模型的输出可以为一个数值。
步骤103:基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果。
其中的活体检测阈值可以是在活体检测模型验证阶段,基于验证结果确定的阈值,具体实现将在后续实施例中详细介绍。
本实施例所述人脸活体检测方法,其卷积处理采用卷积处理和线性映射处理结合的方式,既能提取人脸图像中利于活体检测的有效特征,提高活体精度,也具有运算量小,模型轻量的特点,因此采用该方案可以在保证人脸活体检测精度的同时可使得人脸检测速度更快。
上述实施例中,构建活体检测模型的过程可以参见图2,如图2所示,构建活体检测模型可以包括:
步骤201:获取数据集,并将所述数据集划分为训练数据集和验证数据集。
步骤202:搭建数据模型,所述数据模型的卷积层包括第一卷积处理与线性映射处理的结合。
步骤203:初始化所述数据模型。
步骤204:基于所述训练数据集对所述数据模型进行训练,得到活体检测模型。
所述数据模型的训练终止条件可以但不限制为为所述数据模型的损失函数的输出小于第一设定值或训练轮数达到第二设定值。
为了更好的理解上述实现,下面将对构建活体检测模型的背景技术和具体实现做详细介绍。在下面的介绍中,第一卷积处理以CDC为例,线性映射处理以ghost卷积(一种卷积处理方法)为例。
对于原始卷积操作提取特征,和用ghost卷积代替原始的卷积操作提取特征,ghost在一般的分类任务上具有速度快,精度高的优点,ghost卷积原理如下:
假定原始的卷积层操作如下:
Y=X*f+b (1)
(1)式中*表示卷积运算操作符,X∈R
ghost卷积操作如下:
Y′=X*f′ (2)
y
(2)式中Y′∈R
(4)式中d表示线性运行核的大小,与卷积核的大小k类似。d≈k。
原始卷积与ghost卷积FLOPs之比:
原始卷积与ghost卷积参数之比:
由(5)式和(6)式可以看出将原始卷积运算变成ghost卷积运算可以减少FLOPs和运算所需的参数,即是可以提高模型的运算速度并且使模型更加轻量化。
CDC卷积操作的原理如下:
将原始的卷积表示成:
(7)式中,x表示输入特征(featuremap),w表示卷积核,p
中心差分卷积(CDC)可表示成:
(8)式中心差分卷积相当于输入特征在与卷积核做卷积运算之前,每一个位置减去了中心位置处的输入,再卷积计算。
结合传统卷积和中心差分卷积得到CDC卷积模块:
结合上述内容,本申请实施例所述人脸活体检测方法的具体实现可以包括:
1.数据集准备
用数据采集系统采集各种场景(距摄像头的距离,光照条件,各种攻击模式,各种姿势角度等)下含人脸的图像,用人脸检测系统提取图像中的人脸图像,并根据是否活体将每张人脸图像贴上标签,活体是1,非活体是0。例如,分别随机取出35万张图像,总共70万张图像做为训练数据集,用于训练人脸活体检测模型;分别取出5万张图像,总共10万张图像作为验证集,用于确定模型分类阈值。
2.模型搭建
本发明提出了新的卷积操作ghost-CDC替换原始的卷积操作,ghost-CDC卷积操作的原理是鉴于原始卷积提取的特征之间具有很大的相关性,所以考虑将原始的一个卷积层替换成卷积层与线性映射的串联,可以在保证提取特征有效性的同时减少模型的运算量。结合ghost卷积操作和CDC卷积模块,可以得到新的卷积方式ghost-CDC,如下:
假设原始的卷积如(1)式所示,那么改进后的卷积ghost-CDC如下:
y
(10)式中Y′∈R
以ghost-CDC为基本卷积模块搭建深度学习人脸活体检测模型。人脸活体检测模型结构示意图如图3所示。
3.训练人脸活体检测模型
设置模型超参数,如初始学习率,最大训练轮数(epochs),θ等,定义损失函数,如把人脸活体检测看成分类问题,可用交叉熵损失函数,若把人脸活体检测看成回归问题,可用mse作为损失函数,指导模型更新。当损失函数的输出足够小或者训练达到最大训练轮数,结束模型训练。图4为本发明实施例公开的活体检测模型的训练流程示意图,可结合图4理解前述内容。
4.人脸活体检测模型分类阈值的确定
当人脸活体检测模型训练完成后,将验证集上所有数据输入训练完成的模型,得到所有的输出,并将所有输出的结果控制在0到1之间,从0开始,每增加1/10000的值作为阈值,并统计对应阈值下的活体检测率,获得活体检测率最大时所对应的阈值作为模型最终的活体检测阈值。当然,活体检测模型在确定阈值时阈值间隔和起始结束值也可以根据实际需求来确定。
基于前述内容,在所述得到活体检测模型后,还可以包括:采用所述验证数据集对所述活体检测模型进行验证,确定活体检测阈值,以便于后续确定检测结果使用。
基于前述内容,所述采用所述验证数据集对所述活体检测模型进行验证,确定活体检测阈值,可以包括:将所述验证数据集输入所述活体检测模型得到的所有输出结果归一化为0到1之间的数值;设置N个阈值,统一每一个所述阈值下的活体检测率,所述阈值的取值处于0到1的区间之中,所述N为正整数;将活体检测率最大的所述阈值确定为活体检测阈值。
当然,本申请实施例对于确定活体检测模型的活体检测阈值的实现并不做固定限制,例如,除上述实现外,还可以取在验证集上达到等错率时阈值作为最终的阈值,也可以取FAR等于特定值时的阈值等。
则所述基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果,可以包括:在所述输出值小于所述活体检测阈值的情况下,确定所述待检测人脸图像对应的对象为非活体;在所述输出值大于或等于所述活体检测阈值的情况下,确定所述待检测人脸图像对应的对象为活体。
本发明提出的人脸活体检测方法,对于人脸活体检测模型,用一种新的卷积方式ghost-CDC代替原始的卷积方式,用预先采集好的人脸活体训练数据集训练好模型后,在验证数据集上进行统计获得等错率下的分类阈值,将待检测人脸图像输入到训练好的模型,得到模型的输出,将模型的输出与阈值进行比较,当输出小于阈值,则待检测人脸图像为非活体,反之,则为活体。应用中也可以基于ghost-CDC搭建不同的网络模型结构,设置不同的参数来实现人脸活体检测。
上述实现鉴于深度学习模型提取的特征存在很大的相似性以及CDC在变化场景下能提取有效的人脸活体检测特征,结合ghostnet里的线性操作和CDCN里的CDC操作,得到ghost-CDC操作。用ghost-CDC操作替换原始人脸活体检测CNN模型里的卷积操作,可以提高人脸活体检测的精度和速度。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
上述本发明公开的实施例中详细描述了方法,对于本发明的方法可采用多种形式的装置实现,因此本发明还公开了一种装置,下面给出具体的实施例进行详细说明。
图5为本发明实施例公开的一种人脸活体检测装置的结构示意图,参见图5所示,人脸活体检测装置50可以包括:
模型构建模块501,用于构建活体检测模型,所述活体检测模型的卷积层包括第一卷积处理与线性映射处理的结合。
输出确定模块502,用于将待检测人脸图像输入所述活体检测模型,得到输出值。
结果确定模块503,用于基于所述输出值与预设的活体检测阈值的比较结果,确定活体检测结果。
本实施例所述人脸活体检测装置,其卷积处理采用卷积处理和线性映射处理结合的方式,既能提取人脸图像中利于活体检测的有效特征,提高活体精度,也具有运算量小,模型轻量的特点,因此采用该方案可以在保证人脸活体检测精度的同时可使得人脸检测速度更快。
一个实现中,所述活体检测模型的卷积层包括中心差分卷积与线性映射的串联处理。
一个实现中,所述模型构建模块包括:数据集获取模块,用于获取数据集,并将所述数据集划分为训练数据集和验证数据集;模型搭建模块,用于搭建数据模型,所述数据模型的卷积层包括第一卷积处理与线性映射处理的结合;初始化模块,用于初始化所述数据模型;模型训练模块,用于基于所述训练数据集对所述数据模型进行训练,得到活体检测模型。
一个实现中,所述数据模型的训练终止条件为所述数据模型的损失函数的输出小于第一设定值或训练轮数达到第二设定值。
一个实现中,模型构建模块还包括:模型验证模块,用于采用所述验证数据集对所述活体检测模型进行验证,确定活体检测阈值。
一个实现中,模型验证模块具体用于:将所述验证数据集输入所述活体检测模型得到的所有输出结果归一化为0到1之间的数值;设置N个阈值,统一每一个所述阈值下的活体检测率,所述阈值的取值处于0到1的区间之中,所述N为正整数;将活体检测率最大的所述阈值确定为活体检测阈值。
一个实现中,结果确定模块具体可用于:在所述输出值小于所述活体检测阈值的情况下,确定所述待检测人脸图像对应的对象为非活体;在所述输出值大于或等于所述活体检测阈值的情况下,确定所述待检测人脸图像对应的对象为活体。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
- 人脸活体检测模型的训练方法、人脸活体检测方法及装置
- 人脸活体检测方法和装置、人脸活体检测设备及介质