Sivainti commited on
Commit
1106485
Β·
verified Β·
1 Parent(s): 9692792

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -58
app.py CHANGED
@@ -14,6 +14,9 @@ import threading
14
  import time
15
  import queue
16
 
 
 
 
17
  class AttendanceSystem:
18
  def __init__(self):
19
  self.known_face_embeddings = []
@@ -41,7 +44,7 @@ class AttendanceSystem:
41
  try:
42
  # Load face embeddings and worker data
43
  if os.path.exists("data/workers.pkl"):
44
- with open("data/workers.pkl", "rb") as f:
45
  data = pickle.load(f)
46
  self.known_face_embeddings = data.get("embeddings", [])
47
  self.known_face_names = data.get("names", [])
@@ -68,63 +71,23 @@ class AttendanceSystem:
68
  worker_data = {
69
  "embeddings": self.known_face_embeddings,
70
  "names": self.known_face_names,
71
- "ids": self.known_face_ids,
72
- "next_id": self.next_worker_id
73
- }
74
- with open("data/workers.pkl", "wb") as f:
75
- pickle.dump(worker_data, f)
76
-
77
- # Save attendance records
78
- with open("data/attendance.json", "w") as f:
79
- json.dump(self.attendance_records, f, indent=2)
80
 
81
- except Exception as e:
82
- print(f"Error saving data: {e}")
83
-
84
- def register_worker_manual(self, image, name):
85
- """Manual worker registration"""
86
- if image is None or not name.strip():
87
- return "❌ Please provide both image and name!", self.get_registered_workers_info()
88
-
89
- # Convert PIL image to RGB array
90
- if isinstance(image, Image.Image):
91
- image = np.array(image)
92
-
93
- try:
94
- # Verify the image contains a face
95
- face_analysis = DeepFace.analyze(img_path=image, actions=['emotion'], enforce_detection=True, detector_backend='opencv')
96
-
97
- # Get face embedding
98
- embedding = DeepFace.represent(img_path=image, model_name='Facenet')[0]['embedding']
99
-
100
- # Check if person already exists
101
- name = name.strip().title()
102
- if name in self.known_face_names:
103
- return f"❌ {name} is already registered!", self.get_registered_workers_info()
104
-
105
- # Generate new worker ID
106
- worker_id = f"W{self.next_worker_id:04d}"
107
-
108
- # Add the face embedding, name, and ID
109
- self.known_face_embeddings.append(embedding)
110
- self.known_face_names.append(name)
111
- self.known_face_ids.append(worker_id)
112
- self.next_worker_id += 1
113
-
114
- # Save face image
115
- face_image = Image.fromarray(image)
116
- face_image.save(f"data/faces/{worker_id}_{name.replace(' ', '_')}.jpg")
117
-
118
- self.save_data()
119
-
120
- return f"βœ… {name} has been successfully registered with ID: {worker_id}!", self.get_registered_workers_info()
121
-
122
- except ValueError as e:
123
- if "Face could not be detected" in str(e):
124
- return "❌ No face detected in the image! Please try again with a clear face image.", self.get_registered_workers_info()
125
- return f"❌ Error processing image: {str(e)}", self.get_registered_workers_info()
126
- except Exception as e:
127
- return f"❌ Error during registration: {str(e)}", self.get_registered_workers_info()
128
 
129
  def register_worker_auto(self, face_image):
130
  """Automatic worker registration for unrecognized faces"""
@@ -548,7 +511,7 @@ def create_interface():
548
  video_file = gr.Video(
549
  label="Upload Video File",
550
  sources=["upload"],
551
- type="filepath"
552
  )
553
 
554
  with gr.Row():
 
14
  import time
15
  import queue
16
 
17
+ # Optional: Suppress TensorFlow oneDNN warning
18
+ os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
19
+
20
  class AttendanceSystem:
21
  def __init__(self):
22
  self.known_face_embeddings = []
 
44
  try:
45
  # Load face embeddings and worker data
46
  if os.path.exists("data/workers.pkl"):
47
+ with open("data/workers.pkl", "rbε»Ίη―‰) as f:
48
  data = pickle.load(f)
49
  self.known_face_embeddings = data.get("embeddings", [])
50
  self.known_face_names = data.get("names", [])
 
71
  worker_data = {
72
  "embeddings": self.known_face_embeddings,
73
  "names": self.known_face_names,
74
+ "ids": self. Ascending
75
+ self.next_worker_id += 1
 
 
 
 
 
 
 
76
 
77
+ # Save face image
78
+ face_image = Image.fromarray(image)
79
+ face_image.save(f"data/faces/{worker_id}_{name.replace(' ', '_')}.jpg")
80
+
81
+ self.save_data()
82
+
83
+ return f"βœ… {name} has been successfully registered with ID: {worker_id}!", self.get_registered_workers_info()
84
+
85
+ except ValueError as e:
86
+ if "Face could not be detected" in str(e):
87
+ return "❌ No face detected in the image! Please try again with a clear face image.", self.get_registered_workers_info()
88
+ return f"❌ Error processing image: {str(e)}", self.get_registered_workers_info()
89
+ except Exception as e:
90
+ return f"❌ Error during registration: {str(e)}", self.get_registered_workers_info()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
 
92
  def register_worker_auto(self, face_image):
93
  """Automatic worker registration for unrecognized faces"""
 
511
  video_file = gr.Video(
512
  label="Upload Video File",
513
  sources=["upload"],
514
+ format="mp4"
515
  )
516
 
517
  with gr.Row():