File size: 3,784 Bytes
c416731 d309125 c416731 075612c c416731 9972695 c416731 9972695 c416731 d309125 c416731 9972695 c416731 9972695 c416731 d309125 c416731 9972695 c416731 d309125 9972695 075612c d309125 c416731 9972695 c416731 9972695 075612c 9972695 075612c 5a4cb69 075612c 9972695 c416731 d309125 c416731 5a4cb69 c416731 9972695 c416731 9655a3b |
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 |
import gradio as gr
import os
import subprocess
from gradio_app.project_info import (
CONTENT_DESCRIPTION,
TITLE, WARNING_1,
CONTENT_IN_1, CONTENT_IN_2,
CONTENT_OUT_1, CONTENT_OUT_2
)
from gradio_app.inference import run_inference
from gradio_app.examples import load_examples, select_example
def run_setup_script():
setup_script = os.path.join(os.path.dirname(__file__),
"gradio_app", "setup_scripts.py")
try:
result = subprocess.run(["python", setup_script], capture_output=True, text=True, check=True)
return result.stdout
except subprocess.CalledProcessError as e:
print(f"Setup script failed with error: {e.stderr}")
return f"Setup script failed: {e.stderr}"
def stop_demo(demo):
"""Stop the Gradio demo."""
demo.close()
return "Demo stopped"
def create_gui():
# Load custom CSS
custom_css = open("apps/gradio_app/static/styles.css").read()
# JavaScript function to update warning_text Markdown component
outer_scale_warning = open("apps/gradio_app/static/outer_scale_warning.js").read()
# Define Gradio interface
with gr.Blocks(css=custom_css) as demo:
gr.Markdown(TITLE)
gr.Markdown(CONTENT_DESCRIPTION)
gr.Markdown(CONTENT_IN_1)
gr.HTML(CONTENT_IN_2)
with gr.Row():
with gr.Column(scale=2):
input_image = gr.Image(
type="filepath",
label="Input Image",
elem_classes="input-image"
)
model_id = gr.Textbox(
label="Model ID",
value="danhtran2mind/Real-ESRGAN-Anime-finetuning"
)
outer_scale = gr.Slider(
minimum=1,
maximum=8,
step=1,
value=2,
label="Outer Scale",
elem_id="outer-scale-slider"
)
warning_text = gr.HTML(elem_id="warning-text")
gr.Markdown(WARNING_1)
examples_data = load_examples()
submit_button = gr.Button("Generate Images", elem_classes="submit-btn")
stop_button = gr.Button("Stop Application", elem_classes="stop-btn")
with gr.Column(scale=3):
output_image = gr.Image(
label="Output Image",
elem_classes="output-image"
)
output_text = gr.Textbox(label="Status")
# Client-side warning update for warning_text
outer_scale.change(
fn=lambda x: x,
inputs=outer_scale,
outputs=outer_scale,
js=outer_scale_warning
)
gr.Examples(
examples=[[input_img, output_img, outer_scale] for input_img, output_img, outer_scale in examples_data],
inputs=[input_image, output_image, outer_scale],
label="Example Inputs",
examples_per_page=4,
cache_examples=False,
fn=select_example,
outputs=[input_image, outer_scale, output_image, output_text]
)
submit_button.click(
fn=run_inference,
inputs=[input_image, model_id, outer_scale],
outputs=[output_image, output_text]
)
stop_button.click(
fn=stop_demo,
inputs=[demo],
outputs=[output_text]
)
gr.HTML(CONTENT_OUT_1)
gr.HTML(CONTENT_OUT_2)
return demo
if __name__ == "__main__":
run_setup_script()
demo = create_gui()
demo.launch(debug=True) |