Anderson 视角
Stable Diffusion 前方的三个挑战

稳定扩散(Stable Diffusion)的发布可能是自1999年DeCSS以来最重要的技术披露;它绝对是2017年深度伪造(deepfakes)代码被复制到GitHub并分叉为DeepFaceLab和FaceSwap,以及实时流媒体深度伪造软件DeepFaceLive以来,AI生成图像领域最重要的事件。
一旦 Stable Diffusion 的内容限制被绕过,用户就可以使用该系统生成以前被限制的图像。因此,迅速出现了专注于 Stable Diffusion 的 subreddit,并且开发人员和用户在 Discord 上分裂为官方和 NSFW 社区,而 Twitter 上也充满了 Stable Diffusion 的创作。
目前,每天都有开发人员为 Stable Diffusion 开发新的插件和第三方工具,包括 Krita、Photoshop、Cinema4D 和 Blender 等应用程序的插件。
与此同时,提示工艺(promptcraft)已经成为一种专业的艺术形式,它可能是自 Filofax 绑定以来最短的职业选择;它已经在 Patreon 上实现了商业化,而更复杂的产品也将在未来推出。
Stable Diffusion 的发展速度非常快,很难预测其未来发展。但让我们来看看 Stable Diffusion 社区可能面临的三个最有趣的挑战。
1:优化基于图块的管道
Stable Diffusion 的图像合成质量和分辨率受到硬件资源和训练图像分辨率的限制。开发人员可能会找到方法来提高 Stable Diffusion 的输出质量和分辨率。这些项目可能涉及利用系统的局限性,例如其本机分辨率仅为 512×512 像素。
Stable Diffusion 是在正方形图像上训练的,图像被重采样为 512×512 像素,以便将图像标准化并适应训练模型的 GPU 限制。
因此,Stable Diffusion 的输出通常以 512×512 像素为单位,并且在这种方面比其他方面更可靠、更不容易出现故障。一些用户正在开发方法来将图像分割为 512×512 像素的部分,然后将这些部分拼接在一起以形成更大的合成图像。

这是一个 1024×576 的渲染图像,通常情况下,Stable Diffusion 单独渲染是不可能实现的。它是通过将 DoggettX 分支的 attention.py 文件复制到另一个分支中实现的。来源:https://old.reddit.com/r/StableDiffusion/comments/x6yeam/1024x576_with_6gb_nice/
虽然有些项目使用原始代码或其他库,但 txt2imghd 的 GOBIG 模式将很快为主分支提供此功能。其他社区开发人员的努力涉及 GOBIG 的不同实现。

这是一个抽象图像的原始 512×512 像素渲染(左)和第二个渲染(左二);使用 ESGRAN 进行上采样(现在在所有 Stable Diffusion 分布中几乎是本地的);以及使用 GOBIG 实现的“特殊关注”(右),生成的细节至少在图像部分看起来更好上采样。来源:https://old.reddit.com/r/StableDiffusion/comments/x72460/stable_diffusion_gobig_txt2imghd_easy_mode_colab/
这种抽象示例具有许多适合这种自恋式上采样的“小王国”,但可能需要更具挑战性的代码驱动解决方案来生成非重复、连贯的上采样,而不会看起来像是由多个部分组成的。特别是对于人脸,我们对异常或“刺耳”的伪影非常敏感。因此,人脸可能最终需要专门的解决方案。
Stable Diffusion 目前没有专门的机制来在渲染过程中关注人脸,就像人类优先考虑面部信息一样。虽然一些 Discord 社区的开发人员正在考虑实现此类“增强关注”的方法,但目前更容易在初始渲染完成后手动(或自动)增强面部。
人脸具有内部完整的语义逻辑,这在建筑物底部的“图块”中是找不到的,因此,目前可以非常有效地“放大”和重新渲染 Stable Diffusion 输出中的“模糊”面部。

