Spaces:
Runtime error
Runtime error
import gradio as gr | |
from datasets import load_dataset | |
from PIL import Image, ImageDraw | |
import os | |
hf_token = os.getenv("HF_TOKEN") | |
dataset = load_dataset("agentsea/wave-ui-25k", split="train", token=hf_token) | |
current_index = 0 | |
def draw_bounding_box(image, bbox): | |
draw = ImageDraw.Draw(image) | |
draw.rectangle(bbox, outline="red", width=2) | |
return image | |
def show_image(index): | |
global current_index | |
current_index = index | |
data = dataset[current_index] | |
image = data['image'] | |
bbox = data['bbox'] | |
image_with_bbox = draw_bounding_box(image, bbox) | |
image_info = f""" | |
\n**Image {current_index + 1} of {len(dataset)}** | |
\n**Source**: {data['source']} | |
\n**Platform**: {data['platform']} | |
\n**Name**: {data['name']} | |
\n**Description**: {data['description']} | |
\n**Type**: {data['type']} | |
\n**OCR**: {data['OCR']} | |
\n**Language**: {data['language']} | |
\n**Purpose**: {data['purpose']} | |
\n**Expectation**: {data['expectation']} | |
""" | |
return image_with_bbox, image_info | |
def next_image(): | |
global current_index | |
current_index = (current_index + 1) % len(dataset) | |
return show_image(current_index) | |
def previous_image(): | |
global current_index | |
current_index = (current_index - 1) % len(dataset) | |
return show_image(current_index) | |
def change_index(new_index): | |
new_index = int(new_index) | |
if 0 <= new_index < len(dataset): | |
return show_image(new_index) | |
else: | |
return show_image(current_index), f"Invalid index. Please enter a number between 0 and {len(dataset) - 1}." | |
shortcut_js = """ | |
<script> | |
function shortcuts(e) { | |
var event = document.all ? window.event : e; | |
switch (e.target.tagName.toLowerCase()) { | |
case "input": | |
case "textarea": | |
case "select": | |
case "button": | |
break; | |
default: | |
if (e.key === "ArrowRight") { | |
document.getElementById("next_btn").click(); | |
} else if (e.key === "ArrowLeft") { | |
document.getElementById("prev_btn").click(); | |
} | |
} | |
} | |
document.addEventListener('keydown', shortcuts, false); | |
</script> | |
""" | |
with gr.Blocks(head=shortcut_js) as app: | |
gr.Markdown("# WaveUI 25k Dataset Explorer") | |
with gr.Row(): | |
image_output = gr.Image(type="pil") | |
label_output = gr.Markdown() | |
with gr.Row(): | |
prev_button = gr.Button("Previous", elem_id="prev_btn") | |
next_button = gr.Button("Next", elem_id="next_btn") | |
with gr.Row(): | |
index_input = gr.Number(label="Go to index (0-based)", value=0) | |
go_button = gr.Button("Go", elem_id="go_btn") | |
prev_button.click(previous_image, outputs=[image_output, label_output]) | |
next_button.click(next_image, outputs=[image_output, label_output]) | |
go_button.click(change_index, inputs=[index_input], outputs=[image_output, label_output]) | |
app.load(show_image, inputs=[gr.Number(value=0, visible=False)], outputs=[image_output, label_output]) | |
app.launch() |