适配Diffusers框架的全套教程来了!从T2I-Adapter到大热ControlNet

在 ChatGPT 出圈不久,ControlNet 的横空出世很快在英文和中文互联网收获了众多开发者和普通用户,甚至有用户宣传 ControlNet 的出现将 AI 创作带入了直立行走的时代。不夸张地说,包括 ControlNet 在内,同期的 T2I-Adapter、Composer, 以及 LoRA 训练技巧,可控生成作为 AI 创作最后一道高墙,极有可能在可预见的时间内有进一步突破,从而极大地降低用户的创作成本,提高创作的可玩性。距离 ControlNet 开源仅仅过去两周,其官方 Star 就已经超过 1 万,这种热度无疑是空前的。

与此同时,开源社区也极大地降低了用户的使用门槛,如 Hugging Face 平台提供了基础模型权重以及通用的模型训练框架 diffusers,stable-diffusion-webui 开发了完善的一套 Demo 平台,Civitai 贡献了海量风格化 LoRA 权重。

Typewise.app Typewise.app

面向客户服务和销售团队的AI写作解决方案。

Typewise.app 39 查看详情 Typewise.app

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

图片

图片

尽管 webui 作为目前最受欢迎的可视化工具,已经快速地支持了近期推出的各种生成模型,并且支持众多选项供用户设置。由于其重点考虑了前端界面的易用性,背后代码结构其实十分复杂,对于开发者而言不够友好。比如 webui 尽管支持了多种类型的加载和推理,但却无法支持不同框架下的转换,也无法支持模型的灵活训练。我们在社区讨论中发现了许多现有开源代码暂未解决的痛点。

首先,代码框架不兼容,目前热门的模型,如 ControlNet、T2I-Adapter,与主流的 Stable Diffusion 训练库 diffusers 不兼容,ControlNet 预训练的模型无法直接在 diffusers 框架中被使用。

其次,模型加载受限,目前模型保存格式多样,如.bin、.ckpt、.pth、.satetensors 等,除了 webui 外,目前 diffusers 框架对于这些模型格式的支持还有限,考虑到 LoRA 大部分模型以 safetensors 保存为主,用户很难直接将 LoRA 的模型加载到已有的基于 diffusers 框架训练的模型中。

第三,基础模型受限,目前 ControlNet、T2I-Adapter 均基于 Stable-Diffusion-1.5 进行训练,且仅开源了 SD1.5 下的模型权重,考虑到特定场景,已经存在诸如 anything-v4、ChilloutMix 等优质动漫模型,即使引入了可控信息,最终生成结果仍然受限于 SD1.5 中 UNet 的能力。

最后,模型训练受限,目前 LoRA 已经被广泛验证是风格迁移、保持特定形象 IP 最有效的方法之一,但 diffusers 框架目前仅支持 UNet 的 LoRA 嵌入,无法支持 text encoder 的嵌入,会限制 LoRA 的训练。

我们和开源社区讨论后,了解到 diffusers 框架作为通用代码库,正计划同时适配近期不断推出的生成模型;由于涉及较多底层接口重写,仍然需要一段时间更新。为此,我们从以上实际存在的问题出发,率先提出了对于每一个问题的自研解决方案,快速帮助开发者更容易地开发。

LoRA、ControlNet、T2I-Adapter 到 diffusers 的全适配方案

LoRA for diffusers

本方案是为了在 diffusers 框架,即基于 diffusers 训练保存的模型中,灵活嵌入各种格式的 LoRA 权重。由于 LoRA 的训练通常冻结 base model,因此可以作为可插拔模块轻松嵌入已有模型,作为风格或 IP 条件约束。LoRA 本身是一种通用的训练技巧,它的基本原理是,通过低秩分解,可以极大地减少模块的参数量,目前在图像生成中,一般用于训练独立于 base model 外的可插拔模块,实际使用是以残差形式与 base model 的输出合并。

