TỔNG QUAN
Giới thiệu
Cùng với sự phát triển của xã hội, cách chấm công cho nhân viên cũng đã có nhiều thay đổi Trước đây, việc chấm công thường sử dụng thẻ từ RFID hoặc vân tay, nhưng điều này có thể gây tốn thời gian khi nhiều nhân viên phải xếp hàng Nhờ vào các công nghệ mới, quy trình chấm công đã được tối ưu hóa, giúp tiết kiệm thời gian và mang lại sự thuận tiện hơn cho nhân viên Hiện nay, chấm công bằng nhận diện khuôn mặt sử dụng trí tuệ nhân tạo đang trở thành xu thế phổ biến.
Công nghệ nhận diện khuôn mặt sử dụng trí tuệ nhân tạo nổi bật với tính bảo mật và độ chính xác cao, cùng với sự tiện lợi về thời gian, đã làm cho việc áp dụng công nghệ này trong điểm danh ngày càng phổ biến trong các doanh nghiệp Chẳng hạn, công ty Beet Innovators đã phát triển phần mềm BiSchool nhằm kiểm soát an ninh học đường, góp phần tăng cường an toàn cho học sinh Ngoài ra, thiết bị BiFace cũng cung cấp chức năng tương tự, phù hợp cho việc chấm công tại các công ty và nhà máy.
Hệ thống chấm công bằng nhận diện khuôn mặt cần được tối giản và dễ sử dụng cho người dùng Để đáp ứng yêu cầu này, đề tài thiết kế một hệ thống nhận diện khuôn mặt nhằm phục vụ việc điểm danh, kèm theo màn hình LCD để hiển thị tên và ID của nhân viên vừa được chấm công.
Mục tiêu đề tài
Thiết kế một hệ thống thu thập hình ảnh nhân viên và lưu trữ thông tin cá nhân của họ để phục vụ cho việc điểm danh.
Hệ thống điểm danh sử dụng công nghệ nhận diện khuôn mặt để xác định danh tính nhân viên đã được lưu trữ Khi quá trình nhận diện diễn ra thành công, các thông tin liên quan đến nhân viên sẽ được tự động cập nhật.
2 như tên, mã số, chức vụ, giới tính sẽ được in ra trong một tập tin excel trong thời gian thực dùng để lưu trữ và điểm danh
Hệ thống sẽ gửi thông tin gồm họ tên và mã số nhân viên đến một màn hình LCD đặt tại cửa, nhằm thông báo tên và mã số của người đã được nhận diện thành công.
Giới hạn
Hệ thống nhận diện hình ảnh được nghiên cứu nhằm tối ưu hóa dữ liệu cho việc nhận diện 10 người trong phòng, do dữ liệu hình ảnh chiếm nhiều dung lượng Các phần cứng trong hệ thống giao tiếp qua wifi, vì vậy tốc độ truyền mạng là yếu tố quan trọng ảnh hưởng đến hiệu quả chung Tuy nhiên, nghiên cứu chỉ tập trung vào việc nhận diện gương mặt nhân viên mà không thể phát hiện gương mặt giả.
Bố cục đề tài
Trong báo cáo này sẽ bao gồm 5 chương:
Bài viết sẽ tóm tắt các hệ thống chấm công đã tồn tại từ trước đến nay, đồng thời giới thiệu việc áp dụng công nghệ nhận diện khuôn mặt dựa trên trí tuệ nhân tạo trong quy trình chấm công Ngoài ra, bài viết cũng sẽ nêu rõ các mục tiêu và giới hạn trong việc thiết kế hệ thống nhận diện khuôn mặt phục vụ cho việc điểm danh.
CƠ SỞ LÝ THUYẾT
Tổng quan bài toán phát hiện khuôn mặt
2.1.1 Giới thiệu thuật toán Haar cascade
Ngày nay, ứng dụng nhận diện khuôn mặt đã trở nên phổ biến trong đời sống hàng ngày Hệ thống ban đầu chỉ có khả năng nhận diện qua những bức ảnh đen trắng và yêu cầu người được chụp phải nhìn thẳng vào camera, điều này hạn chế khả năng đáp ứng nhu cầu thực tế Tuy nhiên, với nhiều cải tiến đáng kể, công nghệ hiện tại có thể nhận diện và phát hiện khuôn mặt trong nhiều môi trường khác nhau, nhận diện nhiều đối tượng trong cùng một khung hình và hoạt động hiệu quả ở nhiều tư thế khác nhau.
Có nhiều phương pháp để giải quyết bài toán nhận diện khuôn mặt thông qua các cách tiếp cận khác nhau Bài nghiên cứu này sẽ áp dụng thuật toán Haar Cascade, do Paul Viola và Michael Jones phát triển, dựa trên các đặc trưng khuôn mặt như mắt, mũi và miệng.
Hệ thống sẽ thu thập mẫu từ hình ảnh khuôn mặt của nhân viên Khi quá trình này hoàn tất, hệ thống tự động trích xuất các đặc trưng hay tham số cần thiết cho việc nhận diện Đây là phương pháp học máy mà người thực hiện đề tài áp dụng trong quá trình nhận diện khuôn mặt.
Trên một bức ảnh, vùng khuôn mặt bao gồm nhiều điểm ảnh với mối quan hệ khác nhau so với các vùng ảnh khác, tạo nên những đặc trưng riêng Những đặc trưng này được thể hiện rõ khi chuyển đổi sang ảnh xám; ví dụ, cường độ của vùng mắt thường tối hơn so với vùng trán và vùng má, trong khi cường độ vùng sống mũi lại sáng hơn so với vùng hai bên.
5 mắt, … [4] Chúng ta có rất nhiều đặc trưng khác trên khuôn mặt và đặc trưng Haar- like sẽ dựa vào những đặc điểm này mà nhận diện
Hình 2.1 Đặc trưng Haar-like thể hiện trên khuôn mặt
2.1.2.2 Các đặc trưng Haar-like
Mỗi đặc trưng Haar-like là một đặc điểm hình chữ nhật, được chia thành nhiều phần nhỏ hình chữ nhật bên trong, với sự phân biệt bằng hai màu trắng và đen.
Hình 2.2 Các đặc trưng Haar-like
Dựa trên các đặc trưng cơ bản thể hiện trong hình 2.2, có thể phát triển thêm nhiều đặc trưng khác, bao gồm đặc trưng cạnh, đặc trưng đường và đặc trưng xung quanh tâm, được mô tả chi tiết trong hình 2.3, hình 2.4 và hình 2.5.
Để tính các giá trị đặc trưng Haar-like, chúng ta cần xác định sự chênh lệch giữa tổng số pixel của các vùng đen và vùng trắng, theo công thức 2.1 Hình 2.5 minh họa các đặc trưng xung quanh tâm.
𝑓(𝑥) = 𝑇ổ𝑛𝑔 𝑣ù𝑛𝑔 đ𝑒𝑛 (𝑝𝑖𝑥𝑒𝑙) − 𝑇ổ𝑛𝑔 𝑣ù𝑛𝑔 𝑡𝑟ắ𝑛𝑔 (𝑝𝑖𝑥𝑒𝑙) (2.1) Như vậy, khi đặt lên một vùng ảnh i thì i đặc i trưng i Haar-like i sẽ i tính i toán i và i đưa i ra inhững i giá i trị đặc trưng 𝑓(𝑥) của vùng ảnh đó
Giá trị đặc trưng Haar-like cho tất cả các vị trí trên bức ảnh đòi hỏi khả năng tính toán lớn Để giải quyết vấn đề này, các nhà nghiên cứu đã giới thiệu khái niệm ảnh tích hợp, giúp tính toán nhanh cho các tính năng cơ bản Ảnh tích hợp là một mảng hai chiều có kích thước tương ứng với ảnh gốc, trong đó mỗi phần tử được tính bằng tổng điểm ảnh ở phía trên và bên trái của nó, dựa trên phép cộng số nguyên đơn giản.
Hình 2.6 Cách tính Integral của ảnh tại điểm (x,y)
Công thức tính ảnh tích hợp của hình ảnh như sau: ii(x,y) = ∑ 𝑥 ’ ≤𝑥,𝑦 ’ ≤𝑦𝑖(𝑥 ’ , 𝑦 ’ ) (2.2)
Giá trị của ảnh tại vị trí (x,y) được tính bằng tổng các điểm ảnh trong hình chữ nhật, với góc trái bên trên tại (0,0) và góc phải dưới tại (x,y).
Trên thực tế khi chuyển ảnh sang dạng tích hợp ta sử dụng công thức truy hồi như công thức 2.3 và công thức 2.4: s(x, y) = s(x, y-1) + i(x, y) (2.3) ii(x, y) = ii(x-1, y) + s(x,y) (2.4)
Việc tính toán các đặc trưng Haar-like sau khi chuyển ảnh thành dạng tích hợp như công thức trên sẽ trở nên đơn giản hơn
2.1.2.3 Áp dụng tính toán đặc trưng Haar-like Để tính giá trị đặc trưng Haar-like, chúng ta phải tính được tổng giá trị điểm ảnh trong một vùng hình chữ nhật:
Hình 2.7 Ví dụ cách tính nhanh tổng các điểm của vùng D trên ảnh
Ví dụ khi cần tính tổng điểm ảnh của vùng D như trong hình 2.7:
D = A + B + C +D – (A + B) – (A + C) + A (2.5) Ở đây A + B + C + D là giá trị tại điểm 4 trên hình ảnh, A + B là giá trị tại điểm
2, A + C là giá trị tại điểm 3 và A là giá trị tại điểm 1
Chúng ta có thể tóm gọn công thức 2.5 như sau:
Đặc trưng Haar-like vẫn còn khá đơn giản so với các thuật toán tiên tiến khác như steerable features Việc phân tích chi tiết các đường biên, nén ảnh và phân tích là cần thiết để cải thiện hiệu quả và độ chính xác trong các ứng dụng nhận diện hình ảnh.
Các kết cấu thì thuật toán steerable features rất phù hợp cho việc nhận diện hình ảnh, trong khi các đặc trưng Haar like vẫn còn hạn chế trong việc nhận diện các cạnh, thanh và cấu trúc ảnh Mặc dù các đặc trưng Haar like chỉ có các chiều cao, chiều dọc, ngang và chéo, nhưng chúng có thể hỗ trợ quá trình học tập hiệu quả Khi kết hợp với Integral Image, bộ đặc trưng Haar like có thể giúp hệ thống trở nên linh hoạt hơn.
Adaboost là một phương pháp phân loại phi tuyến mạnh mẽ dựa trên kỹ thuật boosting Nó kết hợp nhiều bộ phân loại yếu để tạo ra một bộ phân loại mạnh, giúp cải thiện độ chính xác trong việc phân loại dữ liệu.
Tác giả Viola và Jones đã áp dụng kỹ thuật adaboost kết hợp với các bộ phân loại yếu, sử dụng đặc trưng Haar-like trong mô hình phân tầng (cascade) để nâng cao hiệu quả nhận diện.
Hình 2.8 Mô tả bộ lọc Haar Cascade
Trong đó, ℎ 𝑘 là i các i bộ i phân i loại i yếu i được i biểu i diễn i bằng i công i thức i 2.7 như sau:
Với: x là các cửa sổ cần xét
𝑓 𝑘 là giá trị đặc trưng của Haar like
𝑝 𝑘 là hệ số quyết định chiều của phương trình
Kỹ thuật Adaboost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh theo công thức 2.8 sau:
Thuật toán i sử dụng tập hợp các đặc trưng cơ bản trên khuôn mặt và kỹ thuật phân tầng để đạt độ chính xác cao và thời gian tính toán nhanh Bộ lọc Haar Cascade hoàn chỉnh với 38 tầng và hơn 600 đặc trưng đã đạt độ chính xác 93.9%, xử lý mỗi bức ảnh kích thước 384x288 pixel trong khoảng 0.067 giây.
Tổng quan bài toán nhận diện khuôn mặt
Thuật toán LBP (Local Binary Pattern) là một phương pháp trích đặc trưng ảnh phổ biến, được sử dụng rộng rãi trong nhiều ứng dụng hiện nay Quá trình trích đặc trưng diễn ra thông qua lớp chọn lọc, giúp thu gọn thông tin thành các véc tơ đặc trưng Những véc tơ này sau đó được áp dụng vào mô hình học máy để thực hiện việc học hoặc phân loại.
Các bước tiến hành trích xuất đặc trưng theo phương pháp LBP được thể hiện như sau:
Bước 1 Tham số: Thuật toán LBP sử dụng 4 tham số như hình 2.9:
Bán kính R xác định khoảng cách của các pixel lân cận mà thuật toán sẽ xem xét, với R=1 có nghĩa là các pixel này nằm ngay cạnh pixel trung tâm.
- P: Số pixel lân cận trung tâm
- Lưới X: Số ô theo chiều ngang Càng nhiều ô thì số chiều của véc tơ đặc trưng thu được càng cao
- Lưới Y: Số ô theo chiều dọc Càng nhiều ô thì số chiều của véc tơ đặc trưng thu được càng cao
Hình 2.9 Các tham số LBP
Khi tăng bán kính R, mối tương quan giữa các điểm ảnh sẽ giảm dần, do đó thường chọn bán kính nhỏ (thường là một hoặc hai) Việc thực hiện các phép tính trên mỗi điểm ảnh không làm thay đổi khoảng cách giữa các điểm ảnh, bằng cách lấy 𝑔 𝑝 trừ đi một lượng 𝑔 𝑐 theo công thức 2.9.
Trong đó, các giá trị 𝑔 𝑐 và 𝑔 0 ,…, 𝑔 𝑝−1 đại diện cho cấp độ xám của điểm ảnh trung bình và các điểm ảnh lân cận Vì giá trị điểm ảnh gốc chỉ phản ánh độ sáng tổng thể của bức ảnh mà không tác động đến kết cấu cục bộ, phần này có thể được loại bỏ, dẫn đến công thức 2.10 như sau.
Công thức này có thể bị ảnh hưởng bởi sự thay đổi đồng thời của độ sáng Để đảm bảo độ bất biến của điểm ảnh, ta chỉ cần xem xét dấu tại điểm ảnh đang phân tích, và công thức 2.11 sẽ minh họa điều này.
𝑇 ≈ 𝑡(𝑠(𝑔 0 − 𝑔 𝑐 ), … , 𝑠( 𝑔 𝑝−1 − 𝑔 𝑐 )) (2.11) Tiếp theo ta cần xét dấu theo công thức 2.12:
Để chuyển sự khác biệt giữa các điểm ảnh thành một giá trị duy nhất, ta cần tính toán các giá trị biểu diễn với trọng số tương ứng 2𝑖 theo công thức 2.13, trong đó 0 < 𝑥 < 0.
Để huấn luyện thuật toán nhận diện khuôn mặt, hệ thống cần sử dụng bộ dữ liệu chứa hình ảnh khuôn mặt của những người cần điểm danh Trong quá trình thực hiện, các khuôn mặt được đăng ký theo ID và tên nhân viên, giúp thuật toán thu thập thông tin cần thiết về gương mặt và thông tin cá nhân của nhân viên, phục vụ cho quá trình điểm danh hiệu quả.
Bước 3 trong quy trình áp dụng thuật toán LBPH là tạo ra các đặc trưng bằng cách làm nổi bật các điểm trên khuôn mặt Thuật toán sử dụng cửa sổ trượt, dựa trên bán kính tham số và vùng lân cận để thực hiện điều này Hình 2.10 minh họa quy trình sử dụng thuật toán này để trích xuất các đặc trưng khuôn mặt.
Hình 2.10 Áp dụng thuật toán LBP để lấy đặc trưng khuôn mặt
Hệ thống sẽ sử dụng hình ảnh khuôn mặt ở thang độ xám và áp dụng thuật toán trượt cửa sổ kích thước 3x3 để xử lý một phần của hình ảnh này.
Nó cũng có thể được biểu diễn dưới dạng ma trận 3x3 chứa các cường độ của pixel nằm trong khoảng 0-255
Thuật toán sẽ xác định giá trị trung tâm của ma trận làm ngưỡng, từ đó sử dụng giá trị này để tính toán các giá trị mới cho 8 pixel lân cận Đối với mỗi pixel gần với ngưỡng, thuật toán sẽ gán giá trị nhị phân mới: “1” cho các giá trị bằng hoặc cao hơn ngưỡng và “0” cho các giá trị thấp hơn ngưỡng.
Ma trận hiện tại chỉ bao gồm các giá trị nhị phân, trong đó giá trị trung tâm được loại bỏ vì nó được dùng làm ngưỡng cho các vùng lân cận Thuật toán yêu cầu nối từng giá trị trong ma trận.
Mỗi vị trí trong ma trận sẽ được chuyển đổi thành một giá trị nhị phân mới, với 12 nhị phân từ mỗi vị trí Quá trình này có thể thực hiện theo chiều kim đồng hồ hoặc ngược chiều kim đồng hồ, nhưng kết quả cuối cùng vẫn sẽ giống nhau.
Chuyển đổi giá trị nhị phân thành giá trị thập phân và đặt vào vị trí trung tâm của ma trận, tương ứng với một pixel từ ảnh gốc Cuối cùng, hệ thống tạo ra một hình ảnh mới, phản ánh rõ nét hơn các đặc tính của hình ảnh ban đầu.
Bước 4: Trích xuất biểu đồ bằng cách sử dụng hình ảnh cuối cùng, tận dụng các tham số lưới X và lưới Y để chia hình ảnh thành nhiều lưới, như minh họa trong hình 2.11.
Hình 2.11 Trích xuất hình ảnh ra thành biểu đồ
Dựa vào hình 2.10, mỗi biểu đồ từ hình ảnh ở thang độ xám sẽ chứa 256 bit (0-255), thể hiện cường độ của từng pixel.
Tổng quan về MySQL
MySQL là hệ quản trị dữ liệu miễn phí, tích hợp tốt với ngôn ngữ lập trình Python Mặc dù MySQL sử dụng cú pháp tương tự như SQL, nhưng không bao quát toàn bộ các truy vấn cao cấp Về cơ bản, MySQL chủ yếu đáp ứng các truy xuất đơn giản trong quá trình vận hành hệ thống, nhưng vẫn có khả năng giải quyết nhiều bài toán liên quan đến Python.
MySQL là lựa chọn lý tưởng cho các ứng dụng truy cập cơ sở dữ liệu trên Internet nhờ vào tốc độ cao và tính bảo mật vượt trội, bao gồm nhiều tính năng bảo mật ở cấp độ cao Hơn nữa, MySQL có khả năng xử lý khối lượng lớn dữ liệu và có thể mở rộng dễ dàng khi cần thiết.
Người thực hiện đồ án sử dụng MySQL để lưu trữ thông tin nhân viên khi đăng ký nhận diện khuôn mặt, đồng thời có khả năng hiển thị thông tin cá nhân lên màn hình sau quá trình điểm danh.
THIẾT KẾ HỆ THỐNG
Yêu cầu thiết kế
Hệ thống được thiết kế để nhận diện và phát hiện nhân viên qua việc sử dụng camera thu thập dữ liệu hình ảnh tại cửa văn phòng Nhân viên sẽ nhìn vào camera để hệ thống tiến hành so sánh và đưa ra kết quả nhận diện Kết quả này sẽ được lưu trữ dưới dạng file Excel, bao gồm mã nhân viên, họ tên, chức vụ và thời gian nhận diện Sau khi nhận diện thành công, tên và mã số nhân viên sẽ được chuyển đến một trang web sử dụng Google Firebase Một ESP8266 kết nối với LCD sẽ nhận thông tin từ Google Firebase và hiển thị tên cùng mã số của nhân viên lên màn hình LCD để thông báo.
Sơ đồ đặc tả
Hình 3.1 Sơ đồ đặc tả hệ thống
Khi bắt đầu, máy ảnh của ESP32 Camera sẽ được bật để thu thập hình ảnh Quá trình này bao gồm việc lưu trữ hình ảnh của nhân viên, với việc chụp khuôn mặt và lưu trữ dữ liệu trên máy tính Sau khi lấy mẫu ảnh, chúng ta sẽ thêm thông tin cơ bản như tên, mã số và chức vụ của từng nhân viên, tạo cơ sở cho việc nhận diện sau này Khi kích hoạt chức năng nhận diện, hệ thống sẽ tiếp tục sử dụng máy ảnh để lấy mẫu và so sánh với các mẫu đã lưu Thông tin về những người được nhận diện thành công sẽ được lưu trữ trong một tập tin Excel, bao gồm thông tin đã tạo trước đó cùng với thời gian thực hiện.
Hệ thống nhận diện trong thời gian thực cho phép nhân viên biết liệu họ đã được nhận diện hay chưa Khi một nhân viên được nhận diện, hệ thống xử lý trung tâm sẽ gửi tín hiệu qua kết nối không dây lên Google Firebase, bao gồm họ và tên cùng mã số nhân viên Thông tin này sẽ được ESP8266 đọc và hiển thị trên màn hình LCD, thông báo cho người dùng về trạng thái nhận diện của mình.
Sơ đồ khối
Hình 3.2 Sơ đồ khối hệ thống
Khối máy ảnh có nhiệm vụ thu thập dữ liệu hình ảnh của nhân viên trong thời gian thực và truyền tải những hình ảnh này đến khối xử lý trung tâm qua wifi, sử dụng địa chỉ IP mà khối máy ảnh cung cấp.
Khối xử lý trung tâm sử dụng máy tính để lấy hình ảnh từ địa chỉ IP của khối máy ảnh, phục vụ cho việc phát hiện và nhận diện khuôn mặt Sau khi nhận diện thành công, khối xử lý trung tâm sẽ gửi thông tin như họ tên, mã nhân viên, thời gian và trạng thái điểm danh lên Google Firebase để lưu trữ tạm thời.
Khối nhận có nhiệm vụ thu thập dữ liệu từ Google Firebase, bao gồm họ tên, mã nhân viên, thời gian và trạng thái điểm danh, sau đó chuyển giao các thông tin này đến khối hiển thị.
Khối hiển thị có chức năng lấy thông tin từ khối nhận và hiển thị trên màn hình LCD, nhằm thông báo trạng thái điểm danh của nhân viên sau khi quá trình nhận diện hoàn tất.
Thiết kế từng khối
3.4.1 Thiết kế khối máy ảnh
Khối máy ảnh đóng vai trò quan trọng trong việc thu thập thông tin đầu vào, cụ thể là dữ liệu hình ảnh, để phục vụ cho quá trình xử lý.
Việc lựa chọn máy ảnh ảnh hưởng lớn đến kết quả nhận diện điểm danh trong hệ thống Đối với đề tài nhận diện khuôn mặt, máy ảnh cần có độ phân giải cao, khả năng kết nối không dây và ổn định về đường truyền tín hiệu Hình 3.3 trình bày các loại máy ảnh có thể sử dụng cho nghiên cứu này.
Hình 3.3 Camera giám sát và các module camera phổ biến
Ba loại máy ảnh được đề xuất trong nghiên cứu này hiện đang dễ dàng tìm thấy và mua trên thị trường Để chọn thiết bị phù hợp, người thực hiện đã tiến hành so sánh các phần cứng của máy ảnh, như thể hiện trong hình 3.3 của bảng 3.1.
Bảng 3.1 So sánh các loại camera
Camera TP-Link Esp32 camera Module camera
OV7670 Độ phân giải Full HD 1080p 1632 × 1232 640 x 480
Kích thước Lớn Nhỏ Nhỏ
Giá thành Tương đối cao Trung bình Thấp
Kết nối Không dây Không dây Có dây
Người thực hiện đề tài đã chọn module ESP32 camera do đã có kinh nghiệm sử dụng trong quá trình học tập và tích hợp thư viện Arduino Mặc dù có giá thành trung bình, ESP32 camera nổi bật với khả năng kết nối WiFi và độ phân giải tốt cho việc thu thập hình ảnh Khi được cấp nguồn ngoài, module có thể hoạt động độc lập với hệ thống nhận diện khuôn mặt Để đảm bảo hệ thống nhận diện chính xác, khối máy ảnh cần được đặt ở khoảng cách phù hợp Để truyền dữ liệu không dây, người dùng cần cung cấp tài khoản và mật khẩu WiFi cho ESP32 camera Sau khi kết nối, module sẽ thông báo địa chỉ IP, nơi mà ESP32 camera sẽ gửi dữ liệu hình ảnh Khối xử lý trung tâm sẽ truy cập vào địa chỉ IP này để thu thập thông tin hình ảnh.
Hình 3.4 Thông tin địa chỉ IP mà khối máy ảnh truyền dữ liệu
3.4.2 Thiết kế khối xử lý trung tâm
Khối xử lý trung tâm tích hợp các thuật toán như phát hiện khuôn mặt, trích xuất đặc trưng và nhận diện khuôn mặt Hình 3.5 minh họa quy trình hoạt động của khối này.
Khối xử lý trung tâm nhận dữ liệu hình ảnh từ khối máy ảnh để tiến hành phát hiện khuôn mặt thông qua thuật toán Haar Cascade Kích thước dữ liệu hình ảnh ảnh hưởng đến tốc độ xử lý, do đó, kích thước được chọn là 450x450 pixel để tối ưu hóa quá trình trích đặc trưng khuôn mặt Hệ thống sử dụng đường dẫn IP của camera ESP32 để truyền tải dữ liệu.
Hệ thống nhận diện khuôn mặt sử dụng cường độ sáng tối để chuyển đổi ảnh thành ảnh đen trắng sau khi điều chỉnh kích thước Để cải thiện độ chính xác, 100 bức ảnh khuôn mặt của nhân viên được gán nhãn sẽ được sử dụng và áp dụng thuật toán LBP để trích xuất đặc trưng Cuối cùng, hệ thống so sánh ảnh khuôn mặt đang nhận diện với các đặc trưng đã lưu trữ trong không gian Euclide, từ đó đưa ra kết quả và thực hiện điểm danh nhân viên.
Trong quá trình điểm danh, hệ thống tự động lưu trữ lịch sử nhận diện vào tệp tin CSV Thông tin cá nhân như họ tên, mã nhân viên, thời gian và trạng thái điểm danh sẽ được lưu trữ tạm thời trên Google Firebase.
Ngoài ra, khối xử lý trung tâm mà người thực hiện đề tài thiết kế có giao diện như hình 3.6 với chức năng các nút như sau [14]-[15]:
Nút nhân viên được thiết kế để lưu trữ, thêm hoặc xóa thông tin của nhân viên, đồng thời lưu giữ hình ảnh của họ nhằm phục vụ cho việc nhận diện khuôn mặt.
Nút nhận diện có khả năng tự động nhận diện khuôn mặt và lưu trữ thông tin quan trọng như tình trạng điểm danh và số lần đi trễ của nhân viên vào file Excel.
• Nút điểm danh: có chức năng hiển thị thông tin tình trạng điểm danh của nhân viên dưới dạng file excel
• Nút số lần trễ: hiển thị thông tin đi trễ của nhân viên trong tháng vừa qua dưới dạng file excel
Hình 3.6 Giao diện chính của khối xử lý trung tâm
Khối nhận sẽ lấy dữ liệu từ khối xử lý trung tâm và truyền lên Firebase để hiển thị trên màn hình LCD Để đảm bảo kết nối không dây, mô đun kết nối không dây tương thích với chuẩn I2C sẽ được sử dụng để truy cập dữ liệu từ Firebase Với chi phí thấp và yêu cầu sử dụng ít chân giao tiếp, mô đun esp8266 được chọn làm khối nhận Esp8266 sẽ kết nối Wi-Fi để truy cập, lấy và truyền dữ liệu từ Firebase, đồng thời kết nối với khối hiển thị qua giao tiếp I2C.
3.4.4 Thiết kế khối hiển thị
Sau khi thu thập thông tin từ Firebase của khối nhận, màn hình LCD 20x04 sẽ hiển thị thông tin của người được nhận diện theo trình tự như hình 3.7.
Dòng đầu tiên hiển thị họ và tên nhân viên, nếu tổng số ký tự vượt quá 15, họ sẽ được viết tắt bằng chữ cái đầu tiên Nếu sau khi viết tắt họ vẫn còn vượt quá 15 ký tự, tên lót cũng sẽ được viết tắt bằng chữ cái đầu.
- Dòng thứ hai: hiển thị mã nhân viên của người mà được hệ thống nhận diện thành công
- Dòng thứ ba: hiển thị thời gian mà người nhân viên đó được nhận diện thành công bao gồm giờ, phút và giây
- Dòng thứ tư: hiển thị trạng thái của nhân viên khi được điểm danh Sẽ có hai trạng thái được hiển thị là “TreGio” và “Dunggio”
Hình 3.7 Minh họa hiển thị thông tin lên LCD
Sau đây hình 3.8 mô tả việc kết nối giữa khối hiển thị và khối nhận
Hình 3.8 Mô tả quá trình kết nối LCD2004 và Esp8266
Để cung cấp nguồn cho mạch hoạt động, người thực hiện đề tài đã quyết định không thiết kế nguồn riêng mà sử dụng trực tiếp từ Adapter Người dùng chỉ cần cắm điện là có thể sử dụng mạch một cách dễ dàng.
• Nguồn cấp cho cảm biến hồng ngoại, esp8266 và LCD 20x04:
Bảng 3.2 Thống kê nguồn tiêu thụ của esp8266 và LCD20x04
Thiết bị Dòng điện sử dụng (mA)
Theo bảng 3.2, tổng dòng điện của ba thiết bị khoảng 0.5 A, vì vậy để đảm bảo cung cấp đủ dòng điện cho cả ba thiết bị, người thực hiện đề tài đã quyết định sử dụng Adapter có nguồn 5V – 2A.
• Nguồn cung cấp cho Esp32 camera:
Bởi vì esp32 camera sử dụng nguồn từ 2A trở lên cho nên thiết bị này sẽ được cấp nguồn sử dụng Adapter có nguồn 5V – 2A.
Thiết kế phần mềm
3.5.1 Phương pháp phát hiện khuôn mặt
Trong bài viết này, việc phát hiện khuôn mặt từ dữ liệu hình ảnh đầu vào là bước đầu tiên trong quá trình nhận diện khuôn mặt Có hai phương pháp phổ biến để thực hiện điều này: deep learning và thuật toán Haar Cascade Tuy nhiên, tác giả đã chọn sử dụng thuật toán Haar Cascade do tính đơn giản và hiệu quả chính xác cao của nó.
Qua khảo sát, bảng 3.3 trình bày tỷ lệ phát hiện khuôn mặt khi áp dụng thuật toán Haar Cascade.
Bảng 3.3 Khảo sát tỷ lệ phát hiện khuôn mặt sử dụng thuật toán Haar Cascade
Số thứ tự Số người trong ảnh Số khuôn mặt phát hiện
Kết quả khảo sát cho thấy hệ thống phát hiện đầy đủ 10 khuôn mặt trong hình ảnh, chứng minh hiệu quả của thuật toán Haar Cascade trong việc đáp ứng yêu cầu và giới hạn đề ra.
Kết quả sử dụng thuật toán Haar Cascade cho việc phát hiện khuôn mặt cho thấy hệ thống có khả năng nhận diện tốt trong hình 3.9, nhưng gặp khó khăn khi khuôn mặt nghiêng như hình 3.10 Điều này chỉ ra rằng nếu khuôn mặt không ở vị trí chính diện, hệ thống sẽ không thể phát hiện và đưa ra kết quả chính xác.
Hình 3.9 Kết quả phát hiện khuôn mặt
Để khảo sát khoảng cách tối ưu cho việc phát hiện khuôn mặt, người thực hiện đã tiến hành chụp ảnh khuôn mặt ở các khoảng cách khác nhau, như được trình bày trong bảng 3.4 Kết quả cho thấy không phát hiện được khuôn mặt tại một số khoảng cách nhất định.
Bảng 3.4 Ảnh chụp khuôn mặt ở từng khoảng cách
Khoảng cách (đơn vị: cm) Ảnh chụp
Theo bảng 3.4, thuật toán Haar Cascade đạt độ chính xác và hiệu quả cao trong việc phát hiện khuôn mặt ở khoảng cách từ 25 - 30 cm Khoảng cách này đảm bảo ảnh chụp khuôn mặt rõ nét, không quá lớn cũng không quá nhỏ, đồng thời tốc độ phát hiện nhanh, với thời gian hệ thống lấy 100 tấm ảnh chỉ khoảng 4 giây.
3.5.2 Phương pháp trích xuất đặc trưng
Sau khi nhận dữ liệu hình ảnh và phát hiện khuôn mặt, cần có phương pháp để trích xuất các đặc trưng thành dữ liệu số dễ lưu trữ và xử lý Đối với 100 tấm hình trong dữ liệu mẫu lớn, phương pháp LBP được sử dụng để chọn lọc và trích ra các đặc trưng trên khuôn mặt.
Phương pháp trích xuất đặc trưng LBP với ảnh mẫu kích thước 450x450 tạo ra véc-tơ đặc trưng gồm 128 giá trị, giữ nguyên độ dài bất kể kích thước ảnh đầu vào Thuật toán này nổi bật trong việc mô tả đặc trưng bề mặt (texture patterns) của đối tượng, đáp ứng yêu cầu của hệ thống Do đó, với khả năng lưu trữ thấp nhưng chứa đựng đầy đủ các đặc điểm của ảnh, thuật toán LBP được chọn để xây dựng hệ thống.
3.5.3 Phương pháp nhận diện khuôn mặt
Quá trình nhận diện khuôn mặt dựa vào các đặc trưng từ cơ sở dữ liệu mẫu để đưa ra kết quả chính xác Đề tài này áp dụng phương pháp không gian Euclide để thực hiện việc nhận diện khuôn mặt hiệu quả.
Phương pháp không gian Euclide sử dụng véc-tơ 128 chiều để chi tiết hóa các đặc tính khuôn mặt, sau đó so sánh các tham số này với các đặc trưng trong cơ sở dữ liệu mẫu nhằm xác định khuôn mặt đang được nhận diện Do đó, người thực hiện quyết định áp dụng phương pháp này cho tiến trình nhận diện khuôn mặt của hệ thống.
Hình 3.11 Biểu diễn véc-tơ trên khuôn mặt dùng không gian euclide
KẾT QUẢ
Mô hình phần cứng
Mô hình phần cứng được thiết kế đơn giản nhưng đầy đủ chức năng theo mục tiêu đề tài Như hình 4.1 mô tả, mô hình bao gồm một cảm biến hồng ngoại để xác định sự hiện diện của nhân viên Dưới cảm biến là camera ESP32, có nhiệm vụ thu nhận hình ảnh gương mặt, bên cạnh là màn hình LCD hiển thị thông tin của người được nhận diện Khi nhân viên điểm danh, họ nhìn vào camera, và nếu hệ thống nhận diện thành công, tên cùng mã nhân viên sẽ được hiển thị trên màn hình LCD Việc đặt màn hình LCD cạnh camera giúp nhân viên dễ dàng nhận biết tình trạng nhận diện và ghi lại thông tin.
Hình 4.1 Mô hình phần cứng
➢ Nhận diện và điểm danh
Khi cảm biến hồng ngoại phát hiện khuôn mặt trong khu vực đặt máy ảnh, hệ thống sẽ tự động khởi động chương trình nhận diện khuôn.
Hệ thống nhận diện nhân viên sẽ hiển thị thông tin như mã số và tên nhân viên trên giao diện khi nhận diện thành công Thông tin này, cùng với thời gian và trạng thái điểm danh, sẽ được gửi lên Firebase để quản lý Các dữ liệu từ Firebase sau đó sẽ được truy cập và hiển thị trên màn hình LCD Thời gian điểm danh cùng với thông tin cá nhân cũng sẽ được lưu trữ vào tập tin CSV, giúp quản lý điểm danh trở nên thuận tiện hơn.
Hình 4.2 Giao diện hệ thống nhận diện
Nút nhập file CSV Nút xuất file CSV Bảng hiển thị khi mở CSV
Hình 4.3 Kết quả nhận diện nhân viên s
Hình 4.4 Thông tin trên Firebase đọc được từ việc nhận diện
Giá trị của cảm biến hồng ngoại
Các giá trị của cảm biến hồng ngoại
Hình 4.5 Hiển thị thông tin nhân viên đã lưu thông tin lên LCD
Hình 4.6 Thông tin điểm danh lưu trữ vào tập tin csv
Hệ thống thiết kế cho phép xuất file CSV ghi nhận nhân viên đi trễ và thời gian trễ của họ, như thể hiện trong hình 4.7 Ngoài ra, hệ thống còn có khả năng đếm số lần đi trễ của từng nhân viên và xuất ra file CSV để thuận tiện cho việc thống kê, được minh họa trong hình 4.8.
Mã số nhân viên Chức vụ Thời gian điểm danh
Hình 4.7 Thông tin đi trễ của nhân viên
Hình 4.8 Thông tin số lần đi trễ của nhân viên
Khi người lạ xuất hiện trong hệ thống, hệ thống không tìm thấy thông tin trong cơ sở dữ liệu và hiển thị kết quả là “Người lạ” Đồng thời, Firebase sẽ nhận thông tin như tên, mã nhân viên, thời gian và trạng thái điểm danh, thông báo kết quả là “Người lạ” với các giá trị còn lại là “không” Màn hình LCD cũng hiển thị kết quả cảnh báo tương ứng.
Hình 4.9 Nhân viên chưa được lưu thông tin và hệ thống trả về kết quả “Nguoi la”
Hình 4.10 Thông tin “Nguoila” trên Firebase
Hình 4.11 LCD hiển thị thông báo “Nguoila”
➢ Cách thêm và chỉnh sửa thông tin
Để điều chỉnh hoặc thêm thông tin nhân viên, người quản lý chỉ cần quay lại giao diện chính và nhấn vào nút nhân viên, sau đó giao diện quản lý thông tin nhân viên sẽ hiển thị.
Hình 4.12 Giao diện của hệ thống lưu thông tin
Thông tin như họ tên, mã nhân viên, chức vụ và các thông tin liên lạc sẽ được lưu trữ trong MySQL Sau khi lưu, người quản lý chỉ cần chọn thông tin nhân viên để tiến hành lấy ảnh Máy ảnh sẽ chụp 100 bức ảnh khuôn mặt dưới dạng ảnh đen trắng, giúp tăng cường độ chính xác trong việc nhận diện với nhiều đặc trưng cụ thể Cuối cùng, hệ thống sẽ thông báo đã lưu ảnh thành công.
“Trích xuất đặc trưng” để hệ thống tiến hành trích ra những đặc trưng trên những gương mặt mà hệ thống đã lấy mẫu
Hình 4.13 Thông báo lưu thông tin nhân viên thành công
Hình 4.14 Thông tin được lưu trữ lại MySQL
Hình 4.15 Quá trình thu thập hình ảnh
Hình 4.16 Quá trình lưu hình ảnh thành công.