StableDiffusion 文生视频教程,从Mov2mov到AnimateDiff

文章目录

  • 0. 前言
  • 1. 简介
  • 2. 文生视频
    • 2.1 Mov2mov
      • 2.1.1 插件安装
      • 2.1.2 视频生成
    • 2.2 ffmpeg + Ebsynth
      • 2.2.1 ffmpeg 安装
      • 2.2.2 Ebsynth安装
      • 2.2.3 Ebsynth 插件安装
      • 2.2.4 视频生成
        • 2.2.4.1 Step 1 蒙版裁剪
        • 2.2.4.2 Step2 识别关键帧
        • 2.2.4.3 Step3~4 关键帧重绘
        • 2.2.4.3 Step5~6 生成Ebsynth工程文件
        • 2.2.4.3 Step7 合成帧,生成视频
    • 2.3 AnimateDiff
      • 2.3.1 插件安装
      • 2.3.2 模型下载
      • 2.3.3 视频生成
        • 2.3.3.1 AnimateDiff参数
        • 2.3.3.2 剧本式生成
  • 参考文献

0. 前言

不知道你在刷各种短视频的时候有没有刷到过类似如下的视频:

这种视频就是AI生成的,准确说是Stable Diffusion生成的半AI视频

Ebsynth

1. 简介

文生视频就是AI将用户传入的文字prompt生成视频的复杂任务。目前市面上主要分为半AI视频以及全AI视频 by 沃兹基.硕得 。

  • 半AI视频:AI以已有视频为蓝本,在其基础上进行换脸、风格转绘等生成新视频的方式。
  • 全AI视频:AI完全以用户的prompt为参照,生成符合用户描述的视频。最近大火的Sora就是类似的技术。

Stable Diffusion原本是文生视频的扩散模型,但是基于“视频是图片的延伸”这一观点,网上众多大神在其基础上开发了不同的插件以及辅助模型,使得其具备了文生视频的能力。
由于其本地部署以及低算力、显存的特性,我们本次用其来作为文生视频分享的创作工具。

基于Stable Diffusion做文生视频主要经历了三个发展阶段,印证着由半AI视频到全AI视频的发展历程:

  1. Mov2mov:早期的文生视频插件,是“视频是图片的延伸”这一观点的直接实现。
  2. ffmpeg + Ebsynth:由于Mov2mov生成视频连贯性差等缺点,后续又发展出了以关键帧+插帧为解决方案的工具插件,ebsynth是其中的佼佼者。
  3. AnimateDiff:StableDiffusion开始迈入全AI视频的标志点,通过对每X帧的剧本式描述,生成全AI视频。

2. 文生视频

2.1 Mov2mov

Mov2mov的作者是github 作者Scholar01,其工作原理是提取视频的帧,并根据用户设置的模型和提示词重新绘制每一帧。然后,它将生成的帧组合成一个新的视频,并输出结果。

2.1.1 插件安装

点击【WebUI】-> 【扩展】-> 【从网址安装】,输入以下的github 网址:

https://github.com/Scholar01/sd-webui-mov2mov

在这里插入图片描述

2.1.2 视频生成

由于其必须基于原始视频,我们可以随意准备一个原始视频:

Stable 文生视频原始图片

准备正向提示词:
在这里插入图片描述

<lora:真人-顾清寒:0.8>,guqinghan,full body:1.2,Medium breast,beautiful detailed girl, light on face,cinematic lighting,1girl,looking at viewer,masterpiece, best quality, unity 8k wallpaper,(raw photo:1.2),((photorealistic:1.4)),best quality ,masterpiece, illustration, an extremely delicate and beautiful

反向提示词:

(badhandv4:1.2),ng_deepnegative_v1_75t,negative_hand-neg,(worst quality:2),(low quality:2),(normal quality:2),lowres,bad anatomy,bad hands,normal quality,((monochrome)),((grayscale)),Freckles,Too many hands and feet,Excess legs,Wrong human body structure

