Editing-Tools / image_inpainting.py
ahmedghani's picture
added more tools
c92867b
import os
import torch
from PIL import Image
from diffusers import StableDiffusionInpaintPipeline
from diffusers import AutoencoderKL
device = "cuda" if torch.cuda.is_available() else "cpu"
pipe = StableDiffusionInpaintPipeline.from_pretrained("stabilityai/stable-diffusion-2-inpainting",
torch_dtype=torch.float16,
revision="fp16",
vae=AutoencoderKL.from_pretrained(
"stabilityai/sd-vae-ft-mse",
torch_dtype=torch.float16
).to(device)
).to(device)
pipe.enable_xformers_memory_efficient_attention()
os.makedirs("inpainting_output", exist_ok=True)
def inpaint(inputs, prompt):
image = inputs["image"].resize((image.size[0] - image.size[0] % 64, image.size[1] - image.size[1] % 64), Image.ANTIALIAS)
mask = inputs["mask"].resize((mask.size[0] - mask.size[0] % 64, mask.size[1] - mask.size[1] % 64), Image.ANTIALIAS)
output = pipe(prompt=prompt, image=image, mask_image=mask, guidance_scale=7.5, height=image.size[1], width=image.size[0])
output.images[0].save(f"inpainting_output/output.png")
return output.images[0], "inpainting_output/output.png"