hakansivuk's picture
Final commit
087921f
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()