bsvaz
deploy
82c9f6d
from transformers import AutoModelForImageClassification, AutoImageProcessor
import torch
class LandmarkClassifier:
def __init__(self, model_name="bsvaz/landmark-classification-vit"):
# Load pre-trained model and processor from HuggingFace hub
self.model = AutoModelForImageClassification.from_pretrained(model_name)
self.processor = AutoImageProcessor.from_pretrained(model_name)
def classify_image(self, image):
# Preprocess image using the model's required format
inputs = self.processor(image, return_tensors="pt")
# Perform inference without gradient calculation for efficiency
with torch.no_grad():
outputs = self.model(**inputs)
# Convert logits to probabilities using softmax
probabilities = torch.nn.functional.softmax(outputs.logits, dim=-1)
scores = probabilities[0].tolist()
# Map class indices to label names and their corresponding probabilities
return {self.model.config.id2label[i]: score for i, score in enumerate(scores)}