PrashanthB461 commited on
Commit
e594561
Β·
verified Β·
1 Parent(s): 4083feb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -1
app.py CHANGED
@@ -2,6 +2,7 @@
2
  import os
3
  os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
4
  os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
 
5
 
6
  # Standard Library Imports
7
  import base64
@@ -26,9 +27,17 @@ try:
26
  from PIL import Image
27
  import requests
28
  from dotenv import load_dotenv
29
- from deepface import DeepFace
30
  from retrying import retry
31
  from simple_salesforce import Salesforce
 
 
 
 
 
 
 
 
 
32
  except ImportError as e:
33
  print(f"Missing dependency: {e}")
34
  print("Please install required packages using: pip install -r requirements.txt")
@@ -334,6 +343,9 @@ class AttendanceSystem:
334
  if image is None or not name.strip():
335
  return "❌ Please provide both image and name!", self.get_registered_workers_info()
336
 
 
 
 
337
  try:
338
  # Validate image quality
339
  image_array = np.array(image)
@@ -375,6 +387,9 @@ class AttendanceSystem:
375
 
376
  def _register_worker_auto(self, face_image: np.ndarray) -> Optional[Tuple[str, str]]:
377
  """Auto-register a new worker with improved validation."""
 
 
 
378
  try:
379
  # Skip very small faces
380
  if face_image.shape[0] < 50 or face_image.shape[1] < 50:
@@ -503,6 +518,12 @@ class AttendanceSystem:
503
 
504
  def process_frame(self, frame: np.ndarray) -> np.ndarray:
505
  """Enhanced frame processing with better error handling."""
 
 
 
 
 
 
506
  try:
507
  self.processing_stats['frames_processed'] += 1
508
 
@@ -784,10 +805,12 @@ class AttendanceSystem:
784
  def get_system_status(self) -> str:
785
  """Get comprehensive system status."""
786
  sf_status = "βœ… Connected" if self.sf else "❌ Offline"
 
787
  db_workers = len(self.db.get_all_workers())
788
 
789
  status = f"""πŸ”§ **System Status:**
790
  - Salesforce: {sf_status}
 
791
  - Registered Workers: {db_workers}
792
  - Recognition Threshold: {FACE_RECOGNITION_THRESHOLD}
793
  - Confidence Threshold: {CONFIDENCE_THRESHOLD}
 
2
  import os
3
  os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
4
  os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
5
+ os.environ['CUDA_VISIBLE_DEVICES'] = '-1' # Force CPU usage to avoid GPU issues
6
 
7
  # Standard Library Imports
8
  import base64
 
27
  from PIL import Image
28
  import requests
29
  from dotenv import load_dotenv
 
30
  from retrying import retry
31
  from simple_salesforce import Salesforce
32
+
33
+ # Import DeepFace with fallback
34
+ try:
35
+ from deepface import DeepFace
36
+ DEEPFACE_AVAILABLE = True
37
+ except ImportError as e:
38
+ print(f"DeepFace not available: {e}")
39
+ DEEPFACE_AVAILABLE = False
40
+
41
  except ImportError as e:
42
  print(f"Missing dependency: {e}")
43
  print("Please install required packages using: pip install -r requirements.txt")
 
343
  if image is None or not name.strip():
344
  return "❌ Please provide both image and name!", self.get_registered_workers_info()
345
 
346
+ if not DEEPFACE_AVAILABLE:
347
+ return "❌ DeepFace is not available. Please check installation.", self.get_registered_workers_info()
348
+
349
  try:
350
  # Validate image quality
351
  image_array = np.array(image)
 
387
 
388
  def _register_worker_auto(self, face_image: np.ndarray) -> Optional[Tuple[str, str]]:
389
  """Auto-register a new worker with improved validation."""
390
+ if not DEEPFACE_AVAILABLE:
391
+ return None
392
+
393
  try:
394
  # Skip very small faces
395
  if face_image.shape[0] < 50 or face_image.shape[1] < 50:
 
518
 
519
  def process_frame(self, frame: np.ndarray) -> np.ndarray:
520
  """Enhanced frame processing with better error handling."""
521
+ if not DEEPFACE_AVAILABLE:
522
+ # Draw a message on the frame
523
+ cv2.putText(frame, "DeepFace not available", (50, 50),
524
+ cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
525
+ return frame
526
+
527
  try:
528
  self.processing_stats['frames_processed'] += 1
529
 
 
805
  def get_system_status(self) -> str:
806
  """Get comprehensive system status."""
807
  sf_status = "βœ… Connected" if self.sf else "❌ Offline"
808
+ deepface_status = "βœ… Available" if DEEPFACE_AVAILABLE else "❌ Not Available"
809
  db_workers = len(self.db.get_all_workers())
810
 
811
  status = f"""πŸ”§ **System Status:**
812
  - Salesforce: {sf_status}
813
+ - DeepFace: {deepface_status}
814
  - Registered Workers: {db_workers}
815
  - Recognition Threshold: {FACE_RECOGNITION_THRESHOLD}
816
  - Confidence Threshold: {CONFIDENCE_THRESHOLD}