sd-webui-controlnet代码分析

controlnet前向代码解析_Kun Li的博客-CSDN博客文章浏览阅读1.5k次。要分析下controlnet的yaml文件,在params中分成了4个部分,分别是control_stage_config、unnet_config、first_stage_config、cond_stage_config。其中control_stage_config对应的是13层的controlnet,unet_config对应的是diffusion model,first_stage_config对应的是vae中的decode部分。cldm:controlnet版本的ldm。https://blog.csdn.net/u012193416/article/details/129956546?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170028636116800188569967%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=170028636116800188569967&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-3-129956546-null-null.nonecase&utm_term=controlnet&spm=1018.2226.3001.4450上面是之前写的controlnet原版的代码流程。

stable-diffusion-webui源码分析(7)-controlnet - 知乎AUTOMATIC1111的stable-diffusion-webui是近期很流行的stable-diffusion界面应用,它集合stable-diffusion各项常用功能,还通过扩展的形式支持controlnet、lora等技术。分析它的源码,也在一定程度上有助于理解sta…icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/620218436上面介绍的还是挺详细的。

api.py->这个api和alwayson_scripts不同controlnet_ui/controlnet_ui_group.UiControlNetUnit->internal_controlnet/external_code.ControlNetUnitcontrolnet.py->
ui->
self.ui_group->
ControlNetUiGroup->
controlnet_ui/controlnet_ui_group.ControlNetGroup->render()controlnet.py->process()->
unet = p.sd_model.model.diffusion_model->
unit.module = global_state.get_module_basename(unit.module)
resize_mode = external_code.resize_mode_from_value(unit.resize_mode)
control_mode = external_code.control_mode_from_value(unit.control_mode)->
model_net = Script.load_control_model(p, unet, unit.model, unit.low_vram)->
input_image, image_from_a1111 = Script.choose_input_image(p, unit, idx)->
preprocessor = self.preprocessor[unit.module]->
detected_map, is_image = preprocessor(input_image,res=preprocessor_resolution,thr_a=unit.threshold_a,thr_b=unit.threshold_b) ->
control, detected_map = Script.detectmap_proc(detected_map, unit.module, resize_mode, h, w) ->
control_model_type = ControlModelType.ControlNet->
preprocessor_dict = dict()->
forward_param = ControlParams()->
self.latest_network = UnetHook(lowvram=any(unit.low_vram for unit in self.enabled_units))->
self.latest_network.hook(model=unet, sd_ldm=sd_ldm, control_params=forward_params, process=p)
- hook.py->UnetHook()->
- process.sample = process_sample
- model._original_forward = model.forward
- model.forward = forward_webui.__get__(model,UNetModel) # 重新给model.foward赋值
-- forward(*args,**kwargs)->
-- # handle cond-uncond marker
-- # convert control image to latent
-- # handle prompt token control
-- # handle controlnet
-- # replace x_t to support inpaint models
-- # clear attention and adain cache
-- # unet encoder
-- # unet middle block
-- # unet decoder
-- # unet output
-- # post-processing for color fix
-- # post-processing for restore
scripts.script_callbacks.on_cfg_denoiser(self.guidance_schedule_handler)

Tips:

最大的问题,controlnet的on_ui_setting并没有被启用?

[Bug]: on_ui_settings callback gets called after "ui" method in scripts · Issue #11210 · AUTOMATIC1111/stable-diffusion-webui · GitHub

大概是这么个问题,就是我在插件中写的on_ui_setting注入到webui中,再从插件中使用这些注入的参数时,无效,需要在安装完后,执行reload操作,这样这些参数注入才是有效的?

但是on_ui_setting中的参数多是默认参数,其实也不太影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159127.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Maven依赖管理项目构建工具(保姆级教学---下篇)

对于Maven依赖管理项目构建工具的介绍,我们将其分为上篇和下篇。如果您对文章感兴趣,您可以在此链接中找到上篇详细内容: Maven依赖管理项目构建工具(保姆级教学上篇)-CSDN博客 一、Maven依赖传递和依赖冲突 1. …

left join查询耗时太慢,添加索引解决问题

背景 因为最近自己用的小app越用感觉加载越慢,以为是自己app开发逻辑出现问题了,结果才发现是自己很早以前的代码用到的是left join多表联查,以前因为数据少,所以没有感觉,现在数据量稍微一大,耗时就非常严…

珠宝饰品配送经营小程序商城作用如何

饰品有较强的价值/品牌之分,贵的上万元,便宜的几毛钱,适应不同消费群体和需求,对于珠宝类商家及小饰品商家来说,市场中都有着海量用户。 相较于以前等客上门,用户们的消费方式只有同城,如今互联…

psutil - Python中用于进程和系统监控的跨平台库

1、简介 psutil(进程和系统实用程序)是一个跨平台库,用于检索 Python 中运行的进程和系统利用率(CPU、内存、磁盘、网络、传感器)的信息。 它主要用于系统监控、分析和限制进程资源以及管理正在运行的进程。 它实现…

我们对凌鲨的一次重构

