本文作者为 360 奇舞团前端开发工程师
随着人工智能技术的不断发展,AI生成视频的领域也在不断壮大。从基于大规模数据的深度学习方法到创新的算法和工具,各种解决方案正在不断涌现,为视频制作带来了新的可能性,从最开始的
Pika
、
Runway
到一经问世就惊艳众人的
Sora
,可以说大模型在多模态,特别是视频模态的发展速度远超我们的想象。不过就文生视频而言,目前市面上仍然没有像
ChantGPT
这样的现象级产品出现。经过对目前主流文生视频解决方案的调研,我整理了以下内容供大家参考。
基于
Stable Diffusion
的动画插件方案
Stable Diffusion
(下文简称
SD
)是2022年发布的深度学习文本到图像生成模型,通过它可以实现文生图的功能,并且它是免费且开源的,你可以通过
Stable Diffusion WebUI
(下文简称
SD WebUI
)提供的浏览器界面来利用
SD
大模型实现文生图的功能。网上有很多在本地或是云端部署
SD WebUI
的方法,这里不多赘述,下面介绍的
插件
,都可以通过
SD WebUI
来进行安装,并配合
SD
大模型来实现文生视频的功能。
1. Animatediff + Prompt Travel + ControlNet + ADetailer
pic
1.1 插件介绍
AnimateDiff
AnimateDiff
插件是一个用于生成和操作图像的强大工具,它属于
SD
模型的一个扩展,它能够基于用户的描述生成新的图像,或者对现有图像进行修改和增强。这个插件的另一个主要特点是它能够创建动画。用户可以指定一个系列的图像变化,插件会生成一系列平滑过渡的图像,从而创建出动画效果。
Prompt Travel
Prompt Travelling
是一种技术,用于在创建最终的
GIF
或视频时,精确调整正面提示
(positive prompt)
,以精确控制特定时间帧内的具体细节。当与
AnimateDiff
和
SD
结合时,
Prompt Travelling
允许更大程度地影响
GIF
和视频的视觉美学,包括风格、背景、服装选择等元素。在
AnimateDiff
中,如果使用这种方式来制作动画,那么我们的提示词
(Prompt)
就能使用
Prompt Travel
的撰写方式。他主要分为三个部分:开头提示词
( Head Prompt )
指定帧数提示词
( Frames Prompt )
结尾提示词
(Tail Prompt )
例如正常的提示词为:
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 Travel
的撰写方式的提示词可以这样写:
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) smile
头部提示
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
头部或基本提示充当基础输入,用于确定生成的视频或 GIF 的整体外观
帧提示
0: (red dress :1.2) 16: (white dress:1.2) 32: (green dress:1.2)
帧提示遵循“帧编号:帧prompt”模式,确保您的帧编号按顺序排列。这些提示显示在特定时间范围内将发生的修改。并且对每一个“帧prompt”都可以添加单独的权重规则.
尾部提示
smile
案例中的最后一行代表尾部提示,不是必须的。您可以灵活地包含单行或者多行提示,也可以不写。
1.2 插件安装
插件有多种安装方式,这里介绍其中的两种:
在
SD WebUI
的“扩展
(extensions)
”菜单,选择“可用
(available)
”,点击“加载自
(load from)
”,搜索“
animatediff
”,点击“安装
(install)
”
访问
animatediff
的
gitHub
主页,点击绿色按钮
code
,点击复制
HTTPS
的按钮复制
animatediff
的库链接
打开
SD WebUI
,找到“扩展
(extensions)
”菜单,选择“从网址安装
(install from URL)
”子菜单,将上面复制的库网址粘贴到“扩展的git仓库网址
(URL ro extension’s git repository)
”,最后点击“安装
(install)
”
1.3 模型下载
在
ainimateDiff
的
huggingface
的模型下载页面: https://huggingface.co/guoyww/animatediff/tree/main, 下载3个主模型放在“\stable-diffusion-webui\extensions\sd-webui-animatediff\model”文件夹;下载8个
lora
模型放在“\stable-diffusion-webui\models\Lora\animatediff”文件夹,其中的
animatediff
文件夹为
lora
文件夹下面自行新建的一个文件夹,避免与其他的
lora
模型混淆;
1.4 填写Prompt、设置插件、生成视频
设置
Prompt Travel
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) smile
设置
AnimateDiff
pic9
选择大模型版本为:
mm_sd_v15_v2.ckpt
,这是第二代的SD1.5版本的运动模型,配合SD1.5版本的
checkpoint
模型使用,也是现在使用最多的模块.
设置首尾帧是否相同:
Closed Loop
:
N
:N意味着绝对没有闭环 – 如果
Number of frames
的值小于
Context batch size
且不为0 ,这是唯一可用的选项。
设置
ControlNet
这里使用
ControlNet
的
OpenPose 姿态检测
预处理器
开启
OpenPose
,选择对应的
OpenPose
预处理模型
设置
ADetailer
点击生成后,等待片刻会生成相应是Gif或是MP4视频
以上就是我们借助
SD
的一系列插件,来操控AI大模型生成相应的视频的方式。这种方式的好处是整体视频内容可控,缺点是存在一定的闪烁现象。
2.其他插件介绍
2.1
Mov2mov
插件
pic03
Mov2mov
最早火起来的SD动画插件之一,
Mov2mov
的原理是提取原视频的帧,并将每一帧按照用户设置的模型和prompt重新绘制,然后将生成的帧组合成视频并输出。
安装插件
pic2
安装 FFmpeg : https://ffmpeg.org/download.html
安装
FFmpeg
有两个目的,一是如果输入视频的分辨率,对于您的 GPU 来说太高,可以利用
FFmpeg
缩小视频.
ffmpeg -i input.mp4 -vf "scale=-1:720" output.mp4
上面的命令会将视频的高度调整为 720 像素,并自动调整宽度以保持宽高比。
上传原始视频到
move2move
选项卡
截屏2024-06-04 14.59.33
注意:需要将宽度和高度设置为与输入视频相同的分辨率
设置正向提示词/否定提示词。您可以像往常一样使用
LoRA
嵌入,但界面不会在此选项卡上提供列表,因此需要复制模型名称到
mov2mov
选项卡
可以开启
ControlNet
并使用
Canny
(边缘检测)预处理器,这一步是可选的
生成视频
生成每一帧的预览会输出到
\stable-diffusion-webui\outputs\mov2mov-images\
目录下,如果您没有强大的 GPU,预计 720p 的 30 秒视频需要数小时才能渲染完成。最终渲染完成的mov2mov 视频是没有声音的,生成的视频会输出到
\stable-diffusion-webui\outputs\mov2mov-videos
这个目录下
ffmpeg -i generatedVideo.mp4 -i originalVideo.mp4 -map 0:v -map 1:a -c:v copy -c:a aac output.mp4
对比
SD
自带的批量图生图,更推荐
mov2mov
插件。直接通过提示词控制、生成最终视频,省去了用其他视频产品将多张图片转成视频的过程。但比起
Deforum
,
Mov2mov
的能力比较单一,生成视频的闪烁也较大,胜在操作十分简单,这是它的项目地址:https://github.com/Scholar01/sd-webui-mov2mov.
可以直接从参考视频逐帧处理,处理完成后打包成视频,或是可以自定义选择关键帧或者自动生成关键帧
2.2
Deforum
插件
SD
的
Deforum
插件,这是一个运用了稳定扩散技术的动画制作工具,能依赖于文字描述或者参照视频,生成一系列连续的图像,并且将这些图像无缝拼接为视频。这个插件所应用的"image-to-image function"技术,能微调图像帧,并采用稳定扩散的方法来产生接下来的一帧。正因为帧与帧之间的变化非常细微,从而带来了流畅的视频播放体验。它可实现复杂的缩放、位移、旋转动画,并且可以同时控制多个帧间隔中的动画差异、提示词差异。可控性远远超过
Runway
和
Pika labs
,生成效果也十分惊艳,缺点是控制参数较为复杂,生成时间较长,逐帧重绘方式效率低, 这是项目地址:https://github.com/deforum-art/sd-webui-deforum
进入界面进行设置,主要需要设置的就是采样器、采样迭代步数、宽度、高度以及输出目录(Batch name),不同的设置对后期生成的视频影响较大,可以参考这篇文章:https://civitai.com/articles/5506/deforum-everything-you-need-to-know,了解相关参数设置,这里不再涉及。
2.3 EbSynth
EbSynth
它的原理可以用一句话来概括,就是通过智能识别并提取视频里一些比较特殊的帧,优先绘制这些帧,然后通过一些特殊算法,在这些帧之间生成类似于过度的成分,来填充画面。通过
EbSynth
生成的AI动画,不仅可以实现画面的连续稳定,无闪烁,还能大大降低生成工作量,以原来五分之一甚至十分之一的时间,实现类似的效果,从而实现AI动画的降本增效。
pic1
EbSynth
有一个防止视频闪烁的功能,它是通过把画面中的人物主体等单独提取出来,进行绘制,因为大部分的闪烁和混乱,其实都是发生在和人物主体无关的部分上,只要背景不闪了,那其实整个视频看上去就会舒服很多,它实现分离绘制的方式,是去智能识别人物,并去生成一个蒙版,然后让
SD
执行蒙版重绘。
点击
Ebsynth
插件,会发现其中有八个步骤,其实这八个步骤就是在帮助你一步一步将你的视频转化为AI动画(拆分,提取关键帧,重绘关键帧,图片放大修复,脚本导入,帧图片补充,生成视频,背景调整)
pic2
EbSynth
相比于使用
move2move
这个插件可以解决视频闪烁问题,并且生成视频的时间也被优化,缺点是安装跟配置步骤较为复杂。
还有一些其他插件如
m2m
等,笔者没有过多研究这里不再涉及,感兴趣的同学可以自行
civitai
.
独立的AI动画方案:
animatediff-cli-prompt-travel
animatediff-cli-prompt-travel
是由
ebsynth utility
的
SD
插件作者基于
animatediff
项目技术基础做的一套工作流优化和整合的扩展项目,这个项目是独立部署,独立运行的,项目地址:https://github.com/s9roll7/animatediff-cli-prompt-travel,相比
SD
的
animatediff
插件有以下优势:
视频生成时人物一致性较高,且可控,据说动画模型后续可以自己训练。
视频转绘时人物和环境融入很自然。在实际应用中,
Animatediff-cli-prompt-travel
表现出了极高的灵活性和效率。用户可以通过命令行界面,轻松地设置各种参数,如生成时间、控制网络、提示词信息等,从而生成高质量的动画。此外,由于其开放源代码的特性,开发者可以根据自己的需求进行定制和扩展,进一步丰富其功能和应用场景。
Animatediff-cli-prompt-travel
项目有2种使用方法:
参考图视频生成:类似
Runway
或
Pika
,即
Animatediff
的基础用法,根据参考图片(1张或多张)来生成视频或GIF图或视频。
视频风格转换:相当于视频重绘,基于某个视频,转换风格。
pic15
目前项目扔有一些缺陷:
项目目前没有UI界面,部署和运行都需要进行代码层级编辑和配置,需要至少一点点的代码基础。
硬件要求高:目前这个项目建议显卡的显存为12GB以上。
要有稳定的科学上网方式和流量,项目运行过程中需要连接外部下载资源,而且后续运行也会访问一些配置文件。
开源的文生视频大模型
1.
Stable Video Diffusion
Stable Video Diffusion(SVD)
是专为生成视频而设计的
SD
模型。您可以使用它为
SD
生成的图像添加动画,从而产生令人惊叹的视觉效果。它是由
Stability AI
推出的首个基础视频模型,与
SD
是同一开发者。这是一个开源模型,其代码和模型权重都已经完全开源项目地址:https://github.com/xx025/stable-video-diffusion-webui,你可以在线体验:体验地址:https://huggingface.co/spaces/multimodalart/stable-video-diffusion。
在
Google Colab
上使用
打开 Colab 笔记本的 Colab链接:https://colab.research.google.com/drive/1Gu8FhCBTS29YebjUN_zhvB1vvd6j286A?usp=sharing, 页面,点击全部执行
启动
GUI
在加载完成后,您应该会看到一个
gradio.live
的链接。点击链接启动
GUI
。
pic19
pic18
注意:如果在下载模型时候报错,请尝试选择其他模型在尝试
打开链接,拖放您希望用作视频第一帧的图像。
生成视频
点击运行以开始生成视频。生成完成后,视频将显示在
GUI
上。
在
T4 GPU
(免费账户)上大约需要 9 分钟,在
V100 GPU
上则为 2 分钟。