左,Stable Diffusion 的初始尝试,使用提示“全身彩色照片,克里斯蒂娜·亨德里克斯进入拥挤的地方,穿着雨衣;佳能 50,眼神接触,高细节,高面部细节”。右,使用 Img2Img 和 Stable Diffusion 的全注意力提高的面部。
在没有专用 Textual Inversion 解决方案的情况下,这只适用于那些已经在 LAION 数据子集中有很好代表性的名人图像。因此,它适用于汤姆·克鲁斯、布拉德·皮特、詹妮弗·劳伦斯等真正的媒体名人,但不适用于那些在源数据中没有很好代表的名人。

使用提示“全身彩色照片,克里斯蒂娜·亨德里克斯进入拥挤的地方,穿着雨衣;佳能 50,眼神接触,高细节,高面部细节”生成一个合理的新闻照片。
对于那些有长期职业生涯的名人,Stable Diffusion 通常会生成他们最近(即年龄较大)的图像,因此需要添加提示,如“年轻”或“某年”,以生成更年轻的图像。
这主要是由于 2000 年代中期数字(而不是昂贵的乳剂基)新闻摄影的普及,以及后来由于宽带速度的增加而导致图像输出量的增长。

渲染的图像被传递到 Stable Diffusion 的 Img2Img 中,在那里选择一个“焦点区域”,并仅对该区域进行最大大小的新渲染,使 Stable Diffusion 能够集中所有可用的资源来重新创建面部。

将“高注意力”面部合成回原始渲染中。除了面部外,这个过程还适用于具有潜在已知、连贯和整体外观的对象部分,例如具有明显对象的原始照片部分,例如手表或汽车。上采样墙的某个部分将导致重新组装的墙看起来很奇怪,因为渲染的“拼图碎片”没有更广泛的上下文。
一些名人在数据库中“预先冻结”在时间上,要么是因为他们早逝,要么是因为他们只在主流中短暂出现,产生了大量图像,但只在短时间内。询问 Stable Diffusion 可以提供一种“当前”流行度指标,用于现代和老牌明星。对于一些老牌和当前的名人来说,源数据中没有足够的图像来获得很好的相似度,而一些长期流行的已故或褪色的明星的合理相似度可以从系统中获得。

Stable Diffusion 的渲染结果很快显示出哪些著名面孔在训练数据中得到了很好的代表。尽管她在写作时是一个非常受欢迎的青少年,但 Millie Bobby Brown 在 LAION 源数据集从网络中抓取时年纪较轻、知名度较低,因此目前很难使用 Stable Diffusion 获得高质量的相似度。
如果数据可用,Stable Diffusion 中的基于图块的上采样解决方案可以更进一步:它们可以通过将面部特征分解并在重新组装之前将所有可用的本地 GPU 资源集中在个别特征上,实现更准确、更详细的面部生成——这是一个目前仍然是手动的过程。
这不仅限于面部,还适用于具有可预测位置的对象部分,并且符合可以在大规模数据集中找到的大型嵌入,例如具有明显对象的原始照片部分,例如手表或汽车。
真正的限制是数据集中的可用参考数据量,因为最终,深度迭代的细节将变得完全“虚构”(即虚假)且不那么真实。
这种高级别的粒度放大在詹妮弗·康奈利的例子中有效,因为她在 LAION 美学(Stable Diffusion 使用的 LAION 5B 的主要子集)中跨越多个年龄段都有很好的代表性;在许多其他情况下,准确性将由于缺乏数据而受到影响,需要额外的训练(见下面的“自定义”)或文本逆转(见下文)。
基于图块的算法上采样是一种相对廉价的方法,可以使 Stable Diffusion 生成高分辨率输出,但如果缺乏更广泛的、更高级别的注意力机制,这种方法可能无法达到预期的标准,尤其是在处理各种内容类型时。
2:解决人体肢体问题
Stable Diffusion 在描绘人体肢体的复杂性方面并没有达到其名称所暗示的稳定性。手可以随机增加,手指可以合并,第三条腿可以无故出现,现有的肢体可以无影无踪地消失。Stable Diffusion 与其同类产品(如 DALL-E 2)共享这个问题。
希望即将发布的 1.5 检查点(一个更强大的模型,具有改进的参数)能够解决肢体混淆问题的 Stable Diffusion 爱好者可能会感到失望。该新模型目前正在 stability.ai 的商业门户 DreamStudio 上预览,用户可以将其输出与本地或其他 1.4 系统的渲染进行比较:

