| from tensorflow.keras.applications import VGG16 |
| from tensorflow.keras.models import Sequential |
| from tensorflow.keras.layers import Flatten, Dense |
| import streamlit as st |
| from PIL import Image |
| import numpy as np |
|
|
| base_model = VGG16( |
| weights="imagenet", |
| input_shape=(224,224,3), |
| include_top=False |
| ) |
|
|
| for layer in base_model.layers: |
| layer.trainable = False |
|
|
| model = Sequential() |
| model.add(base_model) |
| model.add(Flatten()) |
| model.add(Dense(1024, activation="relu")) |
| model.add(Dense(5, activation="softmax")) |
|
|
| |
| model.load_weights("/app/src/rice_transfer_model.weights.h5") |
|
|
|
|
| |
| class_names = ["Arborio", "Basmati", "Ipsala", "Jasmine", "Karacadag"] |
|
|
| |
| def process_image(img): |
|
|
| img = img.resize((224,224)) |
|
|
| img = np.array(img) |
|
|
| img = img / 255.0 |
|
|
| img = np.expand_dims(img, axis=0) |
|
|
| return img |
|
|
|
|
| st.title("Transfer Learning Pirinç Siniflandirma") |
| st.write("Pirinç görseli yükle, model türünü tahmin etsin.") |
|
|
| |
| file = st.file_uploader( "Bir resim yükle", type=["jpg","jpeg","png"]) |
|
|
| |
| if file is not None: |
|
|
| img = Image.open(file) |
|
|
| st.image(img, caption="Yüklenen Resim") |
|
|
| image = process_image(img) |
|
|
| prediction = model.predict(image) |
|
|
| predicted_class = np.argmax(prediction) |
|
|
| confidence = np.max(prediction) * 100 |
|
|
| st.write( |
| "Tahmin:", |
| class_names[predicted_class] |
| ) |
|
|
| st.write( |
| "Güven Oranı:", |
| round(confidence,2), |
| "%" |
| ) |
|
|