返回列表

27th place solution

374. Deepfake Detection Challenge | deepfake-detection-challenge

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

第27名解决方案

作者:Jan Bre (Team: Unfake)
比赛排名:27th Place

方法

我们采用了一种简单的逐帧分类方法。

人脸检测器

我们使用了简单的 MTCNN 检测器。人脸检测器的输入尺寸缩小了 50%,以显著减少推理时间和内存使用,同时检测精度没有太大损失。然后,我们利用边界框提取方形人脸,保持图像中心坐标和高度不变,但调整了宽度。

最终集成

我们的最终集成模型由 B5/B6/B7 单模型集成组成。@ratthachat 将在评论区提供有关模型训练的更多细节。

模型

我们主要使用了 EfficientNets,因为我们在其他模型上没有取得太大的成功。(在表现较差的最终集成中使用了 1 个 Xception 模型)我们尝试了不同的输入尺寸,最终坚持使用 224*224,因为训练数据集中的大多数人脸裁剪尺寸都在这个范围内。

我们从 B0 - B2 开始,取得了一些成功。但我们最终的 B5-B7 解决方案表现更胜一筹。

内存使用与推理时间

由于内存限制,我们使用了一个批生成器,一次仅从视频中提取并预测两帧。这也使我们能够利用并行推理来显著减少运行时间,并最终对每 27 帧进行预测。

可能奏效的策略

我们考虑到组织者会在测试集中引入原始视频和不同的深度伪造方法。这就是为什么我们不断使用预测结果和 GradCam 在原始视频上评估我们的模型,并使用没有大边距的人脸裁剪,我们认为这可能会带来更好的泛化能力。我们使用了 MTCNN 人脸检测器返回的 14 像素边距。

最终的预测是每个视频所有预测结果的简单平均值。我们曾尝试按演员分割预测,效果更好,但由于时间原因,加上考虑到组织者可能会引入超过 3 个演员的视频以及每个视频中包含多个深度伪造人脸的情况,我们不想在测试集中遇到这些边缘情况,因此决定放弃这个想法。

在我们的实验中,每个视频使用更多帧优于使用 TTA(测试时增强)。我们使用 0.01 和 0.99 对预测结果进行了截断。

致谢

感谢 @ratthachat@hmendonca@hmmoghaddam 带来的精彩体验,并祝贺 @hmmoghaddam 晋升为 Kaggle Expert。

感谢组织者举办这次比赛。

同比赛其他方案