Spaces:
Runtime error
Runtime error
import gradio as gr | |
import cv2 | |
import numpy as np | |
from PIL import Image | |
import base64 | |
from io import BytesIO | |
from models.image_text_transformation import ImageTextTransformation | |
def pil_image_to_base64(image): | |
buffered = BytesIO() | |
image.save(buffered, format="JPEG") | |
img_str = base64.b64encode(buffered.getvalue()).decode() | |
return img_str | |
def add_logo(): | |
with open("examples/logo.png", "rb") as f: | |
logo_base64 = base64.b64encode(f.read()).decode() | |
return logo_base64 | |
def process_image(image_src, processor): | |
gen_text = processor.image_to_text(image_src) | |
gen_image = processor.text_to_image(gen_text) | |
gen_image_str = pil_image_to_base64(gen_image) | |
# Combine the outputs into a single HTML output | |
custom_output = f''' | |
<h2>Image->Text->Image:</h2> | |
<div style="display: flex; flex-wrap: wrap;"> | |
<div style="flex: 1;"> | |
<h3>Image2Text</h3> | |
<p>{gen_text}</p> | |
</div> | |
<div style="flex: 1;"> | |
<h3>Text2Image</h3> | |
<img src="data:image/jpeg;base64,{gen_image_str}" width="100%" /> | |
</div> | |
</div> | |
<h2>Using Source Image to do Retrieval on COCO:</h2> | |
<div style="display: flex; flex-wrap: wrap;"> | |
<div style="flex: 1;"> | |
<h3>Retrieval Top-3 Text</h3> | |
<p>{gen_text}</p> | |
</div> | |
<div style="flex: 1;"> | |
<h3>Retrieval Top-3 Image</h3> | |
<img src="data:image/jpeg;base64,{gen_image_str}" width="100%" /> | |
</div> | |
</div> | |
<h2>Using Generated texts to do Retrieval on COCO:</h2> | |
<div style="display: flex; flex-wrap: wrap;"> | |
<div style="flex: 1;"> | |
<h3>Retrieval Top-3 Text</h3> | |
<p>{gen_text}</p> | |
</div> | |
<div style="flex: 1;"> | |
<h3>Retrieval Top-3 Image</h3> | |
<img src="data:image/jpeg;base64,{gen_image_str}" width="100%" /> | |
</div> | |
</div> | |
''' | |
return custom_output | |
processor = ImageTextTransformation() | |
# Create Gradio input and output components | |
image_input = gr.inputs.Image(type='filepath', label="Input Image") | |
logo_base64 = add_logo() | |
# Create the title with the logo | |
title_with_logo = f'<img src="data:image/jpeg;base64,{logo_base64}" width="400" style="vertical-align: middle;"> Understanding Image with Text' | |
# Create Gradio interface | |
interface = gr.Interface( | |
fn=lambda image: process_image(image, processor), # Pass the processor object using a lambda function | |
inputs=image_input, | |
outputs=gr.outputs.HTML(), | |
title=title_with_logo, | |
description=""" | |
This code support image to text transformation. Then the generated text can do retrieval, question answering et al to conduct zero-shot. | |
""" | |
) | |
# Launch the interface | |
interface.launch() |