来源:本地 1.4 预装和 https://beta.dreamstudio.ai/

来源:本地 1.4 预装和 https://beta.dreamstudio.ai/

来源:本地 1.4 预装和 https://beta.dreamstudio.ai/
数据质量可能是主要的贡献因素。
像 Stable Diffusion 和 DALL-E 2 这样的图像合成系统所使用的开源数据库可以为个人和人际行动提供许多标签。这些标签与相关图像或图像段一起被训练到模型中。

Stable Diffusion 用户可以通过查询 LAION 美学数据集来探索模型中训练的概念,这是更大 LAION 5B 数据集的子集,用于驱动该系统。图像按其“美学评分”排序,而不是按字母顺序。来源:https://rom1504.github.io/clip-retrieval/
一个好的个体标签和类别层次结构,用于描绘人类手臂,应该是这样的:body>arm>hand>fingers>[子数字和拇指]>[数字段]>指甲。

手的部分的粒度语义分割。即使这种异常详细的解析也将每个“手指”视为一个单独的实体,而不是考虑手指的三个部分和拇指的两个部分。来源:https://athitsos.utasites.cloud/publications/rezaei_petra2021.pdf
实际上,源图像不太可能在整个数据集中一致地注释,而无监督标签算法可能会在更高的层次(例如“手”)上停止,并将内部像素(技术上包含“手指”信息)留作未标记的像素集,从中可以任意推导出特征,并可能在后续渲染中表现为刺耳的元素。

它应该是这样的(右上,如果不是上切),以及它倾向于成为的样子(右下),由于标签资源有限或如果标签存在,则是由于对这些标签的架构利用。
因此,如果一个潜在扩散模型渲染出一条手臂,它几乎可以肯定会尝试渲染手臂末端的手,因为 arm>hand 是最低限度的层次结构,位于该模型对“人体解剖学”知识的较高层次。
在那之后,“手指”可能是最小的分组,尽管还有 14 个进一步的手指/拇指部分需要考虑,以描绘人类手。
如果这个理论成立,那么由于行业范围内缺乏手动注释的预算,以及缺乏有效的算法来自动注释并产生低错误率,那么就没有真正的解决方案。实际上,该模型可能依赖于人类解剖学的一致性来掩盖其训练数据的缺陷。
Stable Diffusion Discord 中最近提出的一个可能的原因是,该模型可能会对人类手应该有多少个手指感到困惑,因为其背后的 LAION 数据库中包含可能只有四个手指的卡通人物(这本身就是一个节省劳力的捷径)。

可能导致 Stable Diffusion 和类似模型中“缺失手指”综合征的两个潜在罪魁祸首。下面是 LAION 美学数据集中 Stable Diffusion 使用的卡通手的示例。来源:https://www.youtube.com/watch?v=0QZFQ3gbd6I
如果这是真的,那么唯一的明显解决方案是重新训练模型,排除非真实的人类内容,并确保真正的缺失情况(例如截肢者)被标记为例外。仅从数据策划的角度来看,这将是一个相当大的挑战,尤其是对于资源有限的社区努力。
第二种方法是应用过滤器,排除此类内容(例如“三指/五指手”)在渲染时出现,类似于 OpenAI 已经在某种程度上过滤了 GPT-3 和 DALL-E 2,以便其输出可以在不需要重新训练源模型的情况下得到监管。

