|
import gradio as gr |
|
from utils import AppUtils |
|
from app_inference import AppInference |
|
|
|
inference = AppInference() |
|
|
|
def process_image(input_id, image, label): |
|
return inference.inference(int(input_id), AppUtils.get_examples()[int(input_id)][1], image["mask"], label) |
|
|
|
def preview(input_id, image, label): |
|
return inference.preview(int(input_id), AppUtils.get_examples()[int(input_id)][1], image["mask"], label) |
|
|
|
def update_label_dropdown(input_id): |
|
choices = AppUtils.get_labels(int(input_id)) |
|
return gr.Dropdown.update(choices=choices, value=choices[0]) |
|
|
|
with gr.Blocks() as demo: |
|
gr.Markdown( |
|
""" |
|
<h1 align="center">Diverse Semantic Image Editing with Style Codes</h1> |
|
<center> |
|
<div> <a href="https://www.cs.bilkent.edu.tr/~adundar/projects/DivSem/">Website</a></div> |
|
</center> |
|
<center> In this work, we propose a novel framework that can encode visible and partially visible objects with a novel mechanism to achieve consistency in the style encoding. |
|
Here, we show our results for different images and label editing options. </center> |
|
<center> <h2> How to Try </h2> </center> |
|
<center> 1. Select an image from the example list at the bottom. </center> |
|
<center> 2. Draw a mask on the input image. </center> |
|
<center> 3. Select a label from the dropdown on the "Choose Label" section. This label is used </center> |
|
<center> for editing masked area. If you don't want to change label of the masked area, you can choose None. </center> |
|
<center> 4. Click to Preview button to see the edited instance map. </center> |
|
<center> 5. Click to Submit button to see the inference result. </center> |
|
<center> Note: Our demo currently does not support to get inference from an uploaded image. Please use example images. </center> |
|
""") |
|
with gr.Row(): |
|
image_input = gr.Image(type="pil", shape=(256,256), label='Input', tool="sketch", value=AppUtils.get_examples()[0][1], scale=5).style(height=256) |
|
inst_map_output = gr.Image(type="pil", shape=(256,256), label='Instance Map', value=AppUtils.get_examples()[0][1].replace("images", "colored"), scale=4).style(height=256) |
|
image_output = gr.Image(type="pil", shape=(256,256), label='Output Image',scale=4).style(height=256) |
|
|
|
with gr.Row(): |
|
input_id = gr.Textbox(label="Image ID", value=AppUtils.get_examples()[0][0], interactive=False, visible=False) |
|
with gr.Column(scale=1, min_width=50): |
|
label_dropdown = gr.Dropdown(AppUtils.get_labels(0), label="Choose Label", value=AppUtils.get_labels(0)[0]) |
|
with gr.Column(scale=2, min_width=50): |
|
with gr.Row(): |
|
preview_button = gr.Button(value="Preview") |
|
with gr.Row(): |
|
submit_button = gr.Button(value="Submit") |
|
|
|
gr.Examples( |
|
examples=AppUtils.get_examples(), |
|
inputs=[input_id, image_input, inst_map_output], |
|
outputs=[image_output], |
|
fn=process_image, |
|
) |
|
input_id.change(update_label_dropdown, inputs=input_id, outputs=label_dropdown ) |
|
submit_button.click(process_image, inputs=[input_id, image_input, label_dropdown], outputs=image_output) |
|
preview_button.click(preview, inputs=[input_id, image_input, label_dropdown], outputs=[inst_map_output]) |
|
|
|
demo.launch() |