|
import gradio as gr |
|
from transformers import AutoModelForImageClassification, AutoImageProcessor |
|
import torch |
|
import numpy as np |
|
|
|
examples = [ |
|
"shrimp.png", |
|
"adverarial.png" |
|
] |
|
|
|
hugging_face_model = "Kaludi/food-category-classification-v2.0" |
|
model = AutoModelForImageClassification.from_pretrained(hugging_face_model) |
|
processor = AutoImageProcessor.from_pretrained(hugging_face_model) |
|
|
|
def predict(img): |
|
inputs = processor(images=img, return_tensors="pt") |
|
outputs = model(**inputs) |
|
logits = outputs.logits |
|
|
|
|
|
|
|
probabilities = torch.softmax(logits, dim=1)[0].tolist() |
|
labels = model.config.id2label |
|
top_10_indices = np.argsort(probabilities)[::-1][:10] |
|
top_10_labels = [labels[i] for i in top_10_indices] |
|
top_10_probabilities = [probabilities[i] for i in top_10_indices] |
|
label_confidences = {label: prob for label, prob in zip(top_10_labels, top_10_probabilities)} |
|
return label_confidences |
|
|
|
demo = gr.Interface( |
|
fn=predict, |
|
inputs=gr.Image(), |
|
outputs=gr.Label(), |
|
examples=examples |
|
) |
|
|
|
demo.launch() |