稳定扩散如何发展成为主流消费产品
具有讽刺意味的是,风靡全球的新 AI 图像合成框架Stable Diffusion既不稳定,也没有真正“扩散”——至少目前还没有。
该系统的全部功能分布在不断变化的产品的各种大杂烩中,这些产品来自少数开发人员,他们在 Discord 上的各种讨论中疯狂地交换最新信息和理论——以及他们正在创建的软件包的绝大多数安装程序或修改与“即插即用”相去甚远。
相反,它们往往需要通过 GIT、Conda、Python、Miniconda 和其他前沿开发框架进行命令行或BAT 驱动的安装——这些软件包在普通消费者中非常罕见,以至于它们的安装经常被防病毒和反恶意软件供应商作为主机系统受损的证据。
标准稳定扩散装置目前需要的手套中只有一小部分阶段可供选择。许多发行版还需要特定版本的 Python,这可能与安装在用户计算机上的现有版本发生冲突——尽管这可以通过基于 Docker 的安装以及在一定程度上通过使用 Conda 环境来避免。
SFW 和 NSFW Stable Diffusion 社区中的消息线程充斥着与破解 Python 脚本和标准安装相关的提示和技巧,以实现改进的功能,或解决频繁的依赖错误以及一系列其他问题。
这使得有兴趣从文本提示创建令人惊叹的图像的普通消费者几乎受制于越来越多的货币化 API Web 界面,其中大多数在需要购买代币之前提供最少数量的免费图像生成。
此外,几乎所有这些基于 Web 的产品都拒绝输出 NSFW 内容(其中大部分可能与普遍感兴趣的非色情主题有关,例如“战争”),这将 Stable Diffusion 与 OpenAI 的 DALL-E 的低俗服务区分开来2.
'用于稳定扩散的 Photoshop'
每天在 Twitter 的#stablediffusion 主题标签中出现的精彩、活泼或超凡脱俗的图像令人着迷,可以说,更广阔的世界正在等待的是“Photoshop for Stable Diffusion”——一个跨平台的可安装应用程序,具有最佳和最强大的功能Stability.ai 的架构,以及新兴 SD 开发社区的各种巧妙创新,没有任何浮动 CLI 窗口、晦涩且不断变化的安装和更新例程,或缺少功能。
在大多数功能更强大的安装中,我们目前拥有的是一个各种优雅的网页,上面有一个无实体的命令行窗口,其 URL 是一个 localhost 端口:
与 FaceSwap 等 CLI 驱动的综合应用程序和以 BAT 为中心的 DeepFaceLab 类似,Stable Diffusion 的“预打包”安装显示了它的命令行根,其界面通过 localhost 端口访问(见上图顶部),该端口进行通信使用基于 CLI 的稳定扩散功能。
毫无疑问,一个更精简的应用程序即将到来。已经有几个可以下载的基于 Patreon 的集成应用程序,例如GRisk和NMKD(见下图)——但目前还没有一个集成了所有更高级和更不易访问的稳定实现的功能扩散可以提供。
早期的,基于 Patreon 的稳定扩散包,轻度“应用化”。NMKD 是第一个将 CLI 输出直接集成到 GUI 中的产品。
让我们来看看这个令人惊叹的开源奇迹的更完善和完整的实现最终会是什么样子 - 以及它可能面临的挑战。
资金充足的商业稳定扩散应用的法律考虑
NSFW因素
Stable Diffusion 源代码是在极其宽松的许可下发布的,该许可不禁止商业重新实现和从源代码广泛构建的衍生作品。
除了前面提到的越来越多的基于 Patreon 的 Stable Diffusion 构建,以及为Figma、Krita、Photoshop、GIMP和Blender(以及其他)开发的大量应用程序插件之外,没有任何实际理由可以很好地受资助的软件开发公司无法开发出更复杂、更强大的稳定扩散应用程序。从市场的角度来看,我们完全有理由相信一些这样的举措已经在进行中。
在这里,这些努力立即面临两难境地,即是否像大多数用于稳定扩散的 Web API 一样,应用程序是否允许关闭稳定扩散的本机 NSFW 过滤器(代码片段)。
'埋葬' NSFW 开关
尽管 Stability.ai 的 Stable Diffusion 开源许可证包括一个可广泛解释的应用程序列表,但这些应用程序可能无法使用(可能包括色情内容和deepfakes),但供应商可以有效禁止此类使用的唯一方法是编译 NSFW 过滤器放入不透明的可执行文件而不是 Python 文件中的参数,或者对包含 NSFW 指令的 Python 文件或 DLL 强制执行校验和比较,以便在用户更改此设置时无法进行渲染。
这将使推定的应用程序以与DALL-E 2 目前相同的方式“绝育” ,从而降低其商业吸引力。此外,不可避免地,这些组件的反编译“篡改”版本(原始 Python 运行时元素或编译的 DLL 文件,现在用于人工智能图像增强工具的 Topaz 系列)可能会出现在 torrent/hacking 社区中以解锁这些限制,只需更换阻碍元素,并否定任何校验和要求。
最后,供应商可能会选择简单地重复 Stability.ai 对滥用的警告,这是许多当前 Stable Diffusion 发行版的第一次运行的特征。
然而,目前以这种方式使用随意免责声明的小型开源开发人员与投入大量时间和金钱以使 Stable Diffusion 功能齐全且易于访问的软件公司相比几乎没有损失——这需要更深入的考虑。
深造责任
正如我们最近所指出的,LAION 美学数据库是 Stable Diffusion 正在进行的模型训练所依据的 42 亿张图像的一部分,其中包含大量名人图像,使用户能够有效地创建deepfake,包括 deepfake 名人色情片。
从我们最近的文章中,詹妮弗·康纳利 (Jennifer Connelly) 在她职业生涯的四个十年中的四个阶段,从稳定扩散中推断出来。
这是一个独立且更具争议的问题,而不是(通常)合法的“抽象”色情片,它不描绘“真实”的人(尽管这些图像是从培训材料中的多张真实照片中推断出来的)。
由于越来越多的美国州和国家正在制定或已经制定了针对深度伪造色情内容的法律,Stable Diffusion 制作名人色情内容的能力可能意味着未完全审查的商业应用程序(即可以制作色情材料)可能仍需要一些过滤感知名人面孔的能力。
一种方法是提供用户提示中不接受的术语的内置“黑名单”,这些术语与名人姓名和可能与之相关的虚构人物有关。据推测,由于原始数据具有其他语言的特征,因此需要用更多的语言来设置这些设置,而不仅仅是英语。另一种方法可能是结合名人识别系统,例如Clarifai开发的那些。
软件生产商可能有必要合并这些方法,也许最初是关闭的,因为这可能有助于防止成熟的独立稳定扩散应用程序生成名人面孔,等待新的立法可能使这种功能非法。
然而,再一次,此类功能不可避免地会被相关方反编译和逆转;然而,在这种情况下,软件生产商可以声称这是有效的未经批准的破坏行为——只要这种逆向工程不会变得过于简单。
可能包含的功能
任何资金充足的商业应用程序都可以预期稳定扩散的任何发行版中的核心功能。其中包括使用文本提示生成恰当图像(文本到图像)的能力;使用草图或其他图片作为新生成图像(图像到图像)的指导的能力;调整系统被指示的“想象力”程度的方法;一种权衡渲染时间和质量的方法;和其他“基础”,例如可选的自动图像/提示存档,以及通过RealESRGAN进行的常规可选升级,以及至少使用GFPGAN或CodeFormer进行的基本“面部修复” 。
这是一个非常“香草安装”。让我们看一下目前正在开发或扩展的一些更高级的功能,这些功能可以合并到一个成熟的“传统”稳定扩散应用程序中。
随机冻结
即使您重复使用先前成功渲染的种子,如果提示或源图像(或两者)的任何部分为后续渲染发生更改,则很难获得稳定扩散以准确重复转换。
如果您想使用EbSynth以时间连贯的方式将 Stable Diffusion 的变换强加到真实视频上,这是一个问题——尽管该技术对于简单的头肩镜头非常有效:
有限的运动可以使 EbSynth 成为将稳定扩散转换转换为逼真视频的有效媒介。
EbSynth 的工作原理是将一小部分“更改的”关键帧外推到一个视频中,该视频已被渲染成一系列图像文件(以后可以重新组合成一个视频)。
在 EbSynth 网站的这个示例中,视频中的一小部分帧以艺术方式绘制。EbSynth 使用这些帧作为样式指南,以类似地更改整个视频,使其与绘制的样式相匹配。
在下面的示例中,左侧(真实)金发瑜伽教练几乎没有任何动作,Stable Diffusion 仍然难以保持一致的面部,因为被转换为“关键帧”的三张图像并不完全相同,即使它们都共享相同的数字种子。
在这里,即使在所有三个转换中使用相同的提示和种子,并且源帧之间的变化很少,身体肌肉的大小和形状也会有所不同,但更重要的是面部不一致,阻碍了潜在的 EbSynth 渲染中的时间一致性。
尽管下面的 SD/EbSynth 视频非常有创意,其中用户的手指已经(分别)变成了一双行走的裤腿和一只鸭子,但裤子的不一致代表了稳定扩散在保持不同关键帧之间的一致性方面的问题,即使源帧彼此相似且种子一致。
通过 Stable Diffusion 和 EbSynth,一个人的手指变成了行走的人和鸭子。
创建此视频的用户评论说,鸭子变换可以说是两者中更有效的一个,如果不那么引人注目和原始,只需要一个变换的关键帧,而需要渲染 50 个稳定的扩散图像才能创建步行裤,表现出更多的时间不一致。用户还指出,50 个关键帧中的每一个都需要五次尝试才能实现一致性。
因此,对于真正全面的稳定扩散应用程序来说,提供最大程度地保留关键帧特征的功能将是一个很大的好处。
一种可能性是应用程序允许用户“冻结”每个帧上的变换的随机编码,目前只能通过手动修改源代码来实现。正如下面的示例所示,这有助于时间一致性,尽管它肯定不能解决它:
一位 Reddit 用户将自己的网络摄像头镜头转换为不同的名人,不仅通过保留种子(任何稳定扩散的实现都可以做到),而且通过确保每次转换中的 stochastic_encode() 参数相同。这是通过修改代码来实现的,但很容易成为用户可访问的开关。然而,很明显,它并没有解决所有的时间问题。
基于云的文本反转
引出时间上一致的字符和对象的更好解决方案是将它们“烘焙”成文本反转- 一个 5KB 的文件,可以在几个小时内根据五个带注释的图像进行训练,然后可以通过特殊的“*”引出提示,例如,使小说人物能够持续出现以包含在叙事中。
与适当标签相关联的图像可以通过文本反转转换为离散实体,并通过特殊的标记词在正确的上下文和风格中毫无歧义地召唤出来。
文本反转是 Stable Diffusion 使用的非常大且经过充分训练的模型的附属文件,并且有效地“滑入”到引发/提示过程中,因此它们可以参与模型衍生的场景,并从模型的庞大数据库中受益关于对象、样式、环境和交互的知识。
然而,虽然 Textual Inversion 不需要很长时间来训练,但它确实需要大量的 VRAM;根据当前的各种演练,在 12、20 甚至 40GB 之间。
由于大多数普通用户不太可能拥有这种 GPU 重量,因此处理该操作的云服务已经出现,包括 Hugging Face 版本。尽管有Google Colab 实现可以为稳定扩散创建文本反转,但必要的 VRAM 和时间要求可能会使这些对免费层 Colab 用户具有挑战性。
对于一个潜在的成熟且投资良好的 Stable Diffusion(已安装)应用程序,将这项繁重的任务传递给公司的云服务器似乎是一种明显的货币化策略(假设一个低成本或无成本的 Stable Diffusion 应用程序渗透着这种非免费功能,这在未来 6-9 个月内将出现在该技术的许多可能的应用程序中似乎很可能)。
此外,对提交的图像和文本进行注释和格式化的相当复杂的过程可以从集成环境中的自动化中受益。对于普通爱好者和年轻用户来说,创造可以探索和与广阔的稳定扩散世界互动的独特元素的潜在“上瘾因素”似乎是潜在的强迫因素。
多功能提示加权
有许多当前的实现允许用户将更大的重点分配给长文本提示的一部分,但是这些实现之间的工具差异很大,并且经常笨拙或不直观。
例如, AUTOMATIC1111非常流行的 Stable Diffusion fork可以通过将提示词括在单个或多个括号(用于去强调)或方括号中以额外强调来降低或提高提示词的值。
方括号和/或括号可以在此版本的稳定扩散提示权重中改变您的早餐,但无论哪种方式,这都是胆固醇的噩梦。
稳定扩散的其他迭代使用感叹号来强调,而最通用的允许用户通过 GUI 为提示中的每个单词分配权重。
该系统还应该允许负提示权重——不仅对恐怖迷来说,而且因为在稳定扩散的潜在空间中,可能比我们有限使用的语言所能召唤的更少令人震惊和更有启发性的奥秘。
外涂
在 Stable Diffusion 引起轰动的开源之后不久,OpenAI 试图通过宣布“outpainting”来重新夺回其 DALL-E 2 的一些风头,这允许用户使用语义逻辑和视觉将图像扩展到其边界之外。连贯性。
自然地,这已经以各种形式在 Stable Diffusion 和Krita中实现,当然应该包含在一个全面的、Photoshop 风格的 Stable Diffusion 版本中。
只要提示、现有图像和语义逻辑允许,基于图块的增强几乎可以无限扩展标准 512×512 渲染。
因为 Stable Diffusion 是在 512x512px 图像上训练的(以及出于各种其他原因),所以它经常将头部(或其他重要的身体部位)从人类受试者身上切下来,即使提示清楚地表明“头部强调”等。
稳定扩散“斩首”的典型例子;但外涂可以让乔治重新回到画面中。
上面动画图像中所示类型的任何外绘实现(仅基于 Unix 库,但应该能够在 Windows 上复制)也应作为一键式/提示补救措施。
目前,一些用户将“断头”描绘的画布向上扩展,大致填充头部区域,并使用 img2img 完成拙劣的渲染。
了解上下文的有效掩蔽
在 Stable Diffusion 中,掩蔽可能是一件非常偶然的事情,具体取决于所讨论的前叉或版本。通常,在完全可以绘制有凝聚力的蒙版的情况下,指定的区域最终会被不考虑图片的整个上下文的内容修复。
有一次,我掩盖了一张人脸图像的角膜,并提供了提示的“蓝眼睛”作为面具修复——却发现我似乎正在通过两只被剪掉的人眼看着远处一张神秘的照片-长相狼。我想我很幸运不是弗兰克·辛纳屈。
语义编辑也可以通过首先识别构建图像的噪声来实现,这允许用户在渲染中处理特定的结构元素,而不会干扰图像的其余部分:
通过识别最初产生图片的噪声并解决对目标区域有贡献的部分,在不使用传统遮罩且不更改相邻内容的情况下更改图像中的一个元素。
该方法基于K-Diffusion 采样器。
生理错误的语义过滤器
正如我们之前提到的,Stable Diffusion 可以频繁地添加或减去肢体,这主要是由于数据问题和伴随训练它的图像的注释中的缺陷。
就像在学校合影中吐舌头的那个走错路的孩子一样,Stable Diffusion 的生物暴行并不总是很明显,而且你可能在注意到多余的手或融化的四肢之前已经在 Instagram 上发布了你最新的 AI 杰作。
修复这些类型的错误非常困难,如果一个全尺寸的稳定扩散应用程序包含某种解剖识别系统,该系统使用语义分割来计算输入图片是否具有严重的解剖缺陷(如上图所示),这将是有用的),并在将其呈现给用户之前将其丢弃以支持新的渲染。
当然,您可能想要渲染女神卡莉或章鱼博士,甚至拯救肢体受损图片中未受影响的部分,因此此功能应该是可选切换。
如果用户可以容忍遥测方面,甚至可以在联合学习的集体努力中匿名传输这种失火,这可能有助于未来的模型提高他们对解剖逻辑的理解。
基于 LAION 的自动人脸增强
正如我在之前对 Stable Diffusion 未来可以解决的三件事的看法中指出的那样,不应只让任何版本的 GFPGAN 尝试“改进”一审渲染中的渲染面。
GFPGAN 的“改进”非常通用,经常破坏所描绘个人的身份,并且仅在通常渲染不佳的面部上进行操作,因为它没有比图片的任何其他部分获得更多的处理时间或关注。
因此,用于稳定扩散的专业标准程序应该能够识别人脸(使用标准且相对轻量级的库,例如 YOLO),将可用 GPU 能力的全部权重用于重新渲染,或者将改进后的人脸混合到原始的全上下文渲染,或者单独保存以供手动重新组合。目前,这是一个相当“动手”的操作。
在对足够数量的名人图像进行稳定扩散训练的情况下,可以将整个 GPU 容量集中在仅渲染图像的面部的后续渲染上,这通常是一个显着的改进——并且与 GFPGAN 不同,利用来自 LAION 训练数据的信息,而不是简单地调整渲染的像素。
应用内 LAION 搜索
由于用户开始意识到在 LAION 的数据库中搜索概念、人物和主题可以证明是更好地使用 Stable Diffusion 的助手,因此已经创建了几个在线 LAION 浏览器,包括 haveibeentrained.com。
haveibeentrained.com 的搜索功能让用户可以探索支持稳定扩散的图像,并发现他们可能希望从系统中引出的对象、人或想法是否可能已经被训练到其中。这样的系统对于发现相邻实体也很有用,例如名人聚集的方式,或者从当前实体引出的“下一个想法”。来源:https://haveibeentrained.com/?search_text=bowl%20of%20fruit
尽管此类基于 Web 的数据库通常会显示图像附带的一些标签,但在模型训练期间发生的泛化过程意味着不太可能通过使用其标签作为提示来调用任何特定图像。
此外,在自然语言处理中去除“停用词”以及词干化和词形还原的做法意味着,展示的许多短语在被训练成稳定扩散之前被拆分或省略。
尽管如此,美学分组在这些界面中结合在一起的方式可以教会最终用户很多关于稳定扩散的逻辑(或者可以说是“个性”),并证明有助于更好地制作图像。
结论
我希望在 Stable Diffusion 的完整原生桌面实现中看到许多其他功能,例如基于原生 CLIP 的图像分析,它反转了标准的 Stable Diffusion 过程并允许用户引出系统的短语和单词自然会与源图像或渲染相关联。
此外,真正的基于瓦片的缩放将是一个受欢迎的补充,因为 ESRGAN 几乎与 GFPGAN 一样钝。值得庆幸的是,集成 GOBIG 的txt2imghd实现的计划正在迅速实现跨发行版,这似乎是桌面迭代的明显选择。
来自 Discord 社区的其他一些受欢迎的请求让我不太感兴趣,例如集成的提示词典和适用的艺术家和风格列表,尽管应用内笔记本或可自定义的短语词典似乎是合乎逻辑的补充。
同样,目前在稳定扩散中以人为中心的动画的局限性,虽然由 CogVideo 和其他各种项目启动,但仍然令人难以置信,并且受上游研究与真实人类运动相关的时间先验的支配。
目前,Stable Diffusion 视频严格来说是迷幻的,尽管通过 EbSynth 和其他相对新生的文本到视频计划(值得注意的是,缺乏合成或“改变”的人)在 Runway 的最新宣传视频中)。
另一个有价值的功能是透明的 Photoshop 直通,它早已在 Cinema4D 的纹理编辑器中建立,以及其他类似的实现。有了这个,人们可以轻松地在应用程序之间分流图像,并使用每个应用程序来执行它擅长的转换。
最后,也许也是最重要的一点,一个完整的桌面稳定扩散程序不仅应该能够在检查点(即为系统提供动力的底层模型的版本)之间轻松交换,而且还应该能够更新有效的定制文本反转与以前的官方模型版本一样,但可能会被模型的更高版本破坏(正如官方 Discord 的开发人员所指出的那样)。
具有讽刺意味的是,在为 Stable Diffusion 创建如此强大且集成的工具矩阵方面处于最佳位置的组织 Adobe 却与Content Authenticity Initiative如此紧密地结盟,以至于这对公司来说似乎是一个倒退的公关失误——除非它是像 OpenAI 对 DALL-E 2 所做的那样彻底地削弱 Stable Diffusion 的生成能力,并将其定位为其在股票摄影领域的大量资产的自然演变。