gfichetdc's picture
Show ground truth label, compact layout
e7827ef
Raw
History Blame Contribute Delete
1.43 kB
import gradio as gr
from transformers import pipeline
from PIL import Image
import os
classifier = pipeline("image-classification", model="gfichetdc/casting-defect-vit")
examples_dir = "examples"
example_files = sorted([f for f in os.listdir(examples_dir) if f.endswith(".jpeg")])
def ground_truth(filename):
return "defective" if filename.startswith("def") else "ok"
def predict(name):
image = Image.open(os.path.join(examples_dir, name))
results = classifier(image)
bars = {r["label"]: r["score"] for r in results}
truth = ground_truth(name)
return image, bars, truth
with gr.Blocks(title="Casting Defect Detection") as demo:
gr.Markdown("### Casting Defect Detection (ViT)\nClick a test image to classify it.")
gallery = gr.Dataset(
components=[gr.Image(visible=False)],
samples=[[os.path.join(examples_dir, f)] for f in example_files],
label="Test images (5 defective, 5 ok)",
samples_per_page=10,
)
with gr.Row():
img_out = gr.Image(label="Selected image", height=224)
with gr.Column():
label_out = gr.Label(num_top_classes=2, label="Prediction")
truth_out = gr.Textbox(label="Ground truth", interactive=False)
def on_select(evt: gr.SelectData):
name = example_files[evt.index]
return predict(name)
gallery.select(on_select, outputs=[img_out, label_out, truth_out])
demo.launch()