Stable Diffusion是如何生成视频

Stable Diffusion如何生成视频?

Stable Diffusion 生成视频,其核心可以理解为:在图像生成的基础上,引入了"时间"这个新维度,让AI学会如何让画面中的元素连贯、合理地动起来

1、核心挑战:从"一张图"到"连续帧"

从生成单张图像到生成连续视频,AI面临的最大挑战是保持时序一致性

  • 图像生成:只负责创造一张完美的静态画面。

  • 视频生成 :需要生成一连串(如14到25帧)画面。这些画面不仅每一帧都要高质量,更重要的是,帧与帧之间物体的外观、位置和运动逻辑必须连贯,不能出现闪烁、变形或跳跃。

如果只是简单地将图像生成模型逐帧独立运行,得到的只会是一堆毫无关联的静态图,无法形成流畅的视频。

2、核心原理:为图像模型注入"时间感"

为了让模型理解"时间",主流技术通过在基础图像模型(如Stable Diffusion)中插入时间层(Temporal Layers) 并微调来实现。

  • 图像生成 :模型内部主要是空间层(Spatial Layers),负责处理单张图片内二维平面(高和宽)上的空间关系。

  • 视频生成 :在空间层的基础上,额外插入专门处理时间维度的层,主要有两种形式:

    1. 时间注意力(Temporal Attention):让模型在处理某一帧时,也能"关注"到前后帧的信息,从而确保物体外观和运动的连贯性。

    2. 3D卷积(3D Convolution):将原本处理单张2D图片的卷积核,扩展为能同时处理多帧的3D卷积核,一次性捕捉时空特征。

将这两种层插入到预训练的Stable Diffusion模型中,并在视频数据上微调,就实现了功能升级。

3、将Stable Diffusion用于视频生成主要有以下几种主流方案:
方案名称 核心原理 特点与用途 适合人群
Stable Video Diffusion (SVD) 官方视频生成模型。在SD核心模型基础上,插入时间层并在大规模视频数据集上专门训练。 高质量的图生视频/文生视频。生成视频动作稳定、画质高,是专业级选择。支持14-25帧、576x1024等分辨率。 追求高质量和稳定性的专业用户。
AnimateDiff 即插即用的运动模块。训练一个独立于SD的"运动先验"模块,可插入到任何基于SD的模型中。 为个性化模型添加动画。适合拥有自己偏好的SD模型(如动漫风格),想为其快速增加动画功能的用户。 希望为自己喜爱的模型添加动画功能的进阶玩家。
Deforum / Zoom 潜空间"漫游" 。通过控制每帧的潜空间噪声,在去噪过程中让画面产生平滑的视角变化、缩放或平移。 创意视觉特效。能生成类似"无限缩放"、"风格迁移"等迷幻、酷炫的抽象动画。 追求创意视觉风格,而非写实物理运动的艺术家。
Text2Video-Zero 零样本视频生成 。无需训练,直接利用SD生成视频。通过为不同帧的潜空间噪声编码运动(如平移、旋转)来保证一致性。 快速实验。概念验证或快速生成简单运动视频。 想快速上手、了解原理的开发者或研究者。
4、技术实现关键点
  • 训练阶段 :高质量的视频模型通常采用**"三步走"**策略:先在图文数据上训练图像模型,再在大规模视频数据上预训练,最后在精选的高质量视频数据上微调。

  • 输入方式 :除了文本,图生视频(Image-to-Video) 是重要分支。模型会接收一张起始帧图片,其内容通过CLIP图像编码器VAE编码器输入模型,作为生成后续视频的"种子"。

  • 微调条件 :模型可接受帧率(FPS)运动幅度等额外条件,实现对生成视频风格和动态的精细控制。

AI官方的 Stable Video Diffusion (SVD) 来获得最稳定和高品质的体验。如果你是进阶玩家,希望为自己喜欢的模型添加动画功能,那么AnimateDiff 将是一个很棒的模块化选择。如果目标是创作迷幻、酷炫的视觉特效,可以试试Deforum 。而对于想快速上手、了解原理的开发者来说,Text2Video-Zero 这类零样本方法则提供了很好的切入点。

Text2Video-Zero在hugging face 上的使用:

第一步:环境准备

首先,确保你已安装必要的库:

复制代码
pip install diffusers transformers accelerate torch imageio[ffmpeg]

第二步:运行生成脚本

创建一个 Python 文件(例如 generate_video.py),并写入以下代码:

复制代码
import torch
from diffusers import TextToVideoZeroPipeline
import imageio

# 1. 加载预训练模型
# 使用 'runwayml/stable-diffusion-v1-5' 作为基础模型
model_id = "runwayml/stable-diffusion-v1-5"
pipe = TextToVideoZeroPipeline.from_pretrained(model_id, torch_dtype=torch.float16).to("cuda")

# 2. 编写提示词
prompt = "A panda is playing guitar on times square" # 一只熊猫在时代广场弹吉他

# 3. 生成视频
# result 是一个包含所有帧的列表,每个元素都是一个 PIL 图像
result = pipe(prompt=prompt).images

# 4. 保存为视频文件
# 将 PIL 图像列表转换为 numpy 数组并保存为 mp4
result = [(r * 255).astype("uint8") for r in result]
imageio.mimsave("video.mp4", result, fps=4) # fps 控制播放速度

print("视频已生成并保存为 video.mp4")

pipe() 时调整以下参数来精细控制生成效果:

  • motion_field_strength_xmotion_field_strength_y :控制画面在水平和垂直方向的运动强度,默认值通常为 12。数值越大,运动幅度越明显。

  • t0t1:这两个参数控制注入运动信息的时间步范围。它决定了在去噪过程的哪个阶段引入运动。

