NoahH7 commited on
Commit
920555e
·
verified ·
1 Parent(s): f5b796d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -29
app.py CHANGED
@@ -1,7 +1,9 @@
 
1
  import requests
2
  from transformers import DetrImageProcessor, DetrForObjectDetection
3
  import torch
4
  from PIL import Image
 
5
 
6
  # Fonction pour générer du texte avec Gemini
7
  def generate_text_with_gemini(api_key, prompt):
@@ -35,40 +37,53 @@ def generate_text_with_gemini(api_key, prompt):
35
 
36
  return response.status_code, response_json
37
 
38
- # URL de l'image d'exemple
39
- url = "https://www.saint-genes.com/wp-content/uploads/2019/10/DSC05405.jpg"
40
- image = Image.open(requests.get(url, stream=True).raw)
 
 
 
 
 
 
 
 
 
41
 
42
- # Téléchargement du modèle sans la dépendance 'timm'
43
- processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
44
- model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
 
 
45
 
46
- # Préparer l'image pour le modèle
47
- inputs = processor(images=image, return_tensors="pt")
48
- outputs = model(**inputs)
49
 
50
- # Post-traitement des résultats pour obtenir les boîtes englobantes et les labels
51
- target_sizes = torch.tensor([image.size[::-1]])
52
- results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
53
 
54
- # Compter le nombre de personnes détectées
55
- persons = 0
56
- for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
57
- if model.config.id2label[label.item()] == 'person':
58
- persons += 1
59
 
60
- expected_number_of_persons = 30 # Nombre attendu de personnes
61
- absents = expected_number_of_persons - persons
62
 
63
- # Assurez-vous que le nombre d'absents ne soit pas négatif
64
- if absents < 0:
65
- absents = 0
66
 
67
- # Générer le contenu de l'email avec Gemini
68
- prompt = f"Notifier de l'absence: Le nombre de personnes présentes est de {persons}. Le nombre d'absents est de {absents}."
69
- gemini_api_key = "AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38" # Remplacez par votre clé API Gemini
70
- status_code, response_json = generate_text_with_gemini(gemini_api_key, prompt)
71
- email_content = response_json.get('candidates', [{}])[0].get('content', {}).get('parts', [{}])[0].get('text', 'Content generation failed.')
72
 
73
- # Afficher le contenu généré
74
- print(f"Generated Content: {email_content}")
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
  import requests
3
  from transformers import DetrImageProcessor, DetrForObjectDetection
4
  import torch
5
  from PIL import Image
6
+ import io
7
 
8
  # Fonction pour générer du texte avec Gemini
9
  def generate_text_with_gemini(api_key, prompt):
 
37
 
38
  return response.status_code, response_json
39
 
40
+ # Fonction de traitement de l'image
41
+ def process_image(image):
42
+ processor = DetrImageProcessor.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
43
+ model = DetrForObjectDetection.from_pretrained("facebook/detr-resnet-50", revision="no_timm")
44
+
45
+ # Préparer l'image pour le modèle
46
+ inputs = processor(images=image, return_tensors="pt")
47
+ outputs = model(**inputs)
48
+
49
+ # Post-traitement des résultats pour obtenir les boîtes englobantes et les labels
50
+ target_sizes = torch.tensor([image.size[::-1]])
51
+ results = processor.post_process_object_detection(outputs, target_sizes=target_sizes, threshold=0.9)[0]
52
 
53
+ # Compter le nombre de personnes détectées
54
+ persons = 0
55
+ for score, label, box in zip(results["scores"], results["labels"], results["boxes"]):
56
+ if model.config.id2label[label.item()] == 'person':
57
+ persons += 1
58
 
59
+ expected_number_of_persons = 10 # Nombre attendu de personnes
60
+ absents = expected_number_of_persons - persons
 
61
 
62
+ # Assurez-vous que le nombre d'absents ne soit pas négatif
63
+ if absents < 0:
64
+ absents = 0
65
 
66
+ # Générer le contenu de l'email avec Gemini
67
+ prompt = f"Notifier de l'absence: Le nombre de personnes présentes est de {persons}. Le nombre d'absents est de {absents}."
68
+ gemini_api_key = "AIzaSyCJVUr-76I4TL42X98d9U0THbRD3MKlB38" # Remplacez par votre clé API Gemini
69
+ status_code, response_json = generate_text_with_gemini(gemini_api_key, prompt)
70
+ email_content = response_json.get('candidates', [{}])[0].get('content', {}).get('parts', [{}])[0].get('text', 'Content generation failed.')
71
 
72
+ return email_content
 
73
 
74
+ # Interface Streamlit
75
+ st.title("Analyse d'Image pour Détection de Personnes")
 
76
 
77
+ uploaded_file = st.file_uploader("Choisissez une image", type=["jpg", "jpeg", "png"])
 
 
 
 
78
 
79
+ if uploaded_file is not None:
80
+ # Lire l'image téléchargée
81
+ image = Image.open(uploaded_file)
82
+ st.image(image, caption='Image téléchargée', use_column_width=True)
83
+
84
+ # Traitement de l'image
85
+ email_content = process_image(image)
86
+
87
+ # Afficher le contenu généré
88
+ st.write("**Contenu généré :**")
89
+ st.write(email_content)