6.3 系统配置
在“configs”目录中,保存了本项目中涉及的不同数据集和任务提供配置文件。这些配置文件定义了模型的训练、验证和测试过程中的关键参数和设置,包括网络结构、优化器参数、学习率调度、数据预处理方式等。目录中每个子文件夹或文件的命名(如 ffs、sky、t2x、taichi、ucf101)对应具体的数据集或任务,例如 FaceForensics、SkyTimelapse、文本到视频生成(T2X)、Taichi-HD 和 UCF101。这种组织方式使用户可以快速定位和加载特定任务或数据集的配置,方便实验的复现和扩展。
6.3.1 FaceForensics数据集配置
FaceForensics 是一个广泛用于研究深度伪造检测和视频生成任务的数据集。它包含了真实视频和通过多种伪造技术(如Deepfake和Face2Face)生成的合成视频,主要用于评估模型在检测或生成任务中的性能。数据集包括了高质量的人脸视频,并提供多种分辨率(如 256×256)和预处理版本,适用于无条件视频生成、条件生成及伪造检测等多种任务。其多样性和逼真的数据特性使其成为视频生成和深伪研究中的重要基准。
(1)编写配置文件ffs_img_train.yaml,这是一个用于训练 Latte 模型在 FaceForensics(ffs_img)数据集上进行视频生成的配置文件,它指定了数据路径、预训练模型路径、模型架构、训练参数、保存和加载的相关设置,以及优化器和硬件资源使用的配置。文件中的参数可以控制生成帧数、分辨率、采样步数等关键属性,同时支持无条件生成和条件生成两种模式。另外,在训练过程中还考虑了内存优化和训练速度的配置选项。
dataset: "ffs_img"
data_path: "/path/to/datasets/preprocessed_ffs/train/videos/" # 数据集路径:预处理后的训练视频
frame_data_path: "/path/to/datasets/preprocessed_ffs/train/images/" # 数据集路径:帧图像
frame_data_txt: "/path/to/datasets/preprocessed_ffs/train_list.txt" # 数据集文件列表路径
pretrained_model_path: "/path/to/pretrained/Latte/" # 预训练模型路径
# 保存与加载
results_dir: "./results_img" # 保存结果的目录
pretrained:
# 模型配置:
model: LatteIMG-XL/2 # 模型类型
num_frames: 16 # 视频帧数量
image_size: 256 # 图像分辨率,选项=[256, 512]
num_sampling_steps: 250 # 采样步数
frame_interval: 3 # 帧间隔
fixed_spatial: False # 是否固定空间分辨率
attention_bias: True # 是否使用注意力偏置
learn_sigma: True # 重要:是否学习方差
extras: 1 # [1, 2] 1=无条件生成,2=基于类别的条件生成
# 训练配置:
save_ceph: True # 重要:是否保存中间结果
use_image_num: 8 # 使用的图像数量
learning_rate: 1e-4 # 学习率
ckpt_every: 10000 # 每隔多少步保存检查点
clip_max_norm: 0.1 # 梯度裁剪最大范数
start_clip_iter: 500000 # 开始使用梯度裁剪的迭代步数
local_batch_size: 4 # 重要:本地批量大小
max_train_steps: 1000000 # 最大训练步数
global_seed: 3407 # 全局随机种子
num_workers: 8 # 数据加载的线程数
log_every: 100 # 日志间隔步数
lr_warmup_steps: 0 # 学习率预热步数
resume_from_checkpoint: # 从检查点恢复
gradient_accumulation_steps: 1 # TODO 梯度累积步数
num_classes: # 类别数量
# 低显存和加速训练
use_compile: False # 是否使用编译优化
mixed_precision: False # 是否启用混合精度
enable_xformers_memory_efficient_attention: False # 是否启用xFormers内存高效注意力机制
gradient_checkpointing: False # 是否使用梯度检查点
(2)编写文件ffs_train.yaml,这是一个用于训练 Latte 模型在 FaceForensics(ffs)数据集上进行视频生成的配置文件。文件指定了数据路径、预训练模型路径、保存和加载的目录、模型架构和参数、训练配置,以及优化显存使用和训练速度的选项。该配置支持控制生成帧数、分辨率、采样步数等,同时可以选择无条件生成或基于类别的条件生成模式。文件ffs_train.yaml注重内存优化和训练过程中的灵活性,适合大规模视频生成任务的训练。
dataset: "ffs" # 数据集名称
data_path: "/path/to/datasets/preprocess_ffs/train/videos/" # 数据集路径:预处理后的训练视频
pretrained_model_path: "/path/to/pretrained/Latte/" # 预训练模型路径
# 保存与加载
results_dir: "./results" # 保存结果的目录
pretrained:
# 模型配置:
model: Latte-XL/2 # 模型类型
num_frames: 16 # 视频帧数量
image_size: 256 # 图像分辨率,选项=[256, 512]
num_sampling_steps: 250 # 采样步数
frame_interval: 3 # 帧间隔
fixed_spatial: False # 是否固定空间分辨率
attention_bias: True # 是否使用注意力偏置
learn_sigma: True # 重要:是否学习方差
extras: 1 # [1, 2] 1=无条件生成,2=基于类别的条件生成
# 训练配置:
save_ceph: True # 重要:是否保存中间结果
learning_rate: 1e-4 # 学习率
ckpt_every: 10000 # 每隔多少步保存检查点
clip_max_norm: 0.1 # 梯度裁剪最大范数
start_clip_iter: 20000 # 开始使用梯度裁剪的迭代步数
local_batch_size: 5 # 重要:本地批量大小
max_train_steps: 1000000 # 最大训练步数
global_seed: 3407 # 全局随机种子
num_workers: 8 # 数据加载的线程数
log_every: 100 # 日志间隔步数
lr_warmup_steps: 0 # 学习率预热步数
resume_from_checkpoint: # 从检查点恢复
gradient_accumulation_steps: 1 # TODO 梯度累积步数
num_classes: # 类别数量
# 低显存和加速训练
use_compile: False # 是否使用编译优化
mixed_precision: False # 是否启用混合精度
enable_xformers_memory_efficient_attention: False # 是否启用xFormers内存高效注意力机制
gradient_checkpointing: False # 是否使用梯度检查点
文件ffs_train.yaml和前面的ffs_img_train.yaml文件相比,两者的主要区别如下
- 文件ffs_train.yaml 使用的数据集标识为 ffs,任务可能是处理视频序列(以完整视频为单位)。
- 文件ffs_img_train.yaml 使用的数据集标识为 ffs_img,任务偏向于处理从视频中提取的独立帧(以图像为单位)。
(3)文件ffs_sample.yaml是一个用于配置 Latte 模型视频生成采样的文件,它定义了模型的参数(如帧数、分辨率、帧间隔等)、采样方法(如 DDPM)、加速配置(支持 FP16)、以及生成视频的保存路径和采样数量。文件还提供了分布式采样(DDP)的批处理配置,适合在多 GPU 环境下并行生成大量样本,如用于评估 FVD(Frechet Video Distance)等性能指标。
ckpt: # 将被覆盖的检查点路径
save_img_path: "./sample_videos" # 将被覆盖的保存采样视频路径
pretrained_model_path: "/path/to/pretrained/Latte/" # 预训练模型路径
# 模型配置:
model: Latte-XL/2 # 模型类型
num_frames: 16 # 视频帧数量
image_size: 256 # 图像分辨率,选项=[256, 512]
frame_interval: 2 # 帧间隔
fixed_spatial: False # 是否固定空间分辨率
attention_bias: True # 是否使用注意力偏置
learn_sigma: True # 是否学习方差
extras: 1 # [1, 2] 1=无条件生成,2=基于类别的条件生成
num_classes: # 类别数量
# 模型加速配置:
use_compile: False # 是否使用编译优化
use_fp16: True # 是否使用 FP16 精度
# 采样配置:
seed: # 随机种子
sample_method: 'ddpm' # 采样方法,使用 DDPM
num_sampling_steps: 250 # 采样步数
cfg_scale: 1.0 # 类别条件引导尺度
negative_name: # 负面引导条件
# DDP(分布式数据并行)采样配置:
per_proc_batch_size: 2 # 每个进程的批量大小
num_fvd_samples: 2048 # 用于 FVD 评估的采样数量
6.3.2 配置Sky Timelapse数据集
Sky Timelapse 数据集是一个专注于天空场景的时间推移视频数据集,主要捕捉了各种动态的天空变化,例如日出、日落、云层移动、星空等自然现象。该数据集以高分辨率的视频形式记录,适合用于研究时间序列建模、视频生成、天气预测等任务,尤其是在无条件和条件视频生成领域有广泛应用。Sky Timelapse 数据集提供了丰富的场景多样性和视觉动态特征,是评估视频生成模型效果的重要基准之一。
在本项目中,文件sky_img_train.yaml是一个用于训练 Latte 模型在 Sky Timelapse 数据集上进行基于图像帧生成任务的配置文件,该配置文件定义了数据路径、模型参数(如分辨率、帧数、采样步数等)、训练参数(如学习率、批量大小、最大训练步数等),并提供了适配显存优化和训练速度的选项。它支持无条件生成和基于类别的条件生成模式,同时对训练细节(如日志记录频率、检查点保存间隔)有明确配置。
dataset: "sky_img" # 数据集名称
data_path: "/path/to/datasets/sky_timelapse/sky_train/" # 数据路径:Sky Timelapse 数据集的训练集路径
pretrained_model_path: "/path/to/pretrained/Latte/" # 预训练模型路径
# 保存与加载:
results_dir: "./results_img" # 保存结果的目录
pretrained:
# 模型配置:
model: LatteIMG-XL/2 # 模型类型
num_frames: 16 # 视频帧数量
image_size: 256 # 图像分辨率,选项=[256, 512]
num_sampling_steps: 250 # 采样步数
frame_interval: 3 # 帧间隔
fixed_spatial: False # 是否固定空间分辨率
attention_bias: True # 是否使用注意力偏置
learn_sigma: True # 是否学习方差
extras: 1 # [1, 2] 1=无条件生成,2=基于类别的条件生成
# 训练配置:
save_ceph: True # 重要:是否保存中间结果
use_image_num: 8 # 重要:每次训练使用的图像帧数量
learning_rate: 1e-4 # 学习率
ckpt_every: 10000 # 每隔多少步保存检查点
clip_max_norm: 0.1 # 梯度裁剪的最大范数
start_clip_iter: 20000 # 开始使用梯度裁剪的迭代步数
local_batch_size: 4 # 重要:本地批量大小
max_train_steps: 1000000 # 最大训练步数
global_seed: 3407 # 全局随机种子
num_workers: 8 # 数据加载线程数
log_every: 50 # 日志记录间隔
lr_warmup_steps: 0 # 学习率预热步数
resume_from_checkpoint: # 从检查点恢复
gradient_accumulation_steps: 1 # TODO 梯度累积步数
num_classes: # 类别数量
# 显存优化和加速训练:
use_compile: False # 是否使用编译优化
mixed_precision: False # 是否启用混合精度
enable_xformers_memory_efficient_attention: False # 是否启用 xFormers 内存高效注意力机制
gradient_checkpointing: False # 是否使用梯度检查点
6.3.3 配置其它数据集
除了前面介绍的数据集配置信息,在本项目中还配置了其它数据集,具体说明如下所示:
1. t2x 数据集
t2x 通常指的是 Text-to-Video (T2V) 数据集,旨在评估模型从文本生成视频的能力。这类数据集包含大量文字描述和与之对应的视频剪辑,涵盖广泛的主题和动态场景,文本描述详细标注视频的内容、动作、场景等特征。T2V 数据集主要用于训练和测试文本条件下的视频生成模型,是研究多模态生成任务的核心资源。
2. Taichi 数据集
Taichi 数据集 专注于捕捉人体运动,通常用于生成或模拟动态的动作序列。它包含大量表演动作的视频,如舞蹈、武术、瑜伽等,注重人体的姿态和动作细节,是评估视频生成模型在动态场景下表现的常用基准。Taichi 数据集广泛应用于无条件生成和基于骨骼关键点的条件生成任务。
3. UCF101 数据集
UCF101 是一个流行的动作识别数据集,包含 101 个类别的真实世界视频,如骑马、游泳、打篮球等运动场景。该数据集覆盖了多种复杂的背景和动作动态,具有高多样性和丰富性。除了动作识别,它还被广泛用于视频生成任务,评估模型在生成真实、多样且连贯的视频方面的能力。
标签:Diffusion,视频,Transformer,训练,文生,ffs,生成,数据,步数 From: https://blog.csdn.net/asd343442/article/details/145095643