返回列表

12th place in a nutshell

374. Deepfake Detection Challenge | deepfake-detection-challenge

开始: 2019-12-11 结束: 2020-04-23 AI安全与对抗 数据算法赛
第12名方案简述

第12名方案简述

作者:Atsamaz Gatsoev
比赛排名:第12名

免责声明:这是我第一次参加计算机视觉(CV)比赛,如果我的代码或方法有什么不妥之处,请大家见谅。

数据准备

  • 第1个数据集:从每个视频中提取单帧随机画面
  • 第2个数据集:从每个视频中提取10帧随机画面(用于堆叠)
  • 使用来自 Blazeface (@humananalog kernel) 进行人脸提取
  • 输出图像调整为 256x256
  • 主要的数据增强是 JPEG 压缩和缩小,概率为 0.5
  • 辅助的数据增强(并非同时使用):模糊、高斯噪声、随机亮度、水平翻转
  • 对于单模型训练,通过过采样来平衡类别;对于堆叠模型训练,通过欠采样来平衡类别

模型

  • EfficientNet B0-B6 (imagenet)
  • EfficientNet B1-B6 (noisy student)

Efficientnet 让我在 Public LB(公开排行榜)上获得了巨大的提升,但更重要的是为这类模型选择合适的数据增强和超参数。

训练与验证

我选取了 #40-49 的数据块作为验证集,它与 LB 的相关性很好(大约 10% 的差异),每个模型的输入尺寸均为 256x256。

  • 单模型训练:输入尺寸取决于模型(从 224 到 260),Adam 优化器(lr=1e-4),StepLR(step=2, gamma=0.1)
  • 堆叠模型训练:输入尺寸 256x256,Adam 优化器(lr=1e-3)

每个模型大约训练 3-5 个 epoch 就会开始过拟合。

堆叠与集成

我在第一个数据集上训练了一堆不错的单模型,Public LB 分数在 0.38-0.4 之间,然后使用第二个数据集将不同的模型组合成堆叠模型。

然后我从这次实验中选出了最好的 5 个堆叠模型,结合它们的验证分数进行了逐帧加权集成。

对我无效的尝试

  • MesoNet, RNN - 在训练数据上欠拟合
  • 强数据增强(例如 cutout, huesaturation, 90度旋转)
  • 堆叠模型的堆叠 - 看起来像是过拟合了,但不是很严重
  • FaceForensics++ - 我从这个数据集中最多只得到了 0.68 的 Public LB 分数
同比赛其他方案