本文作者为 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
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
案例中的最后一行代表尾部提示,不是必须的。您可以灵活地包含单行或者多行提示,也可以不写。
ControlNet
controlNet
可以让AI生成更加可控的图片,它的核心能力就是能让我们通过设置各种条件来让AI更可控地生成最终图像。这些条件就是通过调节预处理器参数来实现的。它有各种预处理器比如:Canny 边缘检测
、Depth 深度检测
、HED 边缘检测
、M-LSD 线条检测
、Normal Map 法线贴图
以及最常用的OpenPose 姿态检测
. 除了生成单人的姿势,它甚至可以生成多人的姿势,这点非常关键,在此之前AI生成的画面里多个人物的特定动作是几乎无法靠提示词来实现的。ControlNet
的绘画模式是:先让用户输入一张参考图,然后程序根据此图按一定的模式预处理一张新图,之后再由AI根据这两幅图绘制出成品;当然,用户可以关闭程序的预处理功能,直接输入一张用户自己处理好的图片当作预处理图,之后AI仅根据这副图生成成品。ADetailer
ADetailer
也是SD
的插件,我们用SD
生成人物图片的时,经常会遇到脸崩或是手部变形的情况,它的提供了各种模型对SD
产出图片人物进行面部、手部、身体进行美化和修复。点击这里去(安装插件): https://github.com/Bing-su/adetailer.ADetailer
为我们提供了相当多的模型,从处理图像的区域来划分,这些模型分为三类。模型名称里包含face
的就是用来处理面部的。包含hand
就是处理手的。包含person
就是处理身体的。从处理图像使用的模型划分,这些模型分为两类。模型名称里包含YOLO
的就是使用了YOLO
算法。包含MediaPipe
就是使用了MediaPipe
算法。目前ADetailer
所有的MediaPipe
模型都是用来处理面部的,尽管MediaPipe
本身还可以处理手。
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
选择大模型版本为:
mm_sd_v15_v2.ckpt
,这是第二代的SD1.5版本的运动模型,配合SD1.5版本的checkpoint
模型使用,也是现在使用最多的模块.开启
Enable AnimateDiff
选择输出格式为
Gif
和MP4
设置生成的总帧数以及FPS帧率
设置首尾帧是否相同:
Closed Loop
:N
:N意味着绝对没有闭环 – 如果Number of frames
的值小于Context batch size
且不为0 ,这是唯一可用的选项。其他参数保持默认不变
设置ControlNet
这里使用
ControlNet
的OpenPose 姿态检测
预处理器开启
OpenPose
,选择对应的OpenPose
预处理模型上传参考图片或是视频
设置ADetailer
启用细节修复
ADetailer
修复模型默认选中第一个
点击生成后,等待片刻会生成相应是Gif或是MP4视频
以上就是我们借助SD
的一系列插件,来操控AI大模型生成相应的视频的方式。这种方式的好处是整体视频内容可控,缺点是存在一定的闪烁现象。
2.其他插件介绍
2.1Mov2mov
插件
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\<date>
目录下,如果您没有强大的 GPU,预计 720p 的 30 秒视频需要数小时才能渲染完成。最终渲染完成的mov2mov 视频是没有声音的,生成的视频会输出到\stable-diffusion-webui\outputs\mov2mov-videos
这个目录下利用
FFmpeg
从原始视频恢复音轨
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动画的降本增效。
EbSynth
有一个防止视频闪烁的功能,它是通过把画面中的人物主体等单独提取出来,进行绘制,因为大部分的闪烁和混乱,其实都是发生在和人物主体无关的部分上,只要背景不闪了,那其实整个视频看上去就会舒服很多,它实现分离绘制的方式,是去智能识别人物,并去生成一个蒙版,然后让SD
执行蒙版重绘。
点击Ebsynth
插件,会发现其中有八个步骤,其实这八个步骤就是在帮助你一步一步将你的视频转化为AI动画(拆分,提取关键帧,重绘关键帧,图片放大修复,脚本导入,帧图片补充,生成视频,背景调整)
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图或视频。视频风格转换:相当于视频重绘,基于某个视频,转换风格。
目前项目扔有一些缺陷:
项目目前没有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 选择模型
注意:如果在下载模型时候报错,请尝试选择其他模型在尝试
上传初始图像
打开链接,拖放您希望用作视频第一帧的图像。
生成视频 点击运行以开始生成视频。生成完成后,视频将显示在
GUI
上。在T4 GPU
(免费账户)上大约需要 9 分钟,在V100 GPU
上则为 2 分钟。对比上图是
Stability AI
官方给的与Runway
、Pika
生成视频的对比,在25帧的视频上,视频质量是优于Gen2
和PikaLabs
,在 14帧的视频上,和Gen2
相当, 优于PikaLabs
.
2. Zeroscope_v2
模型
Huggingface
上有作者发布了一个文生视频模型Zeroscope_v2
,它基于17亿参数量的ModelScope-text-to-video-synthesis
模型进行二次开发。相比于原版本,Zeroscope
生成的视频没有水印,并且流畅度和分辨率都得到了提升,适配16:9的宽高比。Zeroscope_v2
包括两个版本,其中Zeroscope_v2
567w可以快速生成576x320像素分辨率、帧率为30帧/秒的视频,可用于视频概念的快速验证,只需要约7.9GB的显存即可运行。Zeroscope_v2 XL
可以生成1024x576分辨率的高清视频,大约需要15.3GB的显存,Zeroscope
还可以与音乐生成工具MusicGen
一起使用,快速制作一个纯原创短视频。
在Google Colab
上使用
打开 Colab 笔记本的 Colab链接 :https://colab.research.google.com/drive/1TsZmatSu1-1lNBeOqz3_9Zq5P2c0xTTq?usp=sharing.
先点击Step 1下的运行按钮,等待安装,大约需要3分钟左右;
当Step 1执行完成后,在Step 2 选择一个你要使用的模型,选择其中一个点击运行即可再次等待执行完成后,继续执行下一步
选择在Step2中安装并希望使用的模型型号,对于更高分辨率的模型,推荐下面的配置参数,不需要太长的生成时间。
3.Rerender A Video
Rerender A Video
项目是一个零样本文本引导视频到视频翻译框架,旨在实现高质量和时间上连贯的视频生成。该框架包括两个关键部分:关键帧处理和完整视频处理。
关键帧处理阶段使用改进的扩散模型生成视频的关键帧,而完整视频处理阶段将这些关键帧传播到整个视频,以确保全局样式和局部纹理的时间一致性。为了实现这一目标,引入了创新的帧间约束方法,涵盖了全局样式、形状、纹理和颜色的一致性。本框架的关键特点包括零样本训练、兼容性以及灵活性,可以与现有的图像扩散技术相结合,以实现各种定制化的视频生成任务,项目地址: https://github.com/williamyang1991/Rerender_A_Video.
安装
要使用Rerender A Video
项目,您可以按照以下步骤进行安装:
克隆项目仓库,并确保使用
--recursive
选项来获取所有必要的子模块:
git clone git@github.com:williamyang1991/Rerender_A_Video.git--recursive
cd Rerender_A_Video
使用pip安装所需的Python依赖:
pip install -r requirements.txt
或者,您还可以创建一个新的conda环境:
conda env create -f environment.yml
conda activate rerender
请注意,这里安装此项目需要至少24GB的VRAM。如果内存消耗较大,您可以参考项目文档中的说明进行降低内存消耗的操作。
运行
运行WebUI应用:
python webUI.py
4. MuseV
MuseV
是基于扩散模型的虚拟人视频生成框架,项目地址: https://github.com/TMElyralab/MuseV,它具有以下特点:
支持使用新颖的视觉条件并行去噪方案进行无限长度生成,不会再有误差累计的问题,尤其适用于固定相机位的场景。
提供了基于人物类型数据集训练的虚拟人视频生成预训练模型。
支持图像到视频、文本到图像到视频、视频到视频的生成。
兼容
Stable Diffusion
文图生成生态系统,包括base_model
、lora
、controlnet
等。支持多参考图像技术,包括
IPAdapter
、ReferenceOnly
、ReferenceNet
、IPAdapterFaceID
。
体验
你可以在huggingface上去体验这个项目: https://huggingface.co/spaces/AnchorFake/MuseVDemo.
其他
文生视频AI工具——Viggle: https://viggle.ai/.
文生视频工具——MagicVideo-V2: https://magicvideov2.github.io/,这就是字节跳动最近推出的文生视频模型
生成式AI视频讲故事平台——LTX Studio: https://ltx.studio/.
最后
目前,无论是使用 SD
插件还是文生视频大模型,生成的视频都是“无声电影”。如果想要让它们更富有表现力,就需要为其配上音效。你可以利用剪映或者快剪辑来对生成的视频进行二次加工。当然,你也可以借助 AI 自动配音工具,比如 ElevenLabs: https://elevenlabs.io/ ,或者结合文字转语音的工具为你生成的视频进行配音。
需要了解的是,当前 AI 视频生成领域仍面临着生成质量不稳定导致的不同帧之间的“闪烁”现象,以及动作扭曲不连贯、细节表现不足等技术难题。而且,当前的 AI 视频生成仍远未达到简单、便捷和可控的程度,上手成本也在不断增加。不过相信随着 AI 能力的不断增强,AI 视频生成技术和可交互性会越来越成熟。
引用
https://civitai.com/articles/5506/deforum-everything-you-need-to-know
https://myaiforce.com.cn/stable-diffusion-adetailer/
https://www.bilibili.com/read/cv23190880/
https://sspai.com/post/83102
https://ebsynth.com/
https://juejin.cn/post/7308536984028807194
https://github.com/Scholar01/sd-webui-mov2mov/blob/master/README_CN.md
- END -
如果您关注前端+AI 相关领域可以扫码进群交流
扫码进群2或添加小编微信进群1😊
关于奇舞团
奇舞团是 360 集团最大的大前端团队,非常重视人才培养,有工程师、讲师、翻译官、业务接口人、团队 Leader 等多种发展方向供员工选择,并辅以提供相应的技术力、专业力、通用力、领导力等培训课程。奇舞团以开放和求贤的心态欢迎各种优秀人才关注和加入奇舞团。