4.2.1 Khai báo thư viện
Đầu tiên chúng ta cần khai báo và cài đạt các thư viện cần thiết:
o Numpy (Numeric Python): là một thư viện toán học phổ biến và mạnh mẽ của Python. Cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu ma trận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng “core Python” đơn thuần.
o OS là một module tích hợp sẵn với Python, module này cho phép chúng ta thao tác với tệp và thư mục. Hãy cùng tìm hiểu về những tính năng và phương thức mà module os mang lại. Đầu tiên để sử dụng module os, hãy import module os bằng lệnh import
o Pyodbc là một mô-đun Python mã nguồn mở giúp việc truy cập cơ sở dữ liệu ODBC trở nên đơn giản. Nó triển khai đặc tả DB API 2.0 nhưng
Hình 17 Khai báo thư viện
4.2.2 Lưu ảnh và tên vào danh sách
• Đầu tiên chúng ta sẽ viết một hàm để nhập tất cả các hình ảnh trong một thư
mục có tên là “ImageAttendance” cùng một lúc. Đối với điều này, chúng tôi sẽ cần thư viện os vì vậy chúng ta sẽ nhập nó trước.
• Tiếp theo thực hiện tách tên và hình ảnh tương ứng
• Sau đó sẽ lưu trữ tất cả các hình ảnh trong một danh sách và tên của chúng
trong một danh sách khác.
Hình 18 Lưu ảnh và tên vào danh sách
4.2.3 Mã hóa danh sách các ảnh
làm điều này, chúng ta sẽ tạo một hàm. Trước tiên chúng ta sẽ chuyển đổi nó thành RGB và sau đó tìm mã hóa của nó bằng cách sử dụng hàm face_encodings (). Sau đó, chúng tôi sẽ thêm từng bảng mã vào danh sách của chúng
Hình 19 Mã hóa danh sách các ảnh
4.2.4 Đọc hình ảnh từ webcam
Đầu tiên, chúng tôi sẽ đọc hình ảnh từ webcam và sau đó thay đổi kích thước của nó thành một phần tư kích thước. Điều này được thực hiện để tăng tốc độ của hệ thống. Mặc dù hình ảnh đang được sử dụng có kích thước bằng 1/4 so với hình ảnh gốc, chúng tôi vẫn sẽ sử dụng kích thước ban đầu khi hiển thị. Tiếp theo, chúng tôi sẽ chuyển đổi nó sang RGB.
Hình 20 Đọc hình ảnh từ webcam
Khi chúng ta có khung webcam, chúng ta sẽ tìm thấy tất cả các khuôn mặt trong hình ảnh của chúng ta bằng hàm face_locations. Sau đó, chúng ta cũng sẽ mã hóa chúng bằng hàm face_encodings().
Hình 21 Mã hóa webcam
4.2.6 Tìm kết quả phù hợp.
Bây giờ chúng tôi có thể khớp các mã hóa khuôn mặt hiện tại với danh sách mã hóa các khuôn mặt đã biết để tìm các kết quả phù hợp. Chúng ta cũng sẽ tính toán khoảng cách. Điều này được thực hiện để tìm ra kết quả phù hợp nhất trong trường hợp nhiều hơn một khuôn mặt được phát hiện cùng một lúc.
Hình 22 Khớp các mã hóa và tính toán khoảng cách
4.2.7 Nhận dạng và xác định tên người đó
Bây giờ dựa trên giá trị chỉ mục, chúng ta có thể xác định khuôn mặt với hình chữ nhật được vẽ ra và tên của người đó và hiển thị nó trên hình ảnh .Nếu kiểm tra giá trị tính toán khoảng cách lớn hơn 0.5 thì điều này có nghĩa là người đó không xác định, vì vậy chung ta sẽ đổi tên hiển thị thành “unknown”
4.2.8 Kết nối cơ sở dữ liệu và bảng cơ sở dữ liệu
Kết nối cơ sở dữ liệu và lưu những giá trị xạc định được tại thời điểm nhận dang:tên, thời gian,ngày tháng
Hình 24 Kết nối và lưu cơ sở dữ liệu
Bảng cơ sở dữ liệu:
Hình 25 Bảng cơ sở dữ liệu
Hình 26 Demo nhận diện
Sau khi nhận diện thành công hệ thống sẽ lưu lại tên và thời gian xuất diện vào trong bảng cơ sở dữ liệu
Chương 5 Kết luận và hướng phát triển
5.1 Kêt luận
Qua tìm hiểu bài toán nhận diện khuôn mặt trong ảnh chúng em đã thấy được sự quan trọng của xử lý ảnh cũng như sự phát triển và tầm quan trọng của bài toán nhận diện mặt người trong đời sống. Trong quá trình xây dựng chương trình em đã tìm hiểu về thư viện mã nguồn mở OpenCV. Qua đó biết cách sử dụng các hàm được xây dựng sẵn trong thư viện OpenCV.
Đề tài đã phát triển một hệ thống đơn giản gồm 4 phần, cụ thể là (a) Xử lý ảnh và video đầu vào, (b) Phân chia thành các khung, (d) Phát hiện khuôn mặt người dùng, (e) hiển thị tên và (f)là điểm danh. Mỗi thành phần này có thể được thực hiện bằng các thuật toán cụ thể khác nhau dựa trên các yêu cầu.
Tuy nhiên hệ thống vẫn còn một số hạn chế sau:
• Hệ thống không hoạt động, nếu thời điểm nhận diện có vào ban đêm và nơi có
ánh sáng quá mạnh.
• Hệ thống không hoạt động cần chi phí đầu vào cao để thiết lập các hệ thống
cần thiết.
• Hoạt động chưa hoàn toàn hiệu quả với người sử dụng khẩu trang và kính mát.
• Hệ thống điểm danh vẫn chưa tối ưu khi vẫn ghi lại những người không xác
định
5.2 Hướng phát triển
Sau đây là một số các cải tiến có thể được thực hiện trong tương lai của hệ thống này:
Chúng tôi sẽ cố gắng cải thiện, tối ưu hóa ứng dụng
Τối ưu nhận diện trong các điều kiện khó khăn như ánh sáng , đeo khẩu trang , … và thêm thông tin như lớp, giới tính, ID … trong thời gian tới.
DANH MỤC TÀI LIỆU THAM KHẢO:
[1] opencv-python · PyPI.
[2] face-recognition · PyPI
[3] Step 3: Connecting to SQL using pyodbc - Python driver for SQL Server |