Spaces:
Paused
Paused
import subprocess | |
from PIL import Image | |
import gradio as gr | |
# First, running the inversion command to obtain the input noise that will reconstruct the image. | |
# It will save the inversion as output/test_cat/inversion/image-name.pt | |
# BLIP-generated caption prompt is saved as output/test_cat/prompt/image-name.txt - eg., a painting of a cat sitting on top of a ball | |
def inversion(image_in, progress=gr.Progress(track_tqdm=True)): | |
progress(0, desc="Starting...") | |
# saving the input image | |
image_in.save("input_image.png") | |
# Run the script file | |
subprocess.run(["python", "src/inversion.py", "--input_image", "input_image.png", "--results_folder", "output/test_cat"]) | |
# Open the text file with blip caption | |
with open("output/test_cat/prompt/input_image.txt", "r") as file: | |
# Read the file | |
prompt = file.read() | |
return "output/test_cat/inversion/input_image.pt", prompt | |
# Performing image editing with the editing directions | |
# This will save the edited image as output/test_cat/edit/image-name.png | |
def image_edit(task_name, progress=gr.Progress(track_tqdm=True)): | |
progress(0, desc="Starting...") | |
# Run the script file | |
subprocess.run(["python", "src/edit_real.py", "--inversion", "output/test_cat/inversion/input_image.pt", | |
"--prompt", "output/test_cat/prompt/input_image.txt", "--task_name", task_name, | |
"--results_folder", "output/test_cat/"]) | |
return "output/test_cat/edit/input_image.png" | |
def set_visible_true(): | |
return gr.update(visible=True) | |
def set_visible_False(): | |
return gr.update(visible=False) | |
#Gradio Blocks API | |
with gr.Blocks() as demo: | |
with gr.Row(): | |
image_in = gr.Image(type="pil", label="Upload the image of a cat or a dog you want to translate") | |
with gr.Column(): | |
btn_inversion = gr.Button("Get input noise",visible=False ) | |
with gr.Row(): | |
blip_prompt = gr.Textbox(visible=False) | |
inversion_file = gr.File(visible=False) | |
#task_name = gr.Textbox() | |
with gr.Row(): | |
image_out = gr.Image(visible=False) | |
with gr.Column(): | |
task_name_radio = gr.Radio(choices = ["cat2dog", "dog2cat",], type="value", visible=False, label="Select a task that you want to accomplish") #, value="cat2dog"), | |
btn_imageedit = gr.Button(value="Edit the image!",visible=False) | |
btn_inversion.click(inversion,[image_in],[inversion_file, blip_prompt]) | |
btn_inversion.click(set_visible_true, [], task_name_radio) #inversion_file, blip_prompt, | |
btn_inversion.click(set_visible_False, [], btn_inversion) | |
task_name_radio.change(set_visible_true, [], btn_imageedit) | |
task_name_radio.change(set_visible_true, [], image_out) | |
btn_imageedit.click(image_edit,[task_name_radio],[image_out]) | |
image_in.clear(set_visible_true, [], btn_inversion) | |
image_in.change(set_visible_true, [], btn_inversion) | |
image_in.change(set_visible_true, [], blip_prompt) | |
image_in.change(set_visible_true, [], inversion_file) | |
demo.queue(concurrency_count=3) | |
demo.launch(debug=True) |