Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from tools import Inference, Matting, log, extract_matte, harmonize, css | |
| from omegaconf import OmegaConf | |
| import os | |
| import sys | |
| import numpy as np | |
| import torchvision.transforms.functional as tf | |
| from PIL import Image | |
| args = OmegaConf.load(os.path.join(f"./config/demo.yaml")) | |
| log("Model loading") | |
| phnet = Inference(**args) | |
| stylematte = Matting(**args) | |
| log("Model loaded") | |
| with gr.Blocks() as demo: | |
| gr.Markdown( | |
| """ | |
| # Welcome to portrait transfer demo app! | |
| Select source portrait image and new background. | |
| """) | |
| btn_compose = gr.Button(value="Compose") | |
| with gr.Row(): | |
| input_ui = gr.Image( | |
| type="numpy", label='Source image to extract foreground') | |
| back_ui = gr.Image(type="pil", label='The new background') | |
| gr.Examples( | |
| examples=[["./assets/comp.jpg", "./assets/back.jpg"]], | |
| inputs=[input_ui, back_ui], | |
| ) | |
| gr.Markdown( | |
| """ | |
| ## Resulting alpha matte and extracted foreground. | |
| """) | |
| with gr.Row(): | |
| matte_ui = gr.Image(type="pil", label='Alpha matte') | |
| fg_ui = gr.Image(type="pil", image_mode='RGBA', | |
| label='Extracted foreground') | |
| gr.Markdown( | |
| """ | |
| ## Click the button and compare the composite with the harmonized version. | |
| """) | |
| btn_harmonize = gr.Button(value="Harmonize composite") | |
| with gr.Row(): | |
| composite_ui = gr.Image(type="pil", label='Composite') | |
| harmonized_ui = gr.Image( | |
| type="pil", label='Harmonized composite', css=css(3, 3)) | |
| btn_compose.click(lambda x, y: extract_matte(x, y, stylematte), inputs=[input_ui, back_ui], outputs=[ | |
| composite_ui, matte_ui, fg_ui]) | |
| btn_harmonize.click(lambda x, y: harmonize(x, y, phnet), inputs=[ | |
| composite_ui, matte_ui], outputs=[harmonized_ui]) | |
| log("Interface created") | |
| demo.launch(share=False) | |