设置其他参数:
迭代步数:38
采样方法:DPM++ 2M SDE Karras
图片尺寸:512*768
重绘幅度:0.4
MoiveFPS:45帧
ControlNet:OpenPose_hand
在这里插入图片描述
点击生成即可:
在这里插入图片描述
最后我们就可以看到转绘结果:

Mov2mov转绘制

可以看到,mov2mov生成的视频的背景以及人物衣服在每一帧的变化都很大,人眼看起来不连贯,给人错乱的感觉。

2.2 ffmpeg + Ebsynth

Ebsynth的原理就是找出图片之中多个关键帧,对每一帧关键帧进行蒙版重绘,之后通过智能插帧的方式将多个关键帧连接起来,生成丝滑视频

2.2.1 ffmpeg 安装

官网:ffmpeg

首先进入官网,选择合适的版本进行下载:
在这里插入图片描述
下载完后,我们对压缩包进行解压,会得到一个文件夹,将其命名为ffmpeg。
在这里插入图片描述
最后,将对应的可执行文件添加到系统的环境变量之中。

2.2.2 Ebsynth安装

官网:ebsynth

同样,到官网我们下载一下Ebsynth,下载完解压即可,不需要额外的操作。
在这里插入图片描述

2.2.3 Ebsynth 插件安装

第三个就是需要在Stable Diffusion之中安装一个叫做Ebsynth的扩展,我们使用老方式即可安装:

插件网址:https://github.com/s9roll7/ebsynth_utility

在这里插入图片描述
安装完之后,我们还需要安装transparent-backgroud插件,此插件用于进行蒙版识别裁剪,使用如下的指令即可安装:

pip install transparent-background

2.2.4 视频生成

Ebsynth这套解决方案的步骤会稍微复杂一些,总共分为8步,我们仅用到其中的以下几步即可:

  • Step1: 蒙版裁剪
2.2.4.1 Step 1 蒙版裁剪

首先设置一下视频的文件和我们此次视频的工程目录:
在这里插入图片描述
然后设置一下蒙版参数,用于从原视频之中截取关键帧以及蒙版信息:
在这里插入图片描述
然后点击生成,我们就能在对应的工程目录之下得到如下的视频处理结果:

  • video_frame: 视频帧
  • video_mask: 视频帧蒙版信息
    在这里插入图片描述

视频蒙版就是用来表示视频主体的技术,如下图:
请添加图片描述

2.2.4.2 Step2 识别关键帧

第二步,识别关键帧,在这一步,我们设置一下最小最大间隔,插件就会智能从刚刚的视频帧之中识别出关键帧。我们点击生成:
在这里插入图片描述
在工程目录下就会得到一个还有关键帧的文件夹。
在这里插入图片描述

2.2.4.3 Step3~4 关键帧重绘

之后利用StableDiffusion的批量图生图重绘能力,我们对刚刚得到的关键帧进行重绘。同样的,我们需要输入一些提示词:
在这里插入图片描述
重绘完成之后,我们就会在对应的工程目录之中得到如下的图生图文件:
在这里插入图片描述

2.2.4.3 Step5~6 生成Ebsynth工程文件

点击步骤5,生成Ebsynth工程文件:
在这里插入图片描述
运行完成之后,我们就能够在对应的文件夹之中得到多个ebs后缀的文件:
在这里插入图片描述
逐个双击打开文件,就会跳转到ebsynth之中,这一步是在不同的关键帧之中进行插帧处理,点击运行:
在这里插入图片描述
Ebsynth运行结束之后,就会在对应的文件目录下方生成视频处理结果:
在这里插入图片描述

2.2.4.3 Step7 合成帧,生成视频

最后,点击第七步,图片合成视频!
在这里插入图片描述
程序运行结束,我们就能在工程目录下找到两个视频文件:
在这里插入图片描述

Ebsynth

2.3 AnimateDiff

