foreversheikh's picture
Upload 2 files
ae378d9 verified
# import streamlit as st
# import numpy as np
# import tensorflow as tf
# from tensorflow.keras.models import load_model
# from PIL import Image
# import cv2
# # Load the model
# model = tf.keras.models.load_model("model_n.keras")
# # Define class names
# class_names = [
# 'Bush Clock Vine', 'Common Lanthana', 'Datura', 'Hibiscus', 'Jatropha', 'Marigold',
# 'Nityakalyani', 'Rose', 'Yellow_Daisy', 'adathoda', 'banana', 'champaka', 'chitrak',
# 'crown flower', "four o'clock flower", 'honeysuckle', 'indian mallow', 'malabar melastome',
# 'nagapoovu', 'pinwheel flower', 'shankupushpam', 'spider lily', 'sunflower', 'thechi',
# 'thumba', 'touch me not', 'tridax procumbens', 'wild_potato_vine'
# ]
# # Title
# st.title("Flower Identifier")
# # Choose mode
# mode = st.radio("Choose input method:", ["Upload Image", "Real-Time Camera"])
# if mode == "Upload Image":
# st.markdown("### Upload an image of a flower")
# img = st.file_uploader("Choose an image", type=["jpg", "jpeg", "png"])
# if img is not None:
# st.image(img, caption="Uploaded Image", use_column_width=True)
# image = Image.open(img).convert("RGB")
# image = tf.keras.preprocessing.image.img_to_array(image)
# image = tf.cast(image, tf.float32)
# image = tf.expand_dims(image, 0)
# if st.button("Identify Flower"):
# prediction = model.predict(image)
# predicted_class = np.argmax(prediction[0])
# confidence = round(100 * np.max(prediction[0]), 2)
# flower_name = class_names[predicted_class]
# st.success(f"Predicted Flower: **{flower_name}**")
# st.info(f"Confidence: **{confidence}%**")
# elif mode == "Real-Time Camera":
# st.markdown("### Real-Time Flower Recognition")
# run = st.checkbox('Start Camera')
# FRAME_WINDOW = st.image([])
# cap = None
# if run:
# cap = cv2.VideoCapture(0)
# while run:
# ret, frame = cap.read()
# if not ret:
# st.warning("Failed to access camera.")
# break
# img_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# img_array = tf.keras.preprocessing.image.img_to_array(img_rgb)
# img_array = tf.expand_dims(tf.cast(img_array, tf.float32), 0)
# predictions = model.predict(img_array)
# predicted_class = np.argmax(predictions[0])
# confidence = round(100 * np.max(predictions[0]), 2)
# flower_name = class_names[predicted_class]
# # Annotate frame
# cv2.putText(frame, f"{flower_name} ({confidence}%)", (10, 30),
# cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
# FRAME_WINDOW.image(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
# if cap:
# cap.release()
import gradio as gr
import numpy as np
import tensorflow as tf
from tensorflow.keras.models import load_model
from PIL import Image
# Load the model
model = tf.keras.models.load_model("model_n.keras")
# Define class names
class_names = [
'Bush Clock Vine', 'Common Lanthana', 'Datura', 'Hibiscus', 'Jatropha', 'Marigold',
'Nityakalyani', 'Rose', 'Yellow_Daisy', 'adathoda', 'banana', 'champaka', 'chitrak',
'crown flower', "four o'clock flower", 'honeysuckle', 'indian mallow', 'malabar melastome',
'nagapoovu', 'pinwheel flower', 'shankupushpam', 'spider lily', 'sunflower', 'thechi',
'thumba', 'touch me not', 'tridax procumbens', 'wild_potato_vine'
]
# Prediction function
def predict_flower(img):
image = img.convert("RGB")
image = tf.keras.preprocessing.image.img_to_array(image)
image = tf.cast(image, tf.float32)
image = tf.expand_dims(image, 0)
prediction = model.predict(image)
predicted_class = np.argmax(prediction[0])
confidence = round(100 * np.max(prediction[0]), 2)
flower_name = class_names[predicted_class]
return f"🌼 Predicted Flower: {flower_name} ({confidence}%)"
# Gradio interface
title = "🌸 Flower Identifier using Deep Learning"
description = "Upload an image or use your camera to identify a flower from 28 known classes."
iface = gr.Interface(
fn=predict_flower,
inputs=[
gr.Image(type="pil", label="Upload or Capture Flower Image", source="upload", tool="editor")
],
outputs="text",
title=title,
description=description,
live=False,
examples=None,
)
if __name__ == "__main__":
iface.launch()