首先是 LoRA 权重的嵌入,目前 Civitai 平台上提供的权重主要以 ckpt 或 safetensors 格式存储,分以下两种情况。

(1)Full model(base model + LoRA 模块)

如果 full model 是 safetensors 格式,可以通过以下 diffusers 脚本转换

python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.safetensors--dump_path save_dir --from_safetensors

如果 full model 是 ckpt 格式,可以通过以下 diffusers 脚本转换

python ./scripts/convert_original_stable_diffusion_to_diffusers.py --checkpoint_path xxx.ckpt--dump_path save_dir

转换完成后,可直接利用 diffusers 的 API 进行模型加载

from diffusers import StableDiffusionPipelinepipeline = StableDiffusionPipeline.from_pretrained (save_dir,torch_dtype=torch.float32)

(2)LoRA only (仅包含 LoRA 模块)

目前 diffusers 官方无法支持仅加载 LoRA 权重,而开源平台上的 LoRA 权重基本以这种形式存储。本质上是完成 LoRA 权重中 key-value 的重新映射,使其适配到 diffusers 模型中。为此,我们自行支持这个功能,提供了转换脚本。

pipeline = StableDiffusionPipeline.from_pretrained (model_id,torch_dtype=torch.float32)model_path = "onePieceWanoSagaStyle_v2Offset.safetensors"state_dict = load_file (model_path)

只需要指定 diffusers 格式的模型,以及存储为 safetensors 格式的 LoRA 权重。我们提供了一个转换示例。

# the default mergering ratio is 0.75, you can manually set it python convert_lora_safetensor_to_diffusers.py

