|
|
from helper.model import fetch_model, preprocess_image, classify_image |
|
|
from PIL import Image |
|
|
import streamlit as st |
|
|
import io |
|
|
|
|
|
st.set_page_config( |
|
|
page_title="VGNet Prototype", |
|
|
page_icon="🤖", |
|
|
) |
|
|
|
|
|
st.title("Using Deep Learning Techniques on Philippine Corn Leaf Disease Classification") |
|
|
st.write("This is the prototype of VGNet model trained using different optimizers") |
|
|
st.write("Thesis Project by Group BDK of Mapua University") |
|
|
|
|
|
st.image( |
|
|
"resources/corn-field.png", |
|
|
caption='A corn field', |
|
|
width=700 |
|
|
) |
|
|
|
|
|
st.header("How to use?") |
|
|
st.markdown(""" |
|
|
1. Select a model. |
|
|
2. Select an image (Leaf Blight, Gray Leaf Spot, Common Rust). |
|
|
3. Upload the selected image here. |
|
|
4. The model will output the classification result if the image is (Leaf Blight, Gray Leaf Spot, Common Rust). |
|
|
""") |
|
|
|
|
|
uploaded_image = st.file_uploader( |
|
|
"Choose an image...", |
|
|
type=["bmp", "png", "jpg", "jpeg"] |
|
|
) |
|
|
|
|
|
model_labels = [ |
|
|
"VGNet + Adam", |
|
|
"VGNet + Adan", |
|
|
"VGNet + AdamW", |
|
|
"VGNet + RMSprop", |
|
|
"VGNet + AdaBound" |
|
|
] |
|
|
model_option = st.selectbox( |
|
|
"Select a Model:", |
|
|
list(range(len(model_labels))), |
|
|
format_func=lambda ind: model_labels[ind] |
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
if uploaded_image is not None: |
|
|
|
|
|
|
|
|
image = preprocess_image( |
|
|
Image.open( |
|
|
uploaded_image |
|
|
) |
|
|
) |
|
|
|
|
|
|
|
|
model_optimizer_name = ["adam", "adan", "adamw", "rmsprop", "adabound"] |
|
|
model = fetch_model(model_optimizer_name[model_option]) |
|
|
|
|
|
|
|
|
predicted_label = classify_image(model, image) |
|
|
|
|
|
|
|
|
st.image(image, clamp = True) |
|
|
st.write(f"Prediction Result: {predicted_label}") |
|
|
|