Spaces:
Runtime error
Runtime error
| import os | |
| from iopaint.tests.utils import check_device, current_dir | |
| os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1" | |
| import pytest | |
| import torch | |
| from iopaint.model_manager import ModelManager | |
| from iopaint.schema import HDStrategy, SDSampler, FREEUConfig | |
| from iopaint.tests.test_model import get_config, assert_equal | |
| def test_sdxl(device, strategy, sampler): | |
| sd_steps = check_device(device) | |
| model = ModelManager( | |
| name="diffusers/stable-diffusion-xl-1.0-inpainting-0.1", | |
| device=torch.device(device), | |
| disable_nsfw=True, | |
| sd_cpu_textencoder=False, | |
| ) | |
| cfg = get_config( | |
| strategy=strategy, | |
| prompt="face of a fox, sitting on a bench", | |
| sd_steps=sd_steps, | |
| sd_strength=1.0, | |
| sd_guidance_scale=7.0, | |
| ) | |
| cfg.sd_sampler = sampler | |
| assert_equal( | |
| model, | |
| cfg, | |
| f"sdxl_device_{device}.png", | |
| img_p=current_dir / "overture-creations-5sI6fQgYIuo.png", | |
| mask_p=current_dir / "overture-creations-5sI6fQgYIuo_mask.png", | |
| fx=2, | |
| fy=2, | |
| ) | |
| def test_sdxl_cpu_text_encoder(device, strategy, sampler): | |
| sd_steps = check_device(device) | |
| model = ModelManager( | |
| name="diffusers/stable-diffusion-xl-1.0-inpainting-0.1", | |
| device=torch.device(device), | |
| disable_nsfw=True, | |
| sd_cpu_textencoder=True, | |
| ) | |
| cfg = get_config( | |
| strategy=strategy, | |
| prompt="face of a fox, sitting on a bench", | |
| sd_steps=sd_steps, | |
| sd_strength=1.0, | |
| sd_guidance_scale=7.0, | |
| ) | |
| cfg.sd_sampler = sampler | |
| assert_equal( | |
| model, | |
| cfg, | |
| f"sdxl_device_{device}.png", | |
| img_p=current_dir / "overture-creations-5sI6fQgYIuo.png", | |
| mask_p=current_dir / "overture-creations-5sI6fQgYIuo_mask.png", | |
| fx=2, | |
| fy=2, | |
| ) | |
| def test_sdxl_lcm_lora_and_freeu(device, strategy, sampler): | |
| sd_steps = check_device(device) | |
| model = ModelManager( | |
| name="diffusers/stable-diffusion-xl-1.0-inpainting-0.1", | |
| device=torch.device(device), | |
| disable_nsfw=True, | |
| sd_cpu_textencoder=False, | |
| ) | |
| cfg = get_config( | |
| strategy=strategy, | |
| prompt="face of a fox, sitting on a bench", | |
| sd_steps=sd_steps, | |
| sd_strength=1.0, | |
| sd_guidance_scale=2.0, | |
| sd_lcm_lora=True, | |
| ) | |
| cfg.sd_sampler = sampler | |
| name = f"device_{device}_{sampler}" | |
| assert_equal( | |
| model, | |
| cfg, | |
| f"sdxl_{name}_lcm_lora.png", | |
| img_p=current_dir / "overture-creations-5sI6fQgYIuo.png", | |
| mask_p=current_dir / "overture-creations-5sI6fQgYIuo_mask.png", | |
| fx=2, | |
| fy=2, | |
| ) | |
| cfg = get_config( | |
| strategy=strategy, | |
| prompt="face of a fox, sitting on a bench", | |
| sd_steps=sd_steps, | |
| sd_guidance_scale=7.5, | |
| sd_freeu=True, | |
| sd_freeu_config=FREEUConfig(), | |
| ) | |
| assert_equal( | |
| model, | |
| cfg, | |
| f"sdxl_{name}_freeu_device_{device}.png", | |
| img_p=current_dir / "overture-creations-5sI6fQgYIuo.png", | |
| mask_p=current_dir / "overture-creations-5sI6fQgYIuo_mask.png", | |
| fx=2, | |
| fy=2, | |
| ) | |
| def test_sdxl_outpainting(device, rect): | |
| sd_steps = check_device(device) | |
| model = ModelManager( | |
| name="diffusers/stable-diffusion-xl-1.0-inpainting-0.1", | |
| device=torch.device(device), | |
| disable_nsfw=True, | |
| sd_cpu_textencoder=False, | |
| ) | |
| cfg = get_config( | |
| strategy=HDStrategy.ORIGINAL, | |
| prompt="a dog sitting on a bench in the park", | |
| sd_steps=sd_steps, | |
| use_extender=True, | |
| extender_x=rect[0], | |
| extender_y=rect[1], | |
| extender_width=rect[2], | |
| extender_height=rect[3], | |
| sd_strength=1.0, | |
| sd_guidance_scale=8.0, | |
| sd_sampler=SDSampler.ddim, | |
| ) | |
| assert_equal( | |
| model, | |
| cfg, | |
| f"sdxl_outpainting_dog_ddim_{'_'.join(map(str, rect))}_device_{device}.png", | |
| img_p=current_dir / "overture-creations-5sI6fQgYIuo.png", | |
| mask_p=current_dir / "overture-creations-5sI6fQgYIuo_mask.png", | |
| fx=1.5, | |
| fy=1.5, | |
| ) | |