|
import gradio as gr |
|
from transformers import pipeline |
|
|
|
classifier = pipeline( |
|
"zero-shot-image-classification", |
|
model="google/siglip2-base-patch16-224", |
|
device=-1 |
|
) |
|
|
|
def classify_image(image, candidate_labels): |
|
""" |
|
Takes an image and a comma-separated string of candidate labels, |
|
and returns the classification scores. |
|
""" |
|
labels = [label.strip() for label in candidate_labels.split(",") if label.strip()] |
|
|
|
results = classifier(image, candidate_labels=labels) |
|
return results[0] |
|
|
|
iface = gr.Interface( |
|
fn=classify_image, |
|
inputs=[ |
|
gr.Image(type="pil", label="Input Image"), |
|
gr.Textbox(value="cat, dog, bird, car, airplane", label="Candidate Labels (comma separated)") |
|
], |
|
outputs=gr.JSON(label="Classification Results"), |
|
title="SigLIP Zero-Shot Image Classifier", |
|
description="This app uses the Google SigLIP model (siglip2-base-patch16-224) for zero-shot image classification on CPU. " |
|
"Enter an image and a set of candidate labels to see the prediction scores." |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|