一种基于双分支特征增强的伪造人脸检测方法

文档序号:37145020发布日期:2024-02-26 16:57阅读:19来源:国知局
一种基于双分支特征增强的伪造人脸检测方法

本发明涉及人脸检测,具体涉及一种基于双分支特征增强的伪造人脸检测方法。


背景技术:

1、随着人工智能和计算机视觉技术的快速发展,一些换脸的开放软件和移动应用程序在社交网络上迅速流行起来,任何人都可以快速的创建虚假图像和视频,这是一把双刃剑,一方面可以对很多行业有积极的用途,包括电影、游戏和娱乐等各种商业领域,另一方面不法分子滥用、冒用、恶意利用伪造人脸信息进行违法行为,严重侵犯了个人隐私,影响了公共安全乃至国家安全。目前常用的伪造人脸检测方法主要是基于空间特征的检测方法和基于时空特征融合的检测方法,然而这些方法在现实世界部署时,面对不可见的攻击会出现性能下降等问题。


技术实现思路

1、本发明为了克服以上技术的不足,提供了一种检测准确性高的基于双分支特征增强的伪造人脸检测方法。

2、本发明克服其技术问题所采用的技术方案是:

3、一种基于双分支特征增强的伪造人脸检测方法,包括如下步骤:

4、a)获取n帧人脸图像,得到人脸图像集x,x={x1,x2,...,xi,...,xn},xi为第i张人脸图像,i∈{1,...,n};

5、b)获取第i张人脸图像xi的左眼关键点及右眼关键点

6、c)对第i张人脸图像进行预处理,得到人脸rgb图像

7、d)将人脸rgb图像转换为频域图像

8、e)将人脸rgb图像输入到efficientnet-b4模型中,输出得到低级纹理特征fr,将频域图像输入到efficientnet-b4模型中,输出得到低级纹理特征ff;

9、f)建立特征增强模块,将低级纹理特征fr输入到特征增强模块中,输出得到噪声增强的特征将低级纹理特征ff输入到特征增强模块中,输出得到噪声增强的特征

10、g)建立网络卷积注意力模块,将噪声增强的特征输入到网络卷积注意力模块中,输出得到特征将噪声增强的特征输入到网络卷积注意力模块中,输出得到特征

11、h)建立虚假检测模块,将特征与特征输入到虚假检测模块中,输出得到特征f″″ch;

12、i)根据特征f″″ch得到人脸检测结果。

13、进一步的,步骤a)包括如下步骤:

14、a-1)利用cv2包中的videocapture函数从faceforensics++数据集中等间距选取m帧图像;

15、a-2)利用dlib库中的get_frontal_face_detector函数对每帧图像进行人脸检测,如果该帧图像不包含人脸,则跳过该帧选取下一帧图像,如果该帧图像包含多个人脸,则利用retinaface算法计算该帧图像中每个人脸的置信度,选取置信度最高的人脸作为该帧的人脸图像,得到n帧人脸图像构成的x,x={x1,x2,...,xi,...,xn}。

16、进一步的,步骤b)中同dlib库中的shape_predictor函数计算得到第i张人脸图像xi的左眼关键点及右眼关键点进一步的,步骤c)包括如下步骤:

17、c-1)计算眼关键点和右眼关键点的坐标平均值,得到眼睛的中心坐标

18、c-2)根据眼睛的中心坐标利用match库中的atan2函数计算得到两眼中心连线相对于水平线的旋转角度θ;

19、c-3)根据旋转角度θ利用cv2库中getrotationmatrix2d函数计算得到仿射矩阵rm;

20、c-4)根据仿射矩阵rm利用cv2库中warpaffine函数对第i张人脸图像xi进行放射变换,得到对齐后的人脸rgb图像r为实数空间,c为通道数,h为人脸rgb图像的高度,w为人脸rgb图像的宽度。进一步的,步骤d)包括如下步骤:

21、d-1)通过numpy库中的array函数将人脸rgb图像转换为numpy数组d-2)通过numpy库中的astype函数将numpy数组中的像素值转换为浮点数并进行归一化处理,得到浮点数的数组d-3)通过pytorch中的torch.tensor()函数将浮点数的数组转换为张量

22、d-4)通过pytorch中的torch.fft.fft2()函数将张量转换为频域图像

23、进一步的,步骤f)包括如下步骤:

