上一篇的结论是:种子决定这一抽落在哪里,提示词决定结果能落在一片多大的地方。但有些东西很难用文字写出来——你看到一张图的颜色和质感正是你要的,却说不出它是什么风格。于是你换了个办法:把这张图丢给模型,让它照着来。

结果风格是来了,参考图里的东西也跟着来了。你想要那种柔和的胶片颗粒,出来的画面里却多了参考图里那个女孩、那盏路灯。这一篇讲清楚这件事为什么会发生,以及怎么把它压下去。

参考图进来之后,模型拿到的是什么

别把参考图理解成一个被模型“学会”的风格文件。以公开的做法为例(开源工具里的 IP-Adapter 就是这一类):参考图先被一个图像编码器压成一个向量——一张图的整体概览,然后这个向量被送进扩散模型的注意力层,和文字提示的向量并排参与每一步去噪2。Midjourney 里的风格参考在界面上是另一种叫法,但参考图同样要先变成某种数值表示,才能参与生成。

关键在于这个向量里装的是什么。IP-Adapter 的论文说得很直白:它用的是图像编码器输出的全局图像向量,而这个向量“能表示参考图丰富的内容和风格”2。同一篇论文在结尾也承认,IP-Adapter“只能生成在内容和风格上都接近参考图的图”,做不到只锁定其中一样。

模型内部没有“风格抽屉”和“内容抽屉”两个格子。有研究把 CLIP 的图像表示拆开分析,发现里面存在分别对应位置、形状、颜色、物体数量的方向——也就是说,颜色、质感、布局、主体本来就在同一份向量里挤着4。所谓“取风格、不取内容”,在机制层面从一开始就没有一个干净的接口。

绘制中

那为什么有时候看起来只搬了风格?通常是因为泄漏出来的东西正好也是你要的,或者被你的文字描述压住了。检验方法很简单:连着出四张,看参考图里的主体是不是反复冒出来。

文字是一股反向的力

Midjourney 的官方指南给了三条建议:把文字提示写简单,不要加和参考图冲突的风格词,并且用文字去描述“你想看到什么”,而不是写“该怎么改这张参考图”1。这三条背后的道理是同一个:文字向量和参考向量在同一批注意力里争夺画面。你把主体、构图、光线写清楚,图像向量剩下的任务就主要是补颜色、质感和笔触。

这里正好接上上一篇讲的骨架。写风格参考的时候,那三层更要写满,因为你腾出来的空间就是参考图往里灌内容的空间。

挑参考图:先把主体在脑子里遮掉

判断一张图适不适合当风格参考,有一个好用的动作:把画面主体遮住,剩下的颜色、质感、光照还能不能说明问题?

能,它就是好的风格参考。风景、材质特写、色调统一的静物,里面没有“非出现不可”的东西,泄漏出来也不碍事。人像特写、构图极具辨识度的海报、主体占据画面大半的图,往往是最糟的选择——它们的内容信号最强,泄漏也最凶。

做系列图时还有一条实用技巧:同一张风格参考图,配不同的主体描述,比每次换一张参考图更容易让一套图保持统一。

强度旋钮:风格和残留一起变淡

Midjourney 用 --sw 控制风格参考的影响强度,范围 0 到 1000,默认 100;在开源工具里,对应的通常是 IP-Adapter 的 scale15。

需要知道的是这个旋钮的性质:它调的是“参考图总体影响多强”,不是“内容少一点、风格多一点”。强度降下来,风格味道和内容残影是一起变淡的。InstantStyle 的实验把这一点测得很清楚:把适配器权重调低之后,风格保住了,画面里仍然残留参考图的元素——狗尾巴上多出来的花,或者画面里混进去的那个女性角色3。

味道归风格参考,布局归结构控制

如果你要的是“同样的构图、不一样的画风”,那就不该让风格参考去干这件事。

结构控制(ControlNet 这一类)走的是另一条路:先把参考图转成深度图、边缘图、姿态骨架或分割色块,再拿这些几何信息去约束生成。它管的是东西摆在哪、什么轮廓、什么姿势,颜色和质感不归它管5。这和风格参考正好配成一对:一个管几何,一个管味道。它们可以同时挂在同一个模型上,因为 IP-Adapter 用的是新加的一路注意力,不占用文字那一层2。

如果两样都要,就别指望一个旋钮干两件事,直接叠起来用。

更细的做法来自 InstantStyle。它发现模型里有两层注意力各管各的:一层管风格,也就是颜色、材质、氛围;另一层管空间布局。只把参考图特征注入管风格的那一层,内容泄漏就大幅减少;如果把布局层也打开,画面就会跟着参考图的构图走3。在 diffusers 这类开源工具里,这对应给 set_ip_adapter_scale() 传一个字典,指定哪些层接收参考图特征5。不用写代码的人,在很多软件里看到的“风格层”“风格强度”这类选项,就是它的界面化版本。

另一种做法更直白:把参考图的图像向量,减去“描述这张图内容”的那段文字向量。InstantStyle 的实验显示这样能明显减少内容泄漏,但仍要手动调强度;只在风格层注入的效果最好3。这两种“只要风格”的做法,恰好从反面证明了前面那句话——风格和内容默认是挤在一起的,想分开就得专门动手。

四种需求,四种做法

  • 只要味道,主体我自己写:风格参考 + 写满主体、构图、光线的文字 + 中等强度。
  • 只要同一套构图,味道可以新:结构控制(深度图或边缘图),味道用文字补。
  • 味道和布局都要:结构控制 + 风格参考叠加。
  • 说不清要什么,只想“照着这张来”:那是图像提示或图生图,它本来就会把内容和构图一起搬过来,别把它当风格参考用。

这套办法的边界

Midjourney 官方文档说风格参考抓的是颜色、媒介、质感、光照这一层,不复制物体和人,而且它只在提示里至少有文字时才生效1。但这条描述是功能定位,不等于内容一定不会跟过来。前面讲的机制,加上开源社区两种专门“给风格做减法”的做法,都说明内容泄漏是一个需要处理的问题,而不是偶发的意外。

所以对风格参考的合理期待是:它能帮你锁住一套图共有的整体味道,锁不住“这张图里到底有什么”。后者要靠你把文字写具体、把参考图挑干净,或者干脆换一条通道——用结构控制去指定几何。