这是因为模型在稍做出完全相同的决策。这些误差会不断扩散,导致相当大的误差,正如我们上面所见。
这个过程可以通过不给模型提供解码文本来稳定(这称为无条件反转),然而,由于模型在新的提示下有很大的自由度来做出新的决策,因此我们会丢失很多细节。请注意,冲浪板和救生衣上的图案都消失了,波浪纹理也消失了:
在 edict 中,我们实现了条件(基于文本)的精确反演。我们通过复制两份图像,并以可逆的方式交替更新其中一份,并更新另一份中的信息。我们将其描述为基于耦合变换的精确扩散反演, edict的名称也由此而来。
你可以把它想象成一场跳
蛙游戏——x 向前跳过 y,但如果 x 想向后走,它可以回 波斯尼亚和黑塞哥维那 whatsapp 移动数据库 头看看 y 在哪里,从而算出它 (x) 之前在哪里。
结果如下!
我们看到上行重建效果完美,下行则保留了非猫咪细节的编辑。成功!
结果
我们已经见过“狗→猫”,那么“狗→特定品种的狗”呢?这里我们尝 是坦诚了自己的诊断 试了六个不同的品种:
这些例子非常有趣,因为它展示了 edict 在多大程度上保留了第一行和第三行的背景或底部的文本。
edict 不仅可以将家养哺乳动物转变为其他家养哺乳动物,还可以做到:
内容添加(向场景添加内容)
上下文变化(保留一个对象并将其放入新的场景)
姿势变化(将物体变形为新形状,这对于基于扩散的方法来说极具挑战性!)
风格变化(保持描绘内容相同,但采用不同的媒体或设置)
深入探究我们将在本节中更具
体地讨论 edict 背后的数学原理。通常,图像生成扩散步骤具有 bo 目录 以下公式:
x’ = a * x + b * f(x)
其中 a 和 b 是设定的系数,x 是(当前含有噪声的)图像,f(x) 是噪声检测函数。随着这些步长变小,任何给定步长的 x 和 x’ 彼此之间的差异不会太大,这意味着 f(x) 和 f(x’) 之间的距离也会越来越近。
正常扩散反演近似地求解上述方程中的 x:
a*x=x’-b*f(x)→x=(x’-b*f(x))/a
如果我们不知道 x,就无法知道 f(x),因此用 f(x’) 代入。
x ~= (x’ – b * f(x’)) / a
现在在实践中,正如我们所看到的,当 f 也依赖于文本描述时,这个过程就不能很好地工作。
我们希望能够在不牺牲稳定性的情况下处理复杂且动态的函数 f。为此,我们将 x 复制到另一个序列 y 中,并遵循更新规则。