hysts/ControlNet
993
1# This file is adapted from https://github.com/lllyasviel/ControlNet/blob/f4748e3630d8141d7765e2bd9b1e348f47847707/gradio_canny2image.py2# The original license file is LICENSE.ControlNet in this repo.3import gradio as gr4 5 6def create_demo(process, max_images=12, default_num_images=3):7 with gr.Blocks() as demo:8 with gr.Row():9 gr.Markdown('## Control Stable Diffusion with Canny Edge Maps')10 with gr.Row():11 with gr.Column():12 input_image = gr.Image(source='upload', type='numpy')13 prompt = gr.Textbox(label='Prompt')14 run_button = gr.Button(label='Run')15 with gr.Accordion('Advanced options', open=False):16 num_samples = gr.Slider(label='Images',17 minimum=1,18 maximum=max_images,19 value=default_num_images,20 step=1)21 image_resolution = gr.Slider(label='Image Resolution',22 minimum=256,23 maximum=512,24 value=512,25 step=256)26 canny_low_threshold = gr.Slider(27 label='Canny low threshold',28 minimum=1,29 maximum=255,30 value=100,31 step=1)32 canny_high_threshold = gr.Slider(33 label='Canny high threshold',34 minimum=1,35 maximum=255,36 value=200,37 step=1)38 num_steps = gr.Slider(label='Steps',39 minimum=1,40 maximum=100,41 value=20,42 step=1)43 guidance_scale = gr.Slider(label='Guidance Scale',44 minimum=0.1,45 maximum=30.0,46 value=9.0,47 step=0.1)48 seed = gr.Slider(label='Seed',49 minimum=-1,50 maximum=2147483647,51 step=1,52 randomize=True)53 a_prompt = gr.Textbox(54 label='Added Prompt',55 value='best quality, extremely detailed')56 n_prompt = gr.Textbox(57 label='Negative Prompt',58 value=59 'longbody, lowres, bad anatomy, bad hands, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality'60 )61 with gr.Column():62 result = gr.Gallery(label='Output',63 show_label=False,64 elem_id='gallery').style(grid=2,65 height='auto')66 inputs = [67 input_image,68 prompt,69 a_prompt,70 n_prompt,71 num_samples,72 image_resolution,73 num_steps,74 guidance_scale,75 seed,76 canny_low_threshold,77 canny_high_threshold,78 ]79 prompt.submit(fn=process, inputs=inputs, outputs=result)80 run_button.click(fn=process,81 inputs=inputs,82 outputs=result,83 api_name='canny')84 return demo85 86 87if __name__ == '__main__':88 from model import Model89 model = Model()90 demo = create_demo(model.process_canny)91 demo.queue().launch()92 