什么是 ControlNet?
扩散模型粗略地说,是学习了“噪点”和“图像”的关系,从而能够从噪点中恢复图像的模型。
如果在这里,不仅仅是噪点,连同 “与图像对应的其他信息” 一起加入会怎么样呢。
- 如果学习了线稿和上色完毕的插图的关系
- → 只要给出线稿,就能自动上色
- 如果学习了火柴人(姿势图像)和人物照片的关系
- → 只要给出火柴人,就能制作出摆出该姿势的人物图像
可以制作出这样的 AI。
像这样,以“附加的图像条件(姿势・线稿・深度等)”为线索,控制生成结果的机制之一,就是 ControlNet。
代表性的 ControlNet 种类
ControlNet 能处理的“附加信息”只要有点子就可以无限增加,但常用的东西在某种程度上有固定的模式。 这里只列举代表性的东西。
openpose(姿势 / 火柴人)
用火柴人或骨架,指定人或角色的姿势。


depth(深度图)
利用深度图,固定构图或纵深。


scribble(涂鸦)
只给出粗略的涂鸦,以此为基础生成图像。


lineart / anime(线稿)
给出线稿,生成涂色。


inpaint(Inpaint 用)
自然地填充被遮罩的部分。


除此之外,还有边缘提取(Canny)、分割、二维码等各种变体,但只要能准备好“图像”和“对应的表现”,就能制作任何 ControlNet。
基于指令的图像编辑
在最近的图像编辑模型中,越来越多的情况是将过去用 ControlNet 做的事情,当作“基于指令的图像编辑”来处理。
基于指令的图像编辑,可以通过对给定的图像发出“缩小”或“变成夜晚”等指令来进行图像编辑。
也就是说,ControlNet 式的操作也可以作为“图像编辑”来处理。
- 姿势图像 + “用这个姿势,画一个穿黑衣服的角色”
- 深度图 + “保持构图不变,变成夜景照片”
- 粗略图像 + “把这个草图变成漂亮的插图”