CoolFace
Apppublic

cymic/Waifu_Diffusion_Webui

sourceHugging Faceupdated 4y agoView on Hugging Face
1likes
loopback.py84 linesDownload Raw Back to scripts
1import numpy as np2from tqdm import trange3 4import modules.scripts as scripts5import gradio as gr6 7from modules import processing, shared, sd_samplers, images8from modules.processing import Processed9from modules.sd_samplers import samplers10from modules.shared import opts, cmd_opts, state11 12class Script(scripts.Script):13    def title(self):14        return "Loopback"15 16    def show(self, is_img2img):17        return is_img2img18 19    def ui(self, is_img2img):20        loops = gr.Slider(minimum=1, maximum=32, step=1, label='Loops', value=4)21        denoising_strength_change_factor = gr.Slider(minimum=0.9, maximum=1.1, step=0.01, label='Denoising strength change factor', value=1)22 23        return [loops, denoising_strength_change_factor]24 25    def run(self, p, loops, denoising_strength_change_factor):26        processing.fix_seed(p)27        batch_count = p.n_iter28        p.extra_generation_params = {29            "Denoising strength change factor": denoising_strength_change_factor,30        }31 32        p.batch_size = 133        p.n_iter = 134 35        output_images, info = None, None36        initial_seed = None37        initial_info = None38 39        grids = []40        all_images = []41        state.job_count = loops * batch_count42 43        initial_color_corrections = [processing.setup_color_correction(p.init_images[0])]44 45        for n in range(batch_count):46            history = []47 48            for i in range(loops):49                p.n_iter = 150                p.batch_size = 151                p.do_not_save_grid = True52 53                if opts.img2img_color_correction:54                    p.color_corrections = initial_color_corrections55 56                state.job = f"Iteration {i + 1}/{loops}, batch {n + 1}/{batch_count}"57 58                processed = processing.process_images(p)59 60                if initial_seed is None:61                    initial_seed = processed.seed62                    initial_info = processed.info63 64                init_img = processed.images[0]65 66                p.init_images = [init_img]67                p.seed = processed.seed + 168                p.denoising_strength = min(max(p.denoising_strength * denoising_strength_change_factor, 0.1), 1)69                history.append(processed.images[0])70 71            grid = images.image_grid(history, rows=1)72            if opts.grid_save:73                images.save_image(grid, p.outpath_grids, "grid", initial_seed, p.prompt, opts.grid_format, info=info, short_filename=not opts.grid_extended_filename, grid=True, p=p)74 75            grids.append(grid)76            all_images += history77 78        if opts.return_grid:79            all_images = grids + all_images80 81        processed = Processed(p, all_images, initial_seed, initial_info)82 83        return processed84