File size: 3,737 Bytes
c416731 075612c c416731 9972695 c416731 9972695 c416731 9972695 c416731 9972695 c416731 9972695 c416731 9972695 c416731 9972695 075612c f94b901 9972695 c416731 9972695 c416731 9972695 075612c 9972695 075612c 5a4cb69 075612c 9972695 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 |
import gradio as gr
import os
import subprocess
from gradio_app.project_info import (
CONTENT_DESCRIPTION,
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 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("# Anime Super Resolution 🖼️")
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(
"**Note:** For optimal output quality, set `Outer Scale` to a value between 1 and 4. "
"**Values greater than 4 are not recommended**. "
"Please ensure `Outer Scale` is greater than or equal to `Inner Scale` (default: 4)."
)
examples_data = load_examples()
submit_button = gr.Button("Run Inference")
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]
)
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) |