Skip to content

这些是控制面:一套图像生成工作流

取决于你的工作流,以及你想在哪个媒介里干活。

首先得明白:AI 艺术不是「一个按钮」做出来的——除非你故意在用工具最无聊的那个版本。

流程是分件的:源素材、模型、提示词、采样器、调度器、种子、潜噪声、VAE、遮罩、控制图、参考图、适配器、放大器,和后处理。这些不是魔法咒语。它们是控制面。

如果你在做转换工作流,尤其是重局部重绘的那种,你通常从 Photoshop、Krita、Procreate、Blender、相机、扫描仪——什么能搞到源素材就用什么——起步。先造出一个东西:一张画、一幅涂鸦、一幅拼贴、一个渲染、一张照片、一堆视觉废料。涂鸦在这里很有用,只要它可辨识的程度足以点燃模型学到的联想。去噪量够高,一个粗糙概念可以很快变成成品件。

我喜欢拼贴,因为产出更难预测。我会用互相打架的材质、旧手绘、照片、生成的碎屑、笔触、崩坏的透视——任何不和谐、能喂给模型点嚼头的东西——去搭一张源图。那份源作业不会消失。它影响整个项目。模型对它起反应,跟它吵架,保住一部分,误解一部分,偶尔把事故变成最好的一段。

搭生成图

在 ComfyUI 里,你哪怕还没开工,主做的事就是搭节点图。

最基础的文生图图,从一个 checkpoint 加载器开始。它加载模型,通常连 CLIP 和 VAE 一起。文本提示词进一个文本编码器。负向提示词进另一个文本编码器。一个空的潜图像节点按你选的分辨率生成起始潜空间。这些条件、潜变量、模型、种子、采样器、调度器、步数,还有 CFG 值,统统喂进采样器。采样器把潜变量去噪。VAE 解码节点把潜变量变成像素。然后保存节点把它写出去。

这就是你能拼出的最基础的节点图。

模型加载器进采样器。提示词进采样器。潜变量进采样器。采样器进 VAE 解码。解码进保存。

就在这一层,你也有决定要做。换 checkpoint 或者「模型」,图像词汇表就变。换采样器,穿过噪声的路径就变。换调度器,去噪的时序就变。换种子,初始噪声场就变。换 CFG,模型听提示词的凶狠程度就变。换 VAE,最终像素解释的颜色、对比、细节都可能挪位。
还跟得上吗,还是你的眼睛已经开始发直?

那我们继续。

局部重绘与去噪

不从空潜变量起步,而是加载一张源图和一张遮罩。源图被 VAE 编码进气空间。遮罩告诉采样器,潜空间里哪一部分获准改变。你把带遮罩的潜变量传进一个局部重绘采样器,或者一条局部重绘条件路径——看工作流定。

提示词描述被编辑的区域里该存在什么。然后去噪值决定模型获准重新诠释它的力度,CFG 调你的语义权重。

这是要紧的一段。去噪就是你给模型松开的权限量。

低去噪说:「贴着源不走。」

中去噪说:「即兴,但留住结构。」

高去噪说:「拿这个当跳板。」

更好的心智模型,是对着一张模糊的表面即兴。轻模糊给你小改动,重模糊给你大即兴。

局部重绘是一种受控的重新诠释。遮罩就是界线,一边是你保护的,一边是你放任模型去预测的。

这张遮罩你可以在 Photoshop 里做。可以用手画。可以模糊它、锐化它、扩大它、收缩它、羽化它、反转它、跟 alpha 合并,或者从分割生成。

可以用 SAM(Segment Anything Model)去隔离一个人、一张脸、一件衫、一个背景物件,或画面里的一个区域。可以用深度图或边缘图去搭遮罩。可以手动逐帧抠——如果你恨自己,或者爱精确爱到差异都成了学术问题。

ControlNet 与结构约束

这样一来,图里就多出一条条件支线(或者好几条)。你加载一个 ControlNet 模型,加载或生成一张控制图,把它预处理成对应的图类,然后把得出的控制条件跟提示词条件一起喂进采样器。

要姿态,用 OpenPose 或类似的。要保住线稿,用 Canny、HED、Scribble,或 Lineart。这个说不准,你多少得靠手感。
要构图,用 MiDaS 这一类的深度模型。艺术向的构图,我喜欢均衡地混用法线图、深度和 HED——放在一起,它们能同时保住形体、空间布局和边缘能量,又不至于把整张图冻成一张死气沉沉的技术示意图。

ControlNet 是一族结构约束。