24、f-1)特征增强模块由rgb流特征增强模块rfem、频域流特征增强模块ffem构成;f-2)rgb流特征增强模块rfem由高斯滤波单元、双边滤波单元、prelu单元构成,将低级纹理特征fr输入到高斯滤波单元,通过cv2库中的gaussianblur函数对低级纹理特征fr进行高斯滤波,得到降低空间噪声的特征将特征输入到双边滤波单元中,通过cv2库中的bilateralfilter函数对特征进行双边滤波得到增强优化的特征将特征输入到prelu单元中,利用torch库中的prelu激活函数对特征增加噪声的振幅,得到增强的特征将增强的特征与低级纹理特征fr进行相加操作,得到噪声增强的特征

25、f-3)频域流特征增强模块ffem由sobel滤波单元、随机噪声增加单元、leakeyrelu激活函数构成,将低级纹理特征ff输入到sobel滤波单元中,利用sobel滤波器对低级纹理特征ff进行卷积操作,得到优化的特征将优化的特征输入到随机噪声增加单元中,利用pytorch中的torch.randn_like()函数生成随机噪声将随机噪声与低级纹理特征ff进行相加操作,得到特征将特征输入到leakeyrelu激活函数中,输出得到噪声增强的特征

26、进一步的,步骤g)包括如下步骤:

27、g-1)网络卷积注意力模块由通道注意力模块、空间注意力模块构成;

28、g-2)网络卷积注意力模块的通道注意力模块由全局平均池化层、全局最大池化层、第一卷积层、第一batchnorm层、relu函数、第二卷积层、第二batchnorm层、sigmoid函数构成,将噪声增强的特征输入到通道注意力模块的全局平均池化层中,输出得到特征将特征输入到通道注意力模块的全局最大池化层中,输出得到特征将特征与特征进行相加操作,得到特征将特征输入到通道注意力模块的第一卷积层中,输出得到特征将特征输入到通道注意力模块的batchnorm层中,输出得到特征将特征输入到通道注意力模块的relu函数中,输出得到特征将特征输入到通道注意力模块的第二卷积层中,输出得到特征将特征输入到通道注意力模块的第二batchnorm层中,输出得到特征将特征输入到通道注意力模块的sigmoid函数中,输出得到特征权重将特征权重与噪声增强的特征进行相乘操作,得到特征将噪声增强的特征输入到通道注意力模块的全局平均池化层中,输出得到特征将特征输入到通道注意力模块的全局最大池化层中,输出得到特征将特征与特征进行相加操作,得到特征将特征输入到通道注意力模块的第一卷积层中,输出得到特征将特征输入到通道注意力模块的batchnorm层中,输出得到特征将特征输入到通道注意力模块的relu函数中,输出得到特征将特征输入到通道注意力模块的第二卷积层中,输出得到特征将特征输入到通道注意力模块的第二batchnorm层中,输出得到特征将特征输入到通道注意力模块的sigmoid函数中,输出得到特征权重将特征权重与噪声增强的特征进行相乘操作,得到特征g-3)网络卷积注意力模块的空间注意力模块由全局平均池化层、全局最大池化层、卷积层、relu函数、batchnorm层、sigmoid函数构成,将特征输入到间注意力模块的全局平均池化层中,输出得到特征将特征输入到间注意力模块的全局最大池化层中,输出得到特征将特征与特征通过torch.cat函数拼接在一起,得到特征将特征输入到空间注意力模块的卷积层中,输出得到特征将特征输入到空间注意力模块的relu函数中,输出得到特征将特征输入到空间注意力模块的batchnorm层中,输出得到特征将特征输入到空间注意力模块的sigmoid函数中,输出得到特征权重将特征权重与特征进行相乘操作,得到特征c1为通道数,将特征输入到间注意力模块的全局平均池化层中,输出得到特征将特征输入到间注意力模块的全局最大池化层中,输出得到特征将特征与特征通过torch.cat函数拼接在一起,得到特征将特征输入到空间注意力模块的卷积层中,输出得到特征将特征输入到空间注意力模块的relu函数中,输出得到特征将特征输入到空间注意力模块的batchnorm层中,输出得到特征将特征输入到空间注意力模块的sigmoid函数中,输出得到特征权重将特征权重与特征进行相乘操作,得到特征c2为通道数。

29、进一步的,步骤h)包括如下步骤:

30、h-1)虚假检测模块由第一fdm-extra模块、第二fdm-extra模块、第三fdm-extra模块、leaky relu函数、fdm-end模块、relu函数构成;

