基于自动编码器的深度伪造图像检测方法

2021-11-05 01:29李昕洁董云云姚绍文
计算机应用 2021年10期
关键词:编码器函数图像

张 亚,金 鑫,江 倩*,李昕洁,董云云,姚绍文

(1.云南大学软件学院,昆明 650504;2.教育部跨境网络空间安全工程研究中心(云南大学),昆明 650504;3.阳明交通大学科技管理研究所,台湾新竹 300093)

0 引言

深度学习方法已经被广泛应用于很多领域,尤其是图像处理领域。基于深度生成模型的图像伪造方法大幅改善了生成图像质量,这种图像伪造方法被统一称为“Deepfake”,即“深度造假”。Deepfake 伪造图像主要采用两种方法:一种是通过编码器-解码器来生成,另一种是通过生成对抗网络(Generative Adversarial Network,GAN)[1]实现。Deepfake 可用于影视文化行业产生一定的商业价值,如在不进行重新拍摄的情况下为影视作品创建或更新片段;但也有可能被非法使用,对社会造成负面影响,如2017 年一个匿名的用户“DeepFakes”将《神奇女侠》中女主盖尔·加朵的脸移植到一部成人电影的女主身上,并上传到了Reddit交流社区,引起广泛关注[2]。

安全分析公司Sensity 的最新结果显示:自2018 年12 月以来,Deepfake 在线造假的数量大约每6 个月增加一倍。在2019 年中公开发布的14 678 个Deepfake 作品中,假色情视频占据了96%[3]。另外,Deepfake 被滥用于制作名人和政客虚假视频,可能会引起国家之间的政治或宗教关系紧张。此外,别有用心之人可以利用虚假视频欺骗公众影响一些国家的选举活动,或通过制造假新闻在金融市场上造成混乱[4]。Deepfake 甚至可用于伪造地球卫星图像,使其包含实际不存在的地物,达到欺骗或误导军事活动的目的,如在没有桥梁的河上伪造桥梁[5]。

随着图像生成方法越来越成熟,伪造图像变得越发简单。伪造逼真的图像通常只需要几张照片或简短视频即可,伪造图像可以达到“以假乱真”的效果。近两年来,研究高效、简便的伪造图像检测方法成为了一个热门的研究方向。

为了能够有效地识别Deepfake 伪造图像,很多检测方法相继产生。在频域上,Durall等[6]通过离散傅里叶变换提取图像频域特征,对Deepfake 人脸的伪造图像进行检测。在空域上,Mo 等[7]提出一种基于卷积神经网络(Convolutional Neural Network,CNN)的伪造图像检测方法,以监督学习的方式实现对深度伪造图像的检测,对高质量的大型人脸数据集(CelebFaces Attributes-High Quality,CELEBA-HQ)的伪造图像进行检测;Hsu等[8]提出了一种基于判别器的新的深度学习框架,对5 种传统的GAN 所生成的伪造图片进行检测;同时ResNet50[9]、Xception[10]以及InceptionV3[11]也被应用于伪造图像检测,并且可以取得不错的效果。综合分析,以上的检测方法都存在一定的局限性。首先,大部分检测方法需要大量的训练样本;其次,绝大多数的检测方法只是针对伪造的人脸图像进行检测,检测场景单一;最后,检测方法基本都存在着没有泛化能力或者泛化能力弱的问题。模型泛化性能的提升是Deepfake 检测任务中的一大难点,因此,本文通过对现有Deepfake 伪造检测方法的研究进展以及存在的不足进行分析,提出了一种基于自动编码器的伪造图像检测方法,并对多种方法伪造的图像进行检测。本文的主要工作有:

1)利用高斯滤波技术对图像进行预处理操作,提取图像的高频信息作为模型输入,并在自动编码器中添加注意力机制以提取有效特征,通过消融实验证明了预处理方法和添加注意力机制的有效性。

2)本文的损失函数是由重构损失和交叉熵损失两部分构成,在训练时可以加快模型的收敛。相较于其他模型方法,本文模型结构相对简单,是一个轻量级的检测模型。

3)所提方法可以检测多种生成模型伪造的图像,且数据集包含样本量小、场景丰富,检测的平均准确率可以达到97.10%,优于其他方法。此外,本文通过跨数据集实验验证了本文所用方法的泛化性能也优于其他方法。

