【Datawhale AI 夏令营】CV图像竞赛——Deepfake攻防

【Datawhale AI 夏令营】CV图像竞赛——Deepfake攻防

从零入门CV图像竞赛(Deepfake攻防) 是 Datawhale 2024 年 AI 夏令营第二期 的学习活动“CV图像”方向),基于蚂蚁集团举办的“外滩大会-全球Deepfake攻防挑战赛”开展的实践学习

​ 这几天参加了Datawhale AI 夏令营的CV图像竞赛,跟随DataWhale的学习指南,跑通Baseline,在Kaggle平台完成整个Deepfake攻防挑战赛。下面来介绍本次活动的内容及收获。

1 Deepfake攻防任务介绍

​ 随着人工智能技术的迅猛发展,深度伪造技术(Deepfake)正成为数字世界中的一把双刃剑。Deepfake技术可以通过人工智能算法生成高度逼真的图像、视频和音频内容,这些内容看起来与真实的毫无二致。

1.1 赛题任务

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

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

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

1721448504326

​ 本次Deepfake任务目标即为训练模型,判断一张人脸图像是否为Deepfake图像,并输出其为Deepfake图像的概率评分。

1721444215400

Deepfake图片示例

1.2 赛题数据集

  1. 第一阶段

    在第一阶段,主办方将发布训练集和验证集。参赛者将使用训练集 (train_label.txt) 来训练模型,而验证集 (val_label.txt) 仅用于模型调优。文件的每一行包含两个部分,分别是图片文件名和标签值(label=1 表示Deepfake图像,label=0 表示真实人脸图像)。例如:

    train_label.txt

    img_name,target
    3381ccbc4df9e7778b720d53a2987014.jpg,1
    63fee8a89581307c0b4fd05a48e0ff79.jpg,0
    7eb4553a58ab5a05ba59b40725c903fd.jpg,0
    …
    

    val_label.txt

    img_name,target
    cd0e3907b3312f6046b98187fc25f9c7.jpg,1
    aa92be19d0adf91a641301cfcce71e8a.jpg,0
    5413a0b706d33ed0208e2e4e2cacaa06.jpg,0
    …
    
  2. 第二阶段

    在第一阶段结束后,主办方将发布测试集。在第二阶段,参赛者需要在系统中提交测试集的预测评分文件 (prediction.txt),主办方将在线反馈测试评分结果。文件的每一行包含两个部分,分别是图片文件名和模型预测的Deepfake评分(即样本属于Deepfake图像的概率值)。例如:

    prediction.txt

    img_name,y_pred
    cd0e3907b3312f6046b98187fc25f9c7.jpg,1
    aa92be19d0adf91a641301cfcce71e8a.jpg,0.5
    5413a0b706d33ed0208e2e4e2cacaa06.jpg,0.5
    …
    
  3. 第三阶段

    在第二阶段结束后,前30名队伍将晋级到第三阶段。在这一阶段,参赛者需要提交代码docker和技术报告。Docker要求包括原始训练代码和测试API(函数输入为图像路径,输出为模型预测的Deepfake评分)。主办方将检查并重新运行算法代码,以重现训练过程和测试结果。

1.3 评价指标

​ 比赛的性能评估主要使用ROC曲线下的AUC(Area under the ROC Curve)作为指标。AUC的取值范围通常在0.5到1之间。若AUC指标不能区分排名,则会使用TPR@FPR=1E-3作为辅助参考。

  1. 真阳性率 (TPR):
    T P R = T P / ( T P + F N ) TPR = TP / (TP + FN) TPR=TP/(TP+FN)

  2. 假阳性率 (FPR):
    F P R = F P / ( F P + T N ) FPR = FP / (FP + TN) FPR=FP/(FP+TN)
    其中:

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

2 Baseline实现

​ 本次项目在Kaggle平台进行,DataWhale为学习者提供了跑通整个项目的 baseline 代码,并给出了详细的学习指南。下面结合学习指南内容,介绍基础Baseline代码及训练步骤。

2.1 代码介绍

​ Baseline代码,采用了 timm 库来进行图像模型的训练和推理。

  1. 指标计算与显示

    • AverageMeter

      AverageMeter类用于计算和存储指标的平均值和当前值。它通常用于跟踪训练过程中每个epoch或batch的损失值、精度等。

      class AverageMeter(object):
          """计算和存储指标的平均值和当前值"""
          def __init__(self, name, fmt=':f'):
              self.name = name
              self.fmt = fmt
              self.reset()
      	# 重置所有值
          def reset(self):
              self.val = 0
              self.avg = 0
              self.sum = 0
              self.count = 0
      	# 更新当前值
          def update(self, val, n=1):
              self.val = val
              self.sum += val * n
              self.count += n
              self.avg = self.sum / self.count
      	# 返回格式化字符串,显示当前值和平均值
          def __str__(self):
              fmtstr = '{name} {val' + self.fmt + '} ({avg' + self.fmt + '})'
              return fmtstr.format(**self.__dict__)
      
    • ProgressMeter

      ProgressMeter类用于显示训练过程中各个batch的进度和指标。它通常与AverageMeter类一起使用,方便地显示和跟踪多个指标。

      class ProgressMeter(object):
          def __init__(self, num_batches, *meters):
              self.batch_fmtstr = self._get_batch_fmtstr(num_batches)
              self
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

住在天上的云

如果您喜欢我的文章,欢迎打赏哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值