import modules.scripts as scripts import gradio as gr from latent_upscale_overrides.schedulers import sampler_noise_scheduler_override from latent_upscale_overrides.init import init opt_C = 4 opt_f = 8 class Script(scripts.Script): # The title of the script. This is what will be displayed in the dropdown menu. def title(self): return "Latent Upscale" # Determines when the script should be shown in the dropdown menu via the # returned value. As an example: # is_img2img is True if the current tab is img2img, and False if it is txt2img. # Thus, return is_img2img to only show the script on the img2img tab. def show(self, is_img2img): return is_img2img # return scripts.AlwaysVisible # How the script's is displayed in the UI. See https://gradio.app/docs/#components # for the different UI components you can use and how to create them. # Most UI components can return a value, such as a boolean for a checkbox. # The returned values are passed to the run method as parameters. def ui(self, is_img2img): with gr.Row(): upscale_method = gr.Dropdown(["bilinear", "bilinear-antialiased", "bicubic", "bicubic-antialiased", "linear", "trilinear", "area", "nearest", "nearest-exact"], label="Upscale method") scheduler = gr.Dropdown(["simple", "normal", "karras", "exponential", "polyexponential", "automatic"], label="Scheduler") return [upscale_method, scheduler] # This is where the additional processing is implemented. The parameters include # self, the model object "p" (a StableDiffusionProcessing class, see # processing.py), and the parameters returned by the ui method. # Custom functions can be defined here, and additional libraries can be imported # to be used in processing. The return value should be a Processed object, which is # what is returned by the process_images method. def run(self, p, upscale_method, scheduler): print(f"set Upscale method in run: {upscale_method}") print(f"scheduler: {scheduler}") # override the sampler_noise_scheduler_override method # if the selected method is not recognized, use the default scheduler if scheduler in ["simple", "normal", "karras", "exponential", "polyexponential"]: p.sampler_noise_scheduler_override \ = lambda steps: sampler_noise_scheduler_override(p, scheduler, steps) # override the init method p.init = lambda all_prompts, all_seeds, all_subseeds, **kwargs: init( p, upscale_method, all_prompts, all_seeds, all_subseeds, **kwargs)