# Tổng quan
- Thế nào là nhận diện khuôn mặt?
- Định nghĩa
- Mô hình nhận diện khuôn mặt hiện nay $\implies$ deep learning (học sâu)
- $\implies$ ứng dụng của deep learning trong thực tế
- Xe tự hành, máy bay không người lái (Tesla)
- Trợ lý ảo (Google Assistant của Google, Siri của Apple)
- Gợi ý mua hàng (Shopee, Lazada)
- Nguyên lí hoạt động (skip)
- Tính cấp thiết của nhận diện khuôn mặt
- Xã hội nói chung
- Trường học nói riêng
- Những phương pháp điểm danh đang sử dụng trong trường học hiện tại
- Những nhược điểm của những phương pháp ấy
- Ứng dụng của nhận diện khuôn mặt
# Quy trình của hệ thống
## Giới thiệu sơ lược về cấu trúc database
3 bảng dữ liệu (table)
- `classes`: lưu thông tin của các lớp học
- `class_name`: tên của lớp học (ví dụ 10A1)
- `start_time`: giờ vào học của lớp đó
- `teacher_email`: email của giáo viên chủ nhiệm (để sau này gửi dữ liệu điểm danh)
- `students`: lưu thông tin của các học sinh
- `student_id`: mã học sinh
- `student_name`: họ và tên học sinh
- `class_name`: lớp của học sinh đó
- `parent_email`: email của phụ huynh học sinh đó (để sau này gửi dữ liệu điểm danh)
- `attendances`: lưu dữ liệu điểm danh
- `date`: ngày học (ví dụ hôm nay)
- `student_id`: mã học sinh (ví dụ 9012379012)
- `time`: thời gian mà học sinh đó điểm danh (ví dụ 6h30)
## Đăng kí khuôn mặt
- Khi đăng kí, học sinh phải điền tên, lớp, mã học sinh và Email của phụ huynh

sau đó click "Lấy mẫu" để bắt đầu quá trình quét khuôn mặt.

Khi quét khuôn mặt để đăng kí, học sinh phải quay đều khuôn mặt để phần mềm quét được nhiều góc độ, từ đó trả ra kết quả nhận diện chính xác hơn.
- Sau khi quét xong khuôn mặt, dữ liệu của học sinh sẽ được lưu vào table `students`.
## Phát hiện khuôn mặt
- Sử dụng mô hình YuNet được phát triển bởi Shiqi Yu
- Khoanh vùng được chỗ có khuôn mặt

- [Nguyên lí hoạt động](https://link.springer.com/article/10.1007/s11633-023-1423-y)
## Nhận diện khuôn mặt
- Sau khi phát hiện được khuôn mặt, phần mềm sẽ so khớp khuôn mặt này với tất cả các khuôn mặt khác trong database và trả ra kết quả trùng khớp nếu có.
- Sử dụng mô hình SFace (Sigmoid-Constrained Hypersphere Loss for Robust Face Recognition) được phát triển bởi Yaoyao Zhong.
- Vì nguyên lí hoạt động của nó khá dài và phức tạp, thêm vào đó là thời gian thuyết trình không cho phép nên bỏ qua.
## Lưu vào db
- Sau khi nhận diện thành công khuôn mặt, chương trình sẽ truy xuất dữ liệu thông tin học sinh (tên, lớp, mã học sinh) trong table `students`, sau đó đối chiếu với thời gian điểm danh của học sinh để từ đó xác định được học sinh này đi học đúng giờ hay đi học muộn.
- Sau đó lưu vào table `attendances` để sau này gửi báo cáo về cho giáo viên và phụ huynh học sinh.
## Gửi dữ liệu điểm danh cho giáo viên và phụ huynh qua Email
- Sau khi kết thúc giờ học, chương trình sẽ tự động truy xuất dữ liệu điểm danh của ngày hôm đó và gửi về cho giáo viên từng lớp qua email.

- Đồng thời, dữ liệu điểm danh của từng học sinh sẽ được gửi riêng cho phụ huynh của học sinh đó để phụ huynh nắm bắt được tình hình của con.

# Những vấn đề được thắc mắc với dự án này