| # 提示词跃迁 | |
| 在模型隐层旅行以制作伪动画,项目 AUTOMATIC1111/stable-diffusion-webui 的插件。 | |
| ---- | |
| 对语言理解模型 CLIP 的输出进行插值,从而实现多条提示词之间的语义过渡,产生看似连续的图像序列,或者说伪动画。😀 | |
| ⚠ 我们成立了插件反馈 QQ 群: 616795645 (赤狐屿),欢迎出建议、意见、报告bug等 (w | |
| ℹ 实话不说,我想有可能通过这个来做ppt童话绘本<del>甚至本子</del>…… | |
| ℹ 聪明的用法:先手工盲搜两张好看的图 (只有提示词差异),然后再尝试在其间跃迁 :lolipop: | |
| ### 使用方法 & 它如何工作 | |
| - 在提示词/负向提示词框里输入**多行**文本,每一行被称作一个**阶段** | |
| - 逐帧生成图像,在每个阶段内,所使用的提示词向量是经过插值运算的 | |
| - 为了保证某种连续性,所有其他参数将被固定 | |
| - 虽然所有图的主随机数种子将被统一固定,但你仍然可以启用 `subseed` 去增加随机性 | |
| - 导出视频! | |
| - 使用额外的 [后处理流程](#post-processing-pipeline) 可以获得更好的画质和流畅度 👌 | |
| ### 参数选项 | |
| - 提示词: (多行文本) | |
| - 反向提示词: (多行文本) | |
| - 就是提示词和反向提示词的输入框,但是你必须输入多行文本,每一行是一个阶段 | |
| - 如果提示词和反向提示词的阶段数量不一致,少的那一方会被重复到对齐多的一方 | |
| - 插帧数/steps: (整数,或者逗号分隔的多个整数) | |
| - 每个阶段之间插帧的数量 | |
| - 若为单个整数,每个阶段使用相同的插帧数量 | |
| - 若为西文逗号分隔的多个整数,每个阶段使用不同的插帧数量,比如有4个阶段则可给出3个独立步数:`12, 24, 36` | |
| - 起源/genesis: (选项), 每张图像的内容先验 | |
| - `固定/fixed`: 在 txt2img 流程中,始终从高斯噪声开始降噪;在 img2img 流程中,始终从给定的参考图开始降噪 | |
| - `连续/successive`: 从上一帧的内容开始降噪 (这会导致 txt2img 流程从第二步开始强制转为 img2img 流程) | |
| - `胚胎/embryo`: 从某个已部分降噪的公共先祖胚胎开始降噪,参考 [=> 原理](https://replicate.com/andreasjansson/stable-diffusion-animation#readme) | |
| - (该功能为实验性质) 只支持两个阶段跃迁,并且不能为逆向提示词插值 :( | |
| - 起源的额外参数 | |
| - 降噪强度: (浮点数), 在 img2img 流程中所用的降噪强度 (仅对 `连续/successive` 模式) | |
| - 胚胎步数: (整数或浮点数), 产生公共胚胎的预降噪步数 (仅对 `胚胎/embryo` 模式) | |
| - 如果 >= 1,解释为采样步数 | |
| - 如果 < 1,解释为占总采样步数的比例 | |
| - 视频相关 | |
| - 帧率/fps: (浮点数), 导出视频的帧率,设置为 `0` 将禁用导出 | |
| - 文件格式/fmt: (选项), 导出视频的文件格式 | |
| - 首尾填充/pad: (整数), 重复首尾帧 `N` 次以留出一段入场/退场时间 | |
| - 帧选择器/pick: (切片器), 使用 [Python切片语法](https://www.pythoncentral.io/how-to-slice-listsarrays-and-tuples-in-python) 精心选择所需要导出的帧,注意切片发生在填充之前 (例如:设为 `::2` 将只使用偶数帧 , 设为 `:-1` 将去除最后一帧) | |
| - 调试开关: (逻辑值) | |
| - 是否在控制台显示详细日志 | |
| ### 后处理流程 | |
| 单凭CLIP模型自身能实现语义插值就已经到达能力天花板了,但我们距离高清丝滑的动画还差两步: **图像超分辨率** 和 **视频插帧**。 | |
| ⚠ 多媒体数据的处理是非常消耗资源的,我们不能指望 webui 去做这件事。实际上,我们将其从宿主和插件中分离,出来作为一个可选的外部工具。 😃 | |
| #### 安装依赖 | |
| ⚪ 自动安装 | |
| - 运行 `tools/install.cmd` | |
| - 如果遇到诸如 `访问被拒绝` 之类的错误,多次运行直到提示 `Done!` 无错误退出 😂 | |
| - 你将安装好 [Real-ESRGAN](https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan), [RIFE](https://github.com/nihui/rife-ncnn-vulkan), [FFmpeg](https://ffmpeg.org/) 这三个组件在 [tools](tools) 目录下 | |
| ⚪ 手动安装 | |
| - 参照 [README.md](README.md#post-processing-pipeline) | |
| - 我寻思你既然都想着手动安装了,也不至于不肯咬一口英文罢…… 🤔 | |
| #### 运行任务 | |
| - 检查 [postprocess.cmd](postprocess.cmd) 中的默认参数 | |
| - 你有两种方式启动后处理任务 😃 | |
| - 从命令行运行 `postprocess.cmd path/to/<image_folder>` | |
| - 鼠标拖拽任意图片文件夹到 `postprocess.cmd` 的文件图标上然后释放 | |
| ℹ 任务完成后,资源浏览器将被自动打开并定位到导出的 `synth.mp4` 文件~ | |
| 插件直出和加入后处理对比 (配置为 `img2img-fixed-ddim`): | |
| | 插件直出 | 加入后处理 | | |
| | :-: | :-: | | |
| |  |  | | |
| ---- | |
| by Armit | |
| 2023/01/20 | |