Stable Diffusion Controlnet常用控制类型解析与实战课程 5

时间:2024-12-15 07:00:06

本节内容,是stable diffusion controlnet常用控制类型与实战的第5节课程。在前面几期课程中,我们已经陆续学习了controlnet的多种控制类型,本节课程,我们将继续讲解revision,instructp2p,ip-adapter,t2i-adapter这几种控制类型,这些控制类型提供了丰富的图像控制视角,也为stable diffusion增加了更多维度的应用能力。

一:Revision

我们先看一看revision控制类型

revision控制类型需要配合SDXL模型使用,对SD1.5模型是无效的。该控制类型可以通过上传的参考图来推测图片的内容,然后控制图片的生成。

我们演示一下。先选择sdxl模型,不填写任何提示词,

启用controlnet并选择revision_ignore_prompt预处理器,我们使用一些非stable diffusion绘制的图片作为控制图片

比如上传一张主体内容是一只狗的控制图片,分辨率调整与参考图一致(1024*1024)

点击生成,可以看到,stable diffusion同样输出了一幅关于狗的图片。

再使用另外一张关于主体内容是男人的控制图片,点击生成,可以看到,stable diffusion同样输出了一幅关于男人的图片。

revision控制类型能够识别图片中的内容,比如动物,人物等等,但对于复杂的图像,revision则未必能很准确地识别整体的内容。比如我们上传一张男人和狗的图像作为控制图,此时生成的图片只包含了男人,

如果上传一幅风景图,此时绘制的图片内容与原图会有非常大的差异。

1.1:反推提示词

我们在这里再引申讲解一个stable diffusion提供的一个比较有用的功能-反推提示词,比如上面的复杂图像,我们可以更多会使用反推提示词来解析图像内容,在图生图中上传参考图,生成按钮下方最右侧是两个提供反推提示词功能的按钮clip反推和deepbooru反推,比如,我们刚刚上传的风景图,图生图模式中,作为参考图上传。点击clip或者deepbooru按钮,stable diffusion会帮我们推测出图片内容,并以文字形式填写到提示词输入框中。

我们可以利用这些反推出来的提示词进一步生成图像。

在第一次使用clip和deepbooru反推提示词时,stable diffusion需要下载一些模型文件,所以需要保证外部网络连接正常。另外clip或deepbooru反推出的提示词,也可以进一步按需修改和调整,以便生成的图像更贴近我们的设想和预期。

我们在midjourney的课程中曾经讲述过可以使用describe指令获取图像提示词信息,然后使用垫图加提示词的方式进一步生成新的图像。在stable diffusion中,借助反推提示词功能,也可以实现类似的图像绘制思路。

  

我们回到revision控制类型的讲解,

revision有两个细分预处理器,

刚才演示时使用的是revision_ignore_prompt

使用该预处理器,提示词会被忽略,比如上传的男人图像,即使我们填写了提示词1 dog,生成的图片是没有dog这个元素的,

另外一个预处理器时revision_clipvision,该预处理器会根据提示词和参考图中的信息来控制图片生成过程,但是根据官方解释,目前阶段使用revision_clipvision预处理器,提示词的作用还是影响太强,此时controlnet几乎不起作用或作用比较小,所以该预处理器目前应用场景很少。

二:instructP2P

我们接下来学习另外一个控制类型-instructP2P

该控制类型提供了一种通过人类自然语言指令编辑图像的方法。其模型能够接受一张图像和相应的文字指令(也就是prompt),然后根据指令来编辑图像。

该模型可以在很短的时间内快速完成图片的编辑。

instructP2p常用的指令有make,change等等,结合into等介词来实现图片编辑。我们看一下演示:

文生图模式下(instructP2p主要在文生图下使用,图生图很少用) ,启用controlnet,选择instructP2p,该控制类型不需要使用到预处理器,

上传一幅人物图作为控制图片,我们增加下雪场景,在正向提示词里输入make it snow,点击生成,绘制的图片会增加下雪元素。

希望将女孩的头发换一个颜色,我们可以继续输入change her hair to red,

我们还可以更换衣服,change her clothes to sweater

make it snow,

change her hair to red,

change her clothes to sweater

可以看到,instructP2p对于编辑修改图片场景,有着让人惊讶的表现。利用好该控制类型,很多时候可以让我们a快速地应对图片修改需求

在controlnet控制类型列表中,可以看到几个带有adapter关键字的控制类型。

带有adapter字样的控制类型实际上是使用适配器的方式将控制单元接入到controlnet中,这些控制单元通常设计为可插拔方式,可以按需接入到系统中,

controlnet目前包含了两个adapter,ip-adapter和t2i-adapter,这两个adapter都是由腾讯主导开发,为stable diffusion提供特别的绘图控制方式。

三:IP-Adapter

我们先看一下ip-adapter控制类型

ip-adapter可以识别参考图的艺术风格和内容,然后生成相似的作品,ip-adapter的常用方式是将参考图的风格迁移融合到新的图片中,

