File size: 2,752 Bytes
02362a0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import random
from datetime import datetime

import numpy as np
import requests
import satellighte as sat
import streamlit as st
from PIL import Image


def main():
    # pylint: disable=no-member

    st.set_page_config(
        page_title="Satellighte Demo Page",
        page_icon="📡",
        layout="centered",
        initial_sidebar_state="expanded",
        menu_items={
            "Get Help": "https://canturan10.github.io/satellighte/",
            "About": "Satellite Image Classification",
        },
    )

    st.title("Satellighte Demo Page")

    url = "https://raw.githubusercontent.com/canturan10/satellighte/master/src/satellighte.png?raw=true"
    satellighte = Image.open(requests.get(url, stream=True).raw)

    st.sidebar.image(satellighte, width=100)
    st.sidebar.title("Satellighte")
    st.sidebar.caption(sat.__description__)

    st.write(
        "**Satellighte** is an image classification library  that consist state-of-the-art deep learning methods. It is a combination of the words **'Satellite'** and **'Light'**, and its purpose is to establish a light structure to classify satellite images, but to obtain robust results."
    )

    st.sidebar.caption(f"Version: `{sat.__version__}`")
    st.sidebar.caption(f"License: `{sat.__license__}`")
    st.sidebar.caption(sat.__copyright__)

    selected_model = st.selectbox(
        "Select model",
        sat.available_models(),
    )
    selected_version = st.selectbox(
        "Select version",
        sat.get_model_versions(selected_model),
    )

    model = sat.Classifier.from_pretrained(selected_model, selected_version)
    model.eval()

    uploaded_file = st.file_uploader(
        "", type=["png", "jpg", "jpeg"], accept_multiple_files=False
    )

    if uploaded_file is None:
        st.write("Sample Image")
        # Sample image.
        url = f"https://raw.githubusercontent.com/canturan10/satellighte/master/src/eurosat_samples/{random_sample}?raw=true"
        image = Image.open(requests.get(url, stream=True).raw)

    else:
        # User-selected image.
        image = Image.open(uploaded_file)

    image = np.array(image.convert("RGB"))
    FRAME_WINDOW = st.image([], use_column_width=True)

    model = sat.Classifier.from_pretrained(selected_model, selected_version)
    model.eval()

    results = model.predict(image)
    pil_img = sat.utils.visualize(image, results)

    st.write("Results:", results)
    FRAME_WINDOW.image(pil_img)


if __name__ == "__main__":
    samples = [
        "AnnualCrop.jpg",
        "Forest.jpg",
        "HerbaceousVegetation.jpg",
        "PermanentCrop.jpg",
        "River.jpg",
    ]
    random.seed(datetime.now())
    random_sample = samples[random.randint(0, len(samples) - 1)]

    main()