jacaranda-app / app.py
lily-hust's picture
Update app.py
2fb6cdd
raw
history blame
1.7 kB
import streamlit as st
import cv2
import pandas
from PIL import Image
import numpy as np
import tensorflow as tf
from tensorflow.keras.applications.resnet50 import preprocess_input
from tensorflow.keras.preprocessing.image import img_to_array
st.title('Jacaranda Identification')
st.markdown('This is a Deep Learning application to identify if a satellite image clip contains Jacaranda trees. The predicting result will be "Jacaranda", or "Others". You can click "Brows files" multiple times until adding all images before generating prediction.')
uploaded_file = st.file_uploader("Upload image files", type="jpg", accept_multiple_files=True)
#image_iterator = paginator("Select a page", uploaded_file)
#indices_on_page, images_on_page = map(list, zip(*image_iterator))
st.image(uploaded_file, width=100)
img_height = 224
img_width = 224
class_names = ['Jacaranda', 'Others']
model = tf.keras.models.load_model('model')
if uploaded_file is not None:
#n = len(uploaded_file)
#row_size = 5
#grid = st.columns(row_size)
#col = 0
Generate_pred = st.button("Generate Prediction")
if Generate_pred:
for file in uploaded_file:
# with grid[col]:
# img = Image.open(file)
# st.image(img)
#col += 1
img = Image.open(file)
img_array = img_to_array(img)
img_array = tf.expand_dims(img_array, axis = 0) # Create a batch
processed_image = preprocess_input(img_array)
predictions = model.predict(processed_image)
score = predictions[0]
st.markdown("Predicted class of the image {} is : {}".format(file, class_names[np.argmax(score)]))