ImageProcessor / app.py
Huang
app.py
792cb24
raw
history blame
5.82 kB
import importlib
import os
import gradio as gr
from annotator.util import resize_image, HWC3
config = {
"canny": "CannyDetector",
"hed": "HedDetector",
"mlsd": "MLSDProcessor",
"midas": "MidasProcessor",
"openpose": "OpenposeDetector",
"uniformer": "UniformerDetector"
}
package_annotator = "annotator"
def process_image(cls: str, img, res, *kwargs):
img = resize_image(HWC3(img), res)
# load_model()
module_imp = importlib.import_module(package_annotator)
model = getattr(module_imp, cls)
image_processor = model()
result = image_processor(img, *kwargs)
if type(result) == tuple:
return result
return [result]
def process(cls):
def process_fc(img, res, *args):
return process_image(cls, img, res, *args)
return process_fc
block = gr.Blocks().queue()
examples = [os.path.join(os.path.dirname(__file__), "examples/demo.jpeg")]
with block:
with gr.Tab("Canny Edge"):
with gr.Row():
gr.Markdown("## Canny Edge")
with gr.Row():
with gr.Column():
input_image = gr.Image(source='upload', type="numpy")
low_threshold = gr.Slider(label="low_threshold", minimum=1, maximum=255, value=100, step=1)
high_threshold = gr.Slider(label="high_threshold", minimum=1, maximum=255, value=200, step=1)
resolution = gr.Slider(label="resolution", minimum=256, maximum=1024, value=512, step=64)
run_button = gr.Button(label="Run")
gr.Examples(examples, input_image)
with gr.Column():
gallery = gr.Gallery(label="Generated images", show_label=False).style(height="auto")
run_button.click(fn=process(config["canny"]), inputs=[input_image, resolution, low_threshold, high_threshold],
outputs=[gallery])
with gr.Tab("HED Edge"):
with gr.Row():
gr.Markdown("## HED Edge")
with gr.Row():
with gr.Column():
input_image = gr.Image(source='upload', type="numpy")
resolution = gr.Slider(label="resolution", minimum=256, maximum=1024, value=512, step=64)
run_button = gr.Button(label="Run")
gr.Examples(examples, input_image)
with gr.Column():
gallery = gr.Gallery(label="Generated images", show_label=False).style(height="auto")
run_button.click(fn=process(config["hed"]), inputs=[input_image, resolution], outputs=[gallery])
with gr.Tab("MLSD Edge"):
with gr.Row():
gr.Markdown("## MLSD Edge")
with gr.Row():
with gr.Column():
input_image = gr.Image(source='upload', type="numpy")
value_threshold = gr.Slider(label="value_threshold", minimum=0.01, maximum=2.0, value=0.1, step=0.01)
distance_threshold = gr.Slider(label="distance_threshold", minimum=0.01, maximum=20.0, value=0.1,
step=0.01)
resolution = gr.Slider(label="resolution", minimum=256, maximum=1024, value=384, step=64)
run_button = gr.Button(label="Run")
gr.Examples(examples, input_image)
with gr.Column():
gallery = gr.Gallery(label="Generated images", show_label=False).style(height="auto")
run_button.click(fn=process(config["mlsd"]),
inputs=[input_image, resolution, value_threshold, distance_threshold],
outputs=[gallery])
with gr.Tab("MIDAS Depth and Normal"):
with gr.Row():
gr.Markdown("## MIDAS Depth and Normal")
with gr.Row():
with gr.Column():
input_image = gr.Image(source='upload', type="numpy")
alpha = gr.Slider(label="alpha", minimum=0.1, maximum=20.0, value=6.2, step=0.01)
resolution = gr.Slider(label="resolution", minimum=256, maximum=1024, value=384, step=64)
run_button = gr.Button(label="Run")
gr.Examples(examples, input_image)
with gr.Column():
gallery = gr.Gallery(label="Generated images", show_label=False).style(height="auto")
run_button.click(fn=process(config["midas"]), inputs=[input_image, resolution, alpha], outputs=[gallery])
with gr.Tab("Openpose"):
with gr.Row():
gr.Markdown("## Openpose")
with gr.Row():
with gr.Column():
input_image = gr.Image(source='upload', type="numpy")
hand = gr.Checkbox(label='detect hand', value=False)
resolution = gr.Slider(label="resolution", minimum=256, maximum=1024, value=512, step=64)
run_button = gr.Button(label="Run")
gr.Examples(examples, input_image)
with gr.Column():
gallery = gr.Gallery(label="Generated images", show_label=False).style(height="auto")
run_button.click(fn=process(config["openpose"]), inputs=[input_image, resolution, hand], outputs=[gallery])
with gr.Tab("Uniformer Segmentation"):
with gr.Row():
gr.Markdown("## Uniformer Segmentation")
with gr.Row():
with gr.Column():
input_image = gr.Image(source='upload', type="numpy")
resolution = gr.Slider(label="resolution", minimum=256, maximum=1024, value=512, step=64)
run_button = gr.Button(label="Run")
gr.Examples(examples, input_image)
with gr.Column():
gallery = gr.Gallery(label="Generated images", show_label=False).style(height="auto")
run_button.click(fn=process(config["uniformer"]), inputs=[input_image, resolution], outputs=[gallery])
block.launch()