早起的半AI视频解决方案都是基于逐帧重绘的思路,但是具有闪烁严重以及耗时漫长等缺陷。

由于帧之间包含的运动元素是具有规律以及关联性的,AnimateDiff基于此对视频片段进行训练,让AI学习不同类型视频的运动方式,单独训练出了一个运动模块:Motion Module
在这里插入图片描述

2.3.1 插件安装

同样,直接在StableDiffusion 之中通过网址安装此插件即可.

插件网址:https://github.com/continue-revolution/sd-webui-animatediff/

在这里插入图片描述

2.3.2 模型下载

使用AnimateDiff之前需要去HuggingFace下载一下对应的运动大模型:

模型地址:https://huggingface.co/guoyww/animatediff/tree/main

在这里插入图片描述
下载完成之后,需要将对应模型放到AnimateDiff 扩展的modle目录下面:
在这里插入图片描述

2.3.3 视频生成

首先我们先生成一张比较满意的图像,比如说:

1girl, upper body, detailed face, looking at viewer, outdoors, upper body, standing, best quality, unity 8k wallpaper,(raw photo:1.2),((photorealistic:1.4)),best quality ,masterpiece, illustration, an extremely delicate and beautiful

反向提示词:

(badhandv4:1.2),ng_deepnegative_v1_75t,negative_hand-neg,(worst quality:2),(low quality:2),(normal quality:2),lowres,bad anatomy,bad hands,normal quality,((monochrome)),((grayscale)),Freckles,Too many hands and feet,Excess legs,Wrong human body structure

设置其他参数:
迭代步数:30
采样方法:DPM++ 2M SDE
随机种子:请添加图片描述
(需要固定)

之后点开AnimateDiff选项卡,设置相关参数,点击生成即可:
在这里插入图片描述
生成过程中,其就会按照运动推理的逻辑为我们生产这样一系列连续且相似的动画帧。
在这里插入图片描述

2.3.3.1 AnimateDiff参数

在生成动画的过程之中,发挥核心作用的就是运动模块,到目前为止总共有三代模型,其中v2、v3模型效果显著好于初始模型:
在这里插入图片描述
其他参数如下:

参数解释
上下文单批数量运动模块单运行批次输入绘制的图片数量
闭环N:不循环
A:总是循环
R+P:半循环
帧数、帧率视频长度,帧数/帧率
帧插值AnimateDiff不支持高帧率绘制,使用此对关键帧进行插帧
2.3.3.2 剧本式生成

最后,我们来体验一下AnimateDiff最强大的能力:Prompt Travel,即通过在不同的帧输入不同的提示词来达到类似剧本式的视频能力。
想要使用这个也很简单,直接控制提示词即可,下面是一个夏东
两个季节变换的例子:

1girl, upper body, detailed face, looking at viewer, outdoors, upper body, standing, outdoors,
0: (spring:1.2), cherry blossoms, falling petals, pink theme,
16: (summer:1.2), sun flowers, hot summer, green theme

best quality, unity 8k wallpaper,(raw photo:1.2),((photorealistic:1.4)),best quality ,masterpiece, illustration, an extremely delicate and beautiful

反向提示词:

(badhandv4:1.2),ng_deepnegative_v1_75t,negative_hand-neg,(worst quality:2),(low quality:2),(normal quality:2),lowres,bad anatomy,bad hands,normal quality,((monochrome)),((grayscale)),Freckles,Too many hands and feet,Excess legs,Wrong human body structure

请添加图片描述

参考文献

[1] Stable Diffusion风格转换插件-EBSynth操作指南
[2] 10倍效率,打造无闪烁丝滑AI动画!EbSynth插件全流程操作解析与原理分析,超智能的“补帧”动画制作揭秘!| Stable Diffusion扩展插件教程
[3] AI视频时代的“开源先驱”:Sora来之前,你可以先掌握这些——AnimateDiff动画插件全方位教学,制作丝滑流畅动图!Stable Diffusion应用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/592699.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

