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)}%") |