Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from modules import scripts | |
| from lib_multidiffusion.tiled_diffusion import TiledDiffusion | |
| opTiledDiffusion = TiledDiffusion().apply | |
| class MultiDiffusionForForge(scripts.Script): | |
| sorting_priority = 16 | |
| def title(self): | |
| return "MultiDiffusion Integrated" | |
| def show(self, is_img2img): | |
| # make this extension visible in both txt2img and img2img tab. | |
| return scripts.AlwaysVisible | |
| def ui(self, *args, **kwargs): | |
| with gr.Accordion(open=False, label=self.title()): | |
| enabled = gr.Checkbox(label='Enabled', value=False) | |
| method = gr.Radio(label='Method', choices=['MultiDiffusion', 'Mixture of Diffusers'], | |
| value='MultiDiffusion') | |
| tile_width = gr.Slider(label='Tile Width', minimum=16, maximum=8192, step=16, value=768) | |
| tile_height = gr.Slider(label='Tile Height', minimum=16, maximum=8192, step=16, value=768) | |
| tile_overlap = gr.Slider(label='Tile Overlap', minimum=0, maximum=2048, step=32, value=64) | |
| tile_batch_size = gr.Slider(label='Tile Batch Size', minimum=1, maximum=8192, step=1, value=4) | |
| return enabled, method, tile_width, tile_height, tile_overlap, tile_batch_size | |
| def process_before_every_sampling(self, p, *script_args, **kwargs): | |
| # This will be called before every sampling. | |
| # If you use highres fix, this will be called twice. | |
| enabled, method, tile_width, tile_height, tile_overlap, tile_batch_size = script_args | |
| if not enabled: | |
| return | |
| unet = p.sd_model.forge_objects.unet | |
| unet = opTiledDiffusion(unet, method, tile_width, tile_height, tile_overlap, tile_batch_size)[0] | |
| p.sd_model.forge_objects.unet = unet | |
| # Below codes will add some logs to the texts below the image outputs on UI. | |
| # The extra_generation_params does not influence results. | |
| p.extra_generation_params.update(dict( | |
| multidiffusion_enabled=enabled, | |
| multidiffusion_method=method, | |
| multidiffusion_tile_width=tile_width, | |
| multidiffusion_tile_height=tile_height, | |
| multidiffusion_tile_overlap=tile_overlap, | |
| multidiffusion_tile_batch_size=tile_batch_size, | |
| )) | |
| return | |