| import spaces |
| import gradio as gr |
| from stablepy import Preprocessor |
|
|
| PREPROCESSOR_TASKS_LIST = [ |
| "Canny", |
| "Openpose", |
| "DPT", |
| "Midas", |
| "ZoeDepth", |
| "DepthAnything", |
| "HED", |
| "PidiNet", |
| "TEED", |
| "Lineart", |
| "LineartAnime", |
| "Anyline", |
| "Lineart standard", |
| "SegFormer", |
| "UPerNet", |
| "ContentShuffle", |
| "Recolor", |
| "Blur", |
| "MLSD", |
| "NormalBae", |
| ] |
|
|
| preprocessor = Preprocessor() |
|
|
|
|
| def process_inputs( |
| image, |
| name, |
| resolution, |
| precessor_resolution, |
| low_threshold, |
| high_threshold, |
| value_threshod, |
| distance_threshold, |
| recolor_mode, |
| recolor_gamma_correction, |
| blur_k_size, |
| pre_openpose_extra, |
| hed_scribble, |
| pre_pidinet_safe, |
| pre_lineart_coarse, |
| use_cuda, |
| ): |
| if not image: |
| raise ValueError("To use this, simply upload an image.") |
|
|
| preprocessor.load(name, False) |
|
|
| params = dict( |
| image_resolution=resolution, |
| detect_resolution=precessor_resolution, |
| low_threshold=low_threshold, |
| high_threshold=high_threshold, |
| thr_v=value_threshod, |
| thr_d=distance_threshold, |
| mode=recolor_mode, |
| gamma_correction=recolor_gamma_correction, |
| blur_sigma=blur_k_size, |
| hand_and_face=pre_openpose_extra, |
| scribble=hed_scribble, |
| safe=pre_pidinet_safe, |
| coarse=pre_lineart_coarse, |
| ) |
|
|
| if use_cuda: |
| @spaces.GPU(duration=15) |
| def wrapped_func(): |
| preprocessor.to("cuda") |
| return preprocessor(image, **params) |
| return wrapped_func() |
|
|
| return preprocessor(image, **params) |
|
|
|
|
| def preprocessor_tab(): |
| with gr.Row(): |
| with gr.Column(): |
| pre_image = gr.Image(label="Image", type="pil", sources=["upload"]) |
| pre_options = gr.Dropdown(label="Preprocessor", choices=PREPROCESSOR_TASKS_LIST, value=PREPROCESSOR_TASKS_LIST[0]) |
| pre_img_resolution = gr.Slider( |
| minimum=64, maximum=4096, step=64, value=1024, label="Image Resolution", |
| info="The maximum proportional size of the generated image based on the uploaded image." |
| ) |
| pre_start = gr.Button(value="PROCESS IMAGE", variant="primary") |
| with gr.Accordion("Advanced Settings", open=False): |
| with gr.Column(): |
| pre_processor_resolution = gr.Slider(minimum=64, maximum=2048, step=64, value=512, label="Preprocessor Resolution") |
| pre_low_threshold = gr.Slider(minimum=1, maximum=255, step=1, value=100, label="'CANNY' low threshold") |
| pre_high_threshold = gr.Slider(minimum=1, maximum=255, step=1, value=200, label="'CANNY' high threshold") |
| pre_value_threshold = gr.Slider(minimum=1, maximum=2.0, step=0.01, value=0.1, label="'MLSD' Hough value threshold") |
| pre_distance_threshold = gr.Slider(minimum=1, maximum=20.0, step=0.01, value=0.1, label="'MLSD' Hough distance threshold") |
| pre_recolor_mode = gr.Dropdown(label="'RECOLOR' mode", choices=["luminance", "intensity"], value="luminance") |
| pre_recolor_gamma_correction = gr.Number(minimum=0., maximum=25., value=1., step=0.001, label="'RECOLOR' gamma correction") |
| pre_blur_k_size = gr.Number(minimum=0, maximum=100, value=9, step=1, label="'BLUR' sigma") |
| pre_openpose_extra = gr.Checkbox(value=True, label="'OPENPOSE' face and hand") |
| pre_hed_scribble = gr.Checkbox(value=False, label="'HED' scribble") |
| pre_pidinet_safe = gr.Checkbox(value=False, label="'PIDINET' safe") |
| pre_lineart_coarse = gr.Checkbox(value=False, label="'LINEART' coarse") |
| pre_use_cuda = gr.Checkbox(value=False, label="Use CUDA") |
|
|
| with gr.Column(): |
| pre_result = gr.Image(label="Result", type="pil", interactive=False, format="png") |
|
|
| pre_start.click( |
| fn=process_inputs, |
| inputs=[ |
| pre_image, |
| pre_options, |
| pre_img_resolution, |
| pre_processor_resolution, |
| pre_low_threshold, |
| pre_high_threshold, |
| pre_value_threshold, |
| pre_distance_threshold, |
| pre_recolor_mode, |
| pre_recolor_gamma_correction, |
| pre_blur_k_size, |
| pre_openpose_extra, |
| pre_hed_scribble, |
| pre_pidinet_safe, |
| pre_lineart_coarse, |
| pre_use_cuda, |
| ], |
| outputs=[pre_result], |
| ) |
|
|