当前位置:AIGC资讯 > AIGC > 正文

stable diffusion的AnimateDiff动画插件

AnimateDiff简介

Stable Diffusion的AnimateDiff插件是一个用于生成和操作图像的强大工具,它属于Stable Diffusion模型的一个扩展。

1. 功能和用途

图像生成与修改: AnimateDiff插件能够基于用户的描述生成新的图像,或者对现有图像进行修改和增强。 动画创建: 这个插件的一个主要特点是它能够创建动画。用户可以指定一个系列的图像变化,插件会生成一系列平滑过渡的图像,从而创建出动画效果。

2. 工作原理

基于文本的图像生成: 用户提供文本描述,插件根据这些描述生成相应的图像。 图像转换: AnimateDiff可以将已有图像根据用户指定的参数进行变换,比如改变图像中的对象、颜色或风格。 帧生成: 对于动画,插件会生成一系列图像帧,这些帧在视觉上平滑过渡,形成动画效果。

3. 应用场景

艺术创作: 艺术家可以使用这个插件来创建独特的视觉艺术作品,包括动画。 多媒体制作: 在视频和游戏制作中,AnimateDiff可以用来快速生成复杂的图像和动画场景。 个性化内容: 用户可以定制个性化的图像和动画,用于个人项目或社交媒体内容。

4. 使用简便性

用户界面: AnimateDiff通常配有直观的用户界面,使得即使是非专业用户也能轻松使用。 灵活性: 插件提供多种参数和选项,用户可以根据需要调整,以达到期望的效果。

5. 技术要求

硬件要求: 高级图像生成和动画制作可能需要较强的计算能力,因此可能需要高性能的硬件。 软件兼容性: AnimateDiff需要与Stable Diffusion模型一起使用,可能还需要其他软件支持。

总体来说,Stable Diffusion的AnimateDiff插件是一个功能强大且多用途的工具,适用于从专业艺术家到普通爱好者的广泛用户群体。通过这个插件,用户可以实现高度个性化和创意的图像和动画制作。

AnimateDiff的github主页:https://github.com/continue-revolution/sd-webui-animatediff

 安装插件主体

方法一

在stable diffusion的“扩展(extensions)”菜单,选择“可用(available)”,点击“加载自(load from)”,搜索“animatediff”,点击“安装(install)”

方法二

访问animatediff的github主页,点击绿色按钮“code”,点击复制HTTPS的按钮复制animatediff的库链接

打开stable diffusion,找到“扩展(extensions)”菜单,选择“从网址安装(install from URL)”子菜单,将上面复制的库网址粘贴到“扩展的git仓库网址(URL ro extension’s git repository)”,最后点击“安装(install)”

方法三

访问animatediff的github主页,点击绿色按钮“code”,点击“Download ZIP”,将animatediff的 库ZIP压缩包下载到本地

将下载的ZIP压缩包剪切到“\ stable-diffusion-webui\extensions”文件夹下面,然后右键选择“解压到当前文件夹”

animatediff本体安装成功

这一步安装成功之后,就可以在stable diffusion的文生图和图生图都可以找到“AnimateDiff”这个插件,位置如下:

下载安装模型

ainimateDiff的huggingface的模型下载页面:https://huggingface.co/guoyww/animatediff/tree/main

网盘下载(备用):model、animatediff

下载3个主模型放在“\stable-diffusion-webui\extensions\sd-webui-animatediff\model”文件夹;

下载8个lora模型放在“\stable-diffusion-webui\models\Lora\animatediff”文件夹,其中的“animatediff”文件夹为lora文件夹下面自行新建的一个文件夹,避免与其他的lora模型混淆;

 插件参数配置

插件设置

具体设置参考下面的截图(大多数情况下参照下方案例的设置即可):

修改webui-user.bat批处理文件

animatediff插件 安装好之后,要正常运行还需要修改stable diffusion 的启动批处理文件的参数,参考如下:

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS= --autolaunch --theme dark --xformers --no-gradio-queue --disable-safe-unpickle
REM --medvram(显存不足时添加该参数)

call webui.bat

其中的“–disable-safe-unpickle”是在选择SDXL大模型和Motion module选择“mm_sdxl_v10_beta.ckpt”这个模型的时候需要添加的参数;

而“–medvram”参数则是在你的显存小于8G的情况下,需要添加的参数。案例中我并没有添加这个参数,而是将它注释起来了,因为我的显卡显存是24G,并不需要添加这个参数;

界面参数设置

运动模块(Motion module)

这里显示的就是我们前面下载的三个主模型

