🚀 流式文本到視頻擴展模型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 許可證。