话不多说,上代码。
# train on 256_g1
$ python train.py --name <任务名>_256_g1 --input_nc 3 --loadSize 256 --n_downsample_G 2 --num_D 1 --max_frames_per_gpu 4 --n_frames_total 15 --dataroot datasets/<我的数据集>/ --save_epoch_freq 10 --gpu_ids=2
# train on 512_g1
$ python train.py --name <任务名>_512_g1 --input_nc 3 --loadSize 512 --n_scales_spatial 2 --n_downsample_G 2 --max_frames_per_gpu 1 --n_frames_total 4 --niter_step 2 --niter_fix_global 8 --niter_decay 5 --load_pretrain checkpoints/<任务名>_256_g1 --dataroot datasets/<我的数据集>/ --save_epoch_freq 10 --gpu_ids 2
# train on 1024_g1
$ python train.py --name <任务名>_1024_g1 --input_nc 3 --loadSize 896 --n_scales_spatial 3 --n_frames_D 2 --n_downsample_G 2 --num_D 3 --max_frames_per_gpu 1 --n_frames_total 4 --niter_step 2 --niter_fix_global 8 --niter_decay 5 --load_pretrain checkpoints/<任务名>_512_g1 --lr 0.0001 --dataroot datasets/<我的数据集>/ --save_epoch_freq 8 --gpu_ids 2
# test
# test on 512_g1
$ python test.py --name <任务名>_512_g1 --input_nc 3 --loadSize 512 --n_scales_spatial 2 --n_downsample_G 2 --gpu_ids=3 --dataroot datasets/<我的数据集>/ --no_first_img
# test on 1024_g1
$ python test.py --name <任务名>_1024_g1 --input_nc 3 --loadSize 1024 --n_scales_spatial 3 --n_downsample_G 2 --gpu_ids 2 --dataroot datasets/<我的数据集>/ --no_first_img
备注:
1)我们是在单个GPU上做的训练;
2)命令需要按顺序执行;
3)数据集的准备参照street的格式;
4)训练1024的时候,如果卡是11G的,第二次更新训练参数的时候可能会内存溢出,不过只要设置“save_epoch_freq”小一些使它至少可以保留一次即可(不过训练结果不能保证);
5)<xxx>内表示这一部分需要自定义,完了后不需要带尖括号。
""" Dataset 结构图 """
"""
datasets/my_dataset_name
├── train_A
│ ├── seq_000000
│ ├── seq_000001
│ └── ...
│
├── train_B
│ ├── seq_000000
│ ├── seq_000001
│ └── ...
│
├── test_A
│ ├── seq_000000
│ ├── seq_000001
│ └── ...
│
└── test_B
├── seq_000000
├── seq_000001
└── ...
"""
至此,对vid2vid的研究告一段落,下阶段的研究可以与其作对比实验了!
祝君安!