mm_ sd_v15.ckpt:这是第一代的 SD1.5版本的运动模块,配合SD1.5版本的checkpoint模型使用; mm_sd_v15_v2.ckpt:这是第二代的SD1.5版本的运动模型,配合SD1.5版本的checkpoint模型使用,也是现在使用最多的模块; mm_sdxl_v10_beta.ckpt:这是SDXL版本的运动模块,配合SDXL的checkpoint模型使用,当选择这个模块的时候,需要修改“webui-user.bat”文件的参数,增加“–disable-safe-unpickle”(见前面的内容介绍);
保存格式(Save format)

输出的格式

至少选择“GIF”|“MP4”|“WEBP”|“WEBM”|“PNG”之一。如果您需要信息文本,请选中“TXT”,该信息文本将与输出 GIF 位于同一目录中。信息文本也可以通过stable-diffusion-webui/params.txt所有格式访问和输出。

您可以使用gifsiclepalette来优化 GIF 。转至Settings/AnimateDiff启用它们。 您可以通过 设置 WEBP 的质量和无损Settings/AnimateDiff。 如果您使用API​​,通过将“PNG”添加到format,您可以将所有帧保存到文件系统,而无需返回所有帧。如果您希望 API 返回所有帧,请添加Frameformat列表。
帧数(Number of frames)

生成的动画或者视频文件的总帧数

如果输入 0(默认):

如果通过“视频源”提交视频或通过“ 视频路径”输入视频路径,或启用任何批量ControlNet,帧数将是视频中的帧数(如果提交了多个视频,则使用最短的视频)。 否则,帧数将根据“Context batch size”的如下描述。

如果输入的数字小于“Context batch size”且不为0:你将从整个生成过程中获得“Number of frames”前1帧作为输出的GIF。所有后续帧不会出现在生成的GIF中,但会像往常一样保存为PNG格式。不要将“Number of frames”设置为小于“Context batch size”的数字(除0外);

帧率(FPS)

每秒帧数,即每秒显示的帧数(图像)。

如果以每秒 8 帧的速度生成 16 帧,则 GIF 的持续时间为 2 秒。如果您提交源视频,您的 FPS 将与源视频相同。

显示循环次数(Display loop number)

GIF 播放的次数。值0表示 GIF 永远不会停止播放。保持默认0即可!

上下文批量大小(Context batch size)

一次将有多少帧传递到运动模块中。

 SD1.5 运动模块采用 16 帧进行训练,因此当帧数设置为 时会给出最佳结果16

SDXL HotShotXL 运动模块改为使用 8 帧进行训练。对于 V1 / HotShotXL 运动模块选择 [1, 24],对于 V2 / AnimateDiffXL 运动模块选择 [1, 32]。

闭环(Closed loop)

 闭环

意味着此扩展将尝试使最后一帧与第一帧相同。

Number of frames>Context batch size时,包括当 ControlNet 启用且源 视频帧数 >Context batch sizeNumber of frames= 0 时,AnimateDiff 无限上下文生成器将执行闭环。 当Number of frames<=Context batch size时,AnimateDiff 无限上下文生成器将不起作用。只有当您选择“A”时,AnimateDiff 才会将反转的帧列表附加到原始帧列表以形成闭环。

有关每个选择的说明,请参阅下文:

N意味着绝对没有闭环 – 如果Number of frames的值小于Context batch size且不为0 ,这是唯一可用的选项。 R-P意味着扩展将尝试减少闭环上下文的数量。提示行程(prompt traveling)不会被插补为闭环。 R+P意味着扩展将尝试减少闭环上下文的数量。提示行程(prompt traveling)将被插补为闭环。 A意味着扩展将积极尝试使最后一帧与第一帧相同。提示行程(prompt traveling)将被插补为闭环。
步幅(Stride)

“步幅”(Stride)是最大运动步幅的设置,用 2 的幂表示(默认:1)。

由于无限上下文生成器的限制,该参数仅在Number of frames>Context batch size时有效,或者当 ControlNet 启用且源视频帧数 >Context batch sizeNumber of frames为 0 时有效。 Stride只有当为 1时,才能完全没有闭环。 对于每个 1≤2i≤1≤2i≤ Stride,无限上下文生成器将尝试使相隔2i2i的帧在时间上保持一致。例如,如果Stride为4 ,并且Number of frames 为8,它将使以下帧在时间上保持一致: Stride== 1: [0, 1, 2, 3, 4, 5, 6, 7] Stride== 2: [0, 2, 4, 6], [1, 3, 5, 7] Stride== 4: [0, 4], [1, 5], [2, 6], [3, 7]
重叠(Overlap)

上下文中重叠的帧数