31、h-2)将特征与特征在通道维度上进行拼接操作,得到新的综合特征fch,fch∈r(c1+c2)×h×w;

32、h-3)虚假检测模块的第一fdm-extra模块由第一卷积层、第一batchnorm层、leakyrelu函数、第二卷积层、第二batchnorm层构成,将新的综合特征fch输入到第一fdm-extra模块的第一卷积层中,输出得到特征将特征输入到第一fdm-extra模块的第一batchnorm层中,输出得到特征将特征输入到第一fdm-extra模块的leaky relu函数中,输出得到特征将特征输入到第一fdm-extra模块的第二卷积层中,输出得到特征将特征输入到第一fdm-extra模块的第二batchnorm层中,输出得到特征将特征与新的综合特征fch进行残差连接,得到增强的特征f′ch;

33、h-4)虚假检测模块的第二fdm-extra模块由第一卷积层、第一batchnorm层、leakyrelu函数、第二卷积层、第二batchnorm层构成,将增强的特征f′ch输入到第二fdm-extra模块的第一卷积层中,输出得到特征将特征输入到第二fdm-extra模块的第一batchnorm层中,输出得到特征将特征输入到第二fdm-extra模块的leaky relu函数中,输出得到特征将特征输入到第二fdm-extra模块的第二卷积层中,输出得到特征将特征输入到第二fdm-extra模块的第二batchnorm层中,输出得到特征将特征与增强的特征f′ch进行残差连接,得到增强的特征f″ch;

34、h-5)虚假检测模块的第三fdm-extra模块由第一卷积层、第一batchnorm层、leakyrelu函数、第二卷积层、第二batchnorm层构成,将增强的特征f″ch输入到第三fdm-extra模块的第一卷积层中,输出得到特征f″ch1,将特征f″ch1输入到第三fdm-extra模块的第一batchnorm层中,输出得到特征f″ch2,将特征f″ch2输入到第三fdm-extra模块的leaky relu函数中,输出得到特征f″ch3,将特征f″ch3输入到第三fdm-extra模块的第二卷积层中,输出得到特征f″ch4,将特征f″ch4输入到第三fdm-extra模块的第二batchnorm层中,输出得到特征f″ch5,将特征f″ch5与增强的特征f″ch进行残差连接,得到增强的特征f″′ch;

35、h-6)将增强的特征f″′ch输入到虚假检测模块的leaky relu函数中,输出得到特征f″′ch1;

36、h-7)虚假检测模块的fdm-end模块由第一卷积层、batchnorm层、leaky relu函数、第二卷积层构成,将特征f″′ch1输入到fdm-end模块的第一卷积层中,输出得到特征f″′ch2,将特征f″′ch2输入到fdm-end模块的batchnorm层中,输出得到特征f″′ch3,将特征f″′ch3输入到fdm-end模块的leaky relu函数中,输出得到特征f″′ch4,将特征f″′ch4输入到fdm-end模块的第二卷积层中,输出得到特征f″′ch5,将特征f″′ch5与特征f″′ch1进行残差连接,得到增强的特征f″′ch6;

37、h-8)将特征f″′ch6输入到虚假检测模块的relu函数中,输出得到特征f″′ch。进一步的,步骤i)包括如下步骤:

38、i-1)将特征输入到全局平均池化层中,输出得到特征将特征输入到全连接层中,输出得到特征f″′outr;

39、i-2)将特征输入到全局平均池化层中,输出得到特征将特征输入到全连接层中,输出得到特征f″′outf;

40、i-3)将特征f″′outr、特征f″′outf、特征f″′ch进行拼接操作,得到最终的真伪特征fout;

41、i-4)将最终的真伪特征fout输入到全连接层中,输出得到特征f′out,将特征f′out输入到sigmoid函数中,输出得到输出结果0或1,结果为0时表示第i张人脸图像xi为虚假人脸,结果为1时表示第i张人脸图像xi为真实人脸。

42、本发明的有益效果是:利用了rgb图像和细粒度的频域信息,在每一条分支上分别应用了特征增强模块和网络卷积注意力模块来去除一些无用特征增强与伪造相关的特征,同时为了使模型只关注图像的局部区域,较少地关注全局信息,进一步增强所需要的特征,提出虚假检测模块,以指导模型关注局部伪影区域进一步增强伪造特征并作出最后的预测。本发明方法使用对未知数据集上的虚假人脸检测,检测的准确性明显优于其他方法,模型的泛化性更强。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1