A desktop app that records student attendance and controls lecture and exam hall access via YOLOv8 and DeepFace face recognition, MediaPipe liveness checks, and Excel reports.

A project to develop an intelligent system that records student attendance and controls access to lecture and exam halls using face recognition, carried out by a team of students with technical assistance from Techno Enjaz. The system captures live video from the camera, detects faces, converts them into a numerical representation (embedding) that it compares with the student database, and records attendance only if the student passes the liveness check and is registered for the correct session and hall within the allowed time.
The system was built as a Python desktop application using OpenCV, DeepFace, and MediaPipe for anti-spoofing, with an SQLite database, Excel reports, and multi-role CustomTkinter interfaces. It was tested on a laptop's built-in camera, and the report states that recognition ran in real time with high accuracy and near-instant response, without giving numerical values for that accuracy.
| Item | Details |
|---|---|
| Project type | Desktop application for face-recognition attendance and access control |
| Field | Computer vision, biometrics, academic administration |
| Project status | Working system tested on a laptop's built-in camera |
| Techno Enjaz role | Technical support and assistance to the students during project development |
| Core technologies | Python 3.11, OpenCV, YOLOv8, DeepFace (FaceNet512/ArcFace), MediaPipe, SQLite, Pandas, OpenPyXL, CustomTkinter |
| Outputs | Automatic attendance, rejection of spoofing attempts, academic administration, daily reports and historical logs in Excel, analytics dashboard |
Many educational institutions still record attendance with paper lists or simple electronic systems. These methods consume lecture time, are prone to human error, and make manipulation and impersonation easy. The problem is more sensitive in exam halls, where each student must enter the hall assigned to them according to the official name lists issued by the exams department, which include names, university IDs, and hall assignments.
The project was carried out academically by the students, with technical assistance and support from Techno Enjaz during development. It is presented among the office's work as an example of its support for computer vision projects that combine face recognition and liveness detection with data management systems.
| Tool / technology | Use in the system |
|---|---|
| Python 3.11 | System development and integration of all components |
| OpenCV | Video capture, frame processing, and image enhancement |
| YOLOv8 | Detecting faces in the frame |
| DeepFace + FaceNet512 | Extracting facial features and recognizing identity |
| MediaPipe | Liveness detection and anti-spoofing (blinking and head movement) |
| SQLite | Storing student, session, and attendance data |
| Pandas and OpenPyXL | Processing attendance data and exporting reports to Excel |
| CustomTkinter | Graphical user interface design |
| Threading | Running cameras and processing in parallel without freezing the interface |
Note: the report's tools table names FaceNet512 for feature extraction, while the workflow description and conclusion refer to the ArcFace model within DeepFace; both are models supported by the library.
The system is divided into layers: the user interface (windows, live video, and reports), the vision engine (face detection, recognition, and liveness detection), the database manager (querying authorized students, recording attendance, and exporting reports), and the local file system for temporary face-print files and daily reports. The main UI thread is separated from the video-processing thread of each camera and from timer threads, with queues for safe data exchange, so that by design further cameras can be added.
A relational database with primary and foreign keys was designed, containing the following tables:
| Table | Contents |
|---|---|
| Majors | Majors and departments |
| Academic_Years | Academic years |
| Subjects | Courses linked to major and year |
| Students | Name, university ID, major, year, and the face-print file path (Face_Cache_Path) |
| Rooms | Lecture and exam halls |
| Sessions | Lectures or exams: course, hall, type, date, and time |
| Attendance | Links a student to a session with registration time and status |
Use starts with a login screen, followed by a main interface with sections for student management, sessions, live streaming, reports, and university settings. The main interfaces include:
The Excel reports include session information (course, hall, date, number present) and a detailed list with name, university ID, registration time, and status.
The system was tested on a Windows 10 computer using the laptop's built-in camera, and the report summarizes its results qualitatively:
| Criterion | Result stated in the report |
|---|---|
| Response speed | Near-instant |
| Face recognition accuracy | High, even with minor variations in lighting and angles |
| Spoofing detection | Effective against photos and videos |
| Interface stability | Stable during operation |
| Session and report management | Successful, with Excel export |
| Real-time operation | Supported |
These results are descriptive: the report does not give the number of students or images tested, nor numerical values for recognition accuracy, false acceptance or rejection rates, or processing time. The high accuracy figures for models such as ArcFace cited in the theoretical study come from published references on benchmark datasets and are not results of this system.
The report lists a number of challenges, including:
In addition, the system was tested with a single built-in camera, the SQLite database runs on a local machine, and the report notes that scaling to many users may require moving to PostgreSQL or MySQL.
According to the directions set out in the project:
The system processes students' face images and biometric data, so any real-world use requires informing students and obtaining their consent, defining access rights to face prints and attendance records, and encrypting the data and setting how long it is retained.
If you are working on a face-recognition attendance and access-control system and need technical help developing the idea or building a prototype, you can contact the Techno Enjaz office to discuss your project's requirements and the appropriate scope of support.
A desktop application that records student attendance and controls entry to lecture and exam halls using real-time face recognition, according to predefined groups and official name lists. It was built by a team of students with technical assistance from Techno Enjaz.
YOLOv8 detects the face, DeepFace converts it into a vector matched against the database by Euclidean distance, and a liveness check runs in parallel. The system then confirms that the student is registered for the session, in the correct hall, and within the allowed time; if any check fails the registration is rejected with an alert, otherwise attendance is saved with its time.
It uses MediaPipe to extract facial landmarks and track blinking via the Eye Aspect Ratio and head movement, together with motion analysis between frames and texture analysis to distinguish printed photos and videos from a real face. Attendance is rejected when a spoofing attempt is detected.
Python 3.11, OpenCV, and YOLOv8 for face detection; DeepFace with FaceNet512 (the report also mentions ArcFace) for recognition; MediaPipe for liveness detection; SQLite for the database; Pandas and OpenPyXL for Excel reports; and CustomTkinter for the interface, with multithreading to prevent UI freezing.
It was tested on a laptop's built-in camera, and the report describes response as near-instant, accuracy as high, and spoofing detection as effective, but gives no numerical values or test-set size. Its limits include sensitivity to lighting, side angles, glasses, and masks, and operation with one camera and a local SQLite database.
Reach out to Techno Enjaz engineering team to discuss technical feasibility, prototype hardware, and development scope.