此外,LoRA 本身由于其轻量化,可以在小数据情况下快速完成训练,并能够嵌入到其他网络中。为了不局限于已有 LoRA 权重,我们在 diffusers 框架中支持了 LoRA 的多模块(UNet+text encoder)训练,并已经在官方代码库提交 PR(https://github.com/huggingface/diffusers/pull/2479),并支持了 ColossalAI 中训练 LoRA。

代码开源在:https://github.com/haofanwang/Lora-for-Diffusers

ControlNet for diffusers

图片

本方案是为了支持在 diffusers 框架中,使用 ControlNet。基于开源社区的部分尝试,我们提供了完整的 ControlNet+Anything-V3 使用用例,支持将 base model 从原本 SD1.5 的替换到 anything-v3 模型,使 ControlNet 具备较好动漫生成的能力。

此外,我们也支持 ControlNet+Inpainting,并提供了适配 diffusers 的 pipeline,

图片

图片

以及多条件控制的 Multi-ControlNet。

图片

代码开源在:https://github.com/haofanwang/ControlNet-for-Diffusers

T2I-Adapter for diffusers

图片

与 ControlNet 相似,我们也同时支持了同期开源的 T2I-Adapter 到 diffusers 的适配。

代码开源在:https://github.com/haofanwang/T2I-Adapter-for-Diffusers

目前以上三种适配方案均已经向社区开源,并在 ControlNet、T2I-Adapter 中被官方分别致谢,也收到了来自 stable-diffusion-webui-colab 作者的感谢。我们正在与 diffusers 官方保持讨论,会在近期完成以上方案向官方代码库的集成工作。也欢迎大家提前尝试我们的工作,有任何问题均可以直接提 issue,我们会尽快回复。

以上就是适配Diffusers框架的全套教程来了!从T2I-Adapter到大热ControlNet的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/839597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月27日 11:58:35
下一篇 2025年11月27日 11:58:57

相关推荐

  • 实践CSS3选择器的代码演练

    CSS3选择器动手实践代码 CSS3选择器是Web开发中非常重要的一部分,它可以帮助我们更好地选择和控制HTML元素。在本文中,我们将使用具体的代码示例来学习和实践CSS3选择器的用法。 第一种选择器是元素选择器。它通过HTML元素的标签名进行选择。例如,我们可以使用以下代码选择所有的段落元素: p…

    2025年12月24日
    000
  • 五种高效的Ajax框架,助您快速开发

    高效开发利器:掌握这五个常用的Ajax框架 引言:在当今互联网时代,Web开发已经成为人们最常用的软件开发方法之一。而Ajax技术的出现,更是给Web开发带来了一种全新的交互方式。Ajax(Asynchronous JavaScript and XML)是一种基于现有的Web标准的开发技术,它可以使…

    2025年12月24日
    000
  • 五款必备的CSS框架,前端开发人员不容错过!

    前端开发必备!五种常用的CSS框架推荐 在现如今的互联网时代,网页设计和开发已经成为了一种必备技能。而作为前端开发的重要组成部分之一,CSS框架的选择和使用对于网页的美观和用户体验起着至关重要的作用。本文将为大家推荐五种常用的CSS框架,帮助大家在前端开发中事半功倍。 一、Bootstrap Boo…

    2025年12月24日
    000
  • CSS中line-height详解(代码实例)

    元素的高度是由什么决定对于我们解决页面显示问题和布局页面都有很大的帮助。 常规的操作表现是为一个块级元素设置height属性,则其拥有了高度: .test { border: 1px solid #ccc; height: 100px; width: 100px; } 但是根据熟知,当我们不为元素设…

    2025年12月24日
    000
  • CSS怎么实现自适应正方形?有代码吗

    本篇文章给大家带来的内容是关于CSS怎么实现自适应正方形?有代码吗,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 CSS实现自适应正方形/*使用padding-bottom实现正方形*/ #test7{ width: 400px; background: gray; } .plac…

    好文分享 2025年12月24日
    000
  • 用CSS实现网站变黑白色

    这篇文章主要介绍了关于用css实现网站变黑白色,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 以下为全站CSS代码.  html { filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale=1); } 使用方法:这段…

    好文分享 2025年12月24日
    000
  • css悬浮效果阴影实现代码

    本文主要和大家介绍了css实现悬浮效果的阴影的方法示例的相关资料,希望能帮助到大家。我们先来看一下效果图。 要实现的效果图: 实现的代码: -webkit-box-shadow:0px 3px 3px #c8c8c8 ;-moz-box-shadow:0px 3px 3px #c8c8c8 ;box…

    2025年12月24日
    000
  • CSS实现宽高等比布局的代码

    宽度是高度的两倍(等比缩放)实现思路: 以父级元素为基准, 子级 width:100%; (也就是父级宽度的100%), padding-top:50% (也就是父级宽度的50%,根据css规范, padding用百分比表示的话, padding: 100%等于父元素的宽度); 为什么不直接`wid…

    2025年12月24日
    000
  • CSS记录用户密码实现代码分享

    本文主要和大家介绍了css 记录用户密码的方法的相关资料,简单的css代码,甚至不符合图灵完备的语言,但是也能成为一些攻击者的工具,下面简单介绍一下如何使用css去记录用户的密码。但是这些css脚本会出现在第三方css库中,所以使用第三方css库也需要谨慎,确保代码安全。直接上代码解析: input…

    2025年12月24日
    000
  • css实现简单时间轴的实例代码

    本文主要和大家介绍了前端css实现最基本的时间轴的示例代码,分享给大家,给大家做个参考,希望能帮助到大家。 原型: 代码: 状态详情 #timeleft p { height: 65px; color: #333333; } #timecenter p { height: 65px; color: …

    2025年12月24日 好文分享
    000
  • CSS实现动态气泡背景代码分享

    本文主要和大家介绍了css 动画实现动态气泡背景的方法的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能帮助到大家。 今天的第一个任务是写个登录页面,老大给了我一个参(chao)考(xi)案例,大家点击链接就能看到。嗯,这个登录页面确实很简洁、大方,尤其是…

    2025年12月24日
    000
  • css垂直居中实现代码

    本文主要和大家分享css垂直居中实现代码,希望本文css代码能帮助到大家。 1.如果是单行文本, line-height 的值和height相等 案例如下: 立即学习“前端免费学习笔记(深入)”; .verticle{ height: 100px; line-height: 100px;} 2.已知…

    好文分享 2025年12月24日
    000
  • 介绍CSS3中的几个新技术

    网页制作Webjx文章简介:网页教学网将在这篇文章向大家展示CSS中的5个有趣的新技术:圆角、个别圆角、不透明度、阴影和调整元素大小.            CSS是众所周知且应用广泛的网站样式语言,在它的版本三(CSS3)计划中,新增了一些能够节省时                        …

    2025年12月23日
    000
  • 如何在html编辑代码_在HTML页面内编辑和运行代码块【代码】

    可在HTML页面内嵌入可交互代码编辑与执行功能,具体包括:一、CodeMirror+Function构造器实现JS即时运行;二、Monaco Editor配合Web Worker与vm2沙箱安全执行;三、iframe隔离预览HTML/CSS/JS;四、BrowserFS模拟本地文件系统。 如果您希望…

    2025年12月23日
    000
  • html如何学起_HTML初学者的学习起点建议【建议】

    HTML初学者应从文档结构、语义化标签、本地环境、交互平台和源码模仿五方面入手:先掌握DOCTYPE、html、head、body等基本结构;再学习h1~h6、p、ul/ol、a、img等常用标签用法;接着配置本地编辑器与浏览器调试环境;然后利用w3schools等平台即时验证;最后通过分析真实网页…

    2025年12月23日
    000
  • 手机怎么运行html5游戏_手机运行html5游戏步骤【指南】

    手机运行HTML5游戏无需安装,只需用现代浏览器打开网页即可。首先确保使用Chrome、Safari或Firefox等支持HTML5的最新浏览器;然后通过官网、二维码或分享链接获取游戏;接着在浏览器中输入网址或点击链接,等待加载后点击屏幕开始游戏;为提升体验,建议连接Wi-Fi、关闭后台应用、横屏操…

    2025年12月23日
    200
  • JavaScript DOM操作:高效移除子元素上的指定CSS类

    本教程将详细介绍如何使用JavaScript高效地从父元素的多个子元素中移除指定的CSS类。我们将探讨常见的DOM操作误区,并提供一个健壮的解决方案,利用querySelectorAll选择器、forEach迭代以及classList.remove方法来批量处理元素。此外,还将演示如何为按钮添加事件…

    2025年12月23日
    000
  • 怎么在线运行html代码_在线运行html代码方法【教程】

    可通过在线工具直接运行HTML代码,无需本地配置:①使用jsfiddle.net或codepen.io等在线编辑器实时编写并预览;②在replit.com创建HTML项目,支持完整文件结构与多人协作;③利用浏览器F12开发者工具临时编辑HTML片段即时查看效果;④通过codesandbox.io或s…

    2025年12月23日
    000
  • ai做html怎么运行_AI生成html运行步骤【教程】

    答案是使用AI生成HTML代码后,将其保存为.html文件并用浏览器打开即可运行。具体步骤为:1. 在AI工具中输入需求生成HTML代码;2. 将代码复制到文本编辑器并另存为index.html,编码选UTF-8,类型选“所有文件”;3. 双击该文件用浏览器打开,若无法正常显示需检查文件后缀、编码及…

    2025年12月23日
    000
  • JavaEE的html怎么运行_JavaEE运行html步骤【指南】

    答案:HTML在JavaEE中作为静态资源通过服务器运行。需配置JDK、IDE和应用服务器,创建Dynamic Web Project,将HTML文件放入WebContent目录,部署项目到Tomcat等服务器,启动后通过http://localhost:8080/项目名/文件名访问,确保路径正确即…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信