将艺术赋予控制力:探索ControlNet在Diffusers中的应用

244次阅读
没有评论

大家好,我来给大家介绍一项令人兴奋的技术——ControlNet。这项技术为我们提供了一种全新的方法,让我们能够在图像生成过程中拥有更大的控制权。那么,ControlNet 究竟是什么呢?又能带给我们怎样的可能性呢?接下来,让我们一起揭开 ControlNet 的神秘面纱。

ControlNet 简介

ControlNet 是由张璐民和 Maneesh Agrawala 在其研究成果“Adding Conditional Control to Text-to-Image Diffusion Models”中提出的一种框架。它提供了一种支持各种空间上下文的方法,这些上下文可以作为 Diffusion 模型(如 Stable Diffusion)的额外条件。让我们通过一些例子来看看 ControlNet 的强大之处。

想象一下,你有一个卡通图案,你想将它转化成一张逼真的照片,或者你有一个室内设计的草图,你希望看看它在现实中的效果。这些都可以通过 ControlNet 来实现。你甚至可以让一些著名的标志图案栩栩如生。ControlNet 的应用极限只在于你的想象力。

将艺术赋予控制力:探索 ControlNet 在 Diffusers 中的应用

ControlNet 的工作原理

那么,ControlNet 是如何工作的呢?首先,我们复制一个 Diffusion 模型(例如 Stable Diffusion)的预训练参数,并将其称为“可训练副本”,同时也保留预训练参数的另一份副本,称为“锁定副本”。” 可训练副本 ” 用于学习任务特定的内容,而 ” 锁定副本 ” 则用于保留大数据集中学习到的丰富知识。然后,通过优化为 ControlNet 框架设计的“零卷积”层,将两份参数连接起来。这是一种训练技巧,可以在训练新条件时保留模型已经学到的语义。

体验 ControlNet

接下来,让我们亲自体验一下 ControlNet。首先,我们需要确保已经安装了所有必要的库。我们还需要安装一些额外的依赖项,以便处理不同的 ControlNet 条件。

准备好之后,我们就可以开始了。我们选择了一幅著名的画作——《戴珍珠耳环的少女》作为例子。首先,我们将图像进行 Canny 预处理,这实际上是一个边缘检测的过程。

将艺术赋予控制力:探索 ControlNet 在 Diffusers 中的应用

之后,我们加载预训练的模型,并将模型设置为半精度(torch.dtype),以便进行快速且内存高效的推理。在加载模型时,我们还使用了一个叫做 UniPCMultistepScheduler 的调度器,它能大幅减少推理时间。

将艺术赋予控制力:探索 ControlNet 在 Diffusers 中的应用

接下来,我们将管道设置为开启智能 CPU 卸载,并启用 FlashAttention/xformers 注意力层加速,以节省内存消耗并提高推理速度。

准备工作完成后,我们就可以开始运行 ControlNet 管道了!我们以“Sandra Oh,最高质量,极其详细”为提示,生成了一系列惊人的图像。其中,我们还可以看到一些现代名人仿照 17 世纪的这幅画作进行摆拍的图像。

结语

ControlNet 技术为我们提供了一个全新的创作方式,让我们能够在生成过程中拥有更多的控制权。我们期待着看到更多的创新应用和独特创作。感谢你的阅读,我们下次再见!

正文完
 
评论(没有评论)