CHƯƠNG 1: CƠ SỞ LÝ THUYẾT Trong chương này sẽ tập trung nghiên cứu tìm hiểu về ngôn ngữ lập trình Python, các kĩ thuật nhận diện cùng với sự hỗ trợ của thư viện Opencv 1.1 Tổng quan về hệ thống Hệ thống điểm danh bằng nhận diện khuôn mặt thường được tích hợp trong hệ thống quản lí giáo dục, doanh nghiệp để cung cấp giải pháp tự động và hiệu quả cho việc điểm danh và quản lí hiện vật. Công nghệ nhận diện khuôn mặt đã và đang được phát triển liên tục để cải thiện độ chính xác, tốc độ và tiện ích. Những công nghệ hiện đại cũng đã cho phép xác thực hay nhận dạng một cá nhân dựa vào các đặc trưng sinh lí học của con người như đặc điểm vân tay, gương mặt,… hoặc dựa trên những đặc điểm liên quan đến nhận diện khuôn mặt là một trong số ít các phương pháp nhận dạng dựa vào đặc trưng sinh lý cho kết quả chính xác cao và thuận tiện sử dụng. Các chương trình về nhận dạng có nhiều ứng dụng chẳng hạn như nhận dạng tội phạm, kiểm soát truy cập các hệ thống máy tính, giải pháp bảo mật bổ sung cho các giao dịch rút tiền tự động ATM, đối chiếu ảnh trong các hoạt động của ngành luật pháp, hay các ứng dụng giao tiếp người – máy, hoặc quản lý nhân sự, chấm công trong một đơn vị.2 Ngôn ngữ lập trình Python Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau.
Hiện nay, python đang được sử dụng rất rộng rãi trong các ứng dụng về trí tuệ nhân tạo, học máy, học sâu. Python được tạo ra bởi Guido và Rossum và được phát triển trong một dự án mã nguồn mở. 6 Với cú pháp cực kì đơn giản và dễ hiểu, dễ sử dụng, Python là sự lựa chọn hoàn hảo cho những ai lần đầu tiên học lập trình. Tuy nhiên, đây cũng là ngôn ngữ nổi tiếng về sự chặt chẽ, nhanh, mạnh và có mặt ở mọi hệ điều hành.
Python có 100 thư viện xây dựng sẵn để thực hiện các thuật toán Machine Learning và Deep Learning khác nhau. Hơn nữa, Python có thể chạy trên nhiều nền tảng bao gồm Windows, MacOS, Linux,. Python có một cộng đồng lớn và tích cực, là nguồn hỗ trợ quan trọng khi gặp vấn đề về mã hóa. Python là ngôn ngữ được lựa chọn cho việc triển khai trí tuệ nhân tạo với nhiều thuật toán sẵn có.
Hỗ trợ cho các gói xác định trước giảm độ phức tạp lập trình và “kiểm tra khi code” giúp giảm số lượng mã viết.3 Các thư viện mã nguồn mở Mục này sẽ giới thiệu về các thư viện mã nguồn mở được sử dụng trong đề tài: Thư viện OpenCV: OpenCV viết tắt của Open Source Computer Vision được xem là một trong những thư viện mã nguồn mở hàng đầu cho việc xử lý ảnh theo thời gian thực. OpenCV chính thức được ra mắt đầu tiên vào năm 1999, OpenCV là thư viện mã nguồn mở miễn phí cho cả học thuật và thương mại. Thư viện có hơn 2500 thuật toán được tối ưu hóa. OpenCV hỗ trợ đa nền tảng gồm Windows, Linux, Mac OS, iOS và Android.
OpenCV hỗ trợ ngôn ngữ lập trình C/C++, Python và Java. OpenCV được viết bằng C / C ++ và tích hợp OpenCL. Thư viện OpenCV Dlib: 7 Dlib là một công cụ C++ hiện đại với các thuật toán học máy và công cụ để phát triển phần mềm phức tạp trong C++ , đặc biệt hữu ích trong nhiều lĩnh vực như robot, thiết bị nhúng, điện thoại di động và môi trường máy tính hiệu suất cao. Bản quyền mã nguồn mở giúp người dùng sử dụng miễn phí.
Dlib là một phần của thư viện OpenCV, chủ yếu được sử dụng cho việc xác định khuôn mặt bằng thuật toán HOG ( Histogram of Oriented Gradients) và SVM( Support Vector Machine), với khả năng chạy nhanh và ứng dụng trong thời gian thực. Dlib cũng hỗ trợ các hàm xác định khuôn mặt dựa trên mạng CNN( Convolutional Neural Network). Thư viện Face-recognition: Thư viện face-recognition là một thư viện dùng để nhận diện khuôn mặt bằng ngôn ngữ lập trình Python. Face-recognition sử dụng thư viện dlib, một thư viện xử lí hình ảnh và học máy, để phát hiện và xác định các đặc trưng của khuôn mặt, so sánh và nhận dạng các khuôn mặt khác nhau, huấn luyện các mô hình nhận dạng riêng.
Với nhiều ưu điểm như độ chính xác cao và tốc độ nhanh, dễ cài đặt và sử dụng, không giới hạn số lượng khuôn mặt cần nhận diện, hỗ trợ nhiều loại hình ảnh và video, có nhiều ví dụ và tài liệu hướng dẫn. Do đó được sử dụng nhiều cho các ứng dụng như chấm công nhân viên, khóa màn hình bằng khuôn mặt, tạo bộ lọc và hiệu ứng cho khuôn mặt, phân tích cảm xúc và biểu cảm khuôn mặt, ước lượng được tuổi và giới tính.1 Ví dụ sau khi sử dụng thư viện face-recognition Face Recognition Documentation - Adam Geitgey 1.4 Bài toán nhận đạng khuôn mặt Những vấn đề sau đây cần được giải quyết trước khi đưa ra một thuật toán cho hệ thống điểm danh. - Tìm khuôn mặt – không nhận diện được khuôn mặt bất kể đầu vào là video từ máy quay hay một video từ đoạn phim truyền hình hoặc bất kỳ video nào - Vị trí của khuôn mặt – Trong các trường hợp thử nghiệm thực tế, nh chủ yếu thấy rằng khuôn mặt thường bị xoay hoặc không đúng vị trí tức là về phía máy ảnh. Mục tiêu chính của thời điểm này sẽ biến bức ảnh thành như vậy chụp trực tiếp đối diện với máy ảnh.
- Xác định các nét đặc trưng trên khuôn mặt – bước này có thể được coi là bước chính trong nhận dạng khuôn mặt nơi có những nét độc đáo trên khuôn mặt được thu thập và lưu trữ dưới dạng có giá trị kỹ thuật số. 9 - Nhận dạng người – dữ liệu nhận được từ video đầu vào được so sánh muộn hơn với dữ liệu có sẵn, nếu cả hai dữ liệu đều giống nhau, chúng tôi sẽ điểm danh.1 Tìm khuôn mặt Bước đầu tiên để phát triển một loại hệ thống điểm danh như vậy bước chính sẽ là xác định một khuôn mặt từ khung hình nhất định của video. Nếu bất kỳ khuôn mặt nào vẫn không bị phát hiện hoặc bất kỳ vật thể nào khác được coi như hệ thống nhóm đang phát triển vẫn không tốt và kết quả sẽ được tạo ra sẽ là không đạt yêu cầu. Vì vậy, để khắc phục vấn đề này người ta sử dụng một trong các thuật toán phổ biến nhất để tìm khuôn mặt trong ảnh được phát minh vào năm 2005 bởi Navneet Dalal và Bill Triggs, Thuật toán hoạt động trên các bước sau đây: - Để tìm khuôn mặt trong một hình ảnh, chúng ta sẽ bắt đầu bằng cách tạo hình ảnh của mình đen trắng vì chúng ta không cần dữ liệu màu để tìm khuôn mặt: Hình 1.2 Ảnh của Will Ferrel Face Recognition Documentation - Adam Geitgey + Mục tiêu của chúng ta sẽ xem xét từng pixel và xem xét pixel xung quanh của chúng và vẽ mũi tên về phía pixel tối hơn.
Các quá trình tương tự được tiếp tục cho tất cả các pixel. Cuối cùng, chúng ta đi đến tình huống 10 trong đó tất cả các pixel đều được thay thế bằng mũi tên. Những mũi tên này được gọi là gradient và chúng hiển thị luồng ánh sáng trong khung.3 Phiên bản pixel của hình 1 hiển thị hướng chuyển màu Face Recognition Documentation - Adam Geitgey + Chia hình ảnh thành các hình vuông có kích thước 16 x16 pixel và mỗi khối được thay thế bằng hướng mũi tên lớn nhất trong khối đã cho. Kết quả cuối cùng sẽ rất đơn gian biểu diễn của khuôn mặt được chụp trong khung.
+ Sau đó, hình ảnh được so sánh với mẫu HOG (Histogram of Oriented Gradients) được trích xuất từ một loạt các khuôn mặt huấn luyện, mẫu phổ biến nhất có mẫu đã biết và được đánh dấu. Cái này sẽ giúp đánh dấu các khuôn mặt trong khung hình thu được từ video làm đầu vào.4 Hình ảnh dựa trên HOG được so sánh với HOG được tạo ra từ rất nhiều hình ảnh khuôn mặt Face Recognition Documentation - Adam Geitgey 1.2 Vị trí của khuôn mặt Ý tưởng cơ bản là chúng ta sẽ đưa ra 68 điểm cụ thể (được gọi là điểm mốc) tồn tại trên mọi mặt - phần trên cùng của cằm, mép ngoài của mỗi mắt, 11 mép trong của mỗi mắt lông mày, v. Sau đó, chúng ta sẽ đào tạo một thuật toán học máy để có thể tìm ra 68 điểm cụ thể này trên bất kỳ khuôn mặt nào.5 68 điểm mốc chúng ta sẽ xác định trên mỗi khuôn mặt. Hình ảnh này được tạo ra bởi Brandon Amos của CMU, người làm việc trên Openface.
Bây giờ chúng ta đã biết vị trí của miệng và mắt, chúng ta sẽ xoay, chia tỷ lệ, cắt hình ảnh sao cho mắt và miệng ở giữa càng nhiều càng tốt. Bằng cách thực hiện căn giữa khuôn mặt, nó sẽ giúp chúng ta rất nhiều trong bước tiếp theo. làm cho nó chính xác và hiệu quả hơn.3 Xác định đặc trưng của gương mặt Để giải quyết vấn đề này, chúng ta có thể sử dụng một DCNN (Deep Convolutional Neural Networks), sẽ được đào tạo để xác định 128 số duy nhất đặc điểm khuôn mặt. Quá trình đào tạo diễn ra theo các bước dưới đây: • Tải hình ảnh khuôn mặt đào tạo của một người đã biết • Tải một hình ảnh khác của cùng một người • Tải ảnh của một người khác 12 DCNN sẽ điều chỉnh kết quả thu được từ hình ảnh 1 và 2 sao cho 128 đặc điểm thu được giống nhau nhất có thể và hình ảnh đó được tải ở bước thứ 3 càng khác càng tốt.4 Nhận diện gương mặt So sánh các khuôn mặt với các khuôn mặt có sẵn, tức là có 128 tính năng có sẵn thu được ở bước trước sẽ được so sánh với dữ liệu chúng ta có, nếu dữ liệu khớp nhau, nhóm sẽ nhập thời gian vào hệ thống với tên của người sẽ giúp nhóm đã tạo ra Hệ thống điêm danh.
13 CHƯƠNG 2: THIẾT KẾ HỆ THỐNG ĐIỂM DANH SINH VIÊN BẰNG NHẬN DIỆN GƯƠNG MẶT 2.1 Mục đích và yêu cầu 2.1 Mục đích Mục đích của đồ án “Hệ thống điểm danh sinh viên bằng nhận diện gương mặt” là tận dụng công nghệ nhận diện tương mặt để tạo ra một giải pháp hiệu quả và tiện lợi trong việc quản lý và kiểm soát quá trình điểm danh sinh viên. Đồng thời, đây cũng là một phần của sự đổi mới trong lĩnh vực công nghệ và quản lý, nhằm nâng cao trải nghiệm và tối ưu hóa quá trình quản lý sinh viên.