ip-adapter的模型是需要单独下载的,其官方网址为github上的项目地址,https://github.com/tencent-ailab/IP-Adapter,模型则需要到hugging face下载, https://huggingface.co/h94/IP-Adapter/tree/main/models。其中有多个模型,比如有针对面部带有face关键字的模型,

我们根据使用需要下载对应的模型文件即可,我们在下面的演示使用到的是ip-adapter-plus-face_sd15.safetensors这个模型,将这个模型下载好放置到sd-controlnet的models目录中,刷新controlnet模型列表,就可以看到新添加的controlnet模型,

我们演示一下ip-adapter提供的功能,

文生图模式下,启用controlnet,选择ip-adapter,同时选择我们刚刚下载的对应模型文件. 上传一张赛博朋克风格的图片作为控制图像

在提示词中填入1 girl, wearing a hat,  beach 描述了一个戴帽子的女孩在沙滩的场景

点击生成,可以看到生成的也是赛博朋克风格的图片

在早前如果期望生成赛博朋克风格人物图片,往往需要去寻找赛博朋克Lora或LyCoris,而使用ip-adapter,只需要一张赛博朋克风格的人物图片,便能控制绘制过程,使生成的图片具有赛博朋克的风格。

我们再看一看ip-adapter的一个应用方式:

在文生图中,提示词只简单地填入 1 girl,。我们启用两个controlnet控制单元,

第一个控制单元使用ip-adapter,并上传赛博朋克风格的图片作为参考图,该控制类型的控制权重可以适当调整,这里设置为0.5

第二个控制单元使用canny并上传一张人物参考图

ip-adapter的参考图人物戴有眼镜,我们希望生成的图片不带眼镜,可以添加反向提示词描述,(glass:2)

点击生成,可以看到,赛博朋克风格已经融入到canny上传的人物参考图中。

可以看到这种应用方式非常适合人物特定风格化应用场景,比如上传个人照片,打造专属的赛博朋克人物肖像。

四:T2I-Adapter

演示了ip-adapter的用法,最后我们来看一下t2i-adapter。

t2i-adapter是腾讯推出的可以对预训练模型提供引导的一个控制类型集合。

t2i-adapter提供了很多控制方式,包括controlnet本身就已经具备的canny,depth,sketch等等。

但t2i-adapter相比controlnet有很多优势,比如t2i-adapter的模型更小,占用存储空间更少,t2i-adapter可以在整个去噪过程中仅运行一次,所以其运行速度也更快。我们甚至可以根据不同的情况和需求去训练适配器,以实现想要的控制和编辑效果。

除了canny,depth这些controlnet常用控制方式,t2i-adapter也提供了一些另外的控制方式,比如color_grid。我们这里就演示一下t2i_color_grid的用法,模型的下载地址如下https://huggingface.co/TencentARC/T2I-Adapter/tree/main/models

下载后将文件放置到sd-controlnet-webui程序主目录的models文件夹下,

我们这里t2i_color_grid使用的是coadapter-color-sd15v1.pth这个模型文件,

t2i_color_grid主要从参考图中学习图片的颜色风格特征,然后引入到图像生成过程中。

在文生图中,填入简单的提示词1 girl

启用两个controlnet控制单元,

第一个控制单元。启用t2i_adapter控制类型,选择t2i_color_grid预处理器以及下载好的对应的color模型(实测,模型不选择,生成的图片不会收到颜色特征引导),提高控制权重到1.5,并上传控制参考图

第二个控制单元,启用canny并上传人物图片作为控制图像。

点击生成,可以看到生成的图片,引入了t2i_adapter控制单元下参考图的颜色特征。

t2i-adapter是一个控制集合,提供了多种控制方式,包括 canny,depth,sketch,这些控制方式与controlnet本身的canny,depth,sketch控制效果是类似的,我们就不再演示。

好了,本节课程到这里就结束了,我们在最近的五节课程中,完整讲解了stable diffusion controlnet的不同控制类型,课程的内容有些多,大家可能需要一定时间去消化。也建议大家多实操,这样能更好地理解这些控制类型的作用以及在哪些应用和实战场景可以引入这些控制方式。学习完十几节的stable diffusion课程,相信大家对stable diffusion已经有了全面的认识和理解,stable diffusion是一个非常强大的AI绘画工具,相比midjourney,stable diffusion强大的控图能力使其能完成更多场景的绘图任务。除了stable diffusion软件本身,其生态也在飞速发展,我们也需要多多关注stable diffusion生态相关的信息与资源,这些信息与资源也会带来非凡的价值。学习完stable diffusion,我们将进入AI音视频应用的学习课程,我们将陆续学习AI技术在视频人物换脸,声音克隆,声音转换,唇形对齐,数字人等领域的应用方式,这些技术不仅为整个AI生态注入了丰富的活力,也推动AI技术更深入地融入到我们的日常工作、学习和生活中。