Spaces:
Runtime error
Runtime error
Update vae, remove autocast
Browse files
app.py
CHANGED
|
@@ -16,6 +16,7 @@ from diffusers import (
|
|
| 16 |
DDIMScheduler,
|
| 17 |
LMSDiscreteScheduler,
|
| 18 |
)
|
|
|
|
| 19 |
from PIL import Image
|
| 20 |
from PIL import ImageOps
|
| 21 |
import gradio as gr
|
|
@@ -73,10 +74,9 @@ finally:
|
|
| 73 |
else:
|
| 74 |
device = "cpu"
|
| 75 |
|
| 76 |
-
|
| 77 |
-
import contextlib
|
| 78 |
|
| 79 |
-
|
| 80 |
|
| 81 |
with open("config.yaml", "r") as yaml_in:
|
| 82 |
yaml_object = yaml.safe_load(yaml_in)
|
|
@@ -258,15 +258,17 @@ class StableDiffusionInpaint:
|
|
| 258 |
model_name = os.path.dirname(model_path)
|
| 259 |
else:
|
| 260 |
model_name = model_path
|
|
|
|
|
|
|
| 261 |
if original_checkpoint:
|
| 262 |
print(f"Converting & Loading {model_path}")
|
| 263 |
from convert_checkpoint import convert_checkpoint
|
| 264 |
|
| 265 |
pipe = convert_checkpoint(model_path, inpainting=True)
|
| 266 |
-
if device == "cuda"
|
| 267 |
pipe.to(torch.float16)
|
| 268 |
inpaint = StableDiffusionInpaintPipeline(
|
| 269 |
-
vae=
|
| 270 |
text_encoder=pipe.text_encoder,
|
| 271 |
tokenizer=pipe.tokenizer,
|
| 272 |
unet=pipe.unet,
|
|
@@ -276,12 +278,13 @@ class StableDiffusionInpaint:
|
|
| 276 |
)
|
| 277 |
else:
|
| 278 |
print(f"Loading {model_name}")
|
| 279 |
-
if device == "cuda"
|
| 280 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
| 281 |
model_name,
|
| 282 |
revision="fp16",
|
| 283 |
torch_dtype=torch.float16,
|
| 284 |
use_auth_token=token,
|
|
|
|
| 285 |
)
|
| 286 |
else:
|
| 287 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
|
@@ -385,7 +388,7 @@ class StableDiffusionInpaint:
|
|
| 385 |
init_image = Image.fromarray(img)
|
| 386 |
mask_image = Image.fromarray(mask)
|
| 387 |
# mask_image=mask_image.filter(ImageFilter.GaussianBlur(radius = 8))
|
| 388 |
-
|
| 389 |
images = inpaint_func(
|
| 390 |
prompt=prompt,
|
| 391 |
image=init_image.resize(
|
|
@@ -410,6 +413,8 @@ class StableDiffusion:
|
|
| 410 |
):
|
| 411 |
self.token = token
|
| 412 |
original_checkpoint = False
|
|
|
|
|
|
|
| 413 |
if model_path and os.path.exists(model_path):
|
| 414 |
if model_path.endswith(".ckpt"):
|
| 415 |
original_checkpoint = True
|
|
@@ -432,6 +437,7 @@ class StableDiffusion:
|
|
| 432 |
revision="fp16",
|
| 433 |
torch_dtype=torch.float16,
|
| 434 |
use_auth_token=token,
|
|
|
|
| 435 |
)
|
| 436 |
else:
|
| 437 |
text2img = StableDiffusionPipeline.from_pretrained(
|
|
@@ -449,12 +455,13 @@ class StableDiffusion:
|
|
| 449 |
import gc
|
| 450 |
|
| 451 |
gc.collect()
|
| 452 |
-
if device == "cuda"
|
| 453 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
| 454 |
"runwayml/stable-diffusion-inpainting",
|
| 455 |
revision="fp16",
|
| 456 |
torch_dtype=torch.float16,
|
| 457 |
use_auth_token=token,
|
|
|
|
| 458 |
).to(device)
|
| 459 |
else:
|
| 460 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
|
@@ -604,7 +611,7 @@ class StableDiffusion:
|
|
| 604 |
extra_kwargs["generator"] = generator
|
| 605 |
if nmask.sum() < 1 and enable_img2img:
|
| 606 |
init_image = Image.fromarray(img)
|
| 607 |
-
|
| 608 |
images = img2img(
|
| 609 |
prompt=prompt,
|
| 610 |
init_image=init_image.resize(
|
|
@@ -631,7 +638,7 @@ class StableDiffusion:
|
|
| 631 |
init_image = Image.fromarray(img)
|
| 632 |
mask_image = Image.fromarray(mask)
|
| 633 |
# mask_image=mask_image.filter(ImageFilter.GaussianBlur(radius = 8))
|
| 634 |
-
|
| 635 |
input_image = init_image.resize(
|
| 636 |
(process_width, process_height), resample=SAMPLING_MODE
|
| 637 |
)
|
|
@@ -645,7 +652,7 @@ class StableDiffusion:
|
|
| 645 |
**extra_kwargs,
|
| 646 |
)["images"]
|
| 647 |
else:
|
| 648 |
-
|
| 649 |
images = text2img(
|
| 650 |
prompt=prompt,
|
| 651 |
height=process_width,
|
|
|
|
| 16 |
DDIMScheduler,
|
| 17 |
LMSDiscreteScheduler,
|
| 18 |
)
|
| 19 |
+
from diffusers.models import AutoencoderKL
|
| 20 |
from PIL import Image
|
| 21 |
from PIL import ImageOps
|
| 22 |
import gradio as gr
|
|
|
|
| 74 |
else:
|
| 75 |
device = "cpu"
|
| 76 |
|
| 77 |
+
import contextlib
|
|
|
|
| 78 |
|
| 79 |
+
autocast = contextlib.nullcontext
|
| 80 |
|
| 81 |
with open("config.yaml", "r") as yaml_in:
|
| 82 |
yaml_object = yaml.safe_load(yaml_in)
|
|
|
|
| 258 |
model_name = os.path.dirname(model_path)
|
| 259 |
else:
|
| 260 |
model_name = model_path
|
| 261 |
+
vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse")
|
| 262 |
+
vae.to(torch.float16)
|
| 263 |
if original_checkpoint:
|
| 264 |
print(f"Converting & Loading {model_path}")
|
| 265 |
from convert_checkpoint import convert_checkpoint
|
| 266 |
|
| 267 |
pipe = convert_checkpoint(model_path, inpainting=True)
|
| 268 |
+
if device == "cuda":
|
| 269 |
pipe.to(torch.float16)
|
| 270 |
inpaint = StableDiffusionInpaintPipeline(
|
| 271 |
+
vae=vae,
|
| 272 |
text_encoder=pipe.text_encoder,
|
| 273 |
tokenizer=pipe.tokenizer,
|
| 274 |
unet=pipe.unet,
|
|
|
|
| 278 |
)
|
| 279 |
else:
|
| 280 |
print(f"Loading {model_name}")
|
| 281 |
+
if device == "cuda":
|
| 282 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
| 283 |
model_name,
|
| 284 |
revision="fp16",
|
| 285 |
torch_dtype=torch.float16,
|
| 286 |
use_auth_token=token,
|
| 287 |
+
vae=vae
|
| 288 |
)
|
| 289 |
else:
|
| 290 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
|
|
|
| 388 |
init_image = Image.fromarray(img)
|
| 389 |
mask_image = Image.fromarray(mask)
|
| 390 |
# mask_image=mask_image.filter(ImageFilter.GaussianBlur(radius = 8))
|
| 391 |
+
if True:
|
| 392 |
images = inpaint_func(
|
| 393 |
prompt=prompt,
|
| 394 |
image=init_image.resize(
|
|
|
|
| 413 |
):
|
| 414 |
self.token = token
|
| 415 |
original_checkpoint = False
|
| 416 |
+
vae = AutoencoderKL.from_pretrained("stabilityai/sd-vae-ft-mse")
|
| 417 |
+
vae.to(torch.float16)
|
| 418 |
if model_path and os.path.exists(model_path):
|
| 419 |
if model_path.endswith(".ckpt"):
|
| 420 |
original_checkpoint = True
|
|
|
|
| 437 |
revision="fp16",
|
| 438 |
torch_dtype=torch.float16,
|
| 439 |
use_auth_token=token,
|
| 440 |
+
vae=vae
|
| 441 |
)
|
| 442 |
else:
|
| 443 |
text2img = StableDiffusionPipeline.from_pretrained(
|
|
|
|
| 455 |
import gc
|
| 456 |
|
| 457 |
gc.collect()
|
| 458 |
+
if device == "cuda":
|
| 459 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
| 460 |
"runwayml/stable-diffusion-inpainting",
|
| 461 |
revision="fp16",
|
| 462 |
torch_dtype=torch.float16,
|
| 463 |
use_auth_token=token,
|
| 464 |
+
vae=vae
|
| 465 |
).to(device)
|
| 466 |
else:
|
| 467 |
inpaint = StableDiffusionInpaintPipeline.from_pretrained(
|
|
|
|
| 611 |
extra_kwargs["generator"] = generator
|
| 612 |
if nmask.sum() < 1 and enable_img2img:
|
| 613 |
init_image = Image.fromarray(img)
|
| 614 |
+
if True:
|
| 615 |
images = img2img(
|
| 616 |
prompt=prompt,
|
| 617 |
init_image=init_image.resize(
|
|
|
|
| 638 |
init_image = Image.fromarray(img)
|
| 639 |
mask_image = Image.fromarray(mask)
|
| 640 |
# mask_image=mask_image.filter(ImageFilter.GaussianBlur(radius = 8))
|
| 641 |
+
if True:
|
| 642 |
input_image = init_image.resize(
|
| 643 |
(process_width, process_height), resample=SAMPLING_MODE
|
| 644 |
)
|
|
|
|
| 652 |
**extra_kwargs,
|
| 653 |
)["images"]
|
| 654 |
else:
|
| 655 |
+
if True:
|
| 656 |
images = text2img(
|
| 657 |
prompt=prompt,
|
| 658 |
height=process_width,
|