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.hqwc.cn/news/206027.html

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

相关文章

实时数据备份实践inotify和rsync联动

目录 一、实时数据备份 1.实时数据备份 2.定时任务周期性的数据备份 3.实时数据备份 4.Inotify机制 二、实践 1.实时复制环境准备 2.实时复制概念 3.InofityRsync实施复制实战 4.配置好rsync守护进程 5.检查linux是否支持inotify 6.安装inotyify--tools 7.inotify…

【图像分类】基于深度学习的垃圾分类系统的设计与实现(ResNet网络,附代码和数据集)

写在前面: 首先感谢兄弟们的关注和订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。(专栏订阅用户订阅专栏后免费提供数据集和源码一份,超级VIP用户不在服务范围之内,不想订阅专栏的兄弟们可以私信…

服务器主机安全的重要性及防护策略

在数字化时代,服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业,无论是政府机构还是个人用户,都需要确保其服务器主机的安全,以防止数据泄露、网络攻击和系统瘫痪等严重后果。 一、服务器主机安全的重…

计数排序java实现

计数排序假设n个输入元素中的每一个都是在0到k区间的一个整数,其中k为某个整数,当kO(n)时,排序的运行时间为θ(n)。 计数排序的基本思想是:对每一个输入元素x,确定小于x的元素个数。利用这一信息,就可以直…

ON1 Photo RAW 2024 for Mac——专业照片编辑的终极利器

ON1 Photo RAW 2024 for Mac是一款专为Mac用户打造的照片编辑器,以其强大的功能和易用的操作,让你的照片编辑工作变得轻松愉快。 一、强大的RAW处理能力 ON1 Photo RAW 2024支持大量的RAW格式照片,能够让你在编辑过程中获得更多的自由度和更…

Django ORM 执行复杂查询的技术与实践

概要 Django ORM(Object-Relational Mapping)是 Django 框架的核心组件之一,提供了一种高效、直观的方式来处理数据库操作。尽管简单查询在 Django ORM 中相对容易实现,但在面对复杂的数据请求时,需要更深入的了解和技…

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

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

Centos7使用rpm安装mysql 5.7.43

Centos7使用rpm安装mysql 5.7.43 1、下载rpm包 wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar2、解压并安装 tar xf mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar yum -y install mysql-*3、按需修改mysql配置 #注意&a…

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

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

Latex数学符号查表

摘抄自“《一份(不太)简短的 LATEX 2ε 介绍》”,来自该网站http://mirrors.cqu.edu.cn/CTAN/info/lshort/chinese/lshort-zh-cn.pdf

Nginx模块开发之http过滤器filter

文章目录 什么是过滤模块Nginx相关数据结构介绍ngx_module_t的数据结构ngx_http_module_t数据结构ngx_command_s数据结构 相关宏定义filter(过滤器)实现Nginx模块开发流程Nginx 模块执行具体实现流程create_loc_confmerge_loc_confpostconfiguration修改…

连线星图:全面了解星图地球数据云!

我们在今年的双11专场直播中,有幸邀请到了星图地球的嘉宾与我们连线,为大家作了一场精彩的分享。 这里,首先感谢星图地球对水经注的大力支持! 现在,我们将嘉宾分享的内容进行简单整理,并以图文的方式与大家…