File size: 1,085 Bytes
0dfac78
 
 
 
 
82c9f6d
0dfac78
 
 
 
82c9f6d
0dfac78
82c9f6d
 
0dfac78
 
82c9f6d
 
0dfac78
 
82c9f6d
 
0dfac78
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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)}