n-Track Studio Suite for Mac激活版:打造您的专属音频工作室

n-Track Studio Suite for Mac是一款功能强大的数字音频工作站软件&#xff0c;让您在家中就能享受到专业录音棚的待遇。无论是录制人声、乐器还是MIDI序列&#xff0c;都能轻松应对。 n-Track Studio Suite for Mac激活版下载 这款软件拥有实时音高校准、时间拉伸和自动补足功…

18 内核开发-内核重点数据结构学习

课程简介&#xff1a; Linux内核开发入门是一门旨在帮助学习者从最基本的知识开始学习Linux内核开发的入门课程。该课程旨在为对Linux内核开发感兴趣的初学者提供一个扎实的基础&#xff0c;让他们能够理解和参与到Linux内核的开发过程中。 课程特点&#xff1a; 1. 入门级别&…

9.4.k8s的控制器资源(job控制器,cronjob控制器)

目录 一、job控制器 二、cronjob控制器 一、job控制器 job控制器就是一次性任务的pod控制器&#xff0c;pod完成作业后不会重启&#xff0c;其重启策略是&#xff1a;Never&#xff1b; 简单案例 启动一个pod&#xff0c;执行完成一个事件&#xff0c;然后pod关闭&#xff1b;…

破解keil uvision4 4.12时遇到:*** TOOLS.INI: TOOLCHAIN NOT INSTALLED **

1 使用管理员权限打开keil和注册机。 2 将注册机中的target改为ARM。

免费开源,无需 GPU,本地化部署大语言模型的对话系统

免费开源&#xff0c;无需 GPU&#xff0c;本地化部署大语言模型的对话系统 分类 编程技术 项目名: FreeAskInternet -- 本地化部署大语言模型的对话系统 Github 开源地址&#xff1a; https://github.com/nashsu/FreeAskInternet FreeAskInternet 是一个免费开源的工具&am…

ZOC8 for Mac v8.08.1激活版:卓越性能的SSH客户端

在远程连接和管理的世界中&#xff0c;ZOC8 for Mac以其卓越的性能和丰富的功能&#xff0c;成为了众多专业人士的首选SSH客户端。它支持SSH1、SSH2、Telnet、Rlogin、Serial等多种协议&#xff0c;让您轻松连接到远程服务器。ZOC8拥有简洁直观的界面和强大的功能设置&#xff…

STM32 F103C8T6学习笔记16:1.3寸OLED的驱动显示日历

今天尝试使用STM32 F103C8T6驱动显示 1.3寸的OLED&#xff0c;显示数字、字符串、汉字、图片等 本质与0.96寸的OLED是完全相同的原理&#xff1a; 而且经过我的研究发现: 1.3寸大小的OLED并未比0.96寸的有更多的显示像素点数来显示&#xff0c;也是128*64的像素点数显示: 也…

【设计模式】函数式编程范式工厂模式(Factory Method Pattern)

目录标题 定义函数式接口函数式接口实现类工厂类封装实际应用总结 定义函数式接口 ISellIPad.java /*** 定义一个函数式接口* param <T>*/ FunctionalInterface public interface ISellIPad<T> {T getSellIPadInfo();}函数式接口实现类 HuaWeiSellIPad.java pu…

头歌实践教学平台:三维图形观察OpenGL1.0

第1关&#xff1a;模型变换 一.任务描述 根据提示&#xff0c;在右侧修改代码&#xff0c;并自己绘制出图形。平台会对你编写的代码进行测试。 1.本关任务 学习了解三维图形几何变换原理。 理解掌握OpenGL三维图形几何变换的方法。 理解掌握OpenGL程序的模型视图变换。 掌握…

【机器视觉】C# .NET 8 部署yolov9 onnx对象检测

