Spaces:
Runtime error
Runtime error
| """ | |
| app.py | |
| """ | |
| import os | |
| import sys | |
| from pathlib import Path | |
| import gradio as gr | |
| import numpy as np | |
| import mediapipe as mp | |
| import tensorflow as tf | |
| import cv2 | |
| # Add the path to the model directory | |
| sys.path.append("model/data") | |
| from mp_process import process_mp_img | |
| model = tf.keras.models.load_model("model/training/saved_models/en_model_v0.h5") | |
| def preprocess_frame(frame): | |
| """ | |
| Preprocess the frame to be compatible with the model | |
| """ | |
| frame = cv2.resize(frame, (224,224), interpolation = cv2.INTER_AREA) | |
| frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) | |
| frame = frame / 255.0 | |
| return np.expand_dims(frame, axis=0) | |
| def detect_drowsiness(frame): | |
| """ | |
| returns features and/or processed image | |
| """ | |
| annotated_img, eye_feature, mouth_feature, mp_drowsy = process_mp_img(frame) | |
| # Preprocess the frame | |
| preprocessed_frame = preprocess_frame(frame) | |
| # Make predictions using the model | |
| prediction = model.predict(preprocessed_frame) | |
| # Threshold the prediction to classify drowsiness | |
| model_drowsy = prediction[0][0] >= 0.5 | |
| # Return the result | |
| return annotated_img, "Drowsy" if not model_drowsy else "Awake", "Drowsy" if mp_drowsy else "Awake",eye_feature, mouth_feature | |
| # Define the input component as an Image component | |
| input_image = gr.Image(shape=(480, 640), source="webcam", label="live feed") | |
| # Define the output components as an Image and a Label component | |
| output_image = gr.Image(shape=(480,640),label="Drowsiness Detection") | |
| output_model = gr.Label(label="Drowsiness Status - en_model_v0.h5") | |
| output_mp = gr.Label(label="Drowsiness Status - MediaPipe") | |
| output_eye = gr.Textbox(label="Eye Aspect Ratio") | |
| output_mouth = gr.Textbox(label="Mouth Aspect Ratio") | |
| iface = gr.Interface( | |
| fn=detect_drowsiness, | |
| inputs=input_image, | |
| title="antisomnus - driver drowsiness detection", | |
| outputs=[output_image,output_model, output_mp, output_eye, output_mouth], | |
| capture_session=True, | |
| ) | |
| # Launch the Gradio interface | |
| iface.launch() | |