NoahH7 commited on
Commit
35d0e4b
·
verified ·
1 Parent(s): ab3db06

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -31
app.py CHANGED
@@ -3,6 +3,7 @@ import requests
3
  from transformers import DetrImageProcessor, DetrForObjectDetection
4
  import torch
5
  from PIL import Image, ImageDraw
 
6
 
7
  # Fonction pour générer du texte avec Gemini
8
  def generate_text_with_gemini(api_key, prompt):
@@ -77,18 +78,11 @@ uploaded_files = st.file_uploader("Choisissez des images (vous pouvez en ajouter
77
  # Saisie du seuil de confiance
78
  confidence_threshold = st.slider("Seuil de confiance pour la détection (0 à 1)", 0.0, 1.0, 0.7, 0.01)
79
 
80
- # Saisie du nombre de personnes attendues pour chaque image
81
  if uploaded_files:
82
- number_of_people = []
83
- for i in range(len(uploaded_files)):
84
- count = st.number_input(f"Nombre attendu de personnes pour l'image {i + 1}", min_value=1, value=10, step=1, key=f"input_{i}")
85
- number_of_people.append(count)
86
-
87
- max_absents = -1
88
- best_image = None
89
- best_image_name = ""
90
- best_absents = 0 # Pour stocker le nombre d'absents de l'image avec le plus d'absents
91
-
92
  for i, uploaded_file in enumerate(uploaded_files):
93
  # Lire l'image téléchargée
94
  image = Image.open(uploaded_file)
@@ -97,32 +91,22 @@ if uploaded_files:
97
  # Traitement de l'image
98
  modified_image, detected_persons = process_image(image, confidence_threshold=confidence_threshold)
99
 
100
- # Calculer le nombre d'absents
101
- absents = number_of_people[i] - detected_persons
102
- if absents < 0:
103
- absents = 0
104
-
105
  # Afficher l'image modifiée
106
  st.image(modified_image, caption=f'Image avec personnes détectées : {uploaded_file.name}', use_column_width=True)
107
-
108
- # Afficher le nombre d'absents
109
- st.write(f"**Nombre d'absents pour l'image {i + 1} ({uploaded_file.name}) : {absents}**")
110
 
111
- # Garder une trace de l'image avec le plus grand nombre d'absents
112
- if absents > max_absents:
113
- max_absents = absents
114
- best_image = modified_image
115
- best_image_name = uploaded_file.name
116
- best_absents = absents # Stocker le nombre d'absents pour le mail
117
 
118
- # Générer un e-mail avec Gemini basé sur le nombre maximal d'absents
119
- prompt = f"Génère moi un mail destiné à l'attaché de promotion d'une école, pour lui signaler que {best_absents} élèves sont absents dans la classe 'ESGI 2'."
120
  api_key = "AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38" # Clé d'API
121
 
122
  email_text = generate_text_with_gemini(api_key, prompt)
123
  st.write("**E-mail généré :**")
124
  st.write(email_text)
125
-
126
- # Afficher l'image avec le plus grand nombre d'absents
127
- if best_image:
128
- st.image(best_image, caption=f'Image avec le plus grand nombre d\'absents : {best_image_name}', use_column_width=True)
 
3
  from transformers import DetrImageProcessor, DetrForObjectDetection
4
  import torch
5
  from PIL import Image, ImageDraw
6
+ import math # Importer la bibliothèque math pour arrondir au supérieur
7
 
8
  # Fonction pour générer du texte avec Gemini
9
  def generate_text_with_gemini(api_key, prompt):
 
78
  # Saisie du seuil de confiance
79
  confidence_threshold = st.slider("Seuil de confiance pour la détection (0 à 1)", 0.0, 1.0, 0.7, 0.01)
80
 
81
+ # Traitement des images et calcul de la moyenne
82
  if uploaded_files:
83
+ total_persons = 0
84
+ total_images = len(uploaded_files)
85
+
 
 
 
 
 
 
 
86
  for i, uploaded_file in enumerate(uploaded_files):
87
  # Lire l'image téléchargée
88
  image = Image.open(uploaded_file)
 
91
  # Traitement de l'image
92
  modified_image, detected_persons = process_image(image, confidence_threshold=confidence_threshold)
93
 
94
+ # Ajouter au total des personnes détectées
95
+ total_persons += detected_persons
96
+
 
 
97
  # Afficher l'image modifiée
98
  st.image(modified_image, caption=f'Image avec personnes détectées : {uploaded_file.name}', use_column_width=True)
99
+ st.write(f"**Personnes détectées sur l'image {i + 1} ({uploaded_file.name}) : {detected_persons}**")
 
 
100
 
101
+ # Calcul de la moyenne et arrondi au supérieur
102
+ if total_images > 0:
103
+ average_persons = math.ceil(total_persons / total_images) # Arrondir au supérieur
104
+ st.write(f"**Moyenne des personnes détectées sur toutes les images : {average_persons}**")
 
 
105
 
106
+ # Générer un e-mail avec Gemini basé sur la moyenne arrondie
107
+ prompt = f"Génère-moi un mail destiné à l'attaché de promotion d'une école, pour lui signaler que la moyenne des personnes détectées sur les images est de {average_persons} élèves pour la classe 'ESGI 2'."
108
  api_key = "AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38" # Clé d'API
109
 
110
  email_text = generate_text_with_gemini(api_key, prompt)
111
  st.write("**E-mail généré :**")
112
  st.write(email_text)