Spaces:
Runtime error
Runtime error
File size: 3,548 Bytes
5416a13 5d39493 5416a13 5d39493 5416a13 5d39493 5416a13 5d39493 5416a13 5d39493 5416a13 5d39493 5416a13 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
from PIL import Image
import gradio as gr
from diffusers import StableDiffusionControlNetPipeline, ControlNetModel, UniPCMultistepScheduler
import torch
controlnet = ControlNetModel.from_pretrained("ioclab/control_v1p_sd15_brightness", torch_dtype=torch.float32, use_safetensors=True)
pipe = StableDiffusionControlNetPipeline.from_pretrained(
"runwayml/stable-diffusion-v1-5", controlnet=controlnet, torch_dtype=torch.float32,
)
pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config)
# pipe.enable_xformers_memory_efficient_attention()
pipe.enable_model_cpu_offload()
def infer(prompt, negative_prompt, conditioning_image, num_inference_steps, size, guidance_scale, seed):
conditioning_image = Image.fromarray(conditioning_image)
conditioning_image = conditioning_image.convert('L')
generator = torch.Generator(device="cpu").manual_seed(seed)
output_image = pipe(
prompt,
conditioning_image,
height=size,
width=size,
num_inference_steps=num_inference_steps,
generator=generator,
negative_prompt=negative_prompt,
guidance_scale=guidance_scale,
controlnet_conditioning_scale=1.0,
).images[0]
return output_image
with gr.Blocks() as demo:
gr.Markdown(
"""
# ControlNet on Brightness
This is a demo on ControlNet based on brightness.
""")
with gr.Row():
with gr.Column():
prompt = gr.Textbox(
label="Prompt",
)
negative_prompt = gr.Textbox(
label="Negative Prompt",
)
conditioning_image = gr.Image(
label="Conditioning Image",
)
with gr.Accordion('Advanced options', open=False):
with gr.Row():
num_inference_steps = gr.Slider(
10, 40, 20,
step=1,
label="Steps",
)
size = gr.Slider(
256, 768, 512,
step=128,
label="Size",
)
with gr.Row():
guidance_scale = gr.Slider(
label='Guidance Scale',
minimum=0.1,
maximum=30.0,
value=7.0,
step=0.1
)
seed = gr.Slider(
label='Seed',
minimum=-1,
maximum=2147483647,
step=1,
randomize=True
)
submit_btn = gr.Button(
value="Submit",
variant="primary"
)
with gr.Column(min_width=300):
output = gr.Image(
label="Result",
)
submit_btn.click(
fn=infer,
inputs=[
prompt, negative_prompt, conditioning_image, num_inference_steps, size, guidance_scale, seed
],
outputs=output
)
gr.Examples(
examples=[
["a painting of a village in the mountains", "monochrome", "./conditioning_images/conditioning_image_1.jpg"],
["three people walking in an alleyway with hats and pants", "monochrome", "./conditioning_images/conditioning_image_2.jpg"],
],
inputs=[
prompt, negative_prompt, conditioning_image
],
)
demo.launch() |