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() | |