williamberman's picture
up
22175fc
import gradio as gr
import torch
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
use_cuda = torch.cuda.is_available()
if use_cuda:
dtype = torch.float16
else:
dtype = torch.float32
controlnet = ControlNetModel.from_pretrained(
"williamberman/controlnet-fill50k",
torch_dtype=dtype
)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5",
controlnet=controlnet,
safety_checker=None,
torch_dtype=dtype
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
if use_cuda:
pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
def inference(prompt, image, seed=-1):
if seed == -1:
generator = None
else:
generator = torch.Generator().manual_seed(seed)
image = pipe(prompt, image, num_inference_steps=20, generator=generator).images[0]
return image
io = gr.Interface(
inference,
inputs = [
gr.Textbox(lines=3, label="Prompt"),
gr.Image(label="Controlnet conditioning", type="pil"),
gr.Number(-1, label="Seed", precision=0),
],
outputs=[
gr.Image(type="pil"),
],
examples=[
["red circle with blue background", "images/0.png", 0],
["cyan circle with brown floral background", "images/1.png", 0],
["light coral circle with white background", "images/2.png", 0],
["cornflower blue circle with light golden rod yellow background", "images/3.png", 0],
["light slate gray circle with blue background", "images/4.png", 0],
["light golden rod yellow circle with turquoise background", "images/5.png", 0],
],
title="fill50k controlnet",
cache_examples=True,
)
io.launch()