fprompt
详情
下载文件
关于此版本
模型描述
这是一个脚本,因此请解压缩并将内容放入主 stable-diffusion-webui 文件夹中的 scripts 文件夹中。
它被称为 fprompt,因为它根据内容格式化提示,类似于 C 语言中的 fstring 或 Python 中的字符串插值。(它也适用于负面提示!)
Flowframes 是将图片拼接成流畅动画的好工具。
只需提供包含你希望生成流畅动画的图片的文件夹即可。你可以选择帧率以及生成的中间帧数量。
使用指南
如果你在提示中包含以下描述的 { } 或 [ ] 结构并使用此脚本:
你可以指定变化所跨越的帧数。
你还可以指定在连续运行中使用的种子数量,以便自动用同一提示尝试多个种子。
范围输入允许你指定生成提示所使用的 DPoC(完成百分比的小数形式)范围。这难以解释,但如果你尝试调整一下就会明白。它仅生成落在该范围内的提示,而不改变其他所有内容的缩放比例。
格式语法
“{, , [
当 DPoC <
时,值等于 , 当 DPoC ∈ [
, ] 时,值在 和 之间平滑地来回变化 次, 当 DPoC >
时,值等于 DPoC = 时的最终值。
[A;B; … :,,
如果一对括号内的内容在求值后能成为数字,则该数字将替换该字符串。这是最后一步,因此 { } 结构可以嵌套其中并被正确计算。由于是递归处理,你必须将内部的 () 替换为 <>。这允许你使用 Python 内置函数如 round 和 int。
我还创建了一个函数 curve(x, a),它接受一个从 0 到 1 的 x 值和一个可选的平滑百分比 (a):实际返回值为 (1-a)*sin(arccos(x))+a_*_x,简单来说,这是一个先快速上升再缓慢增长的曲线。平滑百分比基本上表示该曲线被压缩成线性增长的程度:0 → 四分之一圆,1 → 直线。
示例
{0,1} 从 0 平滑过渡到 1
{0,1,.5} 在前半部分提示中保持为 0,在后半部分从 0 平滑过渡到 1
{0,1,0,.5} 在前半部分提示中从 0 平滑过渡到 1,之后保持为 1
{0,1,.25,.75,1} 值呈 _/\_ 形状:前四分之一为 0,在范围内上升到 1 再下降回来,之后保持恒定
[A;B;C:0,1.2,0,.5] => (A:{1.2,0,0,.25}), (B:{0,1.2,0,.5,1}), (C:{0,1.2,.25,.5})
(示例: (5 + (3 * 4 - 2))) => (示例: 15)
(示例: (int<4/3>)) => (示例: 1)
(示例: (curve<{1,0}>)) => (示例:
),其中 x 的值沿着单位圆第一象限的边缘变化 (示例: (curve<{0,1}>)) => (示例:
),其中 x 的值沿着单位圆第二象限的边缘变化 (示例: (1-curve<{0,1}>)) => (示例:
),其中 x 的值沿着单位圆第三象限的边缘变化 (示例: (1-curve<{1,0}>)) => (示例:
),其中 x 的值沿着单位圆第四象限的边缘变化 (示例: (curve<{1,0}, 0.5>)) => (示例:
),其中 x 是 curve<{1,0}> 与 {1,0} 的平均值 cfg: {7,9} => 从提示中移除,并将 cfg 设置为在整个帧序列中从 7 平滑过渡到 9 的值。
免责声明
某些 LoRA 对值 0 的响应非常差,因此提供了一个选项,当值为 0 时隐藏它们。对于括号内的字符串也有相同选项,但这主要用于控制提示长度,对帧间一致性有显著影响。
图像到图像(Img2Img)
在 Img2Img 模式中支持循环反馈,可显著提升连续帧的一致性。目前需要一些手动设置:先在 Txt2Img 模式下生成第一帧,然后将其作为起始图像。此后每一帧都以前一帧为初始状态。在我的使用中,降噪强度设置为 0.6 - 0.7 效果最佳,但这会使相邻帧非常相似。在极低的降噪强度下,图像极有可能严重失真。