Face Attendance with Anti-Spoofing
Face-recognition attendance that rejects photos and screens, with a signed, tamper-evident record per user
- Year
- 2024
- Status
- Shipped
- Role
- Graduation project (MAVS) — integration, digital signature, UI
- Stack
- Python · OpenCV · face_recognition · dlib · Tkinter · SQLite · PyCryptodome

Problem
The face side of MAVS, my graduation project at Future University in Egypt (the ID-card side is the Arabic OCR pipeline). An attendance system has to recognize a person's face, must not be fooled by someone holding up a photo or a phone screen, and its records must not be quietly altered later.
Approach
It builds on two open-source projects: a face-attendance system for capture, registration and matching, and Silent-Face-Anti-Spoofing for liveness detection. My part was what joins and secures them:
- One flow: every registration and verification runs through the anti-spoofing check before face recognition.
- Digital signature: each registered user gets a signature built from their 68 facial landmarks (dlib) and AES encryption, so every registration is a signed, tamper-evident record.
- Storage and UI: a SQLite layer storing each user's image, face embedding and signature, and the Tkinter registration and verification screens.
Result
Photos and screen replays are rejected before recognition runs, and each registration carries a signature that exposes tampering. The public repository ships without any face data: the database folder is empty on purpose, since face images and embeddings are personal data.