对于 Stable Diffusion 来说,数字和甚至肢体之间的语义区别可能变得非常模糊,令人联想到 1980 年代大卫·柯南伯格的“身体恐怖”电影。来源:https://old.reddit.com/r/StableDiffusion/comments/x6htf6/a_study_of_stable_diffusions_strange_relationship/
然而,同样,这需要可能不存在的标签,留给我们相同的后勤和预算挑战。
可以说,还有两条路可走:向问题中添加更多数据,并应用第三方解释系统,当呈现给最终用户时可以干预此类物理错误(至少,这将为 OpenAI 提供一种方法来为“身体恐怖”渲染提供退款,如果公司有动力这样做)。
3:自定义
Stable Diffusion 的未来最令人兴奋的可能性之一是用户或组织开发修改后的系统的前景;修改可以将内容集成到系统中,而不仅仅是预训练的 LAION 领域——理想情况下,这可以在不重新训练整个模型或将大量新图像训练到成熟的模型中的情况下实现。
通过类比:如果两个不太有天赋的学生加入一个由 30 名学生组成的高级班级,他们要么会融入并跟上进度,要么会失败并成为异常值;在任何情况下,整个班级的平均表现可能不会受到影响。如果 15 名不太有天赋的学生加入,然而,整个班级的成绩曲线可能会受到影响。
同样,通过长时间和昂贵的模型训练建立起来的关系网络可能会因过多的新数据而受到损害,甚至在某些情况下被破坏,从而降低模型在所有方面的输出质量。
这样做的理由主要是完全劫持模型对关系和事物的概念理解,并将其用于生产类似于添加的额外材料的内容。
例如,将 50 万帧《辛普森一家》动画训练到现有的 Stable Diffusion 检查点中,可能最终会得到一个比原始版本更好的《辛普森一家》模拟器,假设足够广泛的语义关系在此过程中幸存下来(例如,荷马·辛普森吃热狗,这可能需要在检查点中已经存在但不在添加的材料中的热狗信息),并且您不想突然从《辛普森一家》内容切换到创建“格雷格·鲁特科夫斯基的奇妙风景”——因为您的后期训练模型的注意力已经大大偏离,并且不会像以前那样擅长做这类事情。
一个值得注意的例子是 waifu-diffusion,它成功地将 56,000 张动漫图像后期训练到一个完成和训练好的 Stable Diffusion 检查点中。然而,对于爱好者来说,这是一个艰巨的任务,因为该模型需要令人震惊的最低 30GB 的 VRAM,这远远超出了 NVIDIA 即将发布的 40XX 系列消费级产品的可用范围。

将自定义内容训练到 Stable Diffusion 中:该模型花了两周的后期训练时间才能够输出这种水平的插图。左边的六张图像显示了模型在后期训练过程中使用新训练数据生成主题一致输出的进展。来源:https://gigazine.net/gsc_news/en/20220121-how-waifu-labs-create/
大量的精力可能会被投入到 Stable Diffusion 检查点的这些“分支”中,只会被技术债务所阻碍。官方 Discord 的开发人员已经表明,后续检查点发布不一定会与之前的版本向后兼容,即使是与之前版本的提示逻辑也可能不兼容,因为他们的主要兴趣是获得最好的模型,而不是支持遗留应用程序和流程。
因此,决定将检查点分支到商业产品的公司或个人基本上没有回头路;他们的模型版本在那时就成为一个“硬分支”,无法从 stability.ai 的后续版本中获得上游的好处——这是一项相当大的承诺。
目前对 Stable Diffusion 的自定义的最大希望在于文本逆转,其中用户训练一小部分 CLIP 对齐图像。

Tel Aviv 大学和 NVIDIA 的合作,文本逆转允许训练离散和新颖的实体,而不会破坏源模型的能力。来源:https://textual-inversion.github.io/
文本逆转的主要限制是推荐的图像数量很少——最少五张。这样基本上会产生一个有限的实体,它可能更适合风格转换任务,而不是插入逼真的对象。
尽管如此,目前正在 Stable Diffusion Discord 中进行实验,使用更多的训练图像,仍有待观察这种方法的有效性。同样,这种技术需要大量的 VRAM、时间和耐心。
由于这些限制,我们可能需要等待一段时间才能看到来自 Stable Diffusion 爱好者的更复杂的文本逆转实验——以及这种方法是否可以以看起来比 Photoshop 剪切和粘贴更好的方式“把你放在图片中”,同时保留官方检查点的惊人功能。
首次发布于 2022 年 9 月 6 日。















