搭建深度学习模型实现“换脸检测” Deepfake Detection

简介: 搭建深度学习模型实现“换脸检测” Deepfake Detection

概要

Deepfakes 是一种合成视频,通过深度学习技术将原视频中的人脸进行替换,然后输出新的视频。

本文针对 Clay Sciences Video Annotation 平台上长达300分钟、总计449977帧的真实视频以及Deepfake视频进行了人工标注。然后通过 Keras 和 TensorFlow 在谷歌云进行了深度学习模型的训练,开发了 single shot multibox detector,用于自动检测视频是否是 deepfake。检测的准确度在部分情况下高达 100%。通过实现对 deepfake的识别,将能够减少由其带来的潜在负面影响。

引言

由于视频剪辑软件的流行及其简单易用的特点,Facebook、Instagram、Snapchat等社交平台充斥着剪辑视频。通过视频剪辑可以伪造一些实际上并没有发生过的人物事件。如果放任剪辑视频的大肆传播,会有潜在的误导舆论的可能。现在已经有相关的反面事例了。近期就在网上流传有关于美国众议院议长 Nancy Pelosi 和美国总统候选人 Joe Biden 的伪造视频,在视频中显示他们曾在公开演讲中发表种族主义言论,而这些伪造的视频在社交媒体中大肆传播。

而 Pelosi 和 Biden 类似的伪造视频是非常简单的,只需要选择性地对内容进行编辑就能够实现。而最近更受媒体关注的是一种更为先进的技术——Deepfakes。Deepfakes 通过人工智能技术将人脸叠加到原视频上。

Deepfakes 于 2017 年在网络上得到极大关注。2017年7月27日,Radiolab 的一期“Breaking News”中,对 Deepfakes 及其可能存在的风险进行了讨论,甚至自行开发了自己的 deepfakes。通过这一技术,一个和原视频毫不相干的人可以被设计为视频的主角。而这些合成的视频几乎不可能通过人眼识别出来。显然其潜在的风险是很大的,可能在社会的各个领域产生不良的影响。因此,开发能够识别视频真实性(针对 deepfake 技术)的程序是很有必要的。在本项目中,通过训练一个机器学习模型实现了对于真实视频和合成视频的识别检测。

此外同时需要注意还有另一种形式的 deepfake 技术——语音合成,能够改变音频内容,并且语音合成和视频合成是可以相结合的。而本项目目前只专注于视觉领域的 deepfake。

数据和方法

数据集

训练数据主要是从150分钟的真实视频和150分钟的合成视频中提取的449977帧图像,并且通过 Clay Sciences 平台根据是否是合成的对这些图像中的人脸添加了边框并进行了“真实”/“合成”的标记。然后将数据集划分为训练集(323202 帧图像)、验证集(80855 帧图像)和测试集(45920 帧图像),并且每个源视频生成的帧图像被划分进同一个数据集中。

方法

为了实现对于人脸真实性的识别检测,需要开发一个深度学习模型对图像中的人脸进行识别并判断:1)在图像中识别出人脸;2)判断人脸是否真实。该模型还需要能够检测出图像中具有多个人脸对象,因为单个视频可能存在多个人脸对象,甚至可能同时存在真实的人脸和合成的人脸。为了实现这一功能,本项目选择基于 Single Shot MultiBox Detector(SSD) 模型进行开发,SSD是一个能够针对图像中对象进行识别和标记的神经网络模型。具体地,通过 TensorFlow 编写相关代码,通过谷歌云计算进行相关训练。

本项目中,输入为 300x300 的图像,训练 15 个 epoch,每个 epoch 包含 11000 步,每个 batch 包含 32 个图像。而误差函数为 SSD 模型的损失函数,该损失函数包含两个部分:1) 目标定位(预测的边框和实际标注边框的差异);2) 目标分类(预测标签和实际标签的差异)。通过不断训练减少误差,使得模型逐渐学习关键特征。但是需要注意不能一味谋求减少训练误差,应该也要考虑模型的泛化能力,否则模型将出现过拟合的情况,在训练集以外的数据达不到理想的效果。而验证集能够帮助评估模型的泛化能力,一般而言,模型在验证集上的误差越小,则模型越好。

训练完成后,使用测试集进行模型性能的评价。通常采用针对每个对象(本项目为真实人脸/合成人脸)的 PR 曲线(precision-recall curves)评价目标检测模型的性能。PR 曲线中纵轴为分类器对正例的识别准确程度,横轴为对正例的覆盖能力。PR 曲线上的任一点表示模型预测的置信度,precision 越高、 recall 越低,则置信度越高,模型预测准确性越好。precision 越低、 recall 越高,则置信度越低,模型预测准确性越差,但是能够识别大多数目标。通过计算所有目标类别的平均准确度,可以作为模型的准确度指标(mAP)。

最终选择训练准确度最高的模型对视频图像进行目标识别和标签判断。

结果

模型训练和评估

经过不断训练,模型在第 8 个 epoch(88000 steps)时,使得验证集误差最小。此时训练集误差 2.5144,验证集误差 4.1434。而继续训练后,模型表现为过拟合:训练集误差持续减小,而验证集误差增加。通过计算 mAP 可以进一步验证模型是否过拟合。

image.png

通过 epoch 8 的 SSD 模型 PR曲线可以看出,模型识别真实人脸的平均准确率为 40.2%,而识别合成人脸的平均准确率为 79.6%。

image.png

模型预测

经过训练的 SSD 模型被用于对测试集的图像进行真实人脸/合成人脸的识别。在所有测试集图像识别过程中,模型能够对大多人脸进行定位和判断,部分图像中将合成人脸识别为真实人脸,但是没有在任一图像将真实人脸识别为合成人脸。并且每次识别判断的置信度都同步输出在人脸的定位框中。



image.png

image.png

成功识别真实人脸


image.png

image.png

成功识别合成人脸



image.png

image.png

将合成人脸识别为真实人脸

最后将该模型用于未进行标注的 Deepfake 图像进行识别判断,也具有良好的总体表现。


image.png

image.png

对未进行标注的数据集进行识别判断


讨论

要点

本项目的出发点在于训练一个机器学习模型用于分辨视频是否是通过技术手段合成的。本项目目前只是概念层面,所训练的模型虽然没有100%的准确率,但是具备有一定的判断视频真实性的能力。该模型尤其在识别合成人脸方面具有很好的效果。虽然它偶尔确实将合成人脸识别为真实人脸,但是当模型确实预测出合成人脸时,通常是正确的。通过 PR 曲线可以看到,模型在识别合成人脸方面具有很高的置信度,准确率接近 100%。同时,该模型还有很大的优化空间。通过 PR 曲线,发现模型在识别真实人脸方面不具有较高的置信度。因此为了更好地达到识别效果,还需要进一步地优化模型并训练。

尽管模型的效果并不完美,但是结果仍旧是很令人满意的。通过这个模型展示了目标检测模型可以用于减少剪辑视频的负面影响。

不足和展望

本项目除了上述不足以外,还存在着数据方面的问题。因为本项目中的图像是通过将每一帧单独提取出来并进行人为标注的,实际情况下视频的每一帧是连续的,并且具有一定的关联性,而这些特性对目标检测模型可能有一定的价值和影响。在后期的工作中,每帧图像不应该被单独提出了,而应该将视频作为一个整体,进而训练相关机器学习模型,判断整个视频是否是合成的。

此外,如前引言部分所述,本项目只是针对视频进行分析判断,而音频也存在 deepfake 的情况。所有一个可能的方向是将两者结合起来,共同进行判断。

值得注意的是,一些大型科技公司已经有开展“deepfake 检测挑战赛”,在竞赛中,选手需要通过技术方法对视频进行判断。主办方提供有视频和音频数据,该竞赛计划于2020年3月31日结束。参数选手如何完成相关工作很值得关注。

目录
相关文章
|
1天前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络模型的鱼眼镜头中人员检测算法matlab仿真
该内容是一个关于基于YOLOv2的鱼眼镜头人员检测算法的介绍。展示了算法运行的三张效果图,使用的是matlab2022a软件。YOLOv2模型结合鱼眼镜头畸变校正技术,对鱼眼图像中的人员进行准确检测。算法流程包括图像预处理、网络前向传播、边界框预测与分类及后处理。核心程序段加载预训练的YOLOv2检测器,遍历并处理图像,检测到的目标用矩形标注显示。
|
2天前
|
机器学习/深度学习 大数据 计算机视觉
构建高效图像分类模型:深度学习在特征提取中的应用
【5月更文挑战第21天】 当前研究探索了深度学习技术在图像分类问题中的应用,并提出了一种新型的卷积神经网络(CNN)架构。该网络通过优化传统CNN结构中的层次和参数配置,显著提升了图像识别的准确性与处理速度。实验结果表明,新提出的模型在多个标准数据集上达到了较高的分类准确率,同时保持了较低的计算成本。本研究不仅为图像分类领域提供了一种高效的解决方案,也为后续深度学习模型的设计提供了有价值的参考。
|
2天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:迁移学习与预训练模型
使用Python实现深度学习模型:迁移学习与预训练模型
19 0
|
2天前
|
机器学习/深度学习 算法 计算机视觉
构建高效图像分类模型:深度学习在特征提取中的应用
【5月更文挑战第20天】 在计算机视觉领域,图像分类任务是识别和分配数字图像到相应的类别中。随着深度学习技术的兴起,卷积神经网络(CNN)已经成为实现高精度图像分类的核心技术。本文将重点探讨利用深度学习进行图像特征提取的方法,并构建一个高效的图像分类模型。通过对比不同的网络架构、激活函数及其优化算法,我们旨在提供一套系统的方法论来改善模型的性能。
|
3天前
|
机器学习/深度学习 人工智能 算法
食物识别系统Python+深度学习人工智能+TensorFlow+卷积神经网络算法模型
食物识别系统采用TensorFlow的ResNet50模型,训练了包含11类食物的数据集,生成高精度H5模型。系统整合Django框架,提供网页平台,用户可上传图片进行食物识别。效果图片展示成功识别各类食物。[查看演示视频、代码及安装指南](https://www.yuque.com/ziwu/yygu3z/yhd6a7vai4o9iuys?singleDoc#)。项目利用深度学习的卷积神经网络(CNN),其局部感受野和权重共享机制适于图像识别,广泛应用于医疗图像分析等领域。示例代码展示了一个使用TensorFlow训练的简单CNN模型,用于MNIST手写数字识别。
18 3
|
6天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:变分自编码器(VAE)
使用Python实现深度学习模型:变分自编码器(VAE)
15 2
|
7天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:生成对抗网络(GAN)
使用Python实现深度学习模型:生成对抗网络(GAN)
21 3
|
7天前
|
机器学习/深度学习 数据可视化 PyTorch
使用Python实现深度学习模型:自动编码器(Autoencoder)
使用Python实现深度学习模型:自动编码器(Autoencoder)
11 0
|
8天前
|
机器学习/深度学习 数据采集 人工智能
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
深度学习中的大模型「幻觉」问题:解析、原因及未来展望
|
8天前
|
机器学习/深度学习 TensorFlow API
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
73 2