如果重叠为 -1(默认):您的重叠将为Context batch size// 4

由于无限上下文生成器的限制,该参数仅在Number of frame>Context batch size时有效,包括当 ControlNet 启用且源 视频帧数 >Context batch sizeNumber of frames为 0 时有效。

帧插值(Frame Interpolation)

使用 Deforum 的 FILM 实现在帧之间进行插值。需要 Deforum 扩展。

这个参数有两个选项“off”和“FILM”

如果选择“off”,则关闭“Frame Interpolation”功能,同时后面的“Interp X”参数将失效!

如果选择“FILM”,则开启“Frame Interpolation”功能,同时后面的“Interp X”将产生效果!

FILM 选项会影响生成 动画的平滑度。当您单击“FILM”时,它会激活帧插值,用于平滑动画。Interp X 参数允许您控制添加的额外帧的数量:

使用FILM进行平滑处理:点击FILM可以平滑动画。通过调整Interp X参数,可以控制添加的额外帧数。默认情况下,Interp X设置为10,意味着每个原始帧将增加10个额外帧。  视频帧数增加:使用FILM后,视频的总帧数会显著增加。例如,原本有32帧的视频,使用FILM后帧数会增加到311帧,大约为每个原始帧增加9.7帧。 调整FPS以获得更流畅的播放:为了抵消由增加帧数引起的慢动作效果,可以调整视频的帧率(FPS)。提高FPS可以使视频播放得更快、更流畅。例如,将FPS从8增加到24,可以将视频时长缩短到12秒,同时保持平滑。进一步将FPS增加到70,可以将视频时长恢复到原来的4秒,同时保持通过FILM创建的插值帧,实现平滑的播放效果​​​​。

总结来说,AnimateDiff的FILM选项通过添加额外帧来生成更平滑的动画,并通过调整Interp X和FPS设置,控制动画的平滑度和播放速度。

视频源(Video source) [可选]

 ControlNet V2V的视频源文件。您必须启用 ControlNet。它将成为您无需提交控制图像或 ControlNet 面板路径即可启用的所有 ControlNet 单元的源代码控制。您当然可以通过Single Image选项卡提交一张控制图像或通过选项卡提交一个输入目录Batch,这将覆盖此视频源输入并照常工作。

视频路径( Video path)[可选]

ControlNet V2V源帧的文件夹,但优先级低于Video source。您必须启用 ControlNet。它将成为您无需提交控制映像或 ControlNet 路径即可启用的所有 ControlNet 单元的源代码控制。您当然可以通过Single Image选项卡提交一个控制图像或通过选项卡提交一个输入目录Batch,这将覆盖此 视频路径输入并照常工作。

对于想要修复视频的人:输入包含两个子文件夹imagemaskControlNet 修复单元的文件夹。这两个子文件夹应包含相同数量的图像。该扩展将按照相同的顺序匹配它们。使用我的Segment Anything扩展可以让您的生活变得更加轻松。

提示穿梭(Prompt Travelling)

什么是“提示穿梭(Prompt Travelling)”

“Prompt Travelling” 是一种技术,用于在创建最终的 GIF 或视频时,精确调整正面提示(positive prompt),以精确控制特定时间帧内的具体细节。当与 AnimateDiff 和 Stable Diffusion 结合时,Prompt Travelling 允许更大程度地影响 GIF 和视频的视觉美学,包括风格、背景、服装选择等元素​。

“提示穿梭(Prompt Travelling)”的语法规则

“提示穿梭(Prompt Travelling)”分为“头部提示”、“帧提示”和“尾部提示”三个部分

头部提示

上图案例中的第一行代表头部提示,不是必须的。您可以灵活地包含单行或者多行提示。头部或基本提示充当基础输入,用于确定生成的视频或 GIF 的整体外观。例如:

masterpiece, 30 year old women, cleavage, red hair, bun, ponytail, medium breast, desert, cactus vibe, sensual pose, (looking in the camera:1.2), (front view:1.2), facing the camera,close up, upper body

帧提示

“帧提示”遵循“帧编号:帧prompt”模式,确保您的帧编号按顺序排列。这些提示显示在特定时间范围内将发生的修改。并且对每一个“帧prompt”都可以添加单独的权重规则。例如:

0: (red dress:1.2)
8: (white dress:1.2) 
16: (green dress:1.2)
24: (blue dress:1.2)

尾部提示

上图案例中的最后一行代表尾部提示,不是必须的。您可以灵活地包含单行或者多行提示,也可以不写。

smile

