Go to file
Alex-Kunn 1ad6f24bba
Update README.md
2023-04-24 16:32:32 +08:00
README.md Update README.md 2023-04-24 16:32:32 +08:00

README.md

环境

运行pip install -r requirements.txt

重要的包:

facenet-pytorch         2.5.2(人脸检测)
torchaudio              0.13.0+cu116
librosa                 0.9.2
opencv-python           4.6.0.66
torch                   1.13.0
albumentations          1.3.0 (数据增强库,做压缩和高斯模糊等实验使用)

数据集

在这个链接下载FakeAVCeleb:https://github.com/DASH-Lab/FakeAVCeleb

然后在这个连接下载通用视频数据集 http://www.robots.ox.ac.uk/~vgg/data/voxceleb/

这个连接对应的地址好像下载不了了=。= 后面他挪到一个韩国人实验室网站上面去了

数据预处理

首先呢这个数据集存在一个问题真实视频只有500个伪造的19500个。

所以为了解决这个问题顺便避免信息泄露问题从VoxCeleb中随机挑选了同身份的真实视频真实视频数量扩充到8000个

python adddata.py

adddata.py会生成一个addlist.txt即选中的用以扩充的真实视频然后将这些视频与原数据集合并即为没有问题的数据集。

用人脸检测算法提取视频的人脸帧,然后按五张连续一组分组,格式如下:

  --FakeAVCeleb
     --FakeVideo-FakeAudio
        --African
          --men
           --id00076
             --0000000
             --0000001
             ...

不想自己实现的话运行preprocess.py 其将main()设置的文件夹下的视频按照这个格式进行检测或切片

python preprocess.py

对于VoxCeleb数据集因为其太太太太太太大没有用上其所有数据进行实验所以对于每个人的视频只抽取了十秒作为训练样本。

如果资源足够你可以试试把所有的视频都用来训练。

处理方式:

python prevox2.py

完成后文件夹格式应当是这个样子:

VoxCeleb2
  --dev
   --mp4
    --id00012
     --train
       --0000
       --0001

然后,将这些视频分为训练集和测试集:

python split.py

会生成train.txt和test.txt

预训练

python pretrain.py --data_root --num_gpu --checkpoint_dir --lr --batch_size

data_root 为数据集地址。num_gpu为指定用哪几块卡 比如'1,2' checkpoint_dir为保存训练参数的文件夹。

PS.可以自行更换不同的人脸和语音编码器尝试训练。更改训练代码中的face_encoder和voice_encoder即可。

训练

python train.py --data_root --num_gpu --checkpoint_dir --lr --batch_size

在train.py中可以更改预加载权重。

测试

python testn.py

会生成相似度分布图