From 092310bc8f1116a8e237e8fe142c853281903a96 Mon Sep 17 00:00:00 2001 From: "Dr.Lt.Data" Date: Fri, 31 Jan 2025 21:01:03 +0900 Subject: [PATCH] refactor: impact_sampling --- modules/impact/config.py | 2 +- modules/impact/impact_sampling.py | 74 ++++++++----------------------- pyproject.toml | 2 +- 3 files changed, 20 insertions(+), 58 deletions(-) diff --git a/modules/impact/config.py b/modules/impact/config.py index fcb1df8..77f14f5 100644 --- a/modules/impact/config.py +++ b/modules/impact/config.py @@ -1,7 +1,7 @@ import configparser import os -version_code = [8, 7, 1] +version_code = [8, 8] version = f"V{version_code[0]}.{version_code[1]}" + (f'.{version_code[2]}' if len(version_code) > 2 else '') dependency_version = 24 diff --git a/modules/impact/impact_sampling.py b/modules/impact/impact_sampling.py index 2a35894..8a3b8bc 100644 --- a/modules/impact/impact_sampling.py +++ b/modules/impact/impact_sampling.py @@ -46,65 +46,27 @@ def get_noise_sampler(x, cpu, total_sigmas, **kwargs): def ksampler(sampler_name, total_sigmas, extra_options={}, inpaint_options={}): - if sampler_name == "dpmpp_sde": - def sample_dpmpp_sde(model, x, sigmas, **kwargs): - noise_sampler = get_noise_sampler(x, True, total_sigmas, **kwargs) - if noise_sampler is not None: - kwargs['noise_sampler'] = noise_sampler + if sampler_name in ["dpmpp_sde", "dpmpp_sde_gpu", "dpmpp_2m_sde", "dpmpp_2m_sde_gpu", "dpmpp_3m_sde", "dpmpp_3m_sde_gpu"]: + if sampler_name == "dpmpp_sde": + orig_sampler_function = k_diffusion_sampling.sample_dpmpp_sde + elif sampler_name == "dpmpp_sde_gpu": + orig_sampler_function = k_diffusion_sampling.sample_dpmpp_sde_gpu + elif sampler_name == "dpmpp_2m_sde": + orig_sampler_function = k_diffusion_sampling.sample_dpmpp_2m_sde + elif sampler_name == "dpmpp_2m_sde_gpu": + orig_sampler_function = k_diffusion_sampling.sample_dpmpp_2m_sde_gpu + elif sampler_name == "dpmpp_3m_sde": + orig_sampler_function = k_diffusion_sampling.sample_dpmpp_3m_sde + elif sampler_name == "dpmpp_3m_sde_gpu": + orig_sampler_function = k_diffusion_sampling.sample_dpmpp_3m_sde_gpu - return k_diffusion_sampling.sample_dpmpp_sde(model, x, sigmas, **kwargs) + def sampler_function_wrapper(model, x, sigmas, **kwargs): + if 'noise_sampler' not in kwargs: + kwargs['noise_sampler'] = get_noise_sampler(x, 'gpu' not in sampler_name, total_sigmas, **kwargs) - sampler_function = sample_dpmpp_sde + return orig_sampler_function(model, x, sigmas, **kwargs) - elif sampler_name == "dpmpp_sde_gpu": - def sample_dpmpp_sde(model, x, sigmas, **kwargs): - noise_sampler = get_noise_sampler(x, False, total_sigmas, **kwargs) - if noise_sampler is not None: - kwargs['noise_sampler'] = noise_sampler - - return k_diffusion_sampling.sample_dpmpp_sde_gpu(model, x, sigmas, **kwargs) - - sampler_function = sample_dpmpp_sde - - elif sampler_name == "dpmpp_2m_sde": - def sample_dpmpp_sde(model, x, sigmas, **kwargs): - noise_sampler = get_noise_sampler(x, True, total_sigmas, **kwargs) - if noise_sampler is not None: - kwargs['noise_sampler'] = noise_sampler - - return k_diffusion_sampling.sample_dpmpp_2m_sde(model, x, sigmas, **kwargs) - - sampler_function = sample_dpmpp_sde - - elif sampler_name == "dpmpp_2m_sde_gpu": - def sample_dpmpp_sde(model, x, sigmas, **kwargs): - noise_sampler = get_noise_sampler(x, False, total_sigmas, **kwargs) - if noise_sampler is not None: - kwargs['noise_sampler'] = noise_sampler - - return k_diffusion_sampling.sample_dpmpp_2m_sde_gpu(model, x, sigmas, **kwargs) - - sampler_function = sample_dpmpp_sde - - elif sampler_name == "dpmpp_3m_sde": - def sample_dpmpp_sde(model, x, sigmas, **kwargs): - noise_sampler = get_noise_sampler(x, True, total_sigmas, **kwargs) - if noise_sampler is not None: - kwargs['noise_sampler'] = noise_sampler - - return k_diffusion_sampling.sample_dpmpp_3m_sde(model, x, sigmas, **kwargs) - - sampler_function = sample_dpmpp_sde - - elif sampler_name == "dpmpp_3m_sde_gpu": - def sample_dpmpp_sde(model, x, sigmas, **kwargs): - noise_sampler = get_noise_sampler(x, False, total_sigmas, **kwargs) - if noise_sampler is not None: - kwargs['noise_sampler'] = noise_sampler - - return k_diffusion_sampling.sample_dpmpp_3m_sde_gpu(model, x, sigmas, **kwargs) - - sampler_function = sample_dpmpp_sde + sampler_function = sampler_function_wrapper else: return comfy.samplers.sampler_object(sampler_name) diff --git a/pyproject.toml b/pyproject.toml index 5667cde..d2d8af3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "comfyui-impact-pack" description = "This node pack offers various detector nodes and detailer nodes that allow you to configure a workflow that automatically enhances facial details. And provide iterative upscaler." -version = "8.7.1" +version = "8.8" license = { file = "LICENSE.txt" } dependencies = ["segment-anything", "scikit-image", "piexif", "transformers", "opencv-python-headless", "GitPython", "scipy>=1.11.4"]