需要注意的是,插件参数设置中的“Number of frames”必须要大于“帧提示”中最大的帧索引号,经过实际测试,至少要大于4帧以上才不会出现报错的现象,建议“Number of frames”设置的数字要大于“帧提示”中的最大索引值8或者16帧以上最为保险!

“提示穿梭(Prompt Travelling)”的案例

大模型(checkpoint):toonyou_beta6.safetensors

未添加“提示穿梭(prompt travelling)”的正面提示词:

masterpiece, 30 year old women, cleavage, red hair, bun, ponytail, medium breast, desert, cactus vibe, sensual pose, (looking in the camera:1.2), (front view:1.2), facing the camera,close up, upper body

添加了“提示穿梭(prompt travelling)”的正面提示词:

masterpiece, 30 year old women, cleavage, red hair, bun, ponytail, medium breast, desert, cactus vibe, sensual pose, (looking in the camera:1.2), (front view:1.2), facing the camera,close up, upper body
0: (red dress :1.2)
16: (white dress:1.2) 
32: (green dress:1.2)

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

采样方法:DPM++ 2M Karras

采样步数(Sampling steps):20

宽高度:512×512

提示词相关性(CFG Scale):7

随机种子(seed):3301240212

Motion module:mm_sd_v15_v2.ckpt

Number of frames:40

FPS:8

Closed loop:N

Context batch size:16

Frame Interpolation:off

效果对比:

未添加“提示穿梭(prompt travelling)”

添加“提示穿梭(prompt travelling)”

AnimateDiff 与 ControlNet 结合使用

您可以使用 ControlNet 通过参考视频来指导运动。

让我们以此参考视频为例。目标是让 AnimateDiff 跟随视频中女孩的动作。

下面的案例中用到的checkpoint:beautifulRealistic_brav5.safetensors

AnimateDiff+openpose

参数设置参考下面的截图:

效果展示:

AnimateDiff+Canny

参数设置参考下面的截图:

效果展示:

AnimateDiff+Depth

参数设置参考下面的截图:

效果展示:

AnimateDiff+openpose+Canny

参数设置参考下面的截图:

效果展示:

AnimateDiff+openpose+Depth

参数设置参考下面的截图:

效果展示:

AnimateDiff+openpose+Depth+Canny

参数设置参考下面的截图:

效果展示:

AnimateDiff 与 Lora 结合使用

您可以使用运动 LoRA 将 摄像机运动添加到 视频中。它们的使用方式与标准 LoRA相同。

下面的案例中用到的checkpoint:beautifulRealistic_brav5.safetensors

AnimateDiff+PanLeft(镜头左移)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_PanLeft:1>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

您会看到背景向右移动,表明相机正在向左平移。

AnimateDiff+PanRight(镜头右移)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_PanRight:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff+RollingAnticlockwise(镜头逆时针滚动)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_RollingAnticlockwise:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff+RollingClockwise(镜头顺时针滚动)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_RollingClockwise:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff+TiltDown(镜头下沉)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_TiltDown:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff+TiltUp(镜头上升)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_TiltUp:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff+ZoomIn(镜头拉近)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_ZoomIn:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff+ZoomOut(镜头拉远)

正面提示词:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_ZoomOut:0.75>

负面提示词:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数设置:

效果展示:

AnimateDiff在图生图中的使用

您可以通过将 AnimateDiff 与 img2img 结合使用来在有限范围内指导构图和运动。在此方法中,您可以定义视频的初始图像和最终图像。它们不能被完全使用,因为它们将经历图像到图像的过程。

知识要点

上传到img2img选项卡的图像画布的图片将作为初始图片

上传到AnimateDiff中的“last frame”中的图片将作为最终图片

参数设置

步数:20

采样器:DPM++ 2M Karras

CFG 规模:7

种子:-1

尺寸:512×512

去噪强度:0.75

运动模块(Motion module):mm_sd_v15_v2.ckpt

启用AnimateDiff(Enable AnimateDiff):是

帧数(Number of frames):32

帧率(FPS):8

参考案例

正面提示:

((best quality)), ((masterpiece)), ((realistic)), long highlighted hair, cybergirl, futuristic silver armor suit, confident stance, high-resolution, living room, smiling, head tilted <lora:v2_lora_ZoomOut:0.75>

负面提示:

(worst quality:1.2), (low quality:1.2), (lowres:1.1), (monochrome:1.1), (greyscale), multiple views, comic, sketch, (((bad anatomy))), (((deformed))), (((disfigured))), watermark, multiple_views, mutation hands, mutation fingers, extra fingers, missing fingers, watermark, nude, nsfw

参数截图:

效果展示:

总结

更新时间 2024-09-15