Spaces:
Running
on
Zero
Running
on
Zero
File size: 6,601 Bytes
2798842 7d0aa8d 2798842 c576577 2798842 879dd6d 2798842 6e8c022 2798842 |
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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 |
#!/usr/bin/env python
import spaces
import gradio as gr
def create_demo(process):
with gr.Blocks() as demo:
gr.Markdown("## BRIA 2.2 ControlNet Canny")
gr.HTML('''
<p style="margin-bottom: 10px; font-size: 94%">
This is a demo for ControlNet Canny that using
<a href="https://huggingface.co/briaai/BRIA-2.2" target="_blank">BRIA 2.2 text-to-image model</a> as backbone.
Trained on licensed data, BRIA 2.2 provide full legal liability coverage for copyright and privacy infringement.
</p>
''')
with gr.Row():
with gr.Column():
input_image = gr.Image(sources=None, type="pil") # None for upload, ctrl+v and webcam
prompt = gr.Textbox(label="Prompt")
negative_prompt = gr.Textbox(label="Negative prompt", value="Logo,Watermark,Text,Ugly,Morbid,Extra fingers,Poorly drawn hands,Mutation,Blurry,Extra limbs,Gross proportions,Missing arms,Mutated hands,Long neck,Duplicate,Mutilated,Mutilated hands,Poorly drawn face,Deformed,Bad anatomy,Cloned face,Malformed limbs,Missing legs,Too many fingers")
num_steps = gr.Slider(label="Number of steps", minimum=25, maximum=100, value=50, step=1)
controlnet_conditioning_scale = gr.Slider(label="ControlNet conditioning scale", minimum=0.1, maximum=2.0, value=1.0, step=0.05)
seed = gr.Slider(label="Seed", minimum=0, maximum=2147483647, step=1, randomize=True,)
run_button = gr.Button(value="Run")
with gr.Column():
result_gallery = gr.Gallery(label='Output', show_label=False, elem_id="gallery", columns=[2], height='auto')
inputs = [input_image, prompt, negative_prompt, num_steps, controlnet_conditioning_scale, seed]
run_button.click(
fn=process,
inputs=inputs,
outputs=result_gallery,
api_name="canny",
)
return demo
if __name__ == "__main__":
from model import Model
model = Model(task_name="Canny")
demo = create_demo(model.process_canny)
demo.queue().launch()
################################################################################################################################
# from diffusers import ControlNetModel, StableDiffusionXLControlNetPipeline, AutoencoderKL, EulerAncestralDiscreteScheduler
# from diffusers.utils import load_image
# from PIL import Image
# import torch
# import numpy as np
# import cv2
# import gradio as gr
# from torchvision import transforms
# controlnet = ControlNetModel.from_pretrained(
# "briaai/BRIA-2.2-ControlNet-Canny",
# torch_dtype=torch.float16
# ).to('cuda')
# pipe = StableDiffusionXLControlNetPipeline.from_pretrained(
# "briaai/BRIA-2.2",
# controlnet=controlnet,
# torch_dtype=torch.float16,
# device_map='auto',
# low_cpu_mem_usage=True,
# offload_state_dict=True,
# ).to('cuda')
# pipe.scheduler = EulerAncestralDiscreteScheduler(
# beta_start=0.00085,
# beta_end=0.012,
# beta_schedule="scaled_linear",
# num_train_timesteps=1000,
# steps_offset=1
# )
# # pipe.enable_freeu(b1=1.1, b2=1.1, s1=0.5, s2=0.7)
# pipe.enable_xformers_memory_efficient_attention()
# pipe.force_zeros_for_empty_prompt = False
# low_threshold = 100
# high_threshold = 200
# def resize_image(image):
# image = image.convert('RGB')
# current_size = image.size
# if current_size[0] > current_size[1]:
# center_cropped_image = transforms.functional.center_crop(image, (current_size[1], current_size[1]))
# else:
# center_cropped_image = transforms.functional.center_crop(image, (current_size[0], current_size[0]))
# resized_image = transforms.functional.resize(center_cropped_image, (1024, 1024))
# return resized_image
# def get_canny_filter(image):
# if not isinstance(image, np.ndarray):
# image = np.array(image)
# image = cv2.Canny(image, low_threshold, high_threshold)
# image = image[:, :, None]
# image = np.concatenate([image, image, image], axis=2)
# canny_image = Image.fromarray(image)
# return canny_image
# def process(input_image, prompt, negative_prompt, num_steps, controlnet_conditioning_scale, seed):
# generator = torch.manual_seed(seed)
# # resize input_image to 1024x1024
# input_image = resize_image(input_image)
# canny_image = get_canny_filter(input_image)
# images = pipe(
# prompt, negative_prompt=negative_prompt, image=canny_image, num_inference_steps=num_steps, controlnet_conditioning_scale=float(controlnet_conditioning_scale),
# generator=generator,
# ).images
# return [canny_image,images[0]]
# block = gr.Blocks().queue()
# with block:
# gr.Markdown("## BRIA 2.2 ControlNet Canny")
# gr.HTML('''
# <p style="margin-bottom: 10px; font-size: 94%">
# This is a demo for ControlNet Canny that using
# <a href="https://huggingface.co/briaai/BRIA-2.2" target="_blank">BRIA 2.2 text-to-image model</a> as backbone.
# Trained on licensed data, BRIA 2.2 provide full legal liability coverage for copyright and privacy infringement.
# </p>
# ''')
# with gr.Row():
# with gr.Column():
# input_image = gr.Image(sources=None, type="pil") # None for upload, ctrl+v and webcam
# prompt = gr.Textbox(label="Prompt")
# negative_prompt = gr.Textbox(label="Negative prompt", value="Logo,Watermark,Text,Ugly,Morbid,Extra fingers,Poorly drawn hands,Mutation,Blurry,Extra limbs,Gross proportions,Missing arms,Mutated hands,Long neck,Duplicate,Mutilated,Mutilated hands,Poorly drawn face,Deformed,Bad anatomy,Cloned face,Malformed limbs,Missing legs,Too many fingers")
# num_steps = gr.Slider(label="Number of steps", minimum=25, maximum=100, value=50, step=1)
# controlnet_conditioning_scale = gr.Slider(label="ControlNet conditioning scale", minimum=0.1, maximum=2.0, value=1.0, step=0.05)
# seed = gr.Slider(label="Seed", minimum=0, maximum=2147483647, step=1, randomize=True,)
# run_button = gr.Button(value="Run")
# with gr.Column():
# result_gallery = gr.Gallery(label='Output', show_label=False, elem_id="gallery", columns=[2], height='auto')
# ips = [input_image, prompt, negative_prompt, num_steps, controlnet_conditioning_scale, seed]
# run_button.click(fn=process, inputs=ips, outputs=[result_gallery])
# block.launch(debug = True) |