Spaces:
Runtime error
Runtime error
File size: 2,415 Bytes
865ed1b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | import gradio as gr
import tensorflow as tf
import numpy as np
# Load the labels
def load_labels(filename):
with open(filename, "r") as file:
labels = [line.strip().split(" ", 1)[1] for line in file.readlines()]
return labels
# Load the model
def load_model():
return tf.keras.models.load_model("model/keras_model.h5")
# Prediction function
def predict_expression(image):
model = load_model()
img = tf.keras.preprocessing.image.load_img(image, target_size=(48, 48), color_mode="grayscale")
img_array = tf.keras.preprocessing.image.img_to_array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)
predictions = model.predict(img_array)
label_index = np.argmax(predictions)
confidence = predictions[0][label_index] * 100
return label_index, confidence
# Safety management logic
def get_safety_measures(label_index, confidence):
safety_responses = [
"Alert nearby people and take immediate action if you sense danger.",
"Show calmness and maintain distance from the source of discomfort.",
"Encourage communication and provide support to reduce fear.",
"No action needed, but stay vigilant to avoid any potential threats.",
"Check for signs of discomfort or untruthfulness. Handle the situation carefully.",
"Provide emotional support and ensure safety from external threats.",
"Reassure the person and guide them to a safe environment."
]
safety_action = safety_responses[label_index]
return f"Expression: {labels[label_index]} (Confidence: {confidence:.2f}%)\n\nRecommended Action:\n{safety_action}"
# Load labels from file
labels = load_labels("labels.txt")
# Gradio interface
def analyze_expression(image):
label_index, confidence = predict_expression(image)
result = get_safety_measures(label_index, confidence)
return result
# Define the Gradio app
with gr.Blocks() as app:
gr.Markdown("# Woman Safety Management System 🌸\nUpload an image to analyze expressions and take appropriate safety actions.")
with gr.Row():
image_input = gr.Image(type="filepath", label="Upload Image")
analyze_btn = gr.Button("Analyze")
result_output = gr.Textbox(label="Analysis Result", lines=8)
analyze_btn.click(analyze_expression, inputs=image_input, outputs=result_output)
# Launch the app
if __name__ == "__main__":
app.launch()
|