基于局部二值模式和深度学习的合成人脸图像取证方法与流程

文档序号:20953513发布日期:2020-06-02 20:16阅读:197来源:国知局
基于局部二值模式和深度学习的合成人脸图像取证方法与流程
本发明属于机器学习和图像取证
技术领域
,具体涉及一种基于局部二值模式和深度学习的合成人脸图像取证方法。
背景技术
:近年来,计算机视觉技术,深度学习技术的快速发展使得人脸图像的编辑和合成变得越来越容易,在丰富人们娱乐生活的同时,媒体上充斥着的大量虚假合成人脸也给公众带来了信任危机。一旦虚假的人脸图像被恶意使用,如制造假新闻误导公众,利用合成人脸进行身份识别,或在法庭上作为伪证,歪曲事实等,会导致严重的后果。然而现在合成技术的进步使得合成图像越来越逼真,人们依赖肉眼已经无法准确判断一张图像的真伪了。因此自动识别人脸图像的真伪模型的研究受到了研究人员的关注。尽管目前一些研究人员针对某种特定技术的合成人脸,提出了一些解决方案,比如对于face2face人脸合成技术,一些研究人员提出小波变换统计矩特征或是srm残差特征来描述自然真实图像和合成图像之间的差异,但是检测结果不太稳定,且在多媒体中图像常以压缩后形式传输,对于压缩后的图像,基于这些特征方案的检测性能下降明显;又如对于现在流行的gan人脸生成技术,研究人员利用真实自然人脸和生成人脸在rgb、hsv、ycbcr三种颜色空间上的颜色不匹配特点,提取共生矩阵作为特征来区分这两种人脸,或者利用一些目标识别神经网络像resnet,xception等来区分真实人脸和虚假人脸。但是这些方法中传统图像统计矩特征只能针对特定图像合成技术手段生成的图像进行检测,一般的神经网络模型庞大,网络结构复杂,训练难度大且训练时间长。这些方法都难以满足合成人脸取证所需的通用性及高效性特点。因此寻找一种简单,高效,准确,通用的合成人脸取证模型具有重要的现实意义。技术实现要素:有鉴于此,本发明的主要目的在于提供一种基于局部二值模式和深度学习的合成人脸图像取证方法。为达到上述目的,本发明的技术方案是这样实现的:本发明实施例提供一种基于局部二值模式和深度学习的合成人脸图像取证方法,该方法为:采集真实人脸图像和合成人脸图像并且进行标注,创建人脸图像取证样本图库,并将图像库划分成训练集,验证集,测试集三个部分;根据提取的人脸图像的局部二值模式lbp特征确定lbp算子模式及采样半径;构建人脸取证卷积神经网络模型、及设置卷积神经网络训练超参数,模型包括人脸图像特征提取模块和特征分类模块,根据分类模块中的逻辑回归得到评价分数,根据损失函数及数据标签与评价分数更新特征提取模块中的网络参数;通过训练集和测试集训练神经网络获得训练模型,通过所述训练模型检测输入人脸图像是真实自然人脸还是合成人脸。上述方案中,所述将图库划分成训练集,验证集,测试集三个部分,具体为:将图像数据集分成两部分,一部分作为测试样本集,另一部分作为图像数据库;从所述图像数据库中取出一部分作为训练样本集,一部分为验证集;每个样本均包括一张图像及对应的类别标签。上述方案中,所述根据提取的人脸图像的局部二值模式lbp特征确定lbp算子模式及采样半径,具体为:所述lbp算子采用均值模式的lbp,采样半径为1,即在该像素点3×3邻域内的8个点可产生8bit的无符号数,即得到该点的lbp值,并用这个值来反映该区域的纹理信息。上述方案中,所述构建人脸取证卷积神经网络模型,具体为:所述神经网络由卷积层、池化层、全连接层组成;所述卷积层由3×3卷积核,深度可分离卷积结构depthwiseseparableconvolution,以及1×1卷积核构成,所述卷积层采用激活函数为relu函数,所述池化采用最大池化。上述方案中,所述人脸取证卷积神经网络模型中,网络参数w,偏置b,激活函数为relu,则通过网络的人脸图像的评价分数s:s=σ(wt*s+b)(3)σ(x)=max(0,x)(4)其中,s为每层隐含层入的特征向量,σ(x)为relu激活函数。上述方案中,所述卷积神经网络采用为交叉熵损失函数为网络损失函数来估计目标图像预测值和其标签t的偏差;单次训练结束后根据损失函数,利用随机梯度下降算法sgd更新神经网络的参数。上述方案中,所述通过训练集和测试集训练神经网络获得训练模型,具体为:训练模型时,将训练集图像进行lbp算子处理,得到的lbp图谱分批送入网络,进行前向传播,然后将经过该网络计算后得到的损失用反向传播算法调整网络权重,学习卷积网络参数,迭代一定次数后得到训练模型。与现有技术相比,本发明对输入图像先进行lbp特征提取,减小送入神经网络的特征维度,并构建一种轻量级的卷积神经网络,减小网络训练复杂度。本发明提供了一种通用的合成人脸取证方法,能快速高效的检测现阶段常见的合成人脸图像。附图说明图1为本发明整体流程示意图;图2为本发明人脸lbp图谱示意图;图3为卷积神经网络模型示意图;图4为训练过程损失值示意图;图5为各种不同合成人脸在训练模型下测试结果示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明实施例提供一种基于局部二值模式和深度学习的合成人脸图像取证方法,如图1-5所示,该方法通过以下步骤实现:s1:收集并划分数据集具体地,本发明实施采用的真实自然人脸图像数据集为公开的celeba-hq高清人脸数据集,该数据集包含拥有超过200k名人图像,我们随机选取了10000张用于构建真实人脸数据集。合成人脸图像数据采用了多种技术生成人脸,具体的,分别利用公开的训练好的stargan,pggan,stylegan等图像生成模型各生成10000张合成虚假人脸,另外合成人脸数据集还包含计算机图形学技术face2face生成的人脸,该合成人脸源于公开的faceforensics数据集,我们随机选取了10000张作为face2face合成人脸图像库。将所有的图像大小统一为256×256。总体上真实人脸图像数据集包含10000张名人图像,为正样本。合成人脸图像数据集包含基于4类技术的虚假人脸,stargan,pggan,stylegan,和face2face,每类合成人脸各10000张,共40000张合成人脸,为负样本。具体实施时,数据集以8:1:1比例划分,8/10作为训练集,1/10作为验证集,余下1/10作为测试集。s2:提取人脸图像的局部二值模式lbp特征具体地,本发明实施采用的采样半径为1,即p=8,表示在计算某个像素lbp值的时候,会用到邻域的8个像素,并且最后得到的lbp值也会编码为8比特的整数值。这样产生的lbp码有256种,采用lbp等价模式后,lbp码由原始的256种减少为59种,特征向量的维数更少。实施时直接调用python语言skimage库中的local_binary_pattern函数将人脸图像转化为二进制图谱,附图2给出了提取的lbp图谱示例。采用的lbp是一种有效的纹理描述算子,度量和提取图像局部的纹理信息,对光照具有不变性,在图像分析,人脸识别等领域表现十分优异;lbp算子由它和它邻域像素值比较得出其中,(hc,vc)为中心像素的坐标,p为邻域的第p个像素,ip为邻域像素的灰度值,ic为中心像素的灰度值,u(x)为符号函数。对于半径为r的圆形区域内含有p个采样点的lbp算子将会产生2^p种模式。在实际图像中,绝大多数lbp模式的二进制码最多只包含两次从1到0或从0到1的跳变。本发明采用等价模式的lbp来对原始lbp算子的模式种类进行降维。“等价模式”指如果某个lbp所对应的循环二进制数从0到1或从1到0最多有两次跳变时,该lbp所对应的二进制就称为一个等价模式类。如00000000(0次跳变),00000111(只含一次从0到1的跳变),10001111(先由1跳到0,再由0跳到1,共两次跳变)都是等价模式类。除等价模式类以外的模式都归为另一类,称为混合模式类。这种模式的二进制码种类大大减少,而不会丢失任何信息。模式二进制码数量由原来的2p种减少为p(p-1)+2种,其中p表示邻域集内的采样点数。s3:构建人脸取证卷积神经网络模型具体地,人脸取证卷积神经网络模型中,网络参数w,偏置b,激活函数为relu,则通过网络的人脸图像的评价分数s:s=σ(wt*s+b)(3)σ(x)=max(0,x)(4)其中,s为每层隐含层入的特征向量,σ(x)为relu激活函数。附图3为构建的卷积网络模型,可以看到模型包含主干上有两个普通的卷积层,四个深度可分离的卷积层,前三个深度可分离的卷积层后面均连接着一个最大池化层,最后一个深度可分离的卷积层后面连接着一个全局平均池化层,另外还有一个全连接层。主干上卷积核尺寸和最大池化层尺寸均为3×3,每个卷积层后进行批归一化batchnorm操作,输出归一化为n(0,1)的高斯分布,提高模型的鲁棒性,加快网络的收敛速度。并且利用relu激活函数进行非线性映射。另外支干上有三个1×1卷积层;其中卷积层特征图数量依次为16,32,64,128,256。网络最后用一个dense层将提取到的256维向量映射为2个分数值,模型最终的结果将判为分数值高的那一类。模型各层结构配置分别如表1所示。在本发明目的是构建一个轻量级的神经网络来提取特征和分类,构建的模型中采用深度可分离卷积depthwiseseparableconvolution可大量减少网络参数,缩短训练时间,同时在网络主干旁边使用1×1卷积核直接将低层提取的特征传输到深层。该设计增强了特征的复用,训练时误差信号可以更直接地传输到浅层,从而加快了网络的收敛速度。s4:设置网络的训练的超参数具体地,采用crossentropyloss作为损失函数,随机梯度下降算法sgd更新神经网络的参数,学习率learning_rate为0.001,batch_size设为16,训练40个周期。s5:训练神经网络模型具体地,利用安装在ubuntu系统上的pytorch环境训练cnn模型。训练模型时,将训练图像分批送入网络,进行前向传播,然后将经过该网络计算后得到的损失用反向传播算法调整网络权重,学习卷积网络参数,迭代一定次数后得到训练后的合成人脸取证模型。本实例对四种不同类型的合成人脸训练的损失值如附图4所示。将训练好的模型保存,之后可以直接加载检测输入人脸图像是真实自然人脸还是合成人脸。s6:评估训练模型对各种合成人脸的检测性能评估模型性能时,先将真实自然人脸和四种合成人脸图像进行lbp处理,形成lbp图谱,然后分别以1:1比例送入训练好的模型中,来验证模型对于各种合成人脸图像的检测性能。性能的评估采用检测准确率和模型参数量两个参数,性能评估结果图如附图5。表1layerconfigurationoutput(channels,rows,cols)conv1c=16,k=3,s=2,p=0(16,127,127)conv2c=32,k=3,s=2,p=0(32,63,63)1*1conv1c=64,k=1,s=2,p=1(64,32,32)depthwiseconv1c=32,k=3,s=1,p=1(32,63,63)pointwiseconv1c=64,k=1,s=1,p=0(64,63,63)maxpool1k=3,s=2,p=1(64,32,32)1*1conv2c=128,k=1,s=4,p=0(128,16,16)depthwiseconv2c=64,k=3,s=1,p=1(64,32,32)pointwiseconv2c=128,k=1,s=1,p=0(128,32,32)maxpool2k=3,s=2,p=1(128,16,16)1*1conv3c=256,k=1,s=8,p=1(256,8,8)depthwiseconv3c=128,k=3,s=1,p=1(128,16,16)pointwiseconv3c=256,k=1,s=1,p=0(256,16,16)maxpool3k=3,s=2,p=1(256,8,8)depthwiseconv4c=256,k=3,s=1,p=1(256,8,8)pointwiseconv4c=512,k=1,s=1,p=0(256,8,8)globalaveragepool(1,1)(512,1,1)densel=2(2,1,1)以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1