| | 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], |
| | ) |
| |
|