File size: 2,084 Bytes
1716a7d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
57
58
import streamlit as st
from transformers import ViTForImageClassification, ViTFeatureExtractor
from PIL import Image
import torch
import torch.nn.functional as F

# Load the feature extractor and model
model_name_or_path = 'google/vit-base-patch16-224-in21k'  # Replace with your actual model path
feature_extractor = ViTFeatureExtractor.from_pretrained(model_name_or_path)
model = ViTForImageClassification.from_pretrained("./aryadytm-vit-vehicle-classifier")

def predict_image(image):
    inputs = feature_extractor(images=image, return_tensors="pt")

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

    logits = outputs.logits
    probs = F.softmax(logits, dim=-1)
    predicted_label_id = probs.argmax(-1).item()
    predicted_label = model.config.id2label[predicted_label_id]
    confidence = probs.max().item()

    return predicted_label, confidence

# Streamlit UI
st.markdown("## Vehicle Image Classification")
st.image('./assets/spotlight.png')
st.markdown("""

### Group 2

- Arya Adyatma - 2501985836

- Aldre Muhammad Keyzar - 2502006543

- Devin Eldrian Wijaya - 2501961363

- Rollando Marcellino Himmel Madison - 2502006575



This app lets you classify vehicle images using a pre-trained ViT model. You need to upload your own image.

- Kaggle dataset: https://www.kaggle.com/code/rydytm/vehicle-classification/edit.

- Colab Notebook: https://colab.research.google.com/drive/1El7RhY69KvE9Nj9vAxUPGjg42NwuNcPu?usp=sharing

""")
st.image('./assets/vit.png')
st.markdown("### Upload Your Image Here")

uploaded_file = st.file_uploader("Choose an image...", type=['png', 'jpg', 'jpeg'])

if uploaded_file is not None:
    image = (
        Image.open(uploaded_file)
        .convert("RGB")
        .resize((512, 512))
    )
    st.image(image, caption='Uploaded Image', use_column_width=True)
    st.write("")

    predicted_label, confidence = predict_image(image)

    st.write("### Prediction Result")
    st.write(f"Predicted label: **{predicted_label}**")
    st.write(f"Confidence: **{confidence:.2f}**")