🚀 流式文本到视频扩展模型VidXTend
本仓库包含了 StreamingT2V 第二阶段的精简独立管道,名为 "VidXTend"。该模型主要用于每次将 16 帧、分辨率为 256px x 256px 的动画扩展 8 帧(在 8fps 帧率下为 1 秒)。
引用信息
@article{henschel2024streamingt2v,
title={StreamingT2V: Consistent, Dynamic, and Extendable Long Video Generation from Text},
author={Henschel, Roberto and Khachatryan, Levon and Hayrapetyan, Daniil and Poghosyan, Hayk and Tadevosyan, Vahram and Wang, Zhangyang and Navasardyan, Shant and Shi, Humphrey},
journal={arXiv preprint arXiv:2403.14773},
year={2024}
}
代码仓库
https://github.com/Picsart-AI-Research/StreamingT2V
🚀 快速开始
✨ 主要特性
- 专门用于扩展 16 帧、256px x 256px 动画,每次扩展 8 帧。
- 提供命令行工具和 Python 接口,方便使用。
📦 安装指南
首先,将 VidXTend 包安装到你的 Python 环境中。如果你要为 VidXTend 创建一个新环境,请确保指定支持 CUDA 的 torch 版本,否则模型将仅在 CPU 上运行。
pip install git+https://github.com/painebenjamin/vidxtend.git
💻 使用示例
命令行使用
安装包时会同时安装命令行工具 vidxtend
。
Usage: vidxtend [OPTIONS] VIDEO PROMPT
在视频文件上运行 VidXtend,将生成的帧连接到视频末尾。
Options:
-fps, --frame-rate INTEGER 视频帧率。默认为输入视频的帧率。
-s, --seconds FLOAT 要添加到视频中的总秒数。将此数字乘以帧率以确定生成的新帧总数。 [default: 1.0]
-np, --negative-prompt TEXT 扩散过程的负提示词。
-cfg, --guidance-scale FLOAT 扩散过程的引导比例。 [default: 7.5]
-ns, --num-inference-steps INTEGER
扩散步骤数。 [default: 50]
-r, --seed INTEGER 随机种子。
-m, --model TEXT HuggingFace 模型名称。
-nh, --no-half 不使用半精度。
-no, --no-offload 不将模型卸载到 CPU 以保留 GPU 内存。
-ns, --no-slicing 不使用 VAE 切片。
-g, --gpu-id INTEGER 要使用的 GPU ID。
-sf, --model-single-file 下载并使用单个文件而不是目录。
-cf, --config-file TEXT 使用单文件模型选项时要使用的配置文件。接受路径或与单文件在同一目录中的文件名。如果未提供,将从模型选项中传递的存储库下载。 [default: config.json]
-mf, --model-filename TEXT 使用单文件模型选项时要下载的模型文件。 [default: vidxtend.safetensors]
-rs, --remote-subfolder TEXT 使用单文件模型选项时要从中下载的远程子文件夹。
-cd, --cache-dir DIRECTORY 下载的缓存目录。默认使用 huggingface 缓存。
-o, --output FILE 输出文件。 [default: output.mp4]
-f, --fit [actual|cover|contain|stretch]
图像适配模式。 [default: cover]
-a, --anchor [top-left|top-center|top-right|center-left|center-center|center-right|bottom-left|bottom-center|bottom-right]
图像锚点。 [default: top-left]
--help 显示此消息并退出。
Python 使用
你可以创建管道,自动从本仓库拉取权重,有以下两种方式:
基础用法
作为独立模型:
from vidxtend import VidXTendPipeline
pipeline = VidXTendPipeline.from_pretrained(
"benjamin-paine/vidxtend",
torch_dtype=torch.float16,
variant="fp16",
)
高级用法
作为单个文件:
from vidxtend import VidXTendPipeline
pipeline = VidXTendPipeline.from_single_file(
"benjamin-paine/vidxtend",
torch_dtype=torch.float16,
variant="fp16",
)
使用以下方法提高性能:
pipeline.enable_model_cpu_offload()
pipeline.enable_vae_slicing()
pipeline.set_use_memory_efficient_attention_xformers()
使用示例如下:
new_frames = pipeline(
prompt=prompt,
negative_prompt=None,
image=images[-8:],
input_frames_conditioning=images[:1],
eta=1.0,
guidance_scale=7.5,
output_type="pil"
).frames[8:]
📄 许可证
本项目采用 MIT 许可证。