Team Ai
Apppublic

hysts/ControlNet

sourceHugging Facemitupdated 3y agoView on Hugging Face
993likes
app_canny.py92 linesDownload Raw Back to root
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