1 图像伪造方法

本章对基于深度学习的图像伪造方法进行简要介绍,包括基于自动编码器和基于GAN的图像伪造方法。

1.1 基于自动编码器的图像伪造

自动编码器由一个编码器和一个解码器两部分构成,其中编码器对输入数据进行压缩以提取数据的潜在特征,解码器根据编码器提取的潜在特征进行重构使得数据尽可能接近编码器的输入数据。基于自动编码器的Deepfake 方法,可以在不同的人物之间进行换脸生成虚假图像和视频[5]。图1(a)为Deepfake 的训练过程,为了达到源图像和目标图像人脸交换的目的,需要两个编码器-解码器对,并且两个编码器之间共享两组输入图像的参数,在解码时分别使用不同的解码器对图像进行重构。图1(b)图像为伪造过程,其中将人脸A 的特征集与解码器B相连,可从原始人脸A重构人脸B。

图1 基于自动编码器的Deepfake换脸过程Fig.1 Deepfake face change process based on autoencoder

1.2 基于GAN的图像伪造

GAN 的主要思想源自博弈论,其包含生成器(Generator,G)和判别器(Discriminator,D)两部分[1]。目的是训练一个生成器,从随机噪声或者潜在变量(Latent Variable)中生成逼真的样本,同时训练一个鉴别器来鉴别真实数据和生成数据,两者同时训练,直到生成器生成的数据与真实样本十分接近,鉴别器也无法正确地区分生成数据和真实数据。GAN 的基本结构如图2所示。

图2 GAN基本结构Fig.2 Basic structure of GAN

GAN训练的目标函数公式为:

其中:E()表示分布函数的期望值;Pdata表示真实的数据分布;z为生成器网络G中的输入随机噪声;Pz表示随机噪声z的分布;D代表判别器。

原始GAN 生成的数据是不可控制的,条件生成对抗网络(Conditional GAN,CGAN)[12]采用为生成器引入限定条件的方式来控制其生成的数据,克服了GAN 生成数据不可控的缺点。后来渐进式增长生成对抗网络(Progressively growing GAN,ProGAN)[13]通过不断向低分辨率的生成器和判别器的网络中添加层,以提高图片的分辨率,生成高质量的图片。在ProGAN 的基础上提出的基于样式的生成器体系结构的生成对抗网络(Style-based generator architecture for GAN,StyleGAN)[14],通过添加样式模块来影响生成器的生成过程,在许多数据集上都取得了很好的效果,但StyleGAN 有一个最明显的缺陷:生成的图像有时包含斑点状的伪影。针对这一问题,在StyleGAN 基础上StyleGAN2[15]被提出,并成功地克服了这一缺点。星型生成对抗网络StarGAN[16]在生成器中采用星型网络结构以学习不同区域对之间的信息,可实现多对多图像翻译转换。基于空间自适应归一化的语义图像合成的生成对抗网络GauGAN[17]可在给定输入语义布局的情况下生成逼真图像。大规模生成对抗网络BigGAN[18]采用对先验分布噪声的适时截断和处理控制模型稳定性,并且可以通过增加2~4倍的参数量,使GAN获得最大的性能提升。

2 本文方法

本文提出了一种高效的伪造图像检测方法,其整体框架如图3 所示。该方法主要包括3 部分:第1 部分是借助高斯滤波对图像进行预处理,提取图像的高频信息作为模型输入;第2 部分是采用一种结合注意力机制的自动编码器提取图像特征;第3部分是采用三层全连接(Fully-Connected layer,FC)网络对图像真伪进行分类。该模型主要通过编码器和三层全连接网络对预处理后的图像进行特征提取,在训练时通过重构损失和交叉熵损失优化模型参数;在测试时,对预处理后的图像通过编码器和全连接层输出检测结果。

图3 本文方法整体框架Fig.3 Overall framework of the proposed method

2.1 图像预处理

Deepfake 伪造的图片肉眼难辨,但对图像中的高频信息部分却不能取得很好的生成效果,因此本文对源图像进行预处理,提取图像的高频信息作为模型的输入。

