Datawhale AI 夏令营Task1笔记

致谢教程,链接如下:

‍​‍‬‌‌‍‬⁠​⁠​⁠​​​​‌​‍​​​⁠⁠‬​‍⁠​​‌​​‍‍​‬​​‌​​​‬⁠​Task1:了解Deepfake & 初探baseline - 飞书云文档 (feishu.cn)icon-default.png?t=N7T8https://datawhaler.feishu.cn/wiki/L4kKwgPqMiGFb4kmCKecKCpxnqd

Part1  Deepfake是什么?

深度伪造技术  Deepfake ,是被称作“生成式对抗网络”(GAN)的机器学习模型将图片或视频合并叠加到源图片或视频上,借助神经网络技术进行大样本学习,将个人的声音、面部表情及身体动作拼接合成虚假内容的人工智能技术。

深度伪造技术通常可以分为四个主流研究方向:

  • 面部交换专注于在两个人的图像之间执行身份交换;

  • 面部重演强调转移源运动和姿态;

  • 说话面部生成专注于在角色生成中实现口型与文本内容的自然匹配;

  • 面部属性编辑旨在修改目标图像的特定面部属性;

Deepfake具备潜在的安全威胁,为了减轻这种风险,人们提出了许多对策。现有的Deepfake检测方法在处理视觉质量较低的Deepfake媒体时,可以通过明显的视觉伪影来区分。然而,随着深度生成模型的发展,Deepfake媒体的真实感得到了显著的提高,对现有的检测模型提出了严峻的挑战。

由于机器学习的最新发展,操纵和制作图像和视频的技术已经达到了一个新的复杂水平。这一趋势的前沿是所谓的深度造假(Deep Fakes),它是通过将使用深度神经网络合成的人脸插入到原始图像/视频中而产生的。深度造假与通过数字社交网络分享的其他形式的虚假信息一起,已经成为一个严重的问题,对社会产生了负面影响。因此,迫切需要有效的方法来揭露深度造假。迄今为止,深度造假的检测方法依赖于合成算法固有的伪影或不一致性,例如,缺乏逼真的眨眼和不匹配的颜色配置文件。基于神经网络的分类方法也被用于直接识别Deep Fakes中的真实图像。在这项工作中,我们提出了一种检测深度造假的新方法。我们的方法是基于深度神经网络人脸合成模型的内在局限性,而深度神经网络人脸合成模型是深度伪造生产管道的核心组件。具体来说,这些算法创建了不同的人的面部,但保留了原始人物的面部表情。然而,这两张脸的面部标志不合成算法并不能保证原始人脸与合成人脸具有一致的面部标志。

参考博客AI中Deepfake的部分研究前沿与文献综述_deepfake综述-CSDN博客

Part2  如何识别Deepfake?

  • 观察细节:仔细检查面部特征尤其是眼睛和嘴巴,看是否有不自然的地方
  • 光线和阴影:图片中光源是否一致,阴影方向是否与光源相符
  • 分析像素:图片中是否有模糊或像素化的部分,可能是Deepfake技术的瑕疵
  • 注意背景:物体边缘平滑,背景中有不自然重复

Part3  深度学习与Deepfake

深度学习是一种强大的机器学习技术,它通过模拟人脑处理信息的方式,使计算机能够从大量数据中自动学习和识别模式。深度学习模型,尤其是卷积神经网络(CNN),能够识别图像和视频中的复杂特征。在Deepfake检测中,模型可以学习识别伪造内容中可能存在的微妙异常。

Part4  Baseline关键步骤

1.  模型定义:使用timm库创建一个预训练的resnet18模型

     ResNet(残差网络)是一种深度卷积神经网络,核心思想是引入了“残差学习”框架,通过添加跳过一层或多层的连接(即残差连接或快捷连接),解决了随着网络深度增加时训练困难的问题。

2.  训练/验证数据加载:使用torch.utils.data.DataLoader来加载训练集和验证集数据,并通过定义的transforms进行数据增强。

    深度学习模型的训练本质上是一个优化问题,目标是最小化损失函数。梯度下降算法通过计算损失函数相对于模型参数的梯度来更新参数。由于每次参数更新只能基于一个数据批次来计算梯度,因此需要多次迭代,每次处理一个新的数据批次,以确保模型在整个数据集上都能得到优化。

    数据增强是一种在机器学习和深度学习中提升模型性能的重要技术。它通过应用一系列随机变换来增加训练数据的多样性,从而提高模型的泛化能力。增加数据多样性是数据增强的核心目的。

transforms.Compose: 这是一个转换操作的组合,它将多个图像预处理步骤串联起来:

  • transforms.Resize((256, 256)):将所有图像调整为256x256像素的大小。

  • transforms.RandomHorizontalFlip():随机水平翻转图像。

  • transforms.RandomVerticalFlip():随机垂直翻转图像。

  • transforms.ToTensor():将PIL图像或Numpy数组转换为torch.FloatTensor类型,并除以255以将像素值范围从[0, 255]缩放到[0, 1]。

  • transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]):对图像进行标准化,使用ImageNet数据集的均值和标准差。

3.  训练与验证过程

定义了train函数来执行模型在一个epoch上的训练过程,包括前向传播、损失计算、反向传播和参数更新。

定义了validate函数来评估模型在验证集上的性能,计算准确率。

4.  性能评估:使用准确率(Accuracy)作为性能评估的主要指标,并在每个epoch后输出验证集上的准确率。

提交:最后,将预测结果保存到CSV文件中,准备提交到Kaggle比赛。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值