Spaces:
Runtime error
Runtime error
File size: 3,704 Bytes
2746b21 3e4de6f 2746b21 21024ac 2746b21 6c52afe 2746b21 21024ac 2746b21 ef3c636 2746b21 6c52afe 2746b21 21024ac 2746b21 6c52afe 3e4de6f 2746b21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
import gradio as gr
import random
import csv
class_names = ['cat', 'dog']
def update_dropdown(className):
class_names.append(className)
updated_choices = gr.Dropdown(choices=class_names)
return updated_choices
def show_picked_class(className):
return className
def image_classifier(inp):
if inp is None:
return {'cat': 0.3, 'dog': 0.7}
num_class = len(class_names)
# Generate random percentages between 0 and 1
percentages = [random.random() for _ in range(num_class)]
total = sum(percentages)
# Normalize the percentages to ensure they sum up to 1
normalized_percentages = [p / total for p in percentages]
labeled_result = {name:score for name, score in zip(class_names, normalized_percentages)}
return labeled_result, gr.Dropdown(choices=class_names)
demo = gr.Blocks()
with demo as app:
gr.Markdown("# Single Image")
with gr.Row():
with gr.Column():
inp_img = gr.Image()
with gr.Row():
clear_btn = gr.Button(value="Clear")
process_btn = gr.Button(value="Process", variant="primary")
with gr.Column():
out_txt = gr.Label(label="Probabilities", num_top_classes=3)
text_input = gr.Textbox(label="Input the new class here")
b1 = gr.Button("Add new class")
text_options = gr.Dropdown(class_names, label="Class Label", multiselect=False)
b2 = gr.Button("Show me the picked class")
picked_class = gr.Textbox()
b1.click(update_dropdown, inputs=text_input, outputs=text_options)
b2.click(show_picked_class, inputs=text_options, outputs=picked_class)
process_btn.click(image_classifier, inputs=inp_img, outputs=[out_txt, text_options])
clear_btn.click(lambda:(
gr.update(value=None),
gr.update(value=None)
),
inputs=None,
outputs=[inp_img, out_txt])
gr.Markdown("# Multiple Images")
def show_to_gallery(images):
file_paths = [[file.name, class_names[0]] for file in images]
# print(file_paths)
return file_paths, file_paths
def get_select_index(evt: gr.SelectData):
# print("data",evt._data)
# print("value",evt.value)
return evt.index
with gr.Column():
imgs = gr.State()
multiple_inputs = gr.UploadButton(label="Upload multiple images file here.", file_count="multiple", file_types=["image"])
gallery = gr.Gallery()
selected = gr.Textbox(label="Image Gallery Index")
images_label = gr.Dropdown(class_names, label="Class Label", multiselect=False)
b3 = gr.Button("Save and change the label using dropdown")
multiple_inputs.upload(show_to_gallery, inputs=multiple_inputs, outputs=[gallery, imgs])
gallery.select(get_select_index, None, selected)
def change_labels(imgs, index, images_label):
index = int(index)
label_idx = class_names.index(images_label)
imgs[index][1] = class_names[label_idx]
return imgs, imgs
b3.click(change_labels, [imgs, selected, images_label], [imgs, gallery])
b4 = gr.Button("Upload to metadata")
def upload_metadata(imgs):
with open('metadata.csv', mode='w', newline='') as csv_file:
# Create a CSV writer
csv_writer = csv.writer(csv_file)
# Write the header row
csv_writer.writerow(['File_Path', 'Label'])
# Write the data rows
csv_writer.writerows(imgs)
print(f"Metadata CSV file has been created.")
return imgs
b4.click(upload_metadata, imgs, imgs)
demo.launch(debug=True) |