高斯滤波可对图像邻域内像素进行平滑,其根据邻域内不同位置的像素赋予不同权值,在进行平滑的同时能够保留更多图像总体灰度分布特征。高斯滤波是一种线性平滑滤波,适用于消除高斯噪声。本文先用高斯滤波获取图像低频信息,再从原图中除去低频信息以提取图像高频信息,算法1是预处理步骤。

算法1 图像预处理算法。

输入 源图像im。

过程:

2.2 自动编码器

本文采用自动编码器结构,包含编码器和解码器两部分。本文在编码器中添加注意力机制模块以提取更多有效信息,该注意力机制是采用Hu 等[19]提出的Squeeze-and-Excitation网络块来实现。一般卷积层的输出只是针对各个通道做卷积,没有考虑通道之间的依赖性。而该网络块对特征通道之间的依赖关系进行建模,自动获取特征通道的重要程度,然后依照重要程度提升对当前任务作用较大的特征并抑制作用较小的特征,使网络在特征提取时可以充分利用有效特征。

图4为Squeeze-and-Excitation 网络块整体的结构。如图4所示,给定信息在进入网络模块前,首先进行如下卷积操作:Ftr:X→U,X∈RW'×H'×C',U∈RW×H×C,Ftr表示卷积操作符;然后对其进行Squeeze操作和Excitation操作。

图4 Squeeze-and-Excitation网络块Fig.4 Network block of Squeeze-and-Excitation

Squeeze 操作 将全局空间信息压缩为一个值,即利用平均池化层将大小为W×H的C个特征图转化为1×1大小的C个特征图,计算式为:

其中:zC代表对第C个特征图Squeeze 操作得到的值;uC(i,j)表示在第C个特征图中位置(i,j)处的值。

Excitation 操作 学习并根据通道依赖程度对不同的特征图进行调整,包含两个全连接层,计算式为:

其中:σ(·)是进行线性激活函数操作;g(·)是sigmoid 激活函数。

最后,生成权重后即可加到不同的通道上,计算式为:

图5为本文提出的自动编码器结构,编码器包含6个卷积模块,其中,除了第1个模块之外,其余5个模块中在卷积层之前都添加了Squeeze-and-Excitation 网络块,即图5 中的SEBlock;同样,也是除第1 个模块之外,其余5 个模块中在卷积之后都添加了批量归一化(Batch Normalization,BN)层,所采用的激活函数都是线性整流函数(Rectified Linear Unit,ReLU)。该模型的解码器由5 个模块组成,每个模块都采用反卷积层,并且激活函数除了最后1 个模块采用的是双曲正切函数(Hyperbolic Tangent,tanh)激活函数,其余4 个模块均采用ReLU 激活函数。在对图像分类时,本文采用3层全连接层,每层神经元的数量分别是512、256 和2,除了最后1 层采用归一化指数函数(Normalized exponential function),softmax激活函数外,其余2层均采用ReLU激活函数。

图5 自动编码器结构Fig.5 Autoencoder structure

表1为图像进行特征提取的模型结构细节。

表1 数据特征提取网络结构Tab.1 Data feature extraction network structure

2.3 损失函数

本文所提损失函数由两部分组成,分别是重构损失和交叉熵损失,整体伪造检测模型的损失函数为:

其中:α=β=0.5;α、β分别是交叉熵损失Lce和重构损失Lre的权值。

2.3.1 交叉熵损失

伪造图像检测是一个二分类问题,交叉熵(Cross Entropy)可用于度量两个概率分布间的差异性信息。因此,本文采用交叉熵损失函数为:

其中:l是真实图像的标签,p是真实图像的预测概率值。

2.3.2 重构损失

重构损失可使解码器的输出与输入模型样本更接近,本文采用L1损失函数度量自动编码器输入和输出数据的差异,该损失函数为公式为:

其中:y是模型输入的值,是重构得到的值。

3 实验与结果分析

本文实验平台为Windows 10 操作系统,模型训练测试时采用2080 Ti 显卡,搭配Inter Core i7-8700k 3.70 GHz 处理器,32 GB内存,所有代码在Tensorflow框架下实现。

3.1 数据集

为了评估本文所提方法的有效性,本文选取文献[20]测试集中采用的ProGAN、StyleGAN、BigGAN、StarGAN、GauGAN、StyleGAN2、Deepfake、级联优化网络(Cascaded Refinement Network,CRN)和隐式最大似然估计框架(Implicit Maximum Likelihood Estimation framework,IMLE)这9 种方法的伪造图像作为数据集,在每一种数据集中,真实图像和伪造图像各占50%。图6 为本文所用测试集中部分伪造图像,数据集涵盖人脸、水果、动物等生活常见物品以及自然场景。

