Xây dựng hệ thống chấm công bằng nhận dạng khuôn mặt

MỤC LỤC

Xây dựng nguyên lý hoạt động cho máy chấm công

Trong trường hợp thực tế sử dụng, đối với thư viện face_recognition, nếu chỉ lấy kết quả so sánh một lần làm kết quả ghi nhận chấm công thì kết quả này là không đáng tin vì khi thực hiện thử nghiệm ở điều kiện tốt nhất, các kết quả tương thích nhiều nhất vào khoảng 80% (hai khuôn mặt có độ trùng khớp cao nhất) nhưng vẫn luôn luôn tồn tại những lần kết quả nhảy nhầm sang một người khác, và trong điều kiện chạy thực tế nhiều khó khăn hơn (ví dụ như điều kiện ánh sáng, hiệu năng máy chấm công ,… ) thì việc nhảy nhầm sang người khác là liên tục xảy ra (độ khớp các khuôn mặt ở điều kiện xấu chỉ ở 50% - 55%, các kết quả dựa trên thống kê thử nghiệm). Hoặc trong 30 cái nhãn tên đó cái nhiều nhất mới đạt tần suất xuất hiện là 7 thì tất cả những nhãn tên đó đều chưa vượt qua ngưỡng 10 và chúng sẽ lưu tần suất và cộng dồn tần suất với những giây tiếp theo (nếu trong tối đa 3s mà số lượng đạt được vượt ngưỡng thì tên được coi là ổn định và được vượt qua bước xác thực 1 để đến bước xác thực 2. Nếu qua 3 giây mà không có nhãn tên nào vượt ngưỡng thì lịch sử tần xuất suất hiện sẽ bị xóa bỏ - tức là mảng đếm số lần suất hiện của nhãn tên đó trong 3s sẽ bị xóa trắng và đếm lại từ đầu. Cứ sau mỗi chu kỳ là 3s hoặc theo cài đặt của bạn, lịch sử sẽ bị xóa).

Hình 10: Xây dựng nhiều virtual camera và chụp ảnh liên tiếp
Hình 10: Xây dựng nhiều virtual camera và chụp ảnh liên tiếp

Người dùng tương tác với máy chấm công

Để thông báo về việc có khuôn mặt mới này, ta chỉ cần đợi trong vòng 3 - 4 chu kỳ điểm danh nếu như vẫn phát hiện khuôn mặt trước máy chấm công nhưng không có kết quả nào được ghi nhận thì thông tin về khuôn mặt đó, ảnh chụp màn hình máy chấm công tại thời điểm đó sẽ được ghi lại và gửi lên hệ thống, thông báo tới người quản lý nhân sự. Giải pháp thông báo lỗi điểm danh nhầm mà hệ thống sử dụng đó là để người dùng sử dụng cử chỉ bàn tay.Để thông báo về lỗi điểm danh nhầm này đồ án đã xây dựng một chương trình con lắng nghe sự kiện giơ bàn tay của người dùng, khi người dùng giơ bàn tay báo lỗi, máy sẽ hỏi lại xem có chắc chắn muốn báo lỗi này hay không. Như đã đề cập ở ban đầu nếu như sản phẩm đồ án chỉ dừng lại ở việc nghiên cứu làm sao để tăng tính chính xác và tăng độ tin cậy của thuật toán nhận diện khuôn mặt (nhanh và chính xác nhưng trên những con số, trên những màn hình console) thì việc tạo ra tiến trình hiển thi này là không cần thiết.

Vì nguyên lý hoạt động của máy chấm công là cứ chụp ảnh từ camera sau đó xử lý ảnh ( Vẽ thêm khung bo quanh khuôn mặt để người dùng biết được hệ thống đã phát hiện được khuôn mặt và đang xử lý xem khuôn mặt đứng trước khung hình là ai) sau đó hiển thị từng ảnh đã xử lý lên màn hình , việc hiển thị liên tục các hình trên màn tạo nên video, FPS là số hình hiển thị trên một giây. Việc tạo riêng một máy chấm công có thể sẽ tốn kém hơn một chút nhưng bù lại ngoài việc trải nghiệm người dùng tốt hơn ta còn có thể khiến hệ thống hoạt động bình thường khi lỗi đường truyền internet, kết quả chấm công cung phản hồi nhanh hơn mà không cần phụ thuộc vào tốc độ đường truyền.

Hình 15: Người dùng giơ tay để thông báo lỗi cho hệ thống
Hình 15: Người dùng giơ tay để thông báo lỗi cho hệ thống

Các yêu cầu của hệ thống Các yêu cầu chức năng

- Mô tả khái quát: Mô tả việc người quản lý và nhân viên xem kết quả chấm công, người quản lý thì xem được danh sách toàn bộ kết quả chấm công còn nhân viên thì xem được kết quả chấm công của mình. - Mô tả khái quát: Mô tả việc người quản lý xem và đưa ra quyết đinh sử lý với những lỗi chấm công được máy ghi nhận (tự động hoặc thông báo từ nhân viên). 42 - Mô tả khái quát: Mô tả việc người quản lý và nhân viên có thể quản lý thông tin cá nhân cơ bản của mình như tên, này tháng năm sinh, mật khẩu.

