stable diffusion webui中的modules/processing模块

这篇具有很好参考价值的文章主要介绍了stable diffusion webui中的modules/processing模块。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

modules/processing.py->process_images()

p.scripts.before_process(p)

sd_models.reload_model_weights()
sd_vae.reload_vae_weights()

res = process_images_inner(p)

modules/processing.py->process_images_inner()

process_images->process_images_inner()->p:StableDiffusionProcessing

seed = get_fixed_seed(p.seed)
model_hijack.embedding_db.load_textual_inversion_embeddings()

p.scripts.process(p) ->

with torch.no_grad(),p.sd_model.ema_scope():
    with devices.autocast():
        sd_vae_approx.model()
        sd_unet.apply_unet()
    
    for n in range(p.iter):
        p.prompts = p.all_prompts
        p.negative_prompts = p.all_negative_prompts

        p.scripts.before_process_batch(p,batch_number,prompts,seeds)  ->       
        p.parse_extra_network_prompts()
        p.scripts.process_batch(p,batch_number,p.prompts,p.seeds,...)

        p.setup_conds()
        
        with devices.without_autocast() if devices.unet_needs_upcast else devices.autocast():
            samples_ddim = p.sample(conditioning,unconditional_conditioning,prompt...)
        x_samples_ddim = [decode_first_stage(p.sd_model,samples_ddim[i:i+1] for i in range(samples_ddim.size(0))]
        
        p.scripts.postprocess_batch(p,x_samples_ddim,batch_number)

        for i,x_sample in enumerate(x_sample_ddim):
            x_sample = 255*np.moveaxis(x_sample.cpu().numpy(),0,2)

            if p.restore_faces:
                x_sample = modules.face_restoration.restore_faces(x_sample)
        
            image = Image.formarray(x_sample)
            pp = scripts.PostprocessImageArgs(image)
            p.scripts.postprocess_image(p,pp)
            image = pp.image        
        
p.scripts.postprocess(p,...)

这个函数和scripts配合就是webui中文生图以及图生图的主pipeline,在processing中调用StableDiffusionProcessingTxt2Img和StableDiffusionProcessingImg2Img就是最核心的2个生图接口。

1.script在哪里做初始化?

script由scripts.py控制

ScriptRunner->

initialize_scripts在create_ui时初始化

run->
script_index = args[0]
script_args = args[script_args.from:script.args_to]
processed = script.run(p,*script_args)

before_process()
process()
before_process_batch()
process_batch()
postprocess()
postprocess_batch()
postprocess_image()

2.第三方插件基本都是通过在img2img、txt2img的主pipeline中添加script的hook节点来起作用,以adetailer为例:

首先scripts/adetailer中核心类AfterDetailerScript继承自scripts.Script,包含了上述before_process/process等节点,主要还是调用了图生图接口去做处理的。文章来源地址https://www.toymoban.com/news/detail-764775.html

p.scripts.postprocess_image(p,pp) ->

is_processed |= self._postprocess_image_inner(p,pp...)->
- i2i = self.get_i2i_p(p,args,pp.image) ->
-- i2i = StableDiffusionProcessingImg2Img()->
- ad_prompts,ad_negative = self.get_prompt(p,args) ->
- ad_model = self.get_ad_model(args.sd_model) ->
- pred = predictor(ad_model,pp.image,...) ->
- masks = self.pred_preprocessing(pred,args) ->
- p2 = copy(i2i) ->
- for j in range(len(masks)):
     p2.image_mask = masks[j]
     self.i2i_prompts_replace(p2,ad_prompts,ad_negatives,j)
     
     processed = process_images(p2)
--   p.scripts.before_process(p)
--   res = process_images_inner(p)
     pp.image = processed.image[0] 

到了这里,关于stable diffusion webui中的modules/processing模块的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Stable-diffusion webui AttributeError: module ‘cv2.dnn‘ has no attribute ‘DictValue‘

    Stable-diffusion webui 安装了一个插件之后,reload ui失败,进而 bash webui.sh 失败 笔者尝试了多种办法,升级 / 卸载,安装 opencv-python,都不能成功 主要原因:stable-diffusion webui内部的venv会在早些时刻就配置好了(前期项目的)环境,现在新增的插件,只能用之前的环境而不能用到

    2024年02月08日
    浏览(38)
  • Stable Diffusion 硬核生存指南:WebUI 中的 VAE

    本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0) 本文作者: 苏洋 创建时间: 2023年07月30日 统计字数: 11485字 阅读时间: 23分钟阅读 本文链接: https://soulteary.com/2023/07/30/stable-diffusion-hardcore-survival-guide-vae-in-webu

    2024年02月14日
    浏览(57)
  • Stable Diffusion 硬核生存指南:WebUI 中的 GFPGAN

    本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 GFPGAN 相关的事情。 本篇文章的主角是开源项目 TencentARC/GFPGAN,和上一篇文章《Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer》提到的项目在某种程度上算是“开源项目的竞争者”。 有趣的是

    2024年02月14日
    浏览(38)
  • Stable Diffusion 硬核生存指南:WebUI 中的 CodeFormer

    本篇文章聊聊 Stable Diffusion WebUI 中的核心组件,强壮的人脸图像面部画面修复模型 CodeFormer 相关的事情。 在 Stable Diffusion WebUI 项目中,源码 modules 目录中,有一个有趣的目录叫做 CodeFormer ,它就是本文的主角啦。 CodeFormer 是一个很棒的开源项目sczhou/CodeFormer,被应用在许多项

    2024年02月14日
    浏览(38)
  • 【AICG】关于解决配置stable-diffusion-webui时的问题:No module ‘xformers‘. Proceeding without it.

    关于这个问题,在stable-diffusion-webui/venv/Scripts目录下进入terminal,输入./activate激活stable diffusion创建的虚拟环境,然后使用: 就基本可以了,最后在webui-user.bat文件上右击,点击“编辑”,在set COMMANDLINE_ARGS=后面加上--xformers,保存,正常运行,就能使用xformers进行加速了

    2024年02月11日
    浏览(54)
  • stable diffusion webui 下载和使用civitai中的模型

    C站网址为:https://civitai.com/。注:这里需要科学上网 1.选择想要的模型,点击【Download】按钮,这里演示【Deliberate】模型的下载和使用 2.将下载的模型,存放到【/models/Stable-diffusion】目录中 1.在模型下载页中,如上图,图片右下角的【i】按钮,点击【Copy Generation Data】即可复

    2024年02月17日
    浏览(55)
  • 关于Photoshop中的【Stable-Diffusion WEBUI】插件:Auto.Photoshop.SD.plugin

    本篇主要提到Photoshop中的Stable-Diffusion WEBUI插件,相对WEBUI并不算好用,但省得来回切换。 更多不断丰富的内容参考:🔗 《继续Stable-Diffusion WEBUI方方面面研究(内容索引)》 参考:https://github.com/AbdullahAlfaraj/Auto-Photoshop-StableDiffusion-Plugin 不能从WEBUI中直接安装,请选择从url安装吧

    2024年02月07日
    浏览(68)
  • 【Stable-Diffusion-WebUI】Windows系统安装Stable-Diffusion-WebUI

    基于 stable-diffusion 封装的 webui 开源项目,通过界面交互的方式来使用 stable-diffusion,降低了使用门槛,可以通过本地部署的方式进行访问,对电脑的配置要求较高,以下配置要求仅供参考 第一步:安装python3.10(这步可以跳过,3.8以上即可) 第二步:使用git下载stable diffusio

    2024年02月11日
    浏览(79)
  • 大话Stable-Diffusion-Webui-动手开发一个简单的stable-diffusion-webui(一)

    stable-diffusion-webui(以下简称sd)项目通过FastAPI对外提供了一系列的api用于开发者二次开发或者集成到自己的项目中。大体原理就是sd在本地启动后作为服务端,然后通过FastAPI提供API接口,

    2024年02月09日
    浏览(105)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包