【Datawhale AI 夏令营】Task1:基础知识

66 阅读4分钟

一.前置知识:

1. Deepfake:

1.1. 定义:

Deepfake是一种使用人工智能技术生成的伪造媒体,特别是视频和音频,它们看起来或听起来非常真实,但实际上是由计算机生成的。这种技术通常涉及到深度学习算法,特别是生成对抗网络(GANs),它们能够学习真实数据的特征,并生成新的、逼真的数据。

1.2. 危害:

  • 制造假新闻,操纵舆论,影响政治稳定
  • 破坏企业形象,引发市场恐慌。
  • 伪造证据,误导司法判决

1.3. 研究方向

  • 面部交换专注于在两个人的图像之间执行身份交换;
  • 面部重演强调转移源运动和姿态;
  • 说话面部生成专注于在角色生成中实现口型与文本内容的自然匹配;
  • 面部属性编辑旨在修改目标图像的特定面部属性;

2. 识别 Deepfake

如果想要人工识别Deepfake的图片,可以通过以下逻辑步骤进行:

  • 首先,观察图片的细节。仔细检查人物的面部特征,尤其是眼睛和嘴巴,看是否有不自然的眨眼频率或口型与说话内容不同步的现象。
  • 接着,检查光线和阴影。分析图片中的光源是否一致,阴影的方向是否与光源相符,不自然的光线或阴影可能是图片被修改的迹象。
  • 然后,分析像素。放大图片,寻找是否有模糊或像素化的部分,这可能是Deepfake技术留下的瑕疵。
  • 此外,注意背景。检查背景中是否有不协调的元素,比如物体边缘是否平滑,背景中是否有不自然的重复模式。

二.比赛信息:

1. 赛题任务:

判断一张人脸图像是否为Deepfake图像,并输出其为Deepfake图像的概率评分。参赛者需要开发和优化检测模型,以应对多样化的Deepfake生成技术和复杂的应用场景,从而提升Deepfake图像检测的准确性和鲁棒性。

2. 评价指标:

比赛的性能评估主要使用ROC曲线下的AUC(Area under the ROC Curve)作为指标: ROC:ROC曲线的纵轴是 “真正例率 ”(True Positive Rate , 简称 TPR ) : TPR=TPTP+FN\mathrm{TPR}=\frac{TP}{TP+FN} 横轴是 “假正例率 ”(False Positive Rate , 简称 FPR ) : FPR=FPTN+FP\mathrm{FPR}=\frac{FP}{TN+FP} 其中:

  • TP:攻击样本被正确识别为攻击;
  • TN:真实样本被正确识别为真实;
  • FP:真实样本被错误识别为攻击;
  • FN:攻击样本被错误识别为真实。

AUC:AUC 可通过对 ROC 曲线下各部分的面积求和而得到。

三.建模思路:

对于一个模型的构建,一般从四个模块进行:

1. step1:数据加载

需要编写代码完成数据的读取,转换成模型能够读取的格式。这里涉及pytorch的datasetdataloader,对数据集进行加载,使用transforms等模块对数据集进行数据增强,同时在读取数据集的时候需要转换为张量模式。

2. step2:模型加载

加载数据集之后,需要定义加载预训练模型。 预训练模型是指在特定的大型数据集(如ImageNet)上预先训练好的神经网络模型。这些模型已经学习到了丰富的特征表示,能够识别和处理图像中的多种模式。使用预训练模型的好处是,它们可以在新数据集或新任务上进行微调(Fine-tuning),从而加快训练过程并提高模型性能,尤其是当可用的数据量有限时。 预训练模型的加载通常是使用 torch 中的 nn.Module模块和nn下的各个网络层进行搭建模型,同时也有别的模型的加载,比如使用 hugging face 的 timm 库加载相应的模型。

3. step3:迭代训练

对于加载的预训练模型,需要再进行多次迭代的训练来进行优化,在开始训练优化之前,需要设置其损失函数,优化器的选择,批的大小等一系列的参数。其优化目标为最小化损失函数。 梯度下降算法通过计算损失函数相对于模型参数的梯度来更新参数。由于每次参数更新只能基于一个数据批次来计算梯度,因此需要多次迭代,每次处理一个新的数据批次,以确保模型在整个数据集上都能得到优化。 注意!在每次的迭代开始前都需要将梯度清零,以此来防止梯度累积。