Aurpo-001/Seeing-Beyond-the-Fake-Detecting-Deepfakes-Using-Deep-Learning-Based-Computer-Vision

GitHub: Aurpo-001/Seeing-Beyond-the-Fake-Detecting-Deepfakes-Using-Deep-Learning-Based-Computer-Vision

一个结合轻量级自定义 CNN 与双向时间模型的时空融合 Deepfake 检测系统,通过严格的视频优先划分策略评估篡改视频。

Stars: 0 | Forks: 0

# 看穿伪造 ### 结合自定义 CNN、视频优先评估与决策融合的轻量级时空 deepfake 检测 [![Python](https://img.shields.io/badge/Python-3.10%2B-234d6f?logo=python&logoColor=white)](https://www.python.org/) [![TensorFlow](https://img.shields.io/badge/TensorFlow-2.21-ee7f22?logo=tensorflow&logoColor=white)](https://www.tensorflow.org/) [![Dataset](https://img.shields.io/badge/Dataset-FaceForensics%2B%2B_C23-5b4b8a)](https://github.com/ondyari/FaceForensics) [![License: MIT](https://img.shields.io/badge/Code-MIT-2f6f62.svg)](LICENSE) 本仓库是本科毕业论文**《看穿伪造:利用基于深度学习的计算机视觉检测 Deepfake》**的配套项目。该研究探讨是否可以通过一种紧凑且专用的模型,结合面部伪影和时间上的不一致性来检测篡改视频,而无需依赖重量级的预训练 backbone。 ![最终模型对比](https://raw.githubusercontent.com/Aurpo-001/Seeing-Beyond-the-Fake-Detecting-Deepfakes-Using-Deep-Learning-Based-Computer-Vision/main/docs/figures/model-comparison.png) ## 本研究的重要性 许多 deepfake 实验在提取帧后对其进行随机划分。这会导致来自同一个源视频的帧同时出现在训练集和测试集中,从而使模型的表现看起来优于实际情况。相反,本研究首先划分**完整的视频**,然后在每个数据分区内独立提取帧和片段。 该系统针对该问题评估了三个相关视角: 1. **空间证据:** 一个包含 511,253 个参数的自定义 CNN 从单帧图像中学习纹理、融合边缘以及面部边界伪影。 2. **时间证据:** 将有序的 24 帧片段转换为 512 维 CNN 特征序列,用于双向时间建模。 3. **决策融合:** 通过验证集挑选出的权重,将基于帧的视频得分与时间维度的视频得分结合起来。 ## 核心结果 所有最终测试结果均使用此前未见过的 FaceForensics++ C23 视频。 | 检测器 | 评估级别 | 准确率 | 精确率 | 召回率 | F1 | AUC | | --- | --- | ---: | ---: | ---: | ---: | ---: | | 自定义 CNN | 帧 | **90.06%** | - | - | - | **96.44%** | | CNN-BiLSTM 时间分支 | 视频 | **92.00%** | 89.62% | 95.00% | 92.23% | **96.45%** | | 时空融合 | 视频 | **93.50%** | 91.43% | 96.00% | 93.66% | **97.99%** | 融合检测器正确分类了 200 个测试视频中的 187 个:包含 91/100 个伪造视频和 96/100 个真实视频。 | 最终混淆矩阵 | 最终 ROC 曲线 | | --- | --- | | ![最终融合混淆矩阵](https://static.pigsec.cn/wp-content/uploads/repos/cas/b2/b222f5fcc8909380786b402e3098ada6b1d8ff115b5cbc5b8a3f9bad7080c29c.png) | ![最终融合 ROC 曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/5a/5ae965f89b21828f079e263fdf422a694f8a2bc5c6287b5cb42b664e9f9dd94f.png) | ## 方法 ``` flowchart LR A[FaceForensics++ C23 videos] --> B[Video-first 70 / 20 / 10 split] B --> C[Face crop and 224 x 224 normalization] C --> D[Custom CNN] D --> E[Frame-level probability] D --> F[512-D feature per frame] F --> G[24-frame feature sequence] G --> H[Bidirectional temporal model] H --> I[Temporal video probability] E --> J[Validation-tuned fusion] I --> J J --> K[Real / fake prediction] ``` 该划分发生在帧提取或片段生成之前: ![视频优先片段生成方案](https://static.pigsec.cn/wp-content/uploads/repos/cas/ce/ce838dc0a8fd59cadef12ed56ec4e3d9563d66b7c8f7fbf162052524b192a191.jpg) ### 自定义空间 backbone 从零构建的 CNN 结合了标准卷积块和深度可分离卷积块,并使用了 batch normalization、squeeze-and-excitation 通道加权、L2 正则化以及 dropout。全局平均池化产生了一个紧凑的 512 维表示,供时间建模使用。 ![自定义 CNN 架构](https://static.pigsec.cn/wp-content/uploads/repos/cas/d2/d2d1f96b65f92176a203d6bbd94107608bd67403f9a24b1e025b76fc7385dc3a.jpg) ### 评估证据 | 自定义 CNN 训练 | 时间维度训练 | | --- | --- | | ![自定义 CNN 训练曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/f0/f0d6a117ef07be96ef7b0c4aabbf1f2ef71fee8adaabc18f904aae09c779983e.png) | ![时间维度模型训练曲线](https://static.pigsec.cn/wp-content/uploads/repos/cas/4e/4ea89bea844e635eec7da8ce0b3e8fec2724d0f65573edf81421a799cac3518f.png) | 更多混淆矩阵和 ROC 曲线可在 [`docs/figures`](docs/figures) 中查看。 ## 仓库结构 ``` . ├── notebooks/ │ └── deepfake_detection_pipeline.ipynb # Clean, output-free research workflow ├── src/ │ └── deepfake_detection_pipeline.py # Percent-style Python export ├── configs/ │ └── example.env # Portable path configuration ├── results/ │ ├── final_metrics.json │ └── final_video_confusion_matrices.csv ├── docs/ │ ├── DATASET.md │ ├── MODEL_CARD.md │ ├── REPRODUCIBILITY.md │ └── figures/ └── scripts/ └── validate_notebook.py ``` ## 快速开始 完整的数据集和训练好的模型权重未在此处分发。 ``` git clone https://github.com/Aurpo-001/Seeing-Beyond-the-Fake-Detecting-Deepfakes-Using-Deep-Learning-Based-Computer-Vision.git cd Seeing-Beyond-the-Fake-Detecting-Deepfakes-Using-Deep-Learning-Based-Computer-Vision python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt cp configs/example.env .env ``` 请将获得授权的 FaceForensics++ C23 数据整理如下: ``` FaceForensics++_C23/ ├── original/ # real .mp4 files └── Deepfakes/ # manipulated .mp4 files ``` 然后在你的环境中设置 `FACEFORENSICS_ROOT` 和 `DEEPFAKE_PROJECT_ROOT`,并打开 notebook: ``` jupyter lab notebooks/deepfake_detection_pipeline.ipynb ``` 仅在你确实需要重新生成帧和片段文件夹时,才设置 `REBUILD_DERIVED_DATA=1`。完整方案请参阅[可复现性](docs/REPRODUCIBILITY.md)。 ## 公开 Notebook 的准备工作 原始实验文件保持原样未作改动。仓库中的副本进行了以下处理: - 移除了 93 个已存储的执行输出和特定于机器的元数据; - 将本地 `/mnt/...` 路径替换为环境变量; - 删除了临时检查单元格; - 防止自动删除派生数据集,除非明确启用; - 修复了基准控制的初始化,确保干净的 kernel 运行具有确定的状态; - 将相同的工作流导出为可读的 Python 文件。 这些更改提高了可移植性和安全性,且未改变模型、训练、评估或融合算法。架构标签详情请参阅[实现说明](docs/IMPLEMENTATION_NOTES.md)。 ## 局限性与负责任的使用 - 最终评估主要基于 FaceForensics++ C23;尚未确立跨数据集的鲁棒性。 - 在未见过的生成器、更强的压缩、对抗性处理、非面部合成媒体或领域偏移下,性能可能会发生变化。 - 检测器得分仅为辅助证据,不能作为某人制作或散布篡改媒体的证明。 - 人工审查、来源信息和背景上下文应继续作为重大决策的一部分。 - 本公开仓库不重新分发源自数据集的面部示例。 在调整该系统之前,请阅读完整的[模型卡片](docs/MODEL_CARD.md)。 ## 作者 Tanvir Bashar Aurpo, Syed Aiman Aabdee, Sifat Alam, 以及 Arobi Alamin Twinkle 布拉卡大学计算机科学与工程系,2026 ## 引用 引用元数据可在 [`CITATION.cff`](CITATION.cff) 中获取。如果本仓库对你的工作有所帮助,请引用该论文,并明确区分复现结果与全新实验。 ## 许可证 仓库代码基于 [MIT License](LICENSE) 发布。FaceForensics++ 及任何外部数据仍受其自身的访问条款和许可证约束。
标签:TensorFlow, 卷积神经网络, 深度伪造检测, 深度学习, 视频分析, 计算机视觉, 逆向工具