天天看点

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

作者:快乐爱生活的凡哥

#挑战30天在头条写日记#

今天要来看一个ControlNet新出的模型-- Reference以及它的一些用法。

上个星期ControlNet发布了更新版v1.1.167,其中包含了一个很好玩的新前置处理器-- reference_only。这是一个很好玩的东西,它模仿了一个Inpaint的技巧,就是故意生成双胞胎。

Stable Diffusion有个很烦人的特性,就是如果画布尺寸过大,AI会有很大机率产生一模一样但是姿态不同的人物或动物来填充画布。解决双胞胎效果的方法通常是先从小尺寸画布开始,然后用Hires. fix或Upscaling扩展尺寸并加细节。

但是双胞胎效果也有一个很好玩的应用,就是故意制造双胞胎效果,借以制造相似但是形态不一样的角色。

以这张狗狗图为例,用512x512来制图,然后在绘图软体里面将图扩展成1024x512,新的地方留白,然后放进Inpaint里面将留白的地方选择起来:

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

左边是原图,右边是空白区域

接着用:

  • Masked Content: Latent Noise
  • Denoising strength: 约0.75

这样跑了几张图之后,有很大机率可以刷到非常相似的双胞胎。

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

故意使用双胞胎效应

而ControlNet的Reference就是重现相似的方法,但是能更精致操控出图的走向,并且避免这种方法的繁琐以及频繁的崩图。

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

示例图

以这张图为示例,在txt2img内,把ControlNet的preprocessor设定为reference_only。将示例图拉进ControlNet,其他设定都维持一样,就可以开始跑了!

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

ControlNet的reference_only设置

我们在这边只用简单的正向提示词来绘图:

(extremely detailed CG unity 8k wallpaper), best quality, masterpiece , hdr, ultra highres, 1girl, blunt hair, black long hair, white kimono,

dynamic pose, dynamic angle,

from above, slight smiling

Reference功能可以仅靠着这么粗略的提示词,就帮你画出以示例图为参考而产生的人物。我在提示词中没有提到帽子,所以产出的人物图也不会有帽子。

这些提示词必须先测试过,确定了产出的成果图有你需要的元素,如果没有的话,就自行增加提示词来补上。例如我的示例图中,Reference并没有提取浏海与发色的特征,所以要自己补上blunt bangs(齐眉刘海)与black long hair(黑长发)。

然后加上了dynamic pose, dynamic angle等提示词,让产出的角色可以有更多的姿势,用from above, slight smiling让角色有更多的摄影角度与表情,之后再使用X/Y/Z plot来产出各种组合的图。

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

就这样,产生了好几张与参考图非常相似,但是表情,角度都有稍微不同的成果图。

这个功能的用途,我能想到的第一个用途就是拿来当LoRA的训练素材。通常LoRA训练需要用到20张到40张的素材图,最好是多角度多表情多光影,纯粹使用提示词来产生素材图通常很难张张相像,所以使用Reference来产生一批表情各异、角度微调的类似图片,可以省下很多时间。

第二个用途就是结合ControlNet的其他功能,例如openpose来固定出图人物的姿势与角度,产生一个指定的角色图,例如配合使用openpose来出图:

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

ControlNet的openpose设置

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

复数ControlNet合作的成品

另一个用途就是让我们能不使用LoRA就在不同模型间产生一个类似的角色图,在某些情况下直接跳过训练LoRA的阶段,直接算图快速满足一些特定需求。

例如我们想在revAnimated这个模型产生哥布林,但是它产生的样子与RPGV4模型产生的相差很多,而我想要RPGv4的哥布林外型,但又要在revAnimated产生比较柔和的皮肤感觉:

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

左图为RPGv4的哥布林,右图为revAnimated的哥布林

之前最稳定的做法是使用RPGv4的哥布林图片训练一个专门的LoRA,然后在revAnimated里面使用,但是现在有了这个新功能,就可以直接在目标模型内生成原始模型的角色图了:

AI绘图|Stable Diffusion进阶—— ControlNet新模型Reference实战

左上是无reference版本的哥布林,右边六张图是有reference的哥布林

这样我们就可以省下训练LoRA的时间跟资源在训练杂兵LoRA上了!

限制

测试了Reference一阵子,发觉这个功能还有许多局限:

  • 多人画面会造成参考错乱,因为AI不知道哪个角色的特征要对应到成果图的哪个角色,很常出现特征错乱或者多人特征混合在一起出图。
  • 3D或真实照片通常都提取不了特征,成果图会跟参考图差异非常大,这可能是Reference模型自己的问题,只能等待作者解决,或者我们能开发出其他方法让模型能够正确读取照片人物的特征。