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 检测
[](https://www.python.org/)
[](https://www.tensorflow.org/)
[](https://github.com/ondyari/FaceForensics)
[](LICENSE)
本仓库是本科毕业论文**《看穿伪造:利用基于深度学习的计算机视觉检测 Deepfake》**的配套项目。该研究探讨是否可以通过一种紧凑且专用的模型,结合面部伪影和时间上的不一致性来检测篡改视频,而无需依赖重量级的预训练 backbone。

## 本研究的重要性
许多 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 曲线 |
| --- | --- |
|  |  |
## 方法
```
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]
```
该划分发生在帧提取或片段生成之前:

### 自定义空间 backbone
从零构建的 CNN 结合了标准卷积块和深度可分离卷积块,并使用了 batch normalization、squeeze-and-excitation 通道加权、L2 正则化以及 dropout。全局平均池化产生了一个紧凑的 512 维表示,供时间建模使用。

### 评估证据
| 自定义 CNN 训练 | 时间维度训练 |
| --- | --- |
|  |  |
更多混淆矩阵和 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, 卷积神经网络, 深度伪造检测, 深度学习, 视频分析, 计算机视觉, 逆向工具