Hamsy commited on
Commit
ff233d4
·
verified ·
1 Parent(s): 3838203

Delete app.py

Browse files
Files changed (1) hide show
  1. app.py +0 -92
app.py DELETED
@@ -1,92 +0,0 @@
1
- import gradio as gr
2
- import pickle
3
- import numpy as np
4
- import pandas as pd
5
- import os
6
- from sklearn.preprocessing import OneHotEncoder
7
-
8
-
9
- # 1. Chargement des Artefacts
10
- MODEL_FILE = "smartrack_health_alert_vet_model.pkl"
11
- ENCODER_FILE = "species_encoder_vet.pkl"
12
-
13
- # Assurez-vous que ces fichiers audio ont été générés en amont
14
- ALERT_AUDIO = "alert_high.mp3"
15
- OK_AUDIO = "alert_ok.mp3"
16
-
17
- try:
18
- model = pickle.load(open(MODEL_FILE, "rb"))
19
- encoder = pickle.load(open(ENCODER_FILE, "rb"))
20
- except Exception as e:
21
- # Cas d'erreur pour le déploiement
22
- print(f"Erreur de chargement des artefacts : {e}")
23
- model = None
24
-
25
- classes = ['OK (Santé Normale)', 'ALERTE (Intervention Recommandée)']
26
- SPECIES_LIST = list(encoder.categories_[0])
27
-
28
-
29
- # 2. Fonction de Prédiction avec Output Audio
30
- def predict_health_alert_vocal(species, hr, spo2, temp, acc_mean, gyro_mean):
31
- """ Prend les données et renvoie le texte d'alerte ET le fichier audio correspondant. """
32
-
33
- if model is None:
34
- return "Erreur: Modèle non chargé.", None # Retourne le texte et l'audio (None)
35
-
36
- input_data = pd.DataFrame({
37
- 'hr': [hr], 'spo2': [spo2], 'temp': [temp],
38
- 'acc_mean': [acc_mean], 'gyro_mean': [gyro_mean],
39
- 'species': [species]
40
- })
41
-
42
- numerical_features = input_data.drop('species', axis=1)
43
- species_encoded = encoder.transform(input_data[['species']])
44
- species_df = pd.DataFrame(species_encoded, columns=encoder.get_feature_names_out(['species']))
45
-
46
- X_final = pd.concat([numerical_features, species_df], axis=1)
47
-
48
- prediction = model.predict(X_final)[0]
49
- probas = model.predict_proba(X_final)[0]
50
- predicted_class = classes[prediction]
51
-
52
- # Choix du fichier audio et du message
53
- if prediction == 1:
54
- audio_path = ALERT_AUDIO
55
- alert_style = "🚨 **ALERTE: Problème de Santé Détecté** 🚨"
56
- action_message = "Veuillez vérifier immédiatement l'animal ou consulter un vétérinaire. Écoutez l'alerte vocale ci-dessous."
57
- else:
58
- audio_path = OK_AUDIO
59
- alert_style = "✅ **Statut de Santé: OK**"
60
- action_message = "Les signes vitaux sont dans la plage normale pour l'espèce. Écoutez le message de confirmation ci-dessous."
61
-
62
- output_text = f"## {alert_style} \n\n"
63
- output_text += f"**Espèce :** {species.capitalize()}\n"
64
- output_text += f"**Statut Analysé :** **{predicted_class}**\n\n"
65
- output_text += f"--- \n\n"
66
- output_text += f"**Action Recommandée :** {action_message}\n\n"
67
- output_text += f"*(Probabilité d'Alerte : {probas[1]*100:.2f}%)*"
68
-
69
- return output_text, audio_path # Retourne le texte ET le chemin du fichier audio
70
-
71
-
72
- # 3. Création de l'Interface Gradio (avec le composant Audio)
73
- iface = gr.Interface(
74
- fn=predict_health_alert_vocal, # Nouvelle fonction
75
- inputs=[
76
- gr.Dropdown(choices=SPECIES_LIST, label="1. Espèce Animale", value="boeuf"),
77
- gr.Slider(minimum=30, maximum=200, value=75, label="2. Rythme Cardiaque (BPM)"),
78
- gr.Slider(minimum=80, maximum=100, value=96, label="3. Saturation O₂ (SpO2 %)"),
79
- gr.Slider(minimum=35.0, maximum=42.0, value=38.0, label="4. Température Corporelle (°C)"),
80
- gr.Slider(minimum=0.0, maximum=5.0, value=0.5, label="5. Mouvement (Accél. Moy.)"),
81
- gr.Slider(minimum=0.0, maximum=5.0, value=1.5, label="6. Mouvement (Gyro. Moy.)"),
82
- ],
83
- outputs=[
84
- gr.Markdown(label="Rapport Textuel d'Alerte"), # Premier output: Texte
85
- gr.Audio(label="Alerte Vocale (Cliquez pour Écouter)"), # Deuxième output: Audio
86
- ],
87
- title="Système d'Alerte de Santé Vétérinaire SmarTrack (Vocal)",
88
- description="Le modèle prédit l'état de santé et génère une alerte vocale immédiate pour le propriétaire.",
89
- )
90
-
91
- # if __name__ == "__main__":
92
- # iface.launch()