teaser.gif
Pytorch实现了我们的高分辨率(例如2048x1024)逼真的视频到视频转换方法。
论文将于8月20日在Arxiv上发布。
Pytorch实现了我们的高分辨率(例如,2048x1024)逼真的视频到视频转换方法。它可用于将语义标签贴图转换为照片般逼真的视频,合成人们从边缘地图谈话,或从姿势生成人体。
视频到视频合成 Video-to-Video Synthesis Ting-Chun Wang1, Ming-Yu Liu1, Jun-Yan Zhu2, Guilin Liu1, Andrew Tao1, Jan Kautz1, Bryan Catanzaro1 1NVIDIA Corporation, 2MIT CSAIL In arXiv, 2018.
city_change_styles.gif
city_change_labels.gif
face.gif
face_multiple.gif
pose.gif
pip install dominate requests
git clone https://github.com/NVIDIA/vid2vid
cd vid2vid
datasets
文件夹中包含一个示例Cityscapes视频。python scripts/download_flownet2.py
。python scripts/download_models.py
bash ./scripts/test_2048.sh
):#!./scripts/test_2048.sh
python test.py --name label2city_2048 --loadSize 2048 --n_scales_spatial 3 --use_instance --fg --use_single_G
测试结果将保存到./results/label2city_2048/test_latest/index.html
中。
python scripts/download_models_g1.py
bash ./scripts/test_1024_g1.sh
):#!./scripts/test_1024_g1.sh python test.py --name label2city_1024_g1 --loadSize 1024 --n_scales_spatial 3 --use_instance --fg --n_downsample_G 2 --use_single_G
scripts
目录中找到更多示例脚本。datasets
文件夹下,方法与提供示例图像的方式相同。python scripts/download_models_flownet2.py
。bash ./scripts/train_512.sh
)#!./scripts/train_512.sh python train.py --name label2city_512 --gpu_ids 0,1,2,3,4,5,6,7 --n_gpus_gen 6 --n_frames_total 6 --use_instance --fg
bash ./scripts/train_1024.sh
):#!./scripts/train_1024.sh python train.py --name label2city_1024 --loadSize 1024 --n_scales_spatial 2 --num_D 3 --gpu_ids 0,1,2,3,4,5,6,7 --n_gpus_gen 4 --use_instance --fg --niter_step 2 --niter_fix_global 10 --load_pretrain checkpoints/label2city_512
./checkpoints/label2city_1024/web/index.html
。如果安装了TensorFlow,则可以./checkpoints/label2city_1024/logs
通过添加--tf_log
到培训脚本来查看TensorBoard登录。bash ./scripts/train_256_g1.sh
)#!./scripts/train_256_g1.sh python train.py --name label2city_256_g1 --loadSize 256 --use_instance --fg --n_downsample_G 2 --num_D 1 --max_frames_per_gpu 6 --n_frames_total 6
bash ./scripts/train_2048.sh
)。如果只有具有12G / 16G内存的GPU可用,请使用脚本./scripts/train_2048_crop.sh
,该脚本将在训练期间裁剪图像。此脚本无法保证性能。--label_nc N
在培训和测试期间使用。--label_nc 0
和--input_nc N
其中N是(默认值是3 RGB图像)输入通道的数量。scaleWidth
,opt.loadSize
在保持纵横比的同时,将所有训练图像的宽度缩放到(1024)。如果您需要其他设置,请使用该--resize_or_crop
选项进行更改。例如,scaleWidth_and_crop
首先调整图像的大小以使其具有宽度opt.loadSize
,然后对大小进行随机裁剪(opt.fineSize, opt.fineSize)
。crop
跳过调整大小步骤,仅执行随机裁剪。scaledCrop
在重新训练原始宽高比时裁剪图像。如果您不想进行任何预处理,请指定none
,除了确保图像可以被32整除之外什么都不做。n_gpus_gen
:用于生成器的GPU数量(而其他GPU用于鉴别器)。我们将发生器和鉴别器分成不同的GPU,因为在处理高分辨率时,即使一帧也不适合GPU。如果数字设置为-1
,则没有分离,并且所有GPU都用于生成器和鉴别器(仅适用于低分辨率图像)。n_frames_G
:馈入发电机网络的输入帧数; 即,n_frames_G - 1
是我们看过去的帧数。默认值为3(以前两帧为条件)。n_frames_D
:要馈入时间鉴别器的帧数。默认值为3。n_scales_spatial
:空间域中的比例数。我们从最粗规模一直到最精细的规模进行训练。默认值为3。n_scales_temporal
:时间鉴别器的标度数。最精细的比例采用原始帧速率的顺序。较粗略的比例在将帧n_frames_D
馈送到鉴别器之前将帧子抽样一个因子。例如,如果n_frames_D = 3
和n_scales_temporal = 3
,则鉴别器有效地看到27帧。默认值为3。max_frames_per_gpu
:训练期间一个GPU中的帧数。如果您的GPU内存可以容纳更多帧,请尝试将此数字设置得更大。默认值为1。max_frames_backpropagate
:丢失反向传播到先前帧的帧数。例如,如果此数字为4,则帧n上的丢失将反向传播到帧n-3。增加这个数字会略微改善性能,但也会导致训练不稳定。默认值为1。n_frames_total
:我们想要训练的序列中的总帧数。我们在训练期间逐渐增加这个数字。niter_step
:我们加倍了多少个时代n_frames_total
。默认值为5。niter_fix_global
:如果这个数字不是0,那么在开始微调所有尺度之前,只训练这个时期的最佳空间尺度。batchSize
:一次训练的序列数。我们通常将batchSize设置为1,因为通常,一个序列足以占用所有GPU。如果要执行batchSize> 1,则目前仅batchSize == n_gpus_gen
支持。no_first_img
:如果未指定,模型将假定给出第一帧并合成连续帧。如果指定,模型也将尝试合成第一帧。fg
:如果已指定,请使用前景 - 背景分离模型。options/train_options.py
并options/base_options.py
查看所有训练flag; 看到options/test_options.py
和options/base_options.py
所有测试标志。如果您发现这对您的研究有用,请使用以下内容。
@article{wang2018vid2vid,
title={Video-to-Video Synthesis},
author={Ting-Chun Wang and Ming-Yu Liu and Jun-Yan Zhu and Guilin Liu and Andrew Tao and Jan Kautz and Bryan Catanzaro},
journal={arXiv},
year={2018}
}
这段代码大量借用了pytorch-CycleGAN-and-pix2pix和pix2pixHD。