你可以叠着用。姿态管身体,深度管空间,边缘图管图形轮廓,提示词管诠释。每一路有自己的强度值。每一路都可以在扩散过程的不同段开始、收工。也许你想让姿态从头管到尾,而边缘图只在前期要紧。也许你想让深度把房间钉住,但让表面细节自由漂移。

恭喜你朋友!你已经在跨越去噪时间表混合约束了。

感觉不错吧,是不是。

身份与一致性

LoRA 是一种小适配器,训练来把模型往某个主体、风格、物件、服装、渲染习惯或视觉词汇上掰。所以,是的,你可以在建模的时候往模型里再塞模型。如果这还不够,你还有 embedding、IPAdapter、参考条件、人脸参考工具,或者重训练的 checkpoint。想要真离谱,你可以开始聊 hypernetwork——那是又一层的「改 AI 行为的 AI」,毕竟递归怪兽显然没打算就此罢手。

这一切的节点图,通常还是那套加载再挂接的模式。你加载 LoRA,在采样之前把它应用到模型和 CLIP 上。你加载 IPAdapter,喂它一张参考图,让那张图过一道视觉模型,再把产出的条件传进采样器。参考工具用在你想让产出承袭某张图的视觉身份、却不想被源构图捆住的时候。

放大

于你现在手里有了一张漂亮图,但对照你想要的、能拿出来用的专业输出,分辨率不够。这可怎么办呢?

嗯,一个简单的放大,是把解码后的图交给放大模型撑大,再用低去噪跑一轮 img2img 恢复细节。更严肃的放大图,会把图切块、逐块处理、融接缝、保住全局构图,再来一遍收尾清理。

潜空间放大在解码前动潜变量。像素放大在解码后撑大。Tiled diffusion 试在不撑爆显存的前提下要细节。而现在,多了个新玩法,连潜变量那步都跳过,直接上疯狂凶狠的直改图像——效果……好看得很。

新问题:「放大」和「添上合理细节」不是同一个操作。

所以到那一步,你得掂量。

视频与时间一致性

视频,就是机器开始冒出各种搞笑颜色烟的地方。

静图只需要连贯一次。视频得连贯过时间——每一帧从上一帧继承问题,又给下一帧发明新问题。如果你的工作流不管时间一致性,邪门的事就会发生。有些艺术家是故意的。我最喜欢的是那个炸碎身体部件的哥们。看着像日本动作片……直到它不是。

假设你不玩身体恐怖或硬超现实,你有几条路。

图生视频工作流,从一张静帧或关键帧起步,交给视频模型去生成运动。短镜头、循环动画、镜头漂移、人物动作、氛围流动,它都合适。节点图通常加载视频模型、编码起始图、设运动参数、采样一串潜帧、解码,再拼成视频文件。难点在于你把一部分控制权交给了视频模型对「运动」的理解。

逐帧工作流,从源素材起步。你抽数、过 img2img 或局部重绘,再拼回去。控制权更多,但时间问题也来了。每帧都可能漂。小不一致变成闪烁。脸会变异。材质会爬行。背景会像有主意似的呼吸。

要压制这些,你就上约束。种子要么锁死,要么小心地变。要保结构就用低去噪。从原素材上ControlNet,常用深度、线稿或姿态图。有光流或运动引导就用。遮罩跨帧追踪,而不是每帧乱重画。可以先把关键帧渲染出来,再在中间插值。可以用 EbSynth 式传播、视频 ControlNet、AnimateDiff 式运动模块,或调一个视频模型来稳住运动。

视频局部重绘里,遮罩变成了一个随时间走的物件。不再只是「画这块」。如果你用过 DaVinci Resolve 或 Premiere,概念是一回事。

你可以用分割生成遮罩,手动清干净,让它跟着镜头走,羽化避免硬接缝,再用足够的去噪把这块区域重绘——够它变,又没多到从素材上脱开。

到了这里,工作流就开始非常吃媒介了。

如果我是改静图里的一件衫:遮住衫,提示词换上新衣,局部重绘,清边缘,放大。完。

如果我是改视频里的一件衫:遮罩得跟着躯干走、扛住手臂挥动、处理好褶皱、别顺嘴啃掉脖子头发、跨帧稳住布料身份,还要不闪得像块被诅咒的餐布。

同一个想法。不同的难度阶级。

Comfy 的视频图,通常会碎成一串小图。一张抽数或加载帧。一张生成控制图。一张管遮罩。一张干 img2img 或局部重绘。一张放大或插值。一张把帧拼回视频。有些可以在 Comfy 内做,有些在外部,有些在剪辑软件里。最干净的工作流很少是一张巨图。通常是分段流水线。

所以你看。
现在你懂怎么做了。

多参考工作流是另一个话题。也许下回。