手中有刀,心里有佛

使用控制层和指示控制图片的生成

Invoke AI 101 教程


本节将介绍如何使用控制层和指示来精确控制图片的生成。

控制网络

控制层通常用作控制网络(ControlNet)在图片生成中以线或结构的形式来提供参考。在 SDXL 中,常用的预训练控制网络有 1

Contour Detection (scribble)

Scribble 模型可以根据输入的图片生成线条画,处理后的图片作为原始图片的简化版本可以精准的捕捉图片的轮廓。

输入
输入
分析
分析
生成
生成

Depth Map

Depth Map 可以生成图片的深度图,在图片生成中模拟深度效果,从而创建更加逼真的 3D 图片。

输入
输入
分析
分析
生成
生成

Hard Edge Detection (canny)

Canny 边缘检测的原理是通过寻找强度突变来识别图片中的边缘。它能够准确的检测边缘并减少噪声和伪边缘,通过降低阈值可以识别更多的信息。采用 Canny 模型时,将会生成与检测到的边缘匹配的图片。

输入
输入
分析
分析
生成
生成

Pose Detection (openpose)

Openpose 模型可以检测身体、手部、面部等多个部位的关键点,在生成图片时可以控制人体的姿态。

输入
输入
分析
分析
生成
生成

Soft Edge Detection (softedge)

Softedge 模型与 Scribble 模型类似,处理后的图片作为原始图片的简化版本仅保留形状的柔和边缘和一些浅阴影。

Tile

Tile 模型的主要功能可以归结为如下两点:

  1. 可以重新解读图片中的特定细节,并创建全新的元素。
  2. 当全局指令与图片的局部或特定部分存在差异时,可以忽略这些指令。在这种情况下,它可以使用局部上下文指示图片生成。

Tile 模型可以作为增强图片质量和细节的工具。如果在图片中存在一些不足的地方,例如调整图片大小导致的模糊,Tile 模型可以有效的消除此类问题从而获得更加清晰锐利的图片。此外 Tile 模型还可以添加更多细节,从而提升图片的整体质量。

控制层

在图层中单击 + Control Layer 添加控制层,或者在图片库中将图片拖拽至画布上,选择 New Control Layer

创建控制层
创建控制层

示例图片及其生成的提示词如下:

示例图片
示例图片

正向提示词

futuristic terraced structure built into a mountain at dusk, twilight hues, lush greenery illuminated by soft glowing lights, multiple levels, pathways, vast mountain range, distant winding roads, glowing city lights below, towering otherworldly rock formations, dreamy sky with soft clouds

负向提示词

painting, digital art, sketch, blurry
控制层
控制层

本教程以 Hard Edge Detection (canny) 模型为例,单击 Filter 中的 Advanced 可以进行更多的调整:

Canny Filter - Default
Canny Filter - Default
Canny Filter - Advanced
Canny Filter - Advanced

调整完毕各项参数后,单击 Apply 即可生成控制图片。

控制图片
控制图片

控制图片提供的线条可以为图片生成提供参考。在画布中,可以使用 等工具对控制图片进行添加或删除等微调操作。接下来对控制层进行设置:

  1. Weight:用于设置控制图层在图片生成过程中的权重,值越大则图片生成时越会严格遵守控制线条。
  2. Begin/End %:用于设置在图片生成过程中在何时使用控制图层,将其设置为 0% 至 100% 表示从图片生成开始至结束一直使用控制图层。调整开始和结束的百分比可以给到模型更多的灵活性,从而获得更好的生成图片。
  3. Control Mode:包含多种控制模式用于调节控制层的相关性(CFG scale):
    • Balanced:提示词和控制层同等重要。
    • Prompt:提示词更加重要。
    • Control:控制层更加重要。

不同的 Control Mode 的生成示例如下 2

输入
输入
Balanced
Balanced
Prompt
Prompt
Control
Control

单击 开始生成图片。此时可以看到模型在控制线条的指示下开始生成图片。

生成图片
生成图片

由于将结束百分比设置为了 70%,生成的图片也具有一定的灵活创意。单击 会将生成的图片添加到 Raster Layer。单击 可以将画布保存到图片库中。新生成的图片和用于生成控制层的图片对比如下:

新生成的图片
新生成的图片
生成控制层的图片
生成控制层的图片

参考图片

接下来我们将添加一个参考图片,也称为 IP Adapter。模型会根据参考图片的风格和结构来生成图片。首先将参考图片添加到图片库,本教程中使用的图片如下 3

参考图片
参考图片

将图片拖拽至左侧 Reference Image 上。

创建参考图片
创建参考图片

在左侧将会创建一个 Reference Image,并可以对其进行相关设置。

Global Reference Image
Global Reference Image
  1. 模型:在安装 SDXL 相关模型的情况下,选择 Standard Reference (IP Adapter ViT-H) 模型,这里可以选择 ViT-HViT-GViT-L 多种变种。
  2. ModeStyle and Composition 表示参考样式和结构,Style 表示仅参考样式,Composition 表示仅参考结构。
  3. Weight:类比控制层。
  4. Begin/End %:类比控制层。

在本教程中,将参考图片的 Weight 设置为 0.7,将结束百分比设置为 70%,从而给到模型更多的自由度。删除之前生成的 Raster Layer,单击 开始生成图片。应用参考图片生成的图片和之前生成的图片对比如下:

应用参考图片生成的图片
应用参考图片生成的图片
之前生成的图片
之前生成的图片

可以看出新生成的图片在遵循控制层的前提下同时应用了参考图片的白色风格。

局部指示

在新生成的图片中,可以看到左侧背景中的山峰也被应用了参考图片中的建筑风格。为了实现更精确的控制,可以选择局部参考图片,将图片拖拽至画布上,选择 New Regional Reference Image

创建局部参考图片
创建局部参考图片

在画布上选择 ,设置合适的笔刷宽度,在画布上勾勒出需要应用参考的区域,这里我们仅勾勒出建筑所在的区域。

勾勒需要应用参考的区域
勾勒需要应用参考的区域

单击 开始生成图片。应用局部参考图片生成的图片和应用参考图片生成的图片对比如下:

应用局部参考图片生成的图片
应用局部参考图片生成的图片
应用参考图片生成的图片
应用参考图片生成的图片

可以看出新生成的图片仅在勾勒的区域内与参考图片的白色风格保持了一致,背后的山峰仍根据提示词生成相应的风格。

基于文本的指示

除了基于图片的指示以外,还可以创建基于文本的局部指示。在图层中单击 +,选择 Reginal Guidance 创建局部指示。在画布上选择 ,设置合适的笔刷宽度,在画布上勾勒出需要应用参考的区域,这里我们勾勒出建筑后面的一座山峰。在 Reginal Guidance 中选择 + Prompt 并添加 lush greenery 提示词。

创建局部文本指示
创建局部文本指示

单击 开始生成图片。应用局部基于文本的指示的图片和应用局部参考图片生成的图片对比如下:

应用局部基于文本的指示的图片
应用局部基于文本的指示的图片
应用局部参考图片生成的图片
应用局部参考图片生成的图片

可以看出新生成的图片在勾勒的山峰区域增加了郁郁葱葱的树木。


  1. https://support.invoke.ai/support/solutions/articles/151000105880-control-layers ↩︎

  2. https://github.com/Mikubill/sd-webui-controlnet ↩︎

  3. https://pixabay.com/zh/photos/modern-building-business-district-4428919/ ↩︎