#!/usr/bin/env python from __future__ import annotations import gradio as gr import torch from app_depth import create_demo as create_demo_depth from model import Model from settings import ALLOW_CHANGING_BASE_MODEL, DEFAULT_MODEL_ID, SHOW_DUPLICATE_BUTTON DESCRIPTION = "# ControlNet v1.1" if not torch.cuda.is_available(): DESCRIPTION += "\n

Running on CPU 🥶 This demo does not work on CPU.

" model = Model(base_model_id=DEFAULT_MODEL_ID, task_name="Canny") with gr.Blocks(css="style.css") as demo: gr.Markdown(DESCRIPTION) gr.Button( "Duplicate Space for private use", elem_id="duplicate-button", visible=SHOW_DUPLICATE_BUTTON, ) # Define the inputs and outputs for the interface depth_inputs = [ gr.Image(type="numpy", label="Input Image"), gr.Textbox(label="Prompt"), gr.Textbox(label="Additional Prompt"), gr.Textbox(label="Negative Prompt"), gr.Slider(label="Number of Images", minimum=1, maximum=10, step=1, value=1), gr.Slider(label="Image Resolution", minimum=256, maximum=1024, step=256, value=512), gr.Slider(label="Preprocess Resolution", minimum=128, maximum=512, step=1, value=384), gr.Slider(label="Number of Steps", minimum=1, maximum=100, step=1, value=20), gr.Slider(label="Guidance Scale", minimum=0.1, maximum=30.0, step=0.1, value=7.5), gr.Slider(label="Seed", minimum=0, maximum=1000000, step=1, value=0), gr.Radio(label="Preprocessor", choices=["Midas", "DPT", "None"], value="DPT"), ] depth_outputs = [ gr.Gallery(label="Output Images"), ] interfaces = [ gr.Interface(fn=model.process_depth, inputs=depth_inputs, outputs=depth_outputs, live=False), ] gr.TabbedInterface(interface_list=interfaces, tab_names=["Depth"]) with gr.Accordion(label="Base model", open=False): with gr.Row(): with gr.Column(scale=5): current_base_model = gr.Textbox(label="Current base model") with gr.Column(scale=1): check_base_model_button = gr.Button("Check current base model") with gr.Row(): with gr.Column(scale=5): new_base_model_id = gr.Textbox( label="New base model", max_lines=1, placeholder="runwayml/stable-diffusion-v1-5", info="The base model must be compatible with Stable Diffusion v1.5.", interactive=ALLOW_CHANGING_BASE_MODEL, ) with gr.Column(scale=1): change_base_model_button = gr.Button("Change base model", interactive=ALLOW_CHANGING_BASE_MODEL) if not ALLOW_CHANGING_BASE_MODEL: gr.Markdown( """The base model is not allowed to be changed in this Space so as not to slow down the demo, but it can be changed if you duplicate the Space.""" ) check_base_model_button.click( fn=lambda: model.base_model_id, outputs=current_base_model, queue=False, api_name="check_base_model", ) gr.update( triggers=[new_base_model_id.submit, change_base_model_button.click], fn=model.set_base_model, inputs=new_base_model_id, outputs=current_base_model, api_name=False, ) if __name__ == "__main__": demo.queue(max_size=20).launch()