这段代码展示了一个使用YOLOv9进行对象检测的简单测试框架。代码主体以及其功能分为以下几个关键部分&#xff1a; 创建测试图片数组 _testImages&#xff0c;它包含了图片文件名和对应的标签。使用 buildTests 方法来从给定的文件名中加载图片并调整尺寸&#xff0c;准备测试数…

【每日力扣】141. 环形链表与142. 环形链表 II

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 141. 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟…

利用策略模式+模板方法实现项目中运维功能

前段时间项目中有个需求&#xff1a;实现某业务的运维功能&#xff0c;主要是对10张数据库表的增删改查&#xff0c;没有复杂的业务逻辑&#xff0c;只是满足运维人员的基本需要&#xff0c;方便他们快速分析定位问题。这里简单记录分享下实现方案&#xff0c;仅供参考。 一、…

学习Rust的第27天:Rust中的pwd

过去几天我们一直在重新创建 GNU 核心实用程序的基本功能&#xff0c;而今天&#xff0c;我们将做一些有点太简单的事情&#xff0c; pwd 这个实用程序是用于打印Linux终端中的工作目录。 Understanding the utility 了解实用程序 Running the pwd command, we get an output l…

SpringBoot使用AOP注解记录操作日志

一、前言 日志&#xff1a;指系统所指定对象的某些操作和其操作结果按时间有序的集合。 操作日志&#xff1a;主要是对某个对象进行新增操作或者修改操作后记录下这个新增或者修改&#xff0c;操作日志要求可读性比较强。比如张三在某个时间下了订单买了某个商品&#xff01; …

linux实验(数据库备份)

以下所有操作皆以机房电脑上的虚拟机为基础环境 下载链接&#xff1a;Linux课程机房虚拟机# 切换到root用户 su - root安装数据库mysql 5.7 rpm -ivh https://mirrors4.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/mysql-community-common-5.7.29-1.el7.x…

Llama改进之——SwiGLU激活函数

引言 今天介绍LLAMA模型引入的关于激活函数的改进——SwiGLU1&#xff0c;该激活函数取得了不错的效果&#xff0c;得到了广泛地应用。 SwiGLU是GLU的一种变体&#xff0c;其中包含了GLU和Swish激活函数。 GLU GLU(Gated Linear Units,门控线性单元)2引入了两个不同的线性层…

Linux(openEuler、CentOS8)常用的IP修改方式(文本配置工具nmtui+配置文件+nmcli命令)

----本实验环境为openEuler系统<以server方式安装>&#xff08;CentOS类似&#xff0c;可参考本文&#xff09;---- 一、知识点 &#xff08;一&#xff09;文本配置工具nmtui(openEuler已预装) nmtui&#xff08;NetworkManager Text User Interface&#xff09;是一…

ZooKeeper以及DolphinScheduler的用法

目录 一、ZooKeeper的介绍 数据模型 ​编辑 操作使用 ①登录客户端 ​编辑 ②可以查看下面节点有哪些 ③创建新的节点&#xff0c;并指定数据 ④查看节点内的数据 ⑤、删除节点及数据 特殊点&#xff1a; 运行机制&#xff1a; 二、DolphinScheduler的介绍 架构&#…

计算机毕业设计Python+Spark知识图谱高考志愿推荐系统 高考数据分析 高考可视化 高考大数据 大数据毕业设计

毕业设计&#xff08;论文&#xff09;任务书 毕业设计&#xff08;论文&#xff09;题目&#xff1a; 基于大数据的高考志愿推荐系统 设计&#xff08;论文&#xff09;的主要内容与要求&#xff1a; 主要内容&#xff1a; 高…

贝叶斯回归

1. 贝叶斯推断的定义 简单来说&#xff0c;贝叶斯推断 (Bayesian inference) 就是结合“经验 (先验)”和“实践 (样本)”&#xff0c;得出“结论 (后 验)”。 2. 什么是先验&#xff1f; 贝叶斯推断把模型参数看作随机变量。在得到样本之前&#xff0c;根据主观经验和既有知…