Spaces:
Running
on
Zero
Running
on
Zero
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: | |
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], | |
) | |