maithilipawar's picture
Upload 4 files
bb32721 verified
import gradio as gr
import numpy as np
from PIL import Image
import tensorflow as tf
import json
import os
# Load metadata
CLASSES = ['Minor', 'Serious', 'Fatal']
IMG_SIZE = 224
if os.path.exists("metadata.json"):
with open("metadata.json") as f:
meta = json.load(f)
CLASSES = meta.get("classes", CLASSES)
IMG_SIZE = meta.get("img_size", IMG_SIZE)
# Load model
model = tf.keras.models.load_model("model.keras")
def preprocess(image):
img = image.resize((IMG_SIZE, IMG_SIZE))
img = np.array(img, dtype=np.float32) / 255.0
return np.expand_dims(img, 0)
def predict(image):
img_array = preprocess(image)
preds = model.predict(img_array)[0]
idx = int(np.argmax(preds))
probs = {
CLASSES[i]: float(preds[i] * 100)
for i in range(len(CLASSES))
}
return {
"severity": CLASSES[idx],
"confidence": f"{preds[idx]*100:.2f}%",
"probabilities": probs
}
iface = gr.Interface(
fn=predict,
inputs=gr.Image(type="pil"),
outputs="json",
title="Accident Severity Prediction"
)
iface.launch()