Spaces:
Sleeping
Sleeping
import gradio as gr | |
import json | |
import numpy as np | |
import datasets | |
bugs_ds = datasets.load_dataset("asgaardlab/SampleDataset", split="validation") | |
def generate_annotations(image_index): | |
image_index = int(image_index) | |
objects_json = bugs_ds[image_index]["Objects JSON (Correct)"] | |
objects = json.loads(objects_json) | |
segmentation_image_rgb = bugs_ds[image_index]["Segmentation Image (Correct)"] | |
segmentation_image_rgb = np.array(segmentation_image_rgb) | |
annotations = [] | |
for obj in objects: | |
color = tuple(obj["color"])[:-1] | |
mask = np.all(segmentation_image_rgb[:, :, :3] == np.array(color), axis=-1).astype(np.float32) | |
annotations.append((mask, obj["labelName"])) | |
object_count = 0 # bugs_ds[image_index]["Object Count"] | |
victim_name = bugs_ds[image_index]["Victim Name"] | |
bug_type = bugs_ds[image_index]["Tag"] | |
return ( | |
(bugs_ds[image_index]["Correct Image"], annotations), | |
objects, | |
object_count, | |
victim_name, | |
bug_type, | |
) | |
# Setting up the Gradio interface using blocks API | |
with gr.Blocks() as demo: | |
gr.Markdown( | |
"Enter the image index and click **Submit** to view the segmentation annotations." | |
) | |
with gr.Row(): | |
inp = gr.Slider( | |
minimum=0, maximum=len(bugs_ds) - 1, step=1, label="Image Index" | |
) | |
btn = gr.Button("Submit") | |
with gr.Row(): | |
with gr.Column(): | |
object_count = gr.Number(label="Object Count") | |
victim_name = gr.Textbox(label="Victim Name") | |
bug_type = gr.Textbox(label="Bug Type") | |
seg_img = gr.AnnotatedImage() | |
with gr.Row(): | |
json_data = gr.JSON() | |
btn.click( | |
fn=generate_annotations, | |
inputs=inp, | |
outputs=[seg_img, json_data, object_count, victim_name, bug_type], | |
) | |
demo.launch() | |