文生视频黑马AnimateDiff 魔搭社区最佳实践教程来啦!

简介: 近1个月来,AnimateDiff 无疑是AI动画/视频生成领域的一匹黑马,以“效果丝滑、稳定、无闪烁”等好评斩获“Stable Diffusion封神插件”称号。

近1个月来,AnimateDiff 无疑是AI动画/视频生成领域的一匹黑马,以“效果丝滑、稳定、无闪烁”等好评斩获“Stable Diffusion封神插件”称号。

AnimateDiff是一个可以对文生图模型进行动画处理的实用框架,无需进行特定模型调整,即可一次性为大多数现有的个性化文本转图像模型提供动画化能力,目前项目已开源,魔搭社区可下载体验,本文将提供社区推理、训练教程,欢迎各位开发者小伙伴来玩!

640.gif

AnimateDiff 技术简介

论文:AnimateDiff: Animate Your Personalized Text-to-Image Diffusion Models without Specific Tuning(https://arxiv.org/abs/2307.04725

Github:https://github.com/guoyww/AnimateDiff

常见的Text to Video 方法是在原始的文生图模型中加入时间建模,并在视频数据集上对模型进行调整。但普通用户通常无法负担敏感的超参数调整、大量个性化视频数据集收集和密集的计算资源,让个性化Text to Video这项工作富有挑战。

AnimateDiff 提出了一套新的方法,其核心原理为将一个新初始化的运动建模模块附加到冻结的基于文本到图像的模型上,并在此后的视频剪辑中对其进行训练,以提炼出合理的运动先验知识。一旦训练完成,通过简单地注入这个运动建模模块,所有从相同基础模型派生的个性化版本都可以立即成为以文本驱动的模型,可以生成多样化和个性化的动画图像。

image.png



把时序模块拆解出来,不改动原预训练模型的基础上,提供一个即插即用的模型

并且通过实验证明,运动先验可以推广到 3D 动画片和 2D 动漫等领域,即AnimateDiff 可以为个性化动画提供一个简单而有效的基线,用户只需承担个性化图像模型的成本,就能快速获得自然的个性化动画,以下是官方提供的一些优秀作品效果:

640 (1).gif

640 (2).gif

640 (3).gif

640 (4).gif

640 (5).gif

640 (6).gif


更多官方示例效果详见:https://animatediff.github.io/

魔搭社区实践教程

环境配置与安装

  1. python 3.8及以上版本
  2. pytorch 1.12及以上版本,推荐2.0及以上版本
  3. 建议使用CUDA 11.4及以上

本文主要演示的模型推理代码可在魔搭社区免费实例PAI-DSW的配置下运行(显存24G) :

第一步:点击模型右侧Notebook快速开发按钮,选择GPU环境

image.png

第二步:新建Notebook

image.png

安装依赖库

pip install peft diffusers -U


模型链接

Animatediff模型存在多个版本,目前魔搭上线的模型有:

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-4/summary

上述三个模型是三个版本的AnimateDiff模型,推荐使用1.5.2版本模型。


模型推理

环境配置完成后,打开Notebook:

import torch
from diffusers import MotionAdapter, AnimateDiffPipeline, DDIMScheduler
from diffusers.utils import export_to_gif
from modelscope import snapshot_download
model_dir = snapshot_download("Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2")
# Load the motion adapter
adapter = MotionAdapter.from_pretrained(model_dir)
# load SD 1.5 based finetuned model
model_id = snapshot_download("wyj123456/Realistic_Vision_V5.1_noVAE")
pipe = AnimateDiffPipeline.from_pretrained(model_id, motion_adapter=adapter)
scheduler = DDIMScheduler.from_pretrained(
    model_id, subfolder="scheduler", clip_sample=False, timestep_spacing="linspace", steps_offset=1
)
pipe.scheduler = scheduler
# enable memory savings
pipe.enable_vae_slicing()
pipe.enable_model_cpu_offload()
output = pipe(
    prompt=(
        "masterpiece, bestquality, highlydetailed, ultradetailed, sunset, "
        "orange sky, warm lighting, fishing boats, ocean waves seagulls, "
        "rippling water, wharf, silhouette, serene atmosphere, dusk, evening glow, "
        "golden hour, coastal landscape, seaside scenery"
    ),
    negative_prompt="bad quality, worse quality",
    num_frames=16,
    guidance_scale=7.5,
    num_inference_steps=25,
    generator=torch.Generator("cpu").manual_seed(42),
)
frames = output.frames[0]
export_to_gif(frames, "animation.gif")

生成效果如下:

640 (7).gif

AnimateDiff系列模型也支持多种镜头LoRA模型,使用该系列模型可以实现图像旋转、放大缩小等能力:

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-zoom-out/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-zoom-in/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-tilt-up/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-tilt-down/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-rolling-anticlockwise/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-rolling-clockwise/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-pan-left/summary

https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-lora-pan-right/summary

这些模型可以通过如下方式叠加使用:

import torch
from diffusers import MotionAdapter, AnimateDiffPipeline, DDIMScheduler
from diffusers.utils import export_to_gif
from modelscope import snapshot_download
model_dir = snapshot_download("Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2")
# Load the motion adapter
adapter = MotionAdapter.from_pretrained(model_dir)
# load SD 1.5 based finetuned model
model_id = snapshot_download("wyj123456/Realistic_Vision_V5.1_noVAE")
pipe = AnimateDiffPipeline.from_pretrained(model_id, motion_adapter=adapter)
lora_dir = snapshot_download("Shanghai_AI_Laboratory/animatediff-motion-lora-tilt-down")
pipe.load_lora_weights(lora_dir, adapter_name="tilt-down")
pipe.set_adapters(["tilt-down"], adapter_weights=[1.0])
scheduler = DDIMScheduler.from_pretrained(
    model_id, subfolder="scheduler", clip_sample=False, timestep_spacing="linspace", steps_offset=1
)
pipe.scheduler = scheduler
# enable memory savings
pipe.enable_vae_slicing()
pipe.enable_model_cpu_offload()
output = pipe(
    prompt=(
        "masterpiece, bestquality, highlydetailed, ultradetailed, sunset, "
        "orange sky, warm lighting, fishing boats, ocean waves seagulls, "
        "rippling water, wharf, silhouette, serene atmosphere, dusk, evening glow, "
        "golden hour, coastal landscape, seaside scenery"
    ),
    negative_prompt="bad quality, worse quality",
    num_frames=16,
    guidance_scale=7.5,
    num_inference_steps=25,
    generator=torch.Generator("cpu").manual_seed(42),
)
frames = output.frames[0]
export_to_gif(frames, "animation.gif")

添加了镜头倾斜后LoRA后实际的效果如下:

640 (8).gif

其他LoRA模型可以参考README中的代码在NoteBook中使用。

模型训练

AnimateDiff的训练目前在SWIFT中已经支持。SWIFT是ModelScope提供的LLM&AIGC模型训练和推理框架。我们基于官方REPO的实现,支持了全参数和LoRA两种训练模式。

在SWIFT中我们基于WebVid中提供的2.5M(250万个短视频)数据集进行了DDP训练,经过1个Epoch的训练后,得到的效果如下

Prompt1: masterpiece, bestquality, highlydetailed, ultradetailed, Snow rocky mountains peaks canyon. Snow blanketed rocky mountains surround and shadow deep canyons

640 (9).gif

Prompt2: masterpiece, bestquality, highlydetailed, ultradetailed, girl, walking, on the street, flowers

640 (10).gif

Prompt3: masterpiece, bestquality, highlydetailed, ultradetailed, A drone view of celebration with Christmas tree and fireworks, starry sky - background

640 (11).gif

Prompt4: masterpiece, bestquality, highlydetailed, ultradetailed, beautiful house, mountain, snow top

640 (12).gif

结合以上出图效果,有兴趣的开发者可以下载WebVid 10M(一千万短视频)数据集,并根据以下步骤进行训练:

使用SWIFT训练AnimateDiff的方法非常简单,只需要先clone REPO到本地:

git clone https://github.com/modelscope/swift.git
cd swift/examples/pytorch/animatediff

开始训练之前需要将WebVid数据集下载到本地。该数据集分为两个部分,一个是文本prompt构成的索引文件(csv格式),用户需要根据其中的contentUrl字段将短视频下载到一个文件夹中,短视频名称和contentUrl中的文件名保持一致,如:

# contentUrl
https://ak.picdn.net/shutterstock/videos/1030221938/preview/stock-footage-lush-green-banana-palm-leaf-during-summer-in-rainforest-concept-of-travel-to-exotic-tropical.mp4
# 则短视频名称需要为:
stock-footage-lush-green-banana-palm-leaf-during-summer-in-rainforest-concept-of-travel-to-exotic-tropical.mp4

直接修改下面shell命令中的数据集路径即可:

# 修改scripts/full/sft.sh
# Experimental environment: A100 * 4
# 200GB GPU memory totally
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0,1,2,3 \
torchrun --nproc_per_node=4 animatediff_sft.py \
  --model_id_or_path wyj123456/Realistic_Vision_V5.1_noVAE \
  --csv_path /path/to/webvid/results_2M_train.csv \
  --video_folder /path/to/videos \
  --sft_type full \
  --lr_scheduler_type constant \
  --trainable_modules .*motion_modules.* \
  --batch_size 4 \
  --eval_steps 100 \
  --gradient_accumulation_steps 16 \

我们的测试使用4*A100 DDP混合精度训练完成,250W视频训练时间约40小时,显存占用共200GB左右。

使用训练好的weights进行推理的命令,即可启动一个prompt命令行输出短视频

# Experimental environment: A100
# 18GB GPU memory
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
python animatediff_infer.py \
  --model_id_or_path wyj123456/Realistic_Vision_V5.1_noVAE \
  --sft_type full \
  --ckpt_dir /output/path/like/checkpoints/iter-xxx \
  --eval_human true  \

相比之下我们更推荐使用LoRA进行训练,这样可以直接加载Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2基于它的效果继续训练。

数据集格式同上,启动命令有所差别:

# Experimental environment: A100
# 20GB GPU memory
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
python animatediff_sft.py \
  --model_id_or_path wyj123456/Realistic_Vision_V5.1_noVAE \
  --csv_path /path/to/webvid/results_2M_train.csv \
  --video_folder /path/to/videos \
  --motion_adapter_id_or_path Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2 \
  --sft_type lora \
  --lr_scheduler_type constant \
  --trainable_modules .*motion_modules.* \
  --batch_size 1 \
  --eval_steps 200 \
  --dataset_sample_size 10000 \
  --gradient_accumulation_steps 16 \

在这里我们使用batch_size=1,GA=16的混合精度单卡训练,占用显存约20GB左右,开发者不需要使用WebVid进数据集,而是可以使用自己特定的短视频进行训练。

LoRA训练后的推理命令也略有不同:

# Experimental environment: A100
# 18GB GPU memory
PYTHONPATH=../../.. \
CUDA_VISIBLE_DEVICES=0 \
python animatediff_infer.py \
  --model_id_or_path wyj123456/Realistic_Vision_V5.1_noVAE \
  --motion_adapter_id_or_path Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2 \
  --sft_type lora \
  --ckpt_dir /output/path/like/checkpoints/iter-xxx \
  --eval_human true  \

好啦,希望以上内容能抛砖引玉,期待更多AIGCer们能基于AnimateDiff 开源生态创作出越来越多的作品和玩法!

点击直达模型开源链接:https://www.modelscope.cn/models/Shanghai_AI_Laboratory/animatediff-motion-adapter-v1-5-2/summary

相关实践学习
在云上部署ChatGLM2-6B大模型(GPU版)
ChatGLM2-6B是由智谱AI及清华KEG实验室于2023年6月发布的中英双语对话开源大模型。通过本实验,可以学习如何配置AIGC开发环境,如何部署ChatGLM2-6B大模型。
相关文章
|
Java 数据库连接 数据库
【MyBatisPlus 实现文件的上传和下载 超详细....】
【MyBatisPlus 实现文件的上传和下载 超详细....】
589 0
|
Go 开发工具
百炼-千问模型通过openai接口构建assistant 等 go语言
由于阿里百炼平台通义千问大模型没有完善的go语言兼容openapi示例,并且官方答复assistant是不兼容openapi sdk的。 实际使用中发现是能够支持的,所以自己写了一个demo test示例,给大家做一个参考。
|
11月前
|
人工智能 自然语言处理 搜索推荐
马斯克AI Grok 3 国内如何使用?请收下这篇新手指南!
Grok AI,由埃隆·马斯克(Elon Musk)旗下的人工智能初创公司 xAI 于 2023 年 11 月推出,迅速成为 AI 领域的一颗耀眼新星
5747 80
|
安全 网络协议 网络安全
|
11月前
|
开发者 异构计算
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
通义万相Wan2.1开源不到一周,已登顶HuggingFace Model 和 Space 榜双榜首,在HuggingFace和ModelScope平台的累计下载量突破100万次,社区热度持续攀升!为响应小伙伴们对ComfyUI工作流运行Wan2.1的强烈需求,社区开发者整理了实战教程👇
8223 23
高效部署通义万相Wan2.1:ComfyUI文生/图生视频实战,工作流直取!
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
30801 18
|
IDE 前端开发 开发工具
如何选择跨平台开发工具?
如何选择跨平台开发工具?
383 10
|
人工智能 编解码 对象存储
一键生成视频,用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流
本教程将带领大家免费领取阿里云PAI-EAS的免费试用资源,并且带领大家在 ComfyUI 环境下使用 SVD的模型,根据任何图片生成一个小短视频。
|
机器学习/深度学习 并行计算 PyTorch
从零开始下载torch+cu(无痛版)
这篇文章提供了一个详细的无痛版教程,指导如何从零开始下载并配置支持CUDA的PyTorch GPU版本,包括查看Cuda版本、在官网检索下载包名、下载指定的torch、torchvision、torchaudio库,并在深度学习环境中安装和测试是否成功。
从零开始下载torch+cu(无痛版)

热门文章

最新文章