在10月我们对凌鲨进行了一次重构,把所有鸡肋的功能都删除了。 新版本界面 老版本界面 我们干掉的功能 移除沟通频道功能 沟通频道类似slack功能,用于团队沟通。由于国内有大量的沟通软件,比如企业微信,飞书,钉钉等。…

材料电磁参数综合测试解决方案-材料电磁参数测试系统 (100MHz-500GHz)

材料电磁参数测试系统 100MHz-500GHz 材料电磁参数测试系统测试频率范围覆盖100MHz~500GHz,可实现材料复介电常数、复磁导率等参数测试。系统由矢量网络分析仪、测试夹具、系统软件等组成,根据用户不同频率、材料类型的测试需求&#xff…

Doris数据模型的选择建议(十三)

Doris 的数据模型主要分为 3 类:Aggregate、Uniq、Duplicate Aggregate: Doris 数据模型-Aggregate 模型 Uniq:Doris 数据模型-Uniq 模型 Duplicate:Doris 数据模型-Duplicate 模型 因为数据模型在建表时就已经确定,且无法修改…

三十分钟学会Linux的基本操作

GNU/Linux GNU项目是由Richard Stallman发起的自由软件运动,旨在创建一个完全自由的操作系统。虽然GNU项目已经开发了大量的系统组件和工具,但它一直缺少一个完整的操作系统内核。在这时Linus Torvalds开发了Linux内核,并将其发布为自由软件…

安卓:Android Studio4.0~2023中正确的打开Android Device Monitor

Android Studio4.0~2023 中如何正确的打开Android Device Monitor(亲测有效) 前些天买了新电脑,安装了新版本的Android Studio4.0想试一试,结果就出现了一些问题。 问题引出: Android Device Monitor在工具栏中找不到,后来上网查…

Linux通过端口号找到对应的服务及其安装位置

Linux服务器中,通过端口号找到对应的服务及其安装位置,需要两步操作,如下: 第一步:根据端口号,确定对应的进程号(以redis服务为例) netstat -antup|grep 6379第二步:通…

ubuntu安装nvm

需求 在 virtualbox 虚拟机上运行的 ubuntu (22.04.3)里安装 nvm (Node Version Manager) 简述 官网文档 (github地址)上有提到两种安装方式,一种是直接 curl | wget 命令安装,一…

2014年7月15日 Go生态洞察:Go将亮相OSCON 2014

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

【转】OAK-D双目相机进行标定及标定结果说明

编辑:OAK中国 首发:A. hyhCSDN 喜欢的话,请多多👍⭐️✍ 内容来自用户的分享,如有疑问请与原作者交流! ▌前言 Hello,大家好,这里是OAK中国,我是助手君。 近期在CSDN刷…

目标检测算法 - YOLOv3

文章目录 1. Backbone Darknet-532. 整体架构3. 损失函数4. 训练过程5. 预测过程 YOLOv1、YOLOv2都是在CVPR这种正规的计算机视觉学术会议上发表的正式学术论文。 YOLOv3不算一篇严谨的学术论文,是作者随笔写的技术报告。 YOLOv3性能: 1. Backbone Dark…

SSM客户管理系统CRM开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 客户管理系统CRM是一套完善的信息系统,结合springMVC框架完成本系统,对理解JSP java编程开发语言有帮助系统采用SSM框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模…

CVE-2021-42287CVE-2021-42278 域内提权

倘见玉皇先跪奏:他生永不落红尘 本文首发于先知社区,原创作者即是本人 前言 网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的&#xf…

Spring Framework IoC依赖注入-按Bean类型注入

Spring Framework 作为一个领先的企业级开发框架,以其强大的依赖注入(Dependency Injection,DI)机制而闻名。DI使得开发者可以更加灵活地管理对象之间的关系,而不必过多关注对象的创建和组装。在Spring Framework中&am…

【20年扬大真题】编写程序,功能是从键盘输入若干4位数字学号,然后输出学号中百位数字是3的学号 (输入0时结束循环)

【20年扬大真题】 编写程序&#xff0c;功能是从键盘输入若干4位数字学号&#xff0c;然后输出学号中百位数字是3的学号 &#xff08;输入0时结束循环&#xff09; #include<stdio.h> #define MaxSize 20 int BaiWei3(int x) {x x / 100;if (x % 10 3) {return 1;}els…

Windows安装Hadoop运行环境

1、下载Hadoop 2、解压Hadoop tar zxvf hadoop-3.1.1.tar.gz3、设置Hadoop环境变量 3.1.1、系统环境变量 # HADOOP_HOME D:\software\hadoop-3.1.13.1.2、Path 环境变量 %HADOOP_HOME%\bin %HADOOP_HOME%\sbin3.1.3、修改Hadoop文件JAVA_HOME 注 : 路径中不要出现空格 ,…

局域网内Ubuntu上搭建Git服务器

1.在局域网内选定一台Ubuntu电脑作为Git服务端&#xff1a; (1).新建用户如为fbc&#xff0c;执行如下命令&#xff1a;需设置密码&#xff0c;此为fbc sudo adduser fbc (2).切换到fbc用户&#xff1a;需密码&#xff0c;此前设置为fbc su fbc (3).建一个空目录作为仓…