图6 测试集中部分伪造图像Fig.6 Some fake images in test sets

表2 为数据集样本量介绍,其中训练集占80%,测试集占20%。相较绝大多数伪造图像检测方法所检测的数据集,本文方法所检测的数据集不仅场景十分丰富而且样本量较小。

表2 数据集介绍Tab.2 Dataset introduction

3.2 基于自编码器的伪造图像检测方法

为验证所提方法的合理性和有效性,本文做了消融实验,表3为本文方法消融实验设置。

表3 消融实验设置Tab.3 Ablation experiment setting

3.3 结果分析

本文实验选取InceptionV3、ResNet50、Xception 进行对比。

实验主要包含两部分:第一部分是针对同源数据(即训练集和测试集是由相同方法伪造的)的消融实验和对比实验;第二部分是针对异源数据(即训练集和测试集是由不相同方法伪造的)泛化性能的测试与对比。

3.3.1 同源数据集实验

表4 为训练集和测试集同源时不同检测方法的检测结果。从实验结果可以观察到:1)对于基础模型1,其平均准确率为86.50%,特别是检测ProGAN 伪造图像的准确率可达99.21%。InceptionV3、ResNet50、Xception 的平均准确率分别为71.22%、68.75%、72.64%,相比之下,本文所提基础模型1优于对比模型。2)对InceptionV3、ResNet50、Xception 以及本文所提基础模型1 的输入数据添加高斯滤波之后,平均准确率均大幅提升,表明了本文所提预处理方式的有效性。3)对比本文基础模型2,本文所提最终模型的检测平均准确率可以达到97.10%,证明了添加Squeeze-and-Excitation 网络块的有效性。

表4 同源数据准确率检测结果 单位:%Tab.4 Accuracy test results on same source data unit:%

综上所述,相较InceptionV3、ResNet50 和Xception,在伪造图像场景丰富且样本量较小时,本文所提Deepfake 伪造图像检测方法的效果更优。

3.3.2 异源数据集实验

大多数现有伪造图像检测方法只能有效检测训练集和测试集同源的图像,存在缺乏泛化能力或泛化性能弱的问题。而本文方法在一定程度上克服了这一缺陷,并进行了模型泛化性测试,与InceptionV3、ResNet50 以及Xception 进行对比,泛化性测试结果展示在表5中。

表5 异源数据准确率检测结果Tab.5 Accuracy test results on different source data

观察表5中数据可以看出,当分别以ProGAN、Style-GAN2的训练集作为源域训练时,测试所有数据集的平均准确率分别是82.23%和72.89%,优于对比方法;将本文所有的数据集一起训练时,测试所有数据集的平均准确率可以达到89.93%,优于对比方法。所以,相较于InceptionV3、ResNet50以及Xception,本文所提最终模型的检测效果更优、泛化能力更强。

4 结语

Deepfake 对社会带来的负面影响越来越多,而目前存在的伪造图像检测方法大部分都是针对伪造人脸的,本文提出了一种基于自动编码器的深度伪造图像检测方法,可以有效检测多种伪造方法伪造的图像,所用数据集样本量较小且包含场景丰富。本文方法主要采用高斯滤波提取图像的高频信息并且在编码器网络中添加注意力机制模块以更好地提取图像特征。对模型的泛化能力进行测试,实验结果表明,在训练集和测试集为同源或异源时,本文方法的检测效果均优于对比方法,有较好的泛化能力。下一步将在现有工作基础上继续探索一种通用Deepfake 伪造图像检测方法,进一步提高模型的泛化性能。

猜你喜欢
编码器函数图像
基于ResNet18特征编码器的水稻病虫害图像描述生成
摄像头连接器可提供360°视角图像
浅析p-V图像中的两个疑难问题
基于Beaglebone Black 的绝对式编码器接口电路设计*
基于TMS320F28335的绝对式光电编码器驱动设计
关于函数的一些补充知识
高中数学中二次函数应用举隅オ
无独有偶 曲径通幽
名人语录的极简图像表达
趣味数独等4则