File size: 1,970 Bytes
60b3d89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import json
import gradio as gr
import torch

from transformers import EfficientFormerImageProcessor, EfficientFormerForImageClassificationWithTeacher

# Load preprocessor and pretrained model
model_name = "snap-research/efficientformer-l7-300"
processor = EfficientFormerImageProcessor.from_pretrained(model_name)
model = EfficientFormerForImageClassificationWithTeacher.from_pretrained(model_name)


# Load ImageNet idx to label mapping
with open("assets/imagenet_1000_idx2labels.json") as f:
    idx_to_label = json.load(f)


def classify_image(img, top_k):
    # Preprocess input image
    inputs = processor(images=img, return_tensors="pt")

    # Inference
    with torch.no_grad():
        outputs = model(**inputs)

    # Print the top ImageNet1k class prediction 
    logits = outputs.logits
    scores = torch.nn.functional.softmax(logits, dim=1)

    top_k_labels = scores.argsort(descending=True)[0][:top_k].cpu().detach().numpy()
    top_k_labels = list(top_k_labels)

    return {idx_to_label[str(idx)] : round(float(scores[0, idx]), 4) for idx in top_k_labels}


description = """
Gradio demo for <a href="https://huggingface.co/docs/transformers/main/en/model_doc/efficientformer">EfficientFormer</a>, 
introduced in <a href="https://arxiv.org/abs/2206.01191">EfficientFormer: Vision Transformers at MobileNet Speed</a>. 
\n\nEfficientFormer is a mobile-friendly image classification model that achieves MobileNet inference speed with impressive performance gains. 
To use it, simply upload an image and print the top predictions.
"""

demo = gr.Interface(
    classify_image, 
    inputs=[gr.Image(), gr.Slider(0, 1000, value=5)], 
    outputs=gr.outputs.Label(),
    description=description,
    title="Image Classification with EfficientFormer-L1",
    examples=[
        ["assets/halloween-gaf8ad7ebc_1920.jpeg", 5],
        ["assets/IMG_4484.jpeg", 5],
        ["assets/IMG_4737.jpeg", 5],
        ["assets/IMG_4740.jpeg", 5],
    ],
)
demo.launch()