File size: 1,484 Bytes
0d296e1
 
9b7d319
ee9a4a3
0d296e1
 
 
 
 
 
 
 
15f0be2
0d296e1
4948c5b
0d296e1
 
 
 
 
3192631
 
15f0be2
 
3192631
9f5fa4b
ee9a4a3
4948c5b
ee9a4a3
 
 
 
 
 
 
 
 
 
 
0d296e1
ee9a4a3
bb0a0a2
 
 
 
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
import streamlit as st
from PIL import Image
import torch
import json
from transformers import AutoFeatureExtractor, AutoModelForImageClassification

extractor = AutoFeatureExtractor.from_pretrained("Amite5h/convnext-tiny-finetuned-eurosat")

model = AutoModelForImageClassification.from_pretrained("Amite5h/convnext-tiny-finetuned-eurosat")



st.title("EuroSAT Detection")

file_name = st.file_uploader("Upload a geospatial image")

if file_name is not None:
    col1, col2 = st.columns(2)

    image = Image.open(file_name)
    if image.mode != "RGB":
        image = image.convert("RGB")
    col1.image(image, use_column_width=True)
    # Convert grayscale image to RGB format
    image_tensor = extractor(images=image, return_tensors="pt")["pixel_values"]
    predictions = model(image_tensor)

    predicted_probabilities = torch.softmax(predictions.logits, dim=1)[0]
    predicted_labels = model.config.id2label
    
    # Create a dictionary of labels and probabilities
    label_probabilities = {
        predicted_labels[i]: predicted_probabilities[i].item() for i in range(len(predicted_labels))
    }
    
    # Convert the output to JSON string
    json_output = json.dumps(label_probabilities)
        
    #predicted_class = torch.argmax(predictions.logits, dim=1)
    col2.header("Probabilities")
    col2.subheader(json_output)

    # col2.header("Probabilities")
    # for p in predictions:
    #     col2.subheader(f"{ p['label'] }: { round(p['score'] * 100, 1)}%")