专栏名称: 奇舞精选
《奇舞精选》是由奇舞团维护的前端技术公众号。除周五外,每天向大家推荐一篇前端相关技术文章,每周五向大家推送汇总周刊内容。
目录
相关文章推荐
潇湘晨报  ·  官方通报:情况属实!已暂停工作 ·  18 小时前  
湖南建设投资集团有限责任公司  ·  晒项目 展业绩 ... ·  20 小时前  
51好读  ›  专栏  ›  奇舞精选

AI视频解决方案汇总

奇舞精选  · 公众号  ·  · 2024-08-06 18:00

正文

本文作者为 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

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

  • 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

pic9
  • 选择大模型版本为: 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.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 从原始视频恢复音轨

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 分钟。






请到「今天看啥」查看全文