当前位置:   article > 正文

代码使用手册(自用)_代码手册

代码手册

note:以下两个工作均为使用CNNDetection的训练基本框架下修改,具体网络在network文件下进行自己修改完成。

第一项工作(ForgeryNIR)

一、Cross-Modality Knowledge Distillation (CMKD)

1.使用方法

安装包
  • install Pytorch (pytorch.org)
  • pip install -r requirements.txt
(1) 数据准备

下载好需要的数据集,按照如下方式进行组织

ForgeryNIR
      |--train              
           |--ForgeryNIR-std
                           |--0_real
                           |--cyclegan
                           |--progan
                           |--stylegan
                           |--stylegan2      
              |--ForgeryNIR-rand
                          ...
              |--ForgeryNIR-mix
                          ...
                          
      |--test              
           |--ForgeryNIR-std
                           |--0_real
                           |--cyclegan
                           |--progan
                           |--stylegan
                           |--stylegan2      
              ...
      |--val           
           |--ForgeryNIR-std
                           |--0_real
                           |--cyclegan
                           |--progan
                           |--stylegan
                           |--stylegan2      
              ...
         
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
(2) 训练模型

我们使用 checkpoints/[model_name]/model_epoch_best.pth 作为我们训练的最优模型。

  1. 首先我们需要使用可见光数据集(这里用的wildDeepfake)预训练一个教师模型并保存在以下路径
    /home/gpu/data/CNNDetection-master_6/checkpoints/resnet50_wildDeepfake/model_epoch_best.pth
  2. 下面这段命令是在multiple epochs设置下以wildDeepfake预训练的模型作为教师模型,以ForgeryNIR-std训练,以ForgeryNIR-std验证的训练代码

python train.py
–name resnet50_wildDF_kd_forgerynir_yanshou
–dataroot ./dataset_2/
–classes faces_muti_epochs --batch_size 64 --load_teacher_model --teacher_model_path /home/gpu/data/CNNDetection-master_6/checkpoints/resnet50_wildDeepfake/model_epoch_best.pth

可直接运行的命令:
python train.py --name resnet50_wildDF_kd_forgerynir_yanshou --dataroot ./dataset_2/ --classes faces_muti_epochs --batch_size 64 --load_teacher_model --teacher_model_path /home/gpu/data/CNNDetection-master_6/checkpoints/resnet50_wildDeepfake/model_epoch_best.pth

参数说明:
--name:模型名称
--dataroot:训练,测试集所在文件夹
--classes:训练集/测试集文件夹名称
--batch_size:批
--load_teacher_model:是否导入教师模型
--teacher_model_path:教师模型路径

(3) 测试模型

在测试集已经按照要求放置好之后,可以通过下面的代码测试:

python eval.py --vals faces_muti_epochs
–batch_size 64
–model_path /home/gpu/data/CNNDetection-master_6/checkpoints/resnet50_wildDF_kd_forgerynir_yanshou/model_epoch_best.pth
可直接运行的命令
python eval.py --vals faces_muti_epochs --batch_size 64 --model_path /home/gpu/data/CNNDetection-master_6/checkpoints/resnet50_wildDF_kd_forgerynir_yanshou/model_epoch_best.pth

参数说明:
--vals:测试集文件夹名称
--batch_size:批
--model_path:需要测试模型的路径


第二项工作(TCSVT)

一、Spatial-Temporal Frequency Forgery Clue for Video Forgery Detection in VIS and NIR Scenario

1.使用方法

安装包
  • install Pytorch (pytorch.org)
  • pip install -r requirements.txt
(1) 数据准备

下载好需要的数据集。
生成相应的视频数据集路径与label值(0:real,1:fake)

DF_W_train.txt
./dataset/DF_W/train/0_real/352/real/135 0
./dataset/DF_W/train/0_real/352/real/122 0
./dataset/DF_W/train/0_real/352/real/102 0
./dataset/DF_W/train/0_real/352/real/124 0
./dataset/DF_W/train/0_real/352/real/159 0
./dataset/DF_W/train/0_real/352/real/25 0
./dataset/DF_W/train/1_fake/205/fake/12 1
./dataset/DF_W/train/1_fake/205/fake/13 1
./dataset/DF_W/train/1_fake/291/fake/43 1
./dataset/DF_W/train/1_fake/291/fake/5 1
./dataset/DF_W/train/1_fake/291/fake/356 1
./dataset/DF_W/train/1_fake/291/fake/196 1
./dataset/DF_W/train/1_fake/291/fake/345 1
./dataset/DF_W/train/1_fake/291/fake/329 1
./dataset/DF_W/train/1_fake/291/fake/321 1
DF_W_val.txt
验证集同理

(2) 训练模型

我们使用 checkpoints/[model_name]/model_epoch_best.pth 作为我们训练的最优模型。
以下命令是主干网络为ResNet50,参数设置:帧数 f r a m e s = 16 frames=16 frames=16,分块 K K K 选择为 4 × 4 4 \times 4 4×4 。数据集选择为:训练集:WildDeepfake,测试集:WildDeepfake 的训练示例

python train.py --name resnet50_DF-W_frames16_k16_W
–train_txt DF_W_train.txt
–val_txt DF_W_val.txt
–batch_size 8
–num_frames 16
–k 16
–model_name resnet50
–num_classes 1
–our_weight

可直接运行的命令:
python train.py --name resnet50_DF-W_frames16_k16_W --train_txt DF_W_train.txt --val_txt DF_W_val.txt --batch_size 8 --num_frames 16 --k 16 --model_name resnet50 --num_classes 1 --our_weight

参数说明:
--name:模型名
--train_txt:训练集txt路径
--val_txt:测试集txt路径
--batch_size:批次
--num_frames:一个视频中选取的帧数量[4,8,16,32]
--k:分块的数量[4,8,64]
--model_name:模型名称[resnet50,xception]
--num_classes:类别数,这里因为为2分类,所以固定为1
--our_weight:是否使用DCT增强权重矩阵

(3) 测试模型

可以通过下面的代码测试:

python eval.py --model_path ./checkpoints/resnet50_DF-W_frames16_k16_W/model_epoch_best.pth
–val_txt DF_W_val.txt
–batch_size 16
–num_frames 16
–k 16
–model_name resnet50
–num_classes 1
–our_weight
可直接运行的命令
python eval.py --model_path ./checkpoints/resnet50_DF-W_frames16_k16_W/model_epoch_best.pth --val_txt DF_W_val.txt --batch_size 16 --num_frames 16 --k 16 --model_name resnet50 --num_classes 1 --our_weight

参数说明:
--model_path:模型所在路径
--val_txt:测试集txt文件路径
--batch_size:批
--num_frames:一个视频中选取的帧数量
--k:分块的数量
--model_name:模型名称[resnet50,xception]
--num_classes:类别数,这里因为为2分类,所以固定为1
--our_weight:是否使用DCT增强权重矩阵

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/106305
推荐阅读
相关标签
  

闽ICP备14008679号