FaceForensics++数据库下载(超详细版教程)
相信很多做deepfake相关研究的朋友,在对模型进行测试或者对潜前人的研究进行复现时,都需要下载一系列数据库并进行预处理等操作,而FaceForensics++数据库是一个由数千个使用不同DeepFake方法操纵的视频组成,并包含四个假子数据集,即DeepFake Detection (DFD), DeepFake (DF), Face2Face (F2F)和FaceSwap (FS)。
这里提供一个本人亲身使用过并下载完成后的方法(会提供下载脚本,笔者本身也是小白所以说的会非常详细并且简单易懂)。
找到dataset的README文件
进入github上搜索到FaceForensics++数据库的README文件,网址如下:
[数据库GitHub上有关数据库部分的说明文件网址]: FaceForensics/dataset/README.md at master · ondyari/FaceForensics (github.com)(https://github.com/ondyari/FaceForensics/blob/master/dataset/README.md)
README文件对数据库的下载和组成部分,包括各个数据库所需要占用空间的大小做了详细的说明(其中的C23和C40代表压缩参数):
注意:接下来的操作都需要在挂代理的前提下实现
获取下载脚本并并保存到本地
下载脚本的获取,需要填写一个README文件上面提供的表单,链接如下:
当然,你也可以通过README文件的以下语句中的蓝字进入该链接
表单上注意填写好自己的邮箱(qq邮箱是可以的),其他的可以随便填一下,大概就是用英文稍微介绍一下自己的项目,笔者这里随便填的,没有任何问题。
发送表单以后,会收到一封来自数据集研发者的邮件,上面会提供他们研发的一系列的数据集,包括FaceForensics++的下载脚本链接和Github链接,如下:
点击第一个“here”进入脚本页,我这里是直接把脚本复制,然后在电脑桌面建立一个txt文件并把脚本粘进去,接着把文件后缀名称改为“.py”即可。
CMD窗口下载数据库
打开cmd窗口
确保你的文件命名为FaceForensics++.py并保存在你的桌面(当然也可以是别的名字,也可以保存到别的地方,但是为了后面命令可以简单一点笔者觉得最好放在桌面)
Cmd窗口输入命令:
cd Desktop
接着cmd窗口会显示已经进入桌面,接着输入下载命令:
下面是对github上对于下载命令的解释(包括的各部分的含义):
python FaceForensics++.py
//前面的python指你的电脑本身的python.exe文件,注意并不一定是“python”,需要观察你自己下载的python中的pythin.exe文件的命名是什么,比如笔者下载的python运行文件的命名是python3.11.exe,所以这里就应该python3.11
<output path>
//这里意思是数据下载的地址,即你的数据集要放在哪里(注意存储空间要足够)
-d <dataset type, e.g., Face2Face, original or all>
//如果你要下载FaceForensics++全部直接-all即可,也可以选择FaceForensics++数据集其中的一项来下载
-c <compression quality, e.g., c23 or raw>
//这里指压缩参数选择,如果想要下载原始数据可以选-raw,笔者下载的是-23压缩版
-t <file type, e.g., videos, masks or models>
//文件下载的类型-video即可下载deepfake的video
注意,第一个命令可以尝试在你的cmd窗口直接输入python看看是否是你的python运行文件名称,比如当笔者在cmd窗口输入"python3.11"时,会输出:
就说明我的第一个命令应该是"python3.11",也就是使用python编译运行我们的脚本文件
比如,要在D盘上的FaceForensics++文件里下载FaceForensics++数据集全部视频,以C23参数压缩,命令可以是:
python3.11 FaceForensics.py E:/FaceForensics++ -d all -c c23 -t videos
注意,运行过程中如果出现“502 BadGateway”提示,可能是你的服务不能使用脚本默认的,而是需要更改,脚本里面提供了三个server可供选择,分别是EU,EU2和CA,对应了欧洲1,2和加拿大,默认使用的是EU,脚本这部分代码如下:
parser.add_argument('--server', type=str, default='EU',
help='Server to download the data from. If you '
'encounter a slow download speed, consider '
'changing the server.',
choices=SERVERS
)
args = parser.parse_args()
# URLs
server = args.server
if server == 'EU':
server_url = 'http://canis.vc.in.tum.de:8100/'
elif server == 'EU2':
server_url = 'http://kaldir.vc.in.tum.de/faceforensics/'
elif server == 'CA':
server_url = 'http://falas.cmpt.sfu.ca:8100/'
else:
raise Exception('Wrong server name. Choices: {}'.format(str(SERVERS)))
args.tos_url = server_url + 'webpage/FaceForensics_TOS.pdf'
args.base_url = server_url + 'v3/'
args.deepfakes_model_url = server_url + 'v3/manipulated_sequences/' + \
'Deepfakes/models/'
return args
所以,在你的CMD窗口可以指定以下server,笔者在出错以后,将server改为EU2就可以顺利下载,总体命令如下:
cd Desktop
#回车
python3.11 FaceForensics.py E:/FaceForensics++ --server EU2 -d all -c c23 -t videos
PS:–server EU2即指定server为EU2
接下来数据就会开始下载(会有进度条显示下载情况),如下图:
由于挂代理,所以可能会出现不稳定的停止下载的情况,如果遇到程序中断,没有关系,确保网络、代理正确连接后重新输入下载命令即可,它会自动跳过已经下载好的文件,继续下载其他文件。
建议下载数据集时尽量保证网速较快,并且代理稳定(否则一中断就重新输入一遍命令很麻烦)。
脚本
附:邮件提供的FaceForensics++脚本如下:
#!/usr/bin/env python
""" Downloads FaceForensics++ and Deep Fake Detection public data release
Example usage:
see -h or https://github.com/ondyari/FaceForensics
"""
# -*- coding: utf-8 -*-
import argparse
import os
import urllib
import urllib.request
import tempfile
import time
import sys
import json
import random
from tqdm import tqdm
from os.path import join
# URLs and filenames
FILELIST_URL = 'misc/filelist.json'
DEEPFEAKES_DETECTION_URL = 'misc/deepfake_detection_filenames.json'
DEEPFAKES_MODEL_NAMES = ['decoder_A.h5', 'decoder_B.h5', 'encoder.h5',]
# Parameters
DATASETS = {
'original_youtube_videos': 'misc/downloaded_youtube_videos.zip',
'original_youtube_videos_info': 'misc/downloaded_youtube_videos_info.zip',
'original': 'original_sequences/youtube',
'DeepFakeDetection_original': 'original_sequences/actors',
'Deepfakes': 'manipulated_sequences/Deepfakes',
'DeepFakeDetection':