一、DeepFake
在Stable-Diffusion、Sora已经广泛进入我们现实生活的当下,我们总能够看到一些AI生成的图像、视频,这些图像视频可能是栩栩如生也可能是错漏百出,但是我们不可否认的是现在的深度学习算法已经一步一步地通过学习真实数据的特征去试图生成新的、逼真的数据。在未来,可能我们根本无法去分辨出一张图像是真实拍摄的还是由AI绘制生成的,这也就是DeepFake的概念。
二、DeepFake与真实世界的区别
很多时候我们可以一眼分辨出哪些图像是由DeepFake生成的图像,这是由于通过DeepFake技术生成的图像在很多情况下存在
- 细节上的瑕疵;
- 区域光线阴影不一致;
- 模糊像素化的区域;
- 背景纹理重复。
三、通过深度学习方法检测DeepFake
1. 深度学习前置知识
- 机器学习:通过大量数据进行模型的训练,得到数据拟合模型,并能够对未知数据进行回归或分类。
- 回归与分类:简单来说回归就是通过模型进行数据预测;分类则是通过模型预测出数据处于某一类别的概率。
- 监督学习与无监督学习:简单来说,监督学习是根据有真实标注(回归:数值;分类:类别)的数据进行训练,以达到模型拟合的效果;而无监督学习是通过不确定真实标注的数据,通过构建数据分布关系等方法得到模型。
- 深度学习:属于机器学习,但网络结构更深,可以拟合更复杂的数据。
2. 用深度学习检测DeepFake(Baseline部分)
通过深度学习检测DeepFake的人脸图像,本质上是一个图像的二分类问题,我们需要利用Kaggle上的数据集进行模型的训练,并推理预测赛事官方给出的测试集的图像是否为DeepFake合成。Baseline链接。
(1)数据集构建
Kaggle平台数据:Kaggle数据链接,其中包含了图像和对应的分类(DeepFake or Not)
(2)模型构建
我们可以选取计算机视觉领域的深度学习模型结构,例如ResNet、VGGNet的各种版本,并通过开源的timm库或huggingface库调用预训练模型(提前在其他大型数据集上训练得到的模型,具有一定的特征提取能力和泛化性,降低训练成本),并进一步微调。
(3)模型训练
模型训练主要包括以下几个步骤:
-
设置训练模式:激活训练过程中的参数随机调整,增强泛化性。
-
遍历数据加载器:将数据分批送入模型训练。
-
数据移动到GPU:通过GPU加速模型训练。
-
前向传播:将数据输入模型,得到模型输出。
-
计算损失:通过预设的损失函数,对模型输出计算损失。
-
梯度归零:清空上一次迭代的梯度。
-
反向传播:将梯度延网络反向回传。
-
参数更新:更新网络参数。