dev-seek
doing changes app.py
537a0f5
import gradio as gr
import tensorflow as tf
from tensorflow.keras.models import model_from_json,Sequential
from tensorflow.keras.preprocessing import image
import numpy as np
from tensorflow.keras.layers import Layer
from tensorflow.keras.utils import register_keras_serializable
import json
class AccidentDetectionModel(object):
class_nums = ['Accident', "No Accident"]
def __init__(self, model_json_file, model_weights_file):
# load model from JSON file
with open(model_json_file, "r") as json_file:
loaded_model_json = json_file.read()
self.loaded_model = model_from_json(loaded_model_json)
# load weights into the new model
self.loaded_model.load_weights(model_weights_file)
self.loaded_model.make_predict_function()
def predict_accident(self, img):
self.preds = self.loaded_model.predict(img)
return AccidentDetectionModel.class_nums[np.argmax(self.preds)], self.preds
# Initialize the model with the weights file
model_ = AccidentDetectionModel("modified_model.json","modified_model_weights.h5")
# from keras.preprocessing import image
def predict(image):
test_image = tf.keras.utils.load_img(image, target_size = (250,250,3))
test_image = tf.keras.utils.img_to_array(test_image)
test_image = np.expand_dims(test_image, axis = 0)
# print(test_image[:1])
#predict the result
pred,probab = model_.predict_accident(test_image)
return dict(zip(pred, {model_.class_nums[i]: float(probab[0][i]) for i in range(len(model_.class_nums))}))
image = gr.Image()
label = gr.Label(num_top_classes=2)
demo = gr.Interface(fn=predict , inputs=image, outputs=label, title="Accident Detection")
demo.launch()