Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from inference import initialize_styleres | |
| from utils import AppUtils | |
| from datasets.process_image import ImageProcessor | |
| from argparse import ArgumentParser | |
| EXAMPLES = [ | |
| ["test_sample/1.jpg", "InterfaceGAN", "Smile", "2.0", False], | |
| ] | |
| parser = ArgumentParser() | |
| parser.add_argument('--device', type=str, default='cpu', help='Which device to use') | |
| args = parser.parse_args() | |
| utils = AppUtils() | |
| methods = utils.get_methods() | |
| styleres = initialize_styleres('checkpoints/styleres_ffhq.pth', args.device) | |
| image_processor = ImageProcessor('checkpoints/shape_predictor_68_face_landmarks.dat') | |
| def process_image(image, method, edit, factor, is_align_checked): | |
| cfg = utils.args_to_cfg(method, edit, factor) | |
| if is_align_checked: | |
| image = image_processor.align_face(image) | |
| image = image_processor.preprocess_image(image, is_batch=False) | |
| image = styleres.edit_images(image, cfg) | |
| image = image_processor.postprocess_image(image.detach().cpu().numpy(), is_batch=False) | |
| return image | |
| def update_edit_dropdown(method): | |
| choices = utils.get_edits(method) | |
| return gr.Dropdown.update(choices=choices, value=choices[0]) | |
| def update_slider(method): | |
| minimum, maximum, step= utils.get_range(method) | |
| return gr.Slider.update(minimum=minimum, maximum=maximum, value=0, step=step, label=f"Strength [{minimum}, {maximum}]") | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| # StyleRes: Transforming the Residuals for Real Image Editing with StyleGAN (CVPR2023) | |
| """) | |
| with gr.Row(): | |
| image_input = gr.Image(type="pil", shape=(256,256), label='Input Image', value="test_sample/116.jpg") | |
| image_output = gr.Image(type="pil", shape=(256,256), label='Output Image') | |
| with gr.Row(): | |
| with gr.Column(scale=0.25, min_width=50): | |
| methods_drowdown = gr.Dropdown(methods, label="Choose Method", value=methods[0]) | |
| with gr.Column(scale=0.25, min_width=50): | |
| edits_dropdown = gr.Dropdown(utils.get_edits(methods[0]), label="Choose Edit", value=utils.get_edits(methods[0])[0]) | |
| with gr.Row(): | |
| with gr.Column(scale=0.1, min_width=50): | |
| is_align_checked = gr.Checkbox(label="Crop + Align") | |
| with gr.Column(scale=0.4, min_width=50): | |
| factor_slider = gr.Slider(-5, 5, value=0, label="Strength [-5, 5]") | |
| gr.Examples( | |
| examples=EXAMPLES, | |
| inputs=[image_input, methods_drowdown, edits_dropdown, factor_slider, is_align_checked], | |
| outputs=image_output, | |
| fn=process_image, | |
| cache_examples=True, | |
| ) | |
| methods_drowdown.change(update_edit_dropdown, inputs=methods_drowdown, outputs=edits_dropdown ) | |
| methods_drowdown.change(update_slider, inputs=methods_drowdown, outputs=factor_slider) | |
| factor_slider.release(process_image, inputs=[image_input, methods_drowdown, edits_dropdown, factor_slider, is_align_checked], outputs=image_output) | |
| demo.launch(debug=True) | |