DeepFake换脸检测
DeepFake(深度伪造)技术能够以惊人的准确度修改视频或图像中的人脸,造成虚假信息的快速传播。为了应对这一挑战,许多研究者开始探索防御DeepFake的技术手段。
DeepFakeDefenders项目是由VisionRush团队开发的,旨在通过先进的技术手段识别和对抗DeepFake。该项目提供了一套完整的工具集,包括预训练模型、训练脚本以及部署方案,帮助用户快速构建自己的DeepFake检测系统。
一、预训练模型准备
在开始使用之前,请将模型的ImageNet-1K预训练权重文件放置在./pre_model目录下,权重下载链接如下:
RepLKNet: https://drive.google.com/file/d/1vo-P3XB6mRLUeDzmgv90dOu73uCeLfZN/view?usp=sharing
ConvNeXt: https://dl.fbaipublicfiles.com/convnext/convnext_base_1k_384.pth
二、训练
1. 更改数据集路径
将训练所需的训练集txt文件、验证集txt文件以及标签txt文件分别放置在dataset文件夹下,并命名为相同的文件名(dataset下有各个txt示例)
2. 更改超参数
针对所采用的两个模型,在main_train.py中分别需要更改如下参数:
RepLKNet---cfg.network.name = 'replknet'; cfg.train.batch_size = 16
ConvNeXt---cfg.network.name = 'convnext'; cfg.train.batch_size = 24
3. 启动训练
单机多卡训练:(8卡)
bash main.sh
单机单卡训练:
CUDA_VISIBLE_DEVICES=0 python main_train_single_gpu.py
4. 模型融合
在merge.py中更改ConvNeXt模型路径以及RepLKNet模型路径,执行python merge.py后获取最终推理测试模型。
5. 推理
示例如下,通过post请求接口请求,请求参数为图像路径,响应输出为模型预测的deepfake分数
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import requests
import json
import requests
import json
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36'
}
url = 'http://ip:10005/inter_api'
image_path = './dataset/val_dataset/51aa9b8d0da890cd1d0c5029e3d89e3c.jpg'
data_map = {'img_path':image_path}
response = requests.post(url, data=json.dumps(data_map), headers=header)
content = response.content
print(json.loads(content))
三、docker
项目支持Docker部署,使得在不同环境中的部署变得简单快捷。可以通过构建Docker镜像并运行容器来启动服务。
1. docker构建
根据项目提供的Dockerfile,使用docker build命令构建镜像。
sudo docker build -t vision-rush-image:1.0.1 --network host .
2. 容器启动
sudo docker run -d --name vision_rush_image --gpus=all --net host vision-rush-image:1.0.1