Mô tả: Mô tả việc người quản lý, nhân viên vào xem danh sách nhân viên Kích hoạt: Khi người dùng hệ thống muốn tìm kiếm thông tin hoặc thông tin liên lạc của một người dùng khác trong hệ thống. Mô tả: Mô tả việc người quản lý thay đổi thông tin cho nhân viên của mình Kích hoạt: Khi nhân người quản lý có nhu cầu thay đổi các thông tin của nhân viên (có thể là nhân viên không đủ quyền thay đổi, hoặc người quản lý thay đổi hộ). Mô tả: Mô tả việc người quản lý và nhân viên xem kết quả chấm công, người quản lý thì xem được danh sách toàn bộ kết quả chấm công còn nhân viên thì xem được kết quả chấm công của mình.

Dựa vào các yêu cầu đặt ra, hệ thống sẽ được thiết kế với một lớp trừu tượng đó là lớp Person hai lớp tiếp theo là Admin (Người quản lý) và Staff (Nhân viên), được kế thừa từ lớp Person ,cùng với các lớp như: Department (Phòng ban), TimeKeeping (Kết quả điểm danh), Todo (Ghi chú).

Hình 22: Sơ đồ ca sử dụng của hệ thống
Hình 22: Sơ đồ ca sử dụng của hệ thống

Đánh giá máy chấm công

Như đã nói ở trên nếu chỉ sử dụng kết quả đầu ra từ thư viện mà không có một cơ chế xác thực nào thì độ chính xác của đầu ra là không đáng tin và không đủ điều kiện cho nhiệm vụ chấm công điểm danh. Với 100 khuôn mặt nhân viên trên, chương trình chạy thử nghiệm và lấy 1000 kết quả trong một phút chạy (độ trung khớp khi so sánh hai khuôn mặt 60-70%, kết quả in ra dưới video realtime). - Trong điều kiện thông thường: (không có những phụ kiện gây nhiễu hay camera bị mờ) thì kết quả nhận dạng gần như chính xác tuyệt đối, với những trường hợp thông thường như vậy thì khi chất lượng phần cứng có thấp hơn một chút (tốc độ xử lý chậm), kết quả chấm công vẫn chính xác chỉ là có chậm hơn chút.

- Trong điều kiện khắc nghiệt: (ánh sáng kém, camera mờ) kết quả ghi nhận chấm công vẫn ghi nhận chính xác như điều kiện thông thường (vì thuật toán sinh ra với mục đích chỉ ghi nhận những kết quả đủ điều kiện) nhưng nhiều khuôn mặt không được điểm danh do không đủ điều kiện thông qua hai bước xác thực. Phần báo lỗi sinh ra không làm tăng độ chính xác của máy chấm công nhưng nó có thể tăng độ tin cậy cho toàn hệ thống vì vậy phần đánh giá hệ thống sau khi có chức năng báo lỗi sẽ được trình bày sau.

Hình 54: Môi trường thông thường, ánh sáng tốt.
Hình 54: Môi trường thông thường, ánh sáng tốt.

Đánh giá phần mềm quản lý

77 Với những khuôn mặt bị mờ hoặc có phụ kiện làm nhiễu kết quả thì lâu lâu sẽ có kết quả điểm danh bị nhầm (nhầm khoảng 4-5%). - Kết quả chấm công có độ tin cậy cao (95-96% kết quả cho cả hai điều kiện hoạt động dựa trờn theo dừi và thống kờ hoạt động của mỏy – hỡnh bờn dưới). - Giao diện thụng minh, người dựng cú thể dễ dàng sử dụng và theo dừi tiến độ hoạt động của máy.

78 Phần mềm quản lý nhân sự đã bao quát đủ các các yêu cầu ban đầu lúc thiết kế đặt ra, đặc biệt là nó đã đáp ứng tốt nhu cầu của bài toán chấm công và điểm danh nhân viên. Tuy vậy vẫn còn một số tính năng chưa được test nhiều bởi những những chuyên gia đỏnh giỏ và kiểm thử hệ thống nờn chưa phỏt hiện ra lỗi, do đú cần theo dừi trong quá trình chạy thực tế để phát hiện và sửa chữa.

Đánh giá toàn hệ thống

Bằng việc sử dụng một số thư viện về nhận dạng khuôn mặt đồng thời thêm vào một số cơ chế nhằm tăng độ tin cậy của kết quả, đồ án đã hoàn thành một sản phẩm có thể sử dụng ngay trong các doanh nghiệp vừa và nhỏ hoặc quy mô điểm danh lớp học. OpenCV có hỗ trợ để ta có thể xây dựng một chương trình tracking khuôn mặt, trong bước xác thực một là đếm số khuôn mặt được gán ổn định thì nếu chương trình tracking này được cài đặt đi kèm thì chắc chắn sẽ tăng cao độ tin cậy cho kết quả. Nhưng vẫn đề có thể nảy sinh là chương trình tracking khuôn mặt cũng là một chương trình khá ngốn tài nguyên phần cứng nên ta sẽ xem sét kỹ cho việc cài đặt chung với hệ thống vào máy chấm công.

- Thêm nhiều tương tác cử chỉ bàn tay cho máy (ta có thể dùng HOG để đếm số ngón tay suất hiện trên màn hình từ đó có thể ra lệnh cho máy làm nhiều việc hơn, tăng khả năng giao tiếp với hệ thống). - Nếu có điều kiện cài chương trình chấm công vào một máy chấm công có màn hình cảm ứng thì ta có thể dễ dàng và nhanh chóng thêm phần tương tác bằng việc chạm cho máy, có thể đảm bảo tính chính xác cao hơn.