mennaashraf's picture
Update app.py
190f602 verified
import gradio as gr
from tensorflow.keras.models import load_model
from PIL import Image
import numpy as np
# Class names mapping
class_names = {
0: 'arduino',
1: 'battery',
2: 'Bluetooth module', # folder '10'
3: 'DCmotor',
4: 'DHT-11',
5: 'ESP8266',
6: 'LCD',
7: 'Loadcell',
8: 'RFID',
9: 'Tiva',
10: 'Ultrasonic',
}
# Load the pre-trained model
model = load_model("electronic_components_classifier_97.keras")
# Function to predict image
def predict_image(img):
img = img.convert("RGB")
img = img.resize((224, 224))
data = np.asarray(img)
data = data / 255.0
probs = model.predict(np.expand_dims(data, axis=0))
top_prob = probs.max()
top_pred = class_names[np.argmax(probs)]
return f"This is a {top_pred} with {top_prob * 100:.2f}% confidence."
# Create the Gradio interface
interface = gr.Interface(
fn=predict_image,
inputs=gr.Image(type="pil"),
outputs="text",
title="Electronic Component Detector",
description="Upload an image of an electronic component, and the model will classify it.",
)
# Run the Gradio app
if __name__ == "__main__":
interface.launch()