Spaces:
Runtime error
Runtime error
import gradio as gr | |
from preprocessor import Preprocessor | |
# Initialize Preprocessor | |
preprocessor = Preprocessor() | |
# Define processing function with extended options | |
def process_image(image, preprocessor_name, preprocess_resolution=None, mlsd_value_threshold=None, mlsd_distance_threshold=None, canny_low_threshold=None, canny_high_threshold=None): | |
preprocessor.load(preprocessor_name) | |
kwargs = {} | |
if preprocess_resolution: | |
kwargs['preprocess_resolution'] = preprocess_resolution | |
if mlsd_value_threshold and preprocessor_name == "MLSD": | |
kwargs['mlsd_value_threshold'] = mlsd_value_threshold | |
if mlsd_distance_threshold and preprocessor_name == "MLSD": | |
kwargs['mlsd_distance_threshold'] = mlsd_distance_threshold | |
if canny_low_threshold and preprocessor_name == "Canny": | |
kwargs['canny_low_threshold'] = canny_low_threshold | |
if canny_high_threshold and preprocessor_name == "Canny": | |
kwargs['canny_high_threshold'] = canny_high_threshold | |
return preprocessor(image, **kwargs) | |
# UI creation with segmentation options | |
def create_ui(): | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
image_input = gr.Image(type="pil") | |
preprocessor_dropdown = gr.Dropdown(choices=["ContentShuffle", "Openpose", "Midas", "MLSD", "Canny", "Lineart", "DPT", "UPerNet", "HED", "PidiNet"], label="Preprocessor") | |
preprocess_resolution = gr.Slider(128, 512, step=1, label="Preprocess Resolution", visible=False) | |
# Additional options for MLSD and Canny | |
mlsd_value_threshold = gr.Slider(0.01, 2.0, step=0.01, label="MLSD Value Threshold", visible=False) | |
mlsd_distance_threshold = gr.Slider(0.01, 20.0, step=0.01, label="MLSD Distance Threshold", visible=False) | |
canny_low_threshold = gr.Slider(1, 255, step=1, label="Canny Low Threshold", visible=False) | |
canny_high_threshold = gr.Slider(1, 255, step=1, label="Canny High Threshold", visible=False) | |
submit_button = gr.Button("Process") | |
result_image = gr.Image(label="Processed Image") | |
def update_options(preprocessor_name): | |
# Update visibility based on preprocessor choice | |
options_visibility = { | |
'preprocess_resolution': preprocessor_name in ["Openpose", "Midas", "MLSD", "Lineart", "DPT", "UPerNet", "HED", "PidiNet"], | |
'mlsd_value_threshold': preprocessor_name == "MLSD", | |
'mlsd_distance_threshold': preprocessor_name == "MLSD", | |
'canny_low_threshold': preprocessor_name == "Canny", | |
'canny_high_threshold': preprocessor_name == "Canny", | |
} | |
return list(options_visibility.values()) | |
preprocessor_dropdown.change(fn=update_options, inputs=[preprocessor_dropdown], outputs=[preprocess_resolution, mlsd_value_threshold, mlsd_distance_threshold, canny_low_threshold, canny_high_threshold]) | |
submit_button.click(fn=process_image, inputs=[image_input, preprocessor_dropdown, preprocess_resolution, mlsd_value_threshold, mlsd_distance_threshold, canny_low_threshold, canny_high_threshold], outputs=[result_image]) | |
return demo | |
if __name__ == "__main__": | |
create_ui().launch() | |