除了纯文本,Text2Video-Zero 还支持通过姿态(Pose)边缘(Edge)深度(Depth) 信息来引导视频生成,实现更精确的控制。

Diffusion model 扩散模型,而Stable Diffusion是它的一个子类产品,著名的 DALL-E 2Google Imagen也都是基于扩散模型的原理。

Stable Diffusion与传统相比,运行空间不同

  • 传统扩散模型(如DDPM) :在**像素空间(Pixel Space)**里直接"硬刚"。它直接在数百万乃至上千万的原始像素点上进行加噪和去噪运算。这导致计算量巨大,生成一张图需要非常昂贵的显卡和极长的时间。

  • Stable Diffusion :引入了 潜在空间(Latent Space) 。它先用一个"压缩器"(VAE变分自编码器)把图片压缩成只有原来1/48大小 的"潜空间数据",在这个高度压缩的空间里进行扩散去噪运算,最后再用"解压器"把数据还原成高清大图。因为运算量暴减,所以它速度极快,且能在普通消费级显卡上运行。 它名字里的"Stable"(稳定)也指这种空间压缩的稳定性。

Stable Diffusion与传统相比,组织架构也不同

  • 基础扩散模型:往往只是一个单纯的"去噪器"(U-Net结构),主要解决"如何生成一张图"的问题。如果要生成特定内容(比如"一只猫"),需要对模型进行从头训练。

  • Stable Diffusion :是一个**"三合一"的组合系统**。它包含了:

    1. 文本编码器(CLIP):专门负责读懂你的中文或英文提示词。

    2. 去噪U-Net:负责在潜空间里执行扩散逻辑。

    3. VAE图像编解码器 :负责压缩和解压图像。

      这种组合让它能直接接收文本指令,这也是它能被称为"文生图"工具的原因。

Stable Diffusion 强大可控性的核心

  • LoRA 就像是一个 "风格或角色的补丁包",让你能以极小的文件,教会AI画出特定的人物、物品或画风。

  • ControlNet 控制姿势 则像是一个 "动作导演",让你能精确指定画面中人物的动作和姿态,而不用依赖碰运气的文字描述。

1、LoRA:给AI装上"风格插件"

LoRA 的全称是 Low-Rank Adaptation(低秩适应)。你可以把它理解为一个超级轻量级的"插件"。

  • 工作原理 :基础的 Stable Diffusion 模型像一个"通才",什么都会但不够精。LoRA 则是在这个通才的基础上,用非常少量的特定图片(比如某位画师的作品、某个角色的照片)进行"专项特训"。训练完成后,它会变成一个很小的文件(通常只有 2MB 到 200MB),远小于基础模型几个GB的大小。

  • 核心作用:当你需要生成特定风格或角色时,只需在提示词中"挂载"上对应的 LoRA 文件。基础模型负责生成画面,而 LoRA 则负责"纠正"细节,让最终图像带上你想要的特定风格、角色长相或物品特征。它就像一个可随时加载和卸载的"风格滤镜"。

2、ControlNet:精确控制人物"pose"

在没有 ControlNet 之前,想让 AI 生成一个特定姿势的人物,需要在提示词里写一大堆描述,然后"碰运气"生成大量图片来挑选。ControlNet 的出现彻底改变了这一点。

  • 工作原理 :ControlNet 是一种神经网络结构,它允许你在生成图像时,输入一张额外的"条件图"作为指引。这个"条件图"可以是一张线稿、一个深度图,或者------用于控制姿势的------人体骨骼关键点图

  • 控制姿势的流程

    1. 提取骨架 :你可以使用一张现成的照片,通过 OpenPose 这样的技术,自动提取出照片中人物的 18个关键骨骼点(如头部、肩膀、手肘、膝盖等)。这些点连接起来,就形成了一副抽象的"火柴人"骨架图。

    2. 输入控制:将这张"骨架图"作为 ControlNet 的输入条件。

    3. 生成图像:Stable Diffusion 在生成新图像时,就会严格遵循这副骨架的布局,生成一个姿势几乎完全相同的新角色。

通过这种方式,你可以精确控制画面中人物的动作,从简单的站立、行走,到复杂的舞蹈、格斗动作都能实现。

相关推荐
Raas10014 分钟前
MAI Gateway(魔芋企业级AI网关)科普:AI网关解决什么问题?3分钟搞懂AI网关
大数据·人工智能·ai·gateway
星火102416 分钟前
【从 0 到 1 动手造 Agent】04、给 Agent 装上物理手脚——OpenHands PTY 沙盒
人工智能·aigc·agent
yosoar18 分钟前
蔡司工业显微镜扫描电镜软件解决方案与材料应用
人工智能·扫描电子显微镜·昆山友硕·蔡司扫描电镜
Leo.yuan20 分钟前
流批一体数据开发平台选型:除了Flink和Spark,还有哪些选择?
大数据·人工智能
浪兎兎22 分钟前
【机器学习】朴素贝叶斯 贝叶斯回归
人工智能·机器学习·回归
乱世刀疤22 分钟前
Claude Code提高工作效率案例:将视频培训转化为文本资料
人工智能·claude code
xcs1940522 分钟前
新版 IDEA(尤其是 2024/2025/2026)越来越臃肿
前端·人工智能·intellij-idea
万联WANFLOW24 分钟前
AI Agent 落地新里程碑:Claude in Chrome 全面上线与安全架构解析
人工智能·chrome·安全架构