QuickMark is an attendance system designed to streamline the attendance tracking process using dual authentication methods: face recognition and QR codes. The system utilizes Tkinter for the frontend user interface and integrates with a database for efficient attendance maintenance.
-
Dual Authentication:
- Face Recognition: Utilizes facial recognition technology to verify and record attendance.
- QR Codes: Generates and scans QR codes for an additional layer of authentication.
-
User-Friendly Interface:
- Built with Tkinter to provide a simple and intuitive frontend for users.
-
Database Integration:
- Stores attendance data in a database for easy maintenance and retrieval.
-
Anti-Spoofing Technology:
- Eye Blink Detection: Ensures the person is real by detecting natural eye blinking.
- Head Movement Detection: Verifies liveness through random head movement challenges.
- Depth Estimation: Uses MediaPipe to detect flat surfaces like printed photos.
- Challenge-Response System: Randomized prompts requiring specific actions to verify presence.
Ensure you have the following dependencies installed:
pip install face_recognition opencv-python pyzbar qrcode pillow mediapipe numpy
Alternatively, install all requirements:
pip install -r requirements.txt
- Run register_face.py to capture image of student
- Run create_face_data.py:
- Enter the name of student exactly as it appears in their photo filename
- The script will:
- Create image encodings using face_recognition module
- Store it in
face_data.pkl
file
- Launch the application:
python main.py
- The system will:
- Open your webcam
- Present random liveness challenges (blink, turn head, etc.)
- Analyze facial depth to detect spoofing attempts
- Perform face recognition
- Mark attendance only when all verification steps pass
- Press 'q' to exit the application
- Attendance data is automatically stored in
attendance.db
- Use the UI to view attendance records
face_data.pkl
: Stores face recognition dataattendance.db
: SQLite database for attendance recordsclassroom/
: Directory for student photos (in repository root)
-
If face recognition fails:
- Ensure photos are clear and well-lit
- Check that face is clearly visible in the photo
- Verify photo naming matches exactly
-
If anti-spoofing checks fail:
- Make sure there's sufficient lighting for depth detection
- Follow the challenge instructions carefully
- Ensure your face is clearly visible to the camera
- Avoid quick movements that may interfere with tracking
Contributions are welcome! If you find any issues or want to enhance the functionality, please feel free to create a pull request.
This project is licensed under the MIT License
Enjoy using QuickMark! If you have any questions or feedback, feel free to contact me!