Các Bộ, ban ngành, địa phương cùng các doanh nghiệp, tổ chức, cá nhân luôn chú trọng nghiên cứu hệ thống nhận diện sinh trắc học ngày càng trở nên hoàn thiện hơn và có thể ứng dụng thực
Trang 2LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC PGS.TS VŨ ĐỨC LUNG
ĐỒNG NAI, NĂM 2024
Trang 3LỜI CẢM ƠN
Để hoàn thành luận văn này, Em xin chân thành cảm ơn các thầy cô cùng Khoa Sau đại học Trường Đại Học Lạc Hồng đã giúp đỡ, hướng dẫn, truyền đạt cho em những kiến thức, kinh nghiệm quý báu và tạo điều kiện tốt nhất trong suốt thời gian
em theo học tại trường cũng như thời gian em đi nghĩa vụ quân sự, để em có thể hoàn thành luận văn này
Em xin tỏ lòng biết ơn chân thành đến thầy Vũ Đức Lung đã tận tình chỉ bảo, giúp đỡ, truyền đạt những kinh nghiệm, kỹ năng và phương pháp nghiên cứu để đề tài được hoàn thành
Xin gửi lời cảm ơn đến anh, chị, em đồng nghiệp cũng như các bạn cùng lớp đã động viên, giúp đỡ, đóng góp ý kiến rất nhiều trong quá trình thực hiện đề tài này
Do em còn hạn chế về kiến thức và thời gian có hạn nên đề tài không tránh khỏi những thiếu sót và khuyết điểm Em rất mong nhận được sự nhận xét, đóng góp ý kiến quý báu của các quý thầy cô để đề tài được hoàn thiện
Em xin chân thành cảm ơn
Đồng Nai, ngày tháng năm 2024
Học viên
Lê Hoàng Phú
Trang 4LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu, là sản phẩm của riêng của cá nhân tôi Kết quả nêu trong luận văn là quá trình học tập và nghiên cứu khoa học độc lập hoàn toàn trung thực và chưa được công bố trong bất kỳ một công trình nghiên cứu nào khác Trong toàn bộ nội dung của luận văn, những điều được trình bày là của
cá nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu
Mọi nội dung tôi tham khảo từ các tài liệu được trích dẫn và chú thích đầy đủ Tôi xin chịu trách nhiệm về luận văn của mình
Đồng Nai, ngày tháng năm 2024
Học viên
Lê Hoàng Phú
Trang 5TÓM TẮT LUẬN VĂN
Đề tài: Xây dựng module đăng nhập bằng nhận dạng khuôn mặt
Ngành: Công nghệ thông tin Mã số: 8480201
Học viên: Lê Hoàng Phú
Người hướng dẫn: PGS.TS Vũ Đức Lung
cơ quan nơi học viên công tác
- Mục đích dùng trong việc hạn chế đăng nhập hệ thống bằng các phương pháp thủ công, dễ bị tấn công bảo mật do thói quen người sử dụng như: Lưu mật khẩu dễ nhớ, không đổi mật khẩu định kỳ, lưu mật khẩu trên trình duyệt web…
- Góp một phần nhỏ vào công cuộc chuyển đổi số cho tỉnh Đồng Nai
- Tìm hiểu về thư viện xử lý ảnh OpenCV, MTCNN, Facenet
- Tìm hiểu ngôn ngữ Python và cơ sở dữ liệu (CSDL) SQLite
- Tìm hiểu, thực hiện các quy trình huấn luyện mô hình dữ liệu
- Viết phần mềm đăng nhập vào hệ thống bằng nhận dạng khuôn mặt
3 Đánh giá về mặt khoa học của kết quả
- Tìm hiểu những vấn đề liên quan đến xử lý ảnh, thư viện mã nguồn mở trong việc định vị và nhận dạng khuôn mặt
Trang 6- Nghiên cứu thuật toán phát hiện khuôn mặt bằng MTCNN
- Nghiên cứu thuật toán nhận dạng khuôn mặt bằng Facenet
- Xây dựng phần mềm và mô hình vận dụng những lý thuyết đã nghiên cứu và thư viện OpenCV, Python
4 Những vấn đề còn tồn tại so với nội dung được giao
- Còn hạn chế trong vấn đề xử lý ảnh đầu vào như cân bằng ánh sáng môi trường dẫn đến khó khăn trong việc nhận diện ở môi trường thiếu ánh sáng hoặc bị nhiễu ánh sáng
- Chưa có nhiều thời gian nghiên cứu thêm các tính năng mở rộng để áp dụng vào ứng dụng thực tiễn như:
+ Phát hiện, cảnh báo nhắc nhở đeo khẩu trang trong khi làm việc tại cơ quan nhà nước
+ Nhận diện và đăng nhập bằng nhận dạng khuôn mặt vào phần mềm khi đeo khẩu trang
+ Phát triển chức năng phát hiện và cảnh báo người lạ xâm nhập các khu vực
cấm của cơ quan nhà nước
Ngày tháng năm 2024
PGS.TS Vũ Đức Lung Lê Hoàng Phú
Trang 7MỤC LỤC
LỜI CẢM ƠN i
LỜI CAM ĐOAN ii
TÓM TẮT LUẬN VĂN iii
MỤC LỤC v
DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT vii
DANH MỤC BẢNG BIỂU viii
DANH MỤC HÌNH ẢNH ix
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 3
1.1 Tổng quan đề tài trong và ngoài nước 3
1.2 Mục đích của đề tài 7
1.3 Đối tượng và phạm vi nghiên cứu đề tài 7
1.4 Cấu trúc luận văn 8
1.5 Kết luận chương 8
CHƯƠNG 2: LÝ THUYẾT CƠ BẢN HỖ TRỢ CHO HỆ THỐNG NHẬN DẠNG KHUÔN MẶT 9
2.1 Khái niệm nhận dạng khuôn mặt 9
2.2 Tổng Quan về học máy (machine learning) 10
2.2.1 Các phương pháp Machine learning 11
2.3 Các phương pháp đánh giá mô hình 14
2.3.1 Loss và accuracy 14
2.3.2 Confusion matrix 15
2.3.3 Precision 15
2.3.4 Recall 16
2.3.5 F-1 Score 16
2.3.6 ROC Curve 17
2.4 Các thư viện xử lý ảnh liên quan 18
2.4.1 Thư viện OpenCV 18
2.4.2 Thư viện Dlib 19
Trang 82.4.4 Thư viện Keras 23
2.5 Kết luận chương 25
CHƯƠNG 3: CÁC PHƯƠNG PHÁP, THUẬT TOÁN NHẬN DẠNG KHUÔN MẶT LIÊN QUAN 26
3.1 Phương pháp phát hiện khuôn mặt MTCNN 26
3.1.1 Mạng P-net 27
3.1.2 Mạng R-Net 27
3.1.3 Mạng O-Net 28
3.2 Phương pháp Facenet 29
3.2.1 Mô hình Pre-trained với FaceNet 30
3.2.2 Triple Loss 31
3.2.3 Mô hình tích chập 32
3.2.4 Mạng neural tích chập (Convolutional Neural Network-CNN) 32
3.3 Support Vector Machine (SVM) 39
3.4 Kết luận chương 45
CHƯƠNG 4: ỨNG DỤNG FACENET XÂY DỰNG MODULE XÁC THỰC ĐĂNG NHẬP QUA NHẬN DẠNG KHUÔN MẶT 46
4.1 Quá trình huấn luyện mô hình nhận diện 46
4.1.1 Kết nối Google colab 46
4.1.2 Huấn luyện mô hình 46
4.2 Đánh giá mô hình: 53
4.3 Xây dựng ứng dụng thực tiễn 55
4.3.1 Quá trình chuẩn bị và cài đặt 56
4.3.2 Đặc tả chức năng trong ứng dụng 58
4.3.3 Mô hình xây dựng 59
4.3.4 Giao diện Phần mềm quản lý văn bản 60
4.4 Kết quả Thực nghiệm 64
4.5 Kết luận chương 68
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69
TÀI LIỆU THAM KHẢO 71
Trang 9DANH MỤC CÁC KÝ HIỆU, CÁC TỪ VIẾT TẮT
Trang 10DANH MỤC BẢNG BIỂU
Bảng 4.1: Mô tả hệ thống đăng ký 58 Bảng 4.2: Mô tả hệ thống đăng nhập 59 Bảng 4.3: mô tả kết quả nhận diện đối tượng chưa đăng ký thông tin 64 Bảng 4.4: mô tả kết quả nhận diện 9 đối tượng với 5 lần đăng nhập cho mỗi tài khoản 65 Bảng 4.5: mô tả kết quả nhận diện đối tượng đã có dữ liệu với các góc nhìn khác nhau mỗi góc nhận diện với 5 lần đăng nhập cho mỗi tài khoản 65
Trang 11DANH MỤC HÌNH ẢNH
Hình 2.1 Quy trình nhận dạng khuôn mặt 9
Hình 2.2: Cấu trúc cơ bản của OpenCV 19
Hình 2.3: Kiến trúc thư viện Dlib 20
Hình 3.1: Sơ đồ hoạt động của MTCNN 26
Hình 3.2: Các tầng hình ảnh 27
Hình 3.3: Sơ đồ hoạt động P-Net 27
Hình 3.4: Sơ đồ hoạt động R-Net 28
Hình 3.5: Sơ đồ hoạt động O-Net 28
Hình 3.6: Kiến trúc CNN cơ bản 33
Hình 3.7: Mảng ma trận RGB 6x6x3 33
Hình 3.8: Ma trận 5 x 5 và Ma trận bộ lọc 3 x 3 có giá trị pixel là 0 và 1 34
Hình 3.9: Lớp tích chập hoạt động với Bước nhảy là 2 34
Hình 3.10: Lớp tích chập nhân với ma trận bộ lọc 35
Hình 3.11: Lớp Tích chập khác nhau sau khi áp dụng các Kernel khác nhau 36
Hình 3.12: Maxpooling với bộ lọc 2x2 và bước nhảy 2 38
Hình 3.13: Giai đoạn Flattening 38
Hình 3.14: Siêu phẳng trong không gian 2 chiều 39
Hình 3.15: Siêu phẳng trong không gian 3 chiều 39
Hình 3.16: Các đường thẳng phân tách tập dữ liệu 40
Hình 3.17: Siêu phẳng với lề cực đại 41
Hình 3.18: Minh họa về việc chuyển đổi không gian 42
Hình 3.19: Minh họa cho các lớp không thể phân tách bởi tuyến tính trong không gian 1 – chiều và 2 – chiều tương ứng 43
Hình 3.20: Minh họa về dùng ánh xạ để biến đổi sang không gian nhiều chiều hơn, mà ở đó có thể phân tách được tuyến tính 44
Hình 4.1: Hình ảnh kết nối Google colab 46
Hình 4.2: Dataset để phục vụ huấn luyện 47
Hình 4.3: Minh họa về thu thập dữ liệu 47
Trang 12Hình 4.4: Một số hình ảnh trong Dataset sau khi được thực hiện tiền xử lý dữ liệu
theo kích thước 160 x 160 px 48
Hình 4.5: Kết nối google drive để sử dụng dữ liệu Dataset 48
Hình 4.6: Sử dụng 80% dữ liệu trong dataset để huấn luyện 48
Hình 4.7: Sử dụng 20% dữ liệu trong dataset để đánh giá 49
Hình 4.8: Sử dụng 10% dữ liệu trong dataset để thử nghiệm mô hình 49
Hình 4.9: Hiển thị một số hình ảnh bất kỳ 50
Hình 4.10: Mô hình huấn luyện 50
Hình 4.11: Quá trình huấn luyện đào tạo dữ liệu 51
Hình 4.12: Minh họa xác thực khuôn mặt 52
Hình 4.13: Lưu lại mô hình 52
Hình 4.14: Đồ thị kết quả độ chính xác 53
Hình 4.15: Đồ thị kết quả kết quả sai số 54
Hình 4.16: Kết quả thử nghiệm trên tập huấn luyện 54
Hình 4.17: Kết quả đánh giá qua các phương pháp đánh giá 54
Hình 4.18: Mô tả mô hình nhận dạng khuôn mặt 59
Hình 4.19: Mô hình xử lý đăng nhập tài khoản của phần mềm Quản lý văn bản 60
Hình 4.20: Giao diện phần mềm Quản lý văn bản 60
Hình 4.21: Nhập thông tin đăng ký 61
Hình 4.22: Camera đang thu thập dữ liệu đầu vào khi đăng ký tài khoản 61
Hình 4.23: Giao diện thông báo “tài khoản đã tồn tại” 62
Hình 4.24: Giao diện đăng nhập 62
Hình 4.25: Trường hợp dữ liệu tài khoản và khuôn mặt chưa có 63
Hình 4.26: Đăng nhập thành công 63
Trang 13MỞ ĐẦU
Trong thời đại công nghiệp 4.0 với sự bùng nổ phát triển vượt bậc của các ngành công nghiệp trên thế giới Việt Nam để thích ứng nhanh chóng trong tình hình mới và tận dụng cơ hội mà cuộc cách mạng công nghệ 4.0 mang lại, ngày 27/9/2019, Ban Chấp hành Trung ương đã ban hành Nghị quyết số 52-NQ/TW về một số chủ trương, chính sách chủ động tham gia cuộc cách mạng công nghiệp lần thứ tư, trong
đó nhấn mạnh yêu cầu cấp bách để đẩy nhanh quá trình chuyển đổi số Trên cơ sở đó, ngày 03/6/2020, Thủ tướng Chính phủ đã ký ban hành Quyết định số 749/QĐ-TTg phê duyệt chương trình chuyển đổi số quốc gia đến năm 2025, định hướng đến 2030 Chương trình Chuyển đổi số quốc gia nhằm mục tiêu kép là vừa phát triển Chính phủ
số, kinh tế số, xã hội số, vừa hình thành các doanh nghiệp công nghệ số Việt Nam có năng lực đi ra toàn cầu, với một số chỉ số cơ bản
Với ưu thế là một tỉnh công nghiệp, hạ tầng kinh tế - xã hội phát triển, những năm qua tỉnh Đồng Nai đã chủ động chuyển đổi số mạnh mẽ trên mọi lĩnh vực Trọng tâm là cải cách thủ tục hành chính và ứng dụng công nghệ thông tin vào hoạt động các cơ quan nhà nước Đã đạt được một số kết quả quan trọng trong việc triển khai ứng dụng công nghệ thông tin vào chỉ đạo, điều hành và trong cải cách hành chính như: Nền tảng tích hợp, chia sẻ dữ liệu tỉnh kết nối cơ sở dữ liệu quốc gia về dân cư, bảo hiểm, y tế, nông nghiệp; Hệ thống quản lý văn bản và điều hành có tích hợp chữ
ký số được kết nối liên thông văn bản điện tử bốn cấp (Trung ương - tỉnh - huyện - xã); Hệ thống một cửa điện tử triển khai đồng bộ từ cấp tỉnh đến cấp xã Cổng dịch
vụ công của tỉnh đã tích hợp đầy đủ các dịch vụ công trực tuyến để phục vụ người dân, doanh nghiệp nộp hồ sơ thủ tục hành chính qua mạng
Bên cạnh những thành tựu đạt được, quá trình chuyển đổi số ở tỉnh Đồng Nai vẫn còn một số hạn chế, đó là: Xếp hạng mức độ ứng dụng công nghệ thông tin của tỉnh vẫn chỉ dừng lại ở mức trung bình khá so với cả nước, hạ tầng kỹ thuật đang được đầu tư nhưng chưa bảo đảm yêu cầu phát triển trong tình hình mới; cơ sở dữ liệu chưa được chia sẻ, kết nối, đồng bộ giữa các hệ thống thông tin; cán bộ công chức viên chưa sử dụng thành thạo máy tính dẫn đến tình trạng việc bảo mật thông tin cá nhân chưa được nâng cao trong các cơ quan đơn vị tỉnh Đồng Nai
Trang 14Nhận thức rõ tầm quan trọng trong việc chuyển đổi số của Tỉnh Đồng Nai nói chung và bảo mật thông tin cán bộ công chức tại các cơ quan đơn vị nói riêng Tôi đã lựa chọn việc nghiên cứu và hoàn thành nên luận văn “Xây dựng module đăng nhập bằng nhận dạng khuôn mặt” Mục đích chính trong nghiên cứu đề tài này là học hỏi, nghiên cứu các thuật toán, công nghệ nhận dạng khuôn mặt để áp dụng vào tiến trình đăng nhập của cán bộ công chức, viên chức Giúp nâng cao bảo mật hệ thống, thông tin Đồng thời góp phần giúp cho tỉnh Đồng Nai hoàn thành tốt nhiệm vụ chuyển đổi
số tại địa bàn tỉnh
Trang 15CHƯƠNG 1 TỔNG QUAN ĐỀ TÀI 1.1 Tổng quan đề tài trong và ngoài nước
Trong những năm 90 của thế kỷ XX cho đến nay, dưới sự phát triển vượt bậc của khoa học và công nghệ Đặc biệt trong thời đại Cách mạng công nghiệp lần thứ
tư, việc nghiên cứu và phát triển các hệ thống nhận diện con người để đáp ứng vấn
đề an ninh bảo mật và phục vụ các nhu cầu của con người là một trong những bài toán luôn nhận được sự quan tâm của nhiều nhà nghiên cứu trong lĩnh vực thị giác máy tính Các hệ thống nhận diện con người ngày càng có độ chính xác cao tiêu biểu như: Hệ thống nhận diện giọng nói, Hệ thống nhận diện cảm xúc, Hệ thống nhận diện hình dáng, Hệ thống nhận diện sinh trắc học
Những năm gần đây việc các hệ thống một cửa điện tử, dịch vụ công trực tuyến, quản lý văn bản… của các Bộ ban ngành sử dụng xác thực bằng mật khẩu chứa nhiều rủi ro bảo mật Tâm lý người dùng vẫn chọn các hình thức đặt mật khẩu ngắn, đơn giản, dễ nhớ, dễ đoán và sử dụng một mật khẩu cho nhiều hệ thống đăng nhập khác nhau Nhận thấy những thuận lợi từ Cách mạng công nghiệp lần thứ tư mang lại và những thành công trong việc nghiên cứu khoa học và công nghệ trong hệ thống nhận diện sinh trắc học Thực hiện theo Nghị quyết số 52-NQ/TW ngày 27/9/2019 của Ban Chấp hành Trung ương Các Bộ, ban ngành, địa phương cùng các doanh nghiệp, tổ chức, cá nhân luôn chú trọng nghiên cứu hệ thống nhận diện sinh trắc học ngày càng trở nên hoàn thiện hơn và có thể ứng dụng thực tiễn được vào các hệ thống của sở ban ngành để phục vụ cán bộ công chức, viên chức cũng như phục vụ người dân tốt hơn tiêu biểu như:
Trong đề tài [1], tác giả trình bày hệ thống nhận dạng khuôn mặt qua Camera Bài toán được tác giả đưa ra trong đề tài là sử dụng các kỹ thuật cơ bản để xây dựng
hệ thống nhận dạng khuôn mặt dựa trên mạng nơ ron tích chập Để giải quyết bài toán trên tác giả đã đi sâu về mạng học sâu googlenet và resnet Sau đó đưa ra các ưu điểm
và nhược điểm khi kết hợp hai mạng này thành mạng inception resnet
Trong đề tài [2], tác giả trình bày ứng dụng phương pháp học sâu để nhận dạng khuôn mặt qua Camera giám sát Đề tài trên được tác giả đưa ra gồm 2 bài toán chính
Trang 16đó là phát hiện khuôn mặt và nhận dạng khuôn mặt Tác giả sử dụng phương pháp HOG để trích chọn đặc trưng và bộ phân lớp SVM để phát hiện khuôn mặt, dùng mạng nơron học sâu Facenet để nhận dạng khuôn mặt trong mô hình đề xuất
Trong đề tài [3], tác giả trình bày ứng dụng nhận dạng khuôn mặt trong điểm danh tại học viện hành chính khu vực III Tác giả đã trình bày phương pháp PCA để giảm số chiều của 1 tập vector nhưng vẫn đảm bảo được tối đa các thông tin quan trọng nhất đồng thời kết hợp với phương pháp phân lớp dữ liệu bằng kỹ thuật SVM
để giải quyết bài toán trên
Trong bài báo [4], tác giả trình bày hệ thống điểm danh tự động dựa trên mô hình Mạng Nơ-Ron tích chập xếp tầng đa nhiệm và kỹ thuật Triplet Loss Đề tài đã trình bày phương pháp xây dựng hệ thống điểm danh tự động bằng cách sử dụng mô hình MTCNN để nhận dạng khuôn mặt và xác định khuôn mặt, đồng thời kết hợp kỹ thuật Triplet Loss để nhận diện danh tính người được điểm danh Kỹ thuật căn chỉnh khuôn mặt cũng được áp dụng để gia tăng tính chính xác của kết quả nhận diện kể cả trong các điều kiện thiếu sáng, góc nghiêng hay một phần khuôn mặt bị che khuất Trong bài báo [5], tác giả trình bày hệ thống nhận diện người không đeo khẩu trang Đề tài đã trình bày phương pháp sử dụng mạng Retinaface để phát hiện khuôn mặt, sử dụng CNN để nhận diện người không đeo khẩu trang từ mạng Retinaface và đưa ra cảnh báo đối với những người không đeo khẩu trang Kết quả thử nghiệm CNN nhận diện người không đeo khẩu trang đạt hiệu suất 96.88%
Trong đề tài [6], tác giả trình bày các nghiên cứu giải thuật máy học và áp dụng vào bài toán dự đoán bệnh thận tại bệnh viện đa khoa tỉnh Điện biên dùng ngôn ngữ Python Bài toán được tác giả đưa ra trong đề tài là tìm hiểu hai mô hình quan trọng của Máy học: Mô hình Support vector machine (SVM) và mô hình Logistic Regression (LGR) Thông qua việc cài đặt hai mô hình vào bài toán dự báo bệnh nhân bệnh thận của tác giả Tác giả nhận thấy Mô hình Support vector machine (SVM) cho kết quả khá tốt và với độ chính xác cao nhất
Trang 17Trên thế giới cũng có nhiều đề tài nghiên cứu về nhận dạng khuôn mặt và có thể ứng dụng thực tiễn nhận dạng khuôn mặt cho các cơ quan đơn vị, trong đó đáng phải
kể đến như:
Trong bài báo [7] tác giả mô tả một phương pháp mới để phát hiện và canh chỉnh khuôn mặt trong ảnh Phương pháp này sử dụng một mạng CNN nhiều tầng, trong đó mỗi tầng thực hiện một nhiệm vụ cụ thể Mạng CNN đầu tiên (P-Net) thực hiện nhiệm vụ phát hiện khuôn mặt thô Mạng CNN thứ hai (R-Net) thực hiện nhiệm
vụ phát hiện khuôn mặt chính xác hơn bằng cách sử dụng các kết quả của P-Net làm đầu vào Mạng CNN thứ ba (O-Net) thực hiện nhiệm vụ canh chỉnh khuôn mặt bằng cách sử dụng các kết quả của R-Net làm đầu vào Các tác giả của bài báo đã chứng minh rằng phương pháp của họ có độ chính xác cao hơn các phương pháp khác trong việc phát hiện và canh chỉnh khuôn mặt trong các điều kiện ánh sáng và góc độ khác nhau trong thời gian thực Tác giả cũng đã thực hiện một số thử nghiệm để đánh giá hiệu suất của phương pháp của họ trên các tập dữ liệu khuôn mặt khác nhau
Trong bài báo [8] tác giả cung cấp một phương pháp để trực tiếp tìm hiểu cách nhúng vào không gian Euclide để xác minh khuôn mặt Phương pháp bao gồm một mạng CNN được đào tạo để tối thiểu hóa một hàm mất mát được xác định dựa trên khoảng cách Euclidean giữa các vector nhúng của các khuôn mặt khớp và không khớp Để đào tạo, hệ thống sử dụng các bộ ba gồm các điểm khuôn mặt được căn chỉnh gần đúng khớp / không khớp được tạo bằng phương pháp khai thác bộ ba trực tuyến mới Hệ thống đạt được hiệu suất nhận dạng khuôn mặt vượt trội trên các tập
dữ liệu tiêu chuẩn như LFW (Labeled Faces in the Wild, là một tập dữ liệu chứa 13.233 hình ảnh của 5.749 người nổi tiếng, mỗi người có ít nhất 2 ảnh Các hình ảnh này được thu thập từ nhiều nguồn khác nhau, bao gồm tạp chí, báo chí và trang web.)
và YouTube Faces DB (chứa hơn 300.000 hình ảnh của hơn 100.000 người Các hình ảnh này được thu thập từ các video YouTube và được dán nhãn bằng các kỹ thuật học máy Nó cũng cho thấy hiệu suất tốt trong các nhiệm vụ xác minh khuôn mặt
Trong bài báo [9], tác giả đề xuất một hệ thống phát hiện khuôn mặt nhanh chóng và hiệu quả Hệ thống sử dụng một phương pháp gọi là phân loại xếp tầng (cascaded classifiers), trong đó một loạt các bộ phân loại được sử dụng để loại bỏ các
Trang 18khu vực không phải khuôn mặt khỏi hình ảnh Hệ thống hoạt động như sau: Đầu tiên, một bộ phân loại đơn giản được sử dụng để loại bỏ các khu vực lớn của hình ảnh không chứa khuôn mặt Sau đó, một bộ phân loại phức tạp hơn được sử dụng để phân loại các khu vực còn lại Nếu một khu vực được phân loại là khuôn mặt, nó sẽ được tiếp tục xử lý Nếu không, nó sẽ bị loại bỏ Các bộ phân loại trong hệ thống được đào tạo sử dụng một phương pháp gọi là AdaBoost, trong đó các bộ phân loại được xây dựng từ một tập hợp các tính năng Các tính năng được chọn dựa trên mức độ hiệu quả của chúng trong việc phân loại các khu vực khuôn mặt và không phải khuôn mặt
Hệ thống đạt được tốc độ phát hiện khuôn mặt vượt trội so với các hệ thống trước đây Nó cũng đạt được độ chính xác cao, ngay cả khi khuôn mặt bị biến dạng hoặc có ánh sáng yếu
Trong bài báo [10] mô tả một phương pháp mới để huấn luyện máy hỗ trợ vector (SVM) cho nhiệm vụ phát hiện khuôn mặt Bài báo này bắt đầu bằng cách cung cấp một nền tảng lý thuyết về SVM, sau đó mô tả phương pháp huấn luyện mới Phương pháp này sử dụng một thuật toán phân tích thành phần chính PCA để giảm thiểu số lượng biến trong không gian đặc trưng Điều này làm cho quá trình huấn luyện SVM nhanh hơn và hiệu quả hơn Bài báo cũng trình bày kết quả của các thử nghiệm thực nghiệm cho thấy phương pháp huấn luyện mới có hiệu quả hơn các phương pháp huấn luyện truyền thống trong việc phát hiện khuôn mặt Bài báo đã được công bố trên tạp chí IEEE Transactions on Pattern Analysis and Machine Intelligence năm
1997 và đã được trích dẫn hơn 2000 lần Nó là một trong những bài báo được trích dẫn nhiều nhất trong lĩnh vực phát hiện khuôn mặt
Trong bài báo [11], tác giả đề xuất một kiến trúc mạng thần kinh tích chập CNN (Convolutional neural network) mới có tên là EfficientNet EfficientNets đạt được hiệu suất tốt hơn các CNN trước đó bằng cách kết hợp các kỹ thuật scaling khác nhau, bao gồm tăng độ sâu, độ rộng và độ phân giải của mạng Bài báo bắt đầu bằng việc xem xét các phương pháp chia tỉ lệ CNN hiện có thường tập trung vào việc tăng một chiều của mạng Các phương pháp này thường tập trung vào việc tăng một trong ba chiều của mạng: độ sâu, độ rộng hoặc độ phân giải Tuy nhiên, các tác giả chỉ ra rằng việc tăng một chiều mà không tăng các chiều khác có thể dẫn đến sự suy giảm hiệu
Trang 19suất Để giải quyết vấn đề này, các tác giả đề xuất một phương pháp chia tỉ lệ mới cho EfficientNets Phương pháp này sử dụng một hệ số nhân compound để điều chỉnh tất cả ba chiều của mạng Hệ số nhân này được tối ưu hóa cho từng nhiệm vụ cụ thể bằng cách sử dụng kỹ thuật NAS (neural architecture search) Các tác giả đã đánh giá hiệu suất của EfficientNets trên các tập dữ liệu ImageNet và CIFAR-10 Kết quả cho thấy EfficientNets đạt được hiệu suất tốt hơn các CNN trước đó Cụ thể, EfficientNet- B0 đạt được độ chính xác 84,3% trên ImageNet, cao hơn 1,3% so với ResNet-50 EfficientNets là một kiến trúc CNN hiệu quả mới đã đạt được thành công đáng kể trong các ứng dụng thực tế Kiến trúc này đã được sử dụng trong các sản phẩm của Google, chẳng hạn như Google Photos và Google Search
1.2 Mục đích của đề tài
Đề tài này nhằm mục đích tìm hiểu và nghiên cứu các phương pháp nhận dạng khuôn mặt Áp dụng thực tiễn các phương pháp nhận dạng khuôn mặt vào quá trình đăng nhập trên các phần mềm dành cho cán bộ công chức, viên chức trong các cơ quan, đơn vị trong Tỉnh Đồng Nai
1.3 Đối tượng và phạm vi nghiên cứu đề tài
Đối tượng:
- Các phương pháp, các thuật toán phát hiện và nhận dạng khuôn mặt trong ảnh
- Các hình ảnh về khuôn mặt
- Phạm vi:
- Tìm hiểu phương pháp phát hiện khuôn mặt (MTCNN)
- Tìm hiểu phương pháp nhận dạng khuôn mặt (FaceNet)
- Việc xử lý ảnh và nhận diện ảnh thỏa mãn các điều kiện sau:
+ Trong điều kiện ánh sáng bình thường, không chói
+ Ảnh trực diện hoặc không nghiêng quá 10 độ
+ Ảnh không bị che khuất
+ Ảnh có chất lượng cao
Trang 201.4 Cấu trúc luận văn
Luận văn gồm phần mở đầu, kết luận và 05 chương
Chương 1: Tổng quan đề tài
- Giới thiệu các thông tin liên quan đến mục đích chọn đề tài, các đề tài trong
và ngoài nước, đối tượng và phạm vi nghiên cứu đề tài
Chương 2: Lý thuyết cơ bản hỗ trợ cho hệ thống nhận dạng khuôn mặt
- Giới thiệu tổng quan về khái niệm hệ thống nhận dạng khuôn mặt, các phương pháp học máy, các phương pháp đánh giá và thư viện xử lý ảnh Những ưu điểm và nhược điểm để áp dụng vào ứng dụng thực tiễn
Chương 3: Các phương pháp, thuật toán nhận dạng khuôn mặt liên quan
- Giới thiệu về các phương pháp, thuật toán được sử dụng vào ứng dụng thực tiễn của luận văn
Chương 4: Xây dựng, ứng dụng module đăng nhập bằng nhận dạng khuôn mặt vào ứng dụng thực tiễn
- Xây dựng phần mềm thực tiễn áp dụng các phương pháp và thuật toán đã tìm hiểu và giới thiệu ở chương 3
Chương 5: Kết luận và hướng phát triển
- Kết luận và đưa ra hướng phát triển trong tương lai
- Tài liệu tham khảo
1.5 Kết luận chương
Trong chương này, luận văn đã tìm hiểu và nêu rõ các thông tin liên quan đến mục đích chọn đề tài, các đề tài trong và ngoài nước, đối tượng và phạm vi nghiên cứu đề tài Trong chương tiếp theo luận văn sẽ tìm hiểu khái niệm hệ thống nhận dạng khuôn mặt, các phương pháp học máy, các phương pháp đánh giá và thư viện xử lý ảnh Những ưu điểm và nhược điểm để áp dụng vào ứng dụng thực tiễn
Trang 21CHƯƠNG 2: LÝ THUYẾT CƠ BẢN HỖ TRỢ CHO HỆ THỐNG NHẬN
DẠNG KHUÔN MẶT 2.1 Khái niệm nhận dạng khuôn mặt
Nhận dạng khuôn mặt (Face Recognition) là một loại sinh trắc học được nghiên cứu và áp dụng thực tiễn vào một loại ứng dụng có khả năng tự động kiểm tra, xác định tìm kiếm thông tin của một người trên phép so sánh một - nhiều, đối chiếu thông tin mới nhận của một người nào đó từ ảnh hoặc video dựa trên đặc điểm của khuôn mặt mà CSDL (cơ sở dữ liệu) đã lưu trữ trước đó để tìm ra một người là ai trong số những người đã được lưu trữ trong hệ thống có khớp hay không
Nhận dạng khuôn mặt được xem là một lĩnh vực nghiên cứu tương tự như (nhận diện mống mắt - Iris Recognition và nhận diện vân tay - Fingerprint Recognition) có
sự tương đồng giống nhau về nguyên tắc chung nhưng khác nhau về bước trích chọn đặc trưng của mỗi lĩnh vực
Yêu cầu để xây dựng được hệ thống nhận dạng khuôn mặt chúng ta cần dữ liệu đầu vào là các hình ảnh hoặc các video Dữ liệu đầu ra nhận diện và xác minh những người trong hình ảnh hoặc trong video đó là ai Nhận dạng khuôn mặt được thực hiện theo các bước như sau: Hình ảnh đầu vào (Image), Phát hiện khuôn mặt (Face Detection), rút trích đặc trưng (Feature Extraction), nhận dạng khuôn mặt (Face Recognition) và xác minh danh tính khuôn mặt được nhận diện (verification/ identification)
Hình 2.1 Quy trình nhận dạng khuôn mặt
Phát hiện khuôn mặt: có nhiệm vụ phát hiện ra các khuôn mặt trong dữ liệu đầu vào là các hình ảnh và video Tỉ lệ phát hiện khuôn mặt phụ thuộc vào nhiều điều kiện khác nhau như độ sáng, hướng nhận dạng khuôn mặt và các điều kiện khác Để
hệ thống nhận diện với tỉ lệ chính xác cao thì các hình ảnh khuôn mặt sau khi nhận diện từ hình ảnh, video cần phải chuẩn hóa về kích thước và ánh sáng
Extraction
Face Detection
verification/ identification Face
Recognition
Trang 22Rút trích đặc trưng: Sau khi nhận diện các khuôn mặt trong dữ liệu đầu vào là các hình ảnh và video, hệ thống tiến hành rút trích những đặc trưng của khuôn mặt bằng cách trích xuất ra một vector đặc trưng đại diện cho một khuôn mặt Nó phải đảm bảo được tính duy nhất của một khuôn mặt
Nhận dạng khuôn mặt: Sau khi phát hiện ra khuôn mặt với dữ liệu đầu vào là các hình ảnh và video Hệ thống sẽ rút trích các đặc trưng của khuôn mặt và đem so sánh các đặc trưng này với cơ sở dữ liệu khuôn mặt bằng cách hệ thống thực hiện chuyển đổi thông tin khuôn mặt thành dữ liệu dưới dạng faceprint (dấu khuôn mặt) dựa trên các rút trích đặc trưng khuôn mặt
Xác minh danh tính khuôn mặt được nhận diện (verification/ identification)
- Verification (xác thực): ánh xạ 1-1, là quá trình xác nhận danh tính của một
cá nhân bằng cách so sánh khuôn mặt của họ với một khuôn mặt đã lưu trong cơ sở
dữ liệu
Kết quả: Kết quả là một xác nhận đơn giản ("Đúng" hoặc "Sai"), tức là khuôn
mặt hiện tại có phải là của người đã lưu hay không
- Identification (nhận diện) ánh xạ 1-nhiều, là quá trình nhận diện và xác định
danh tính của một cá nhân bằng cách so sánh khuôn mặt của một cá nhân đưa vào hệ thống nhận diện với với nhiều khuôn mặt từ nhiều người trong cơ sở dữ liệu
Kết quả: Kết quả là danh tính của cá nhân trong số các khuôn mặt đã lưu, hoặc
thông báo không tìm thấy người trùng khớp
2.2 Tổng Quan về học máy (machine learning)
Máy học (machine learning) là một lĩnh vực con của trí tuệ nhân tạo, tập trung vào việc phát triển các thuật toán và mô hình cho phép máy tính tự học hỏi từ dữ liệu
mà không cần lập trình cụ thể Là một lĩnh vực của phân tích dữ liệu, máy học là một phương pháp sử dụng các kỹ thuật thống kê, toán học thông qua dữ liệu để phân tích, xây dựng các mô hình và thuật toán được đào tạo để đưa ra các phân loại hoặc dự đoán và khám phá những thông tin chi tiết từ chính các dự án khai thác dữ liệu
Trang 23Bài toán của máy học thường được chia làm hai loại là dự đoán (prediction) và phân loại (classification) Các bài toán dự đoán thường là giá nhà, giá xe, v.v, còn các bài toán phân loại thường là nhận diện chữ viết tay, đồ vật, khuôn mặt v.v
Ứng dụng của máy học rất đa dạng và được áp dụng rộng rãi bao gồm nhận diện hình ảnh, xử lý ngôn ngữ tự nhiên, hệ thống gợi ý, truy tìm dữ liệu và nhiều lĩnh vực khác trong khoa học, kinh tế và y tế Với sự phát triển nhanh chóng của công nghệ và
dữ liệu lớn, máy học đang ngày càng trở nên quan trọng trong việc giải quyết các vấn
đề phức tạp trong cuộc sống hàng ngày
Máy học là chương trình máy tính tự “học” từ dữ liệu Do vậy việc tìm hiểu kỹ
dữ liệu và việc cần thiết
Kiểu dữ liệu (Data Type): Mỗi đặc trưng đều có dữ liệu như ngày, tháng, chuỗi
kí tự, hay những kiểu phức tạp khác Tuy nhiên mỗi dữ liệu đều sẽ được chuyển sang một kiểu dữ liệu xác định là kiểu số thực, số nguyên hay cũng có thể là kiểu rời rạc khi dùng các thuật toán Máy học
Các tập dữ liệu (Datasets): Một tập hợp các thể dữ kiện là một tập dữ liệu
Chúng ta sẽ dùng các tập dữ liệu khác nhau cho các mục đích khác nhau
Tập dữ liệu huấn luyện (Training dataset): Là một tập dữ liệu dùng để huấn
luyện cho mô hình của thuật toán Máy học Nói một cách khác, thuật toán Máy học
sẽ học từ tập dữ liệu này
Tập dữ liệu kiểm tra (Testing dataset): Là một tập dữ liệu dùng để kiểm
chứng độ chính xác của mô hình của thuật toán Máy học Tập dữ liệu này không được dùng để huấn luyện mô hình
Thông thường chúng ta cần tách tập dữ liệu mà chúng ta có được ra thành các tập dữ liệu con (dùng để huấn luyện và kiểm tra)
2.2.1 Các phương pháp Machine learning
Có 3 phương pháp chính cho Machine learning: Học có giám sát (supervised
learning), học không giám sát (unsupervised learning), và học tăng cường (reinforcement learning)
Trang 24Học có giám sát (supervised learning): Là một loại phương pháp học máy
trong đó mô hình được đào tạo với các tập dữ liệu có gán sẵn nhãn huấn luyện để phân loại dữ liệu hoặc là dự đoán kết quả Điều này có nghĩa là trong quá trình huấn luyện, mô hình được cung cấp cả dữ liệu đầu vào và các nhãn tương ứng (hoặc giá trị đầu ra đúng)
Mục tiêu của học máy có giám sát là xây dựng một hàm hoặc mô hình có khả năng dự đoán hoặc phân loại các đầu ra từ dữ liệu đầu vào dựa trên các ví dụ đã biết Khi mô hình được huấn luyện với dữ liệu có nhãn, nó học cách ánh xạ từ đầu vào đến đầu ra và có thể áp dụng kiến thức này để dự đoán nhãn cho các dữ liệu chưa thấy Học có giám sát có hai bài toán chính:
- Phân loại (classification) Xác định danh mục hoặc lớp cho các đối tượng dựa trên các đặc điểm của chúng
Ví dụ: nhận dạng khuôn mặt, nhận dạng con vật, đồ vật, nhận dạng chữ viết tay
- Hồi quy (regression) Dự đoán một giá trị liên tục từ dữ liệu đầu vào
Ví dụ: dự đoán giá cho thị trường chứng khoán, giá nhà, giá xe v.v…
Học không giám sát (Unsupervised Learning): là một loại phương pháp học
máy trong đó mô hình được đào tạo mà không có nhãn dữ liệu Điều này có nghĩa là khi đào tạo mô hình, không có thông tin về các đầu ra đúng mà chỉ có dữ liệu đầu vào
Mục tiêu chính của học máy không giám sát là khám phá cấu trúc hoặc mẫu ẩn trong dữ liệu
Một số ứng dụng phổ biến của phương pháp này bao gồm:
- Phân cụm (Clustering): Tìm kiếm các nhóm hoặc cụm trong dữ liệu mà các đối tượng trong cùng một nhóm có đặc điểm tương đồng Ví dụ, phân nhóm khách hàng dựa trên hành vi mua sắm của họ
- Giảm chiều dữ liệu (Dimensionality Reduction): Giảm số lượng biến trong dữ liệu trong khi vẫn giữ lại các thông tin quan trọng Điều này thường được sử dụng để
Trang 25trực quan hóa dữ liệu hoặc làm tiền xử lý cho các mô hình khác Một ví dụ nổi bật là phương pháp Principal Component Analysis (PCA)
- Phát hiện bất thường (Anomaly Detection): Xác định các mẫu dữ liệu không bình thường hoặc không tuân theo các mẫu chung Ví dụ, phát hiện gian lận trong giao dịch tài chính
- Tạo mẫu dữ liệu (Data Generation): Sinh ra dữ liệu mới dựa trên đặc điểm của
dữ liệu gốc, như trong các mô hình generative adversarial networks (GANs)
Học tăng cường (Reinforcement Learning): là một loại phương pháp học máy
mà trong đó sẽ được áp dụng khi tương tác với môi trường thực tế thay đổi để thực hiện nhiệm vụ cụ thể (ví dụ: phần mềm xe tự lái học cách điều khiển xe trong các tình huống và môi trường thực tế)
Các khái niệm chính trong Reinforcement Learning:
- Tác nhân (Agent): Đây là hệ thống hoặc mô hình học mà chúng ta muốn huấn luyện để đưa ra quyết định về hành động nào sẽ thực hiện trong môi trường (ví dụ: chương trình game máy tính đánh cờ vua)
- Môi trường: Đây là hệ thống hoặc không gian mà tác nhân tương tác Môi trường cung cấp phản hồi cho tác nhân dựa trên hành động mà tác nhân thực hiện (ví dụ: một bàn cờ cờ vua)
- Hành động: Là các hành động mà tác nhân có thể thực hiện trong môi trường Các hành động có thể ảnh hưởng đến trạng thái của môi trường (ví dụ: đi lên, đi xuống, đánh một nước cờ)
- Trạng thái: Là mô tả tình trạng hiện tại của môi trường mà tác nhân đang quan sát tại một thời điểm cụ thể Trạng thái cung cấp thông tin về tình hình hiện tại của môi trường (ví dụ: vị trí của các quân cờ trên bàn cờ)
- Phần thưởng: Là phản hồi mà tác nhân nhận được từ môi trường sau khi thực hiện một hành động (Ví dụ: ăn hoặc mất các quân cờ)
- Chính sách: Là chiến lược mà tác nhân sử dụng để quyết định hành động tiếp theo dựa trên trạng thái hiện tại (Ví dụ: Đánh các quân cờ có lợi)
Trang 262.3 Các phương pháp đánh giá mô hình
Để kết luận hệ thống nhận dạng khuôn mặt có thực sự hiệu quả, ta sử dụng một
số phương pháp đánh giá mô hình
bằng 0 nếu ngược lại
liệu i thuộc lớp j
Accuracy
Sự chính xác (Accuracy) là một trong những chỉ số đánh giá hiệu suất phổ biến nhất trong các mô hình học máy, đặc biệt là trong các bài toán phân loại Nó đơn giản cho biết tỉ lệ các dự đoán của mô hình trùng khớp với nhãn thực tế trong tập dữ liệu
𝑛 Trong đó:
Trang 272.3.2 Confusion matrix
Confusion matrix là một công cụ đánh giá kết quả của những bài toán phân loại thường dùng trong máy học và thống kê để đánh giá hiệu suất của các mô hình phân loại Ma trận này giúp hiểu được cách mà mô hình phân loại các dự đoán so với các giá trị thực tế
Confusion matrix bao gồm các thành phần sau:
- True Positives (TP): Số lượng mẫu mà mô hình dự đoán đúng là positive và
Công thức tính Precision là:
Trang 28Precision cho biết tỉ lệ các dự đoán positive mà mô hình đưa ra thực sự đúng là positive Nói cách khác, nó cho biết mức độ tin cậy của mô hình khi nó dự đoán một mẫu là positive
2.3.4 Recall
Recall (độ nhạy) là một chỉ số quan trọng dùng để đánh giá hiệu suất của một
mô hình phân loại Nó đo lường khả năng của mô hình trong việc nhận diện tất cả các trường hợp positive thực sự có mặt trong dữ liệu
- F1 Score = 1: Mô hình có Precision và Recall đều đạt giá trị tối ưu là 1, tức là
mô hình dự đoán tất cả các trường hợp positive một cách chính xác và không bỏ sót bất kỳ trường hợp positive nào
- F1 Score = 0: Mô hình có Precision hoặc Recall hoặc cả hai đều bằng 0, tức
là mô hình không thực hiện tốt trong việc phát hiện các trường hợp positive hoặc dự đoán chính xác các trường hợp positive
Trang 29F1 Score rất hữu ích trong các tình huống mà cả Precision và Recall đều quan
trọng và cần phải cân bằng, chẳng hạn như trong các bài toán phân loại không cân bằng (khi các lớp positive và negative có số lượng rất khác nhau) hoặc trong các ứng dụng mà không thể bỏ sót bất kỳ trường hợp positive nào mà không gây hậu quả nghiêm trọng
2.3.6 ROC Curve
ROC Curve (Receiver Operating Characteristic Curve) là một đồ thị biểu diễn
hiệu suất của một mô hình phân loại bằng cách so sánh tỉ lệ True Positive Rate - TPR
và tỉ lệ False Positive Rate - FPR ở nhiều ngưỡng phân loại khác nhau
Trong đó chỉ số sử dụng trong ROC
- True Positive Rate (TPR) Biểu diễn tỉ lệ phân loại chính xác các mẫu positive trên tất cả tất cả các mẫu positive, được tính theo công thức:
TPR càng cao thì các mẫu positive càng được phân loại chính xác
- False Positive Rate (FPR) Biểu diễn tỉ lệ mô hình dự đoán sai các mẫu negative thành positive trên tất cả các mẫu negative, được tính theo công thức:
Area Under the ROC curve (AUC): là phần diện tích bên dưới đường cong
ROC, dùng để đánh giá hiệu suất của mô hình phân loại trong các mô hình khác nhau Giá trị AUC dao động từ 0 đến 1 Một AUC gần 1 cho thấy mô hình phân loại có hiệu
Trang 30suất tốt, trong khi AUC gần 0.5 cho thấy mô hình không tốt hơn so với việc dự đoán ngẫu nhiên Nếu AUC thấp hơn 0.5, mô hình có thể hoạt động tệ hơn so với dự đoán ngẫu nhiên Diện tích AUC càng lớn thì càng dễ phân loại kết quả cho cả lớp positive
và negative càng chính xác Do đó, người ta còn sử dụng AUC ROC để đánh giá độ tốt của mô hình
2.4 Các thư viện xử lý ảnh liên quan
2.4.1 Thư viện OpenCV
Opencv (Open Source Computer Vision) là một thư viện mã nguồn mở hàng đầu dành cho Machine Learning (học máy) và Computer Vision () Opencv được viết bằng ngôn ngữ C, C++ bởi Gary Bradski tại intel vào năm 1999 Sau đó phiên bản đầu tiên của OpenCV được phát hành vào năm 2000
OpenCV hỗ trợ đa nền tảng gồm window, linus, Mac Os, IOS, Android Đồng thời hỗ trợ các ngôn ngữ lập trình C, C++, Python, Java và thư viện hiện có hơn 2500 thuật toán được tối ưu hóa
OpenCV có các tính năng nổi bật như:
- Bộ công cụ hỗ trợ 2D và 3D
- Nhận dạng khuôn mặt, nhận diện biển số xe, phân loại đối tượng
- Nhận diện cử chỉ
- Nhận diện đối tượng, phát hiện chuyển động, hành vi
- Tương tác giữa con người và máy tính
- Điều khiển Robot
Thư viện OpenCV được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm: robotics, Machine Learning, computer graphics và Computer vision cũng như được trang bị tính năng tăng tốc GPU theo thời gian thực
Trang 31gồm:
Hình 2.2: Cấu trúc cơ bản của OpenCV
Thư viện OpenCV được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao
2.4.2 Thư viện Dlib
Dlib là một thư viện phần mềm đa nền tảng, mã nguồn mở Dlib được viết bằng ngôn ngữ C++ bởi Davis King vào năm 2002 [12] Khác với thư viện OpenCV là cung cấp các thuật toán cho các ứng dụng xử lý ảnh và thị giác máy tính, thư viện Dlib được thiết kế dành cho ứng dụng machine learning và trí tuệ nhân tạo với các thư viện chính sau:
(Machine Learning Library)
Các thuật toán Machine Learning, bao gồm nhiều bộ phân loại thống
kê và các bộ phân cụm
Trang 32Hình 2.3: Kiến trúc thư viện Dlib [12]
- Classification: Các thuật toán phân lớp dựa trên hai phương pháp cơ sở là k-
NN (K-nearest neighbor) và SVM (Support Vector Machine)
- Data transformation: Các thuật toán giảm số chiều, loại bỏ các dữ liệu dư thừa và tăng cường tính discriminant (khác biệt) của các đặc điểm được giữ lại
- Clustering: Các thuật toán phân cụm
- Structure prediction: Các thuật toán dự đoán có cấu trúc
- Markov Random Fields: Các thuật toán dựa trên các trường Markov ngẫu nhiên
- Regression: Các thuật toán hồi quy
Thư viện Dlib được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm:
- Nhận dạng khuôn mặt
- Nhận diện chữ viết tay
- Theo dõi đối tượng
- Phân cụm dữ liệu
- Tìm kiếm hình ảnh
Trang 33- Phân loại hình ảnh
- Máy tính thị giác
- Học máy (Machine Learning)
2.4.3 Thư viện TensorFlow
TensorFlow là một thư viện mã nguồn mở được tạo ra để phục vụ cho việc tính toán phân tán số và sử dụng cách thức tính toán là data flow graphs TensorFlow được viết bằng ngôn ngữ C++ được phát triển bởi nhóm Google Brain và được công bố
và phát triển các ứng dụng AI (Machine learning/Deep learning)
TensorFlow hỗ trợ đa nền tảng gồm window, linus, macOs, IOS, Android Đồng thời hỗ trợ các ngôn ngữ lập trình C++, Python, Java, Javascript phổ biến nhất là ngôn ngữ python TensorFlow cũng có thể được sử dụng trong đám mây thông qua Google Cloud Platform
Kiến trúc TensorFlow hoạt động theo ba bước như sau:
- Tiền xử lý dữ liệu: chuẩn hóa dữ liệu để làm cho nó phù hợp với việc sử dụng trong Machine Learning
- Dựng mô hình cho dữ liệu
- Huấn luyện và ước tính mô hình: sử dụng dữ liệu đầu vào để điều chỉnh các
tham số của mô hình cho đến khi mô hình có thể tạo ra các kết quả mong muốn và sử dụng mô hình đã được huấn luyện để dự đoán các kết quả cho các dữ liệu đầu vào
mới
Các layer cơ bản của Tensorflow:
- High-Level Tensorflow APIs: layer chứa các API bậc cao được xây dựng
dựa trên các tầng thấp hơn, giúp chúng ta có thể dễ dàng triển khai các mô hình khác nhau
- Mid-Level Tensorflow APIs: các Class được viết dựa trên tầng thấp hơn Low-Level
Trang 34- Low-Level Tensorflow APIs: chứa các cú pháp hoặc phương thức cơ bản để
xây dựng nên các chức năng, hỗ trợ cho nhiều ngôn ngữ khác nhau, từ đó làm tăng
tính đa dạng và lựa chọn khi xây dựng các ứng dụng
- Tensorflow Kernel: là một gói triển khai của Tensorflow (Có cả CPU và GPU) nó là cách giao thức gần nhất đối với các thiết bị phần cứng của tensorflow
- Machine Types: là các thiết bị cơ bản của các thiết bị tính toán như CPU, GPU và hệ điều hành
Cách thức hoạt động của Tensorflow:
TensorFlow cho phép các những nhà sử dụng tạo ra biểu đồ luồng dữ liệu (dataflow graph), cấu trúc mô tả cách làm như thế nào để dữ liệu có thể di chuyển qua một biểu đồ hay một loạt các nút đang xử lý Mỗi nút trong đồ thị đại diện cho một phép toán hoạt động và mỗi kết nối hay ngoài rìa giữa các nút là một mảng dữ liệu đa chiều còn được gọi là tensor
Thư viện Tensorflow được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm:
- Phân loại hình ảnh
- Nhận diện đối tượng
- Phân tích ngôn ngữ tự nhiên
Trang 352.4.4 Thư viện Keras
Keras là một thư viện mã nguồn mở được tạo ra dành cho Machine Learning và Deep Learning (mạng học sâu) Keras được viết bằng ngôn ngữ Python và được tạo
ra bởi Francois Chollet, một nhà khoa học máy tính của Google vào năm 2015 Kenras được tạo ra nhằm mục đích là giúp con người dễ dàng sử dụng, xây dựng, huấn luyện
và triển khai các mô hình Deeplearning rộng rãi trong các lĩnh vực
Keras là thư viện chứa các API cấp cao dựa trên các thư viện cấp thấp khác, chẳng hạn như TensorFlow và Theano hoặc Bộ công cụ nhận thức (CNTK) Ngoài ra keras còn cung cấp các API để hỗ trợ xây dựng và tùy chỉnh các mạng neural phổ biến như Multilayer Perceptron (MLP), Convolutional Neural Network (CNN), Recurrent Neural Network (RNN) một cách linh hoạt và dễ dàng
Keras hoạt động bằng cách cung cấp các API cấp cao cho việc xây dựng các mạng neural thần kinh
Để sử dụng keras đầu tiên chúng ta cần tạo một lớp mới để xác định các tầng neural thần kinh và thêm tầng ẩn có 128 neural và tầng đầu ra có 2 neural để vào mạng neural thần kinh
Sau đó sử dụng các phương thức lớp để kết nối các tầng và định dạng mạng neural thần kinh
Tiếp theo, đào tạo mạng neural thần kinh trên một tập dữ liệu bao gồm các dữ liệu đầu vào và đầu ra Mạng neural thần kinh sẽ biến đổi các dữ liệu đầu vào thành các dữ liệu đầu ra Sau khi đào tạo mạng neural thần kinh, chúng ta có thể dự đoán các dữ liệu đầu vào mới dựa trên các mẫu đầu vào đã được đào tạo
Thư viện Keras được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm:
- Machine Learning: Keras là một thư viện phổ biến để xây dựng các mô hình Machine Learning, bao gồm các mô hình phân loại, hồi quy và phát hiện đối tượng
- Trí tuệ nhân tạo: Keras là một thư viện phổ biến để xây dựng các ứng dụng trí tuệ nhân tạo, chẳng hạn như các chatbot, trợ lý ảo và hệ thống nhận diện hình ảnh
Trang 36- Sinh học tính toán: Keras được sử dụng để mô hình hóa các hệ thống sinh học phức tạp, chẳng hạn như não bộ và hệ miễn dịch
- Khoa học vật lý: Keras được sử dụng để mô hình hóa các hệ thống vật lý phức tạp, chẳng hạn như thời tiết và khí hậu
- Kỹ thuật: Keras được sử dụng để tối ưu hóa các hệ thống kỹ thuật, chẳng hạn như các bộ điều khiển và mạng điện thoại
Những ưu và nhược điểm của các thư viện xử lý ảnh trong quá trình nhận dạng khuôn mặt
Sự phát triển của công nghệ nhận dạng khuôn mặt đã mang lại cho người dùng nhiều lợi ích Đồng thời, việc ra đời các thư viện mã nguồn mở được ứng dụng trên
đa nền tảng và đa ngôn ngữ lập trình đã góp phần không nhỏ giúp con người dễ dàng tìm hiểu, xây dựng, sử dụng và triển khai các mô hình Machine Learning và Deep Learning
Tuy nhiên tất cả các vấn đề đều có 2 khía cạnh Với các lợi ích mà thư viện xử
lý ảnh mang lại cho con người là điều không thể phủ nhận Nhưng ngoài các lợi ích trên thì các thư viện xử lý ảnh mang lại cho chúng ta một số khó khăn nhất định
Ưu điểm thư viện xử lý ảnh
- Miễn phí và mã nguồn mở
- Hỗ trợ nhiều nền tảng (Windows, Linux, macOS, Android, iOS)
- Hỗ trợ nhiều ngôn ngữ lập trình, bao gồm C++, Python và Java
- Có nhiều tính năng và hàm để xử lý hình ảnh và nhận diện máy, bao gồm cả các thuật toán tiên tiến nhất
- Đáp ứng các yêu cầu cao, chẳng hạn như phát hiện đối tượng và phân loại hình ảnh
- Được cộng đồng người dùng lớn hỗ trợ
- Có rất nhiều tài nguyên trực tuyến và ngoại tuyến
- Được cập nhật thường xuyên với các tính năng mới
Trang 37- Hỗ trợ nhiều loại máy ảnh và cảm biến
- Có thể được sử dụng để tạo ra các ứng dụng thời gian thực
Nhược điểm thư viện xử lý ảnh
- Có thể khó học: có thể khó học đối với những người mới bắt đầu
- Có thể chậm đối với các tác vụ nặng và máy tính có cấu hình thấp
- Yêu cầu cấu hình cao: có thể yêu cầu cấu hình phần cứng cao để chạy nhanh chóng
- Có thể không hỗ trợ tất cả các tính năng trên tất cả các nền tảng
2.5 Kết luận chương
Trong chương này, luận văn đã trình bày tổng quan về khái niệm và cách thức hoạt động của hệ thống nhận dạng khuôn mặt Đồng thời luận văn cũng giới thiệu các phương pháp đánh giá và thư viện mã nguồn mở được sử dụng để xử lý hình ảnh dùng trong Machine Learning và Deep Learning, giúp ta nắm rõ hơn các ưu, nhược
điểm khi sử dụng và triển khai vào thực tế đặc biệt áp dụng vào bài toán đặt ra “Xây
dựng module đăng nhập bằng nhận dạng khuôn mặt” Chương tiếp theo, luận văn
sẽ trình bày cụ thể về các phương pháp, thuật toán có liên quan đến áp dụng trực tiếp vào bài toán xác thực khuôn mặt
Trang 38CHƯƠNG 3: CÁC PHƯƠNG PHÁP, THUẬT TOÁN NHẬN DẠNG KHUÔN
MẶT LIÊN QUAN 3.1 Phương pháp phát hiện khuôn mặt MTCNN
MTCNN viết tắt của Multi-task Cascaded Convolutional Networks (mạng đa năng xếp tầng đa tác vụ) là phương pháp nhận dạng khuôn mặt và xác định khuôn mặt người trong bức ảnh hoặc video được công bố năm 2016 bởi Zhang và cộng sự [7]
Hình 3.1: Sơ đồ hoạt động của MTCNN [7]
Sơ đồ cấu trúc của MTCNN được chia thành 3 lớp mạng CNN xếp chồng lên nhau đồng thời hoạt động khi phát hiện và xác định khuôn mặt trên hình ảnh hoặc video Mỗi lớp mạng CNN trong MTCNN đều có cấu trúc, vai trò khác nhau trong việc phát hiện và xác định khuôn mặt Kết quả dữ liệu đầu ra là vector đặc trưng biểu diễn từng vị trí cơ quan khuôn mặt và các điểm trên mặt (mắt, mũi, miệng…) trong hình ảnh và video
MTCCN hoạt động theo 3 mạng neural riêng biệt là: P-Net, R-Net và O-Net Một bức ảnh thường sẽ có nhiều hơn một người – một mặt với các kích thước khuôn mặt khác nhau Thuật toán MTCNN đã sử dụng phép thay đổi kích thước ảnh,
để tạo một loạt các ảnh copy từ ảnh gốc với kích cỡ khác nhau, từ to đến nhỏ, tạo thành một Image Pyramid
Trang 39Hình 3 2: Các tầng hình ảnh [7]
3.1.1 Mạng P-net
Mạng P-net sử dụng mạng CNN để thu được các cửa sổ hình vuông chứa các khuôn mặt và các vector hồi quy trong các cửa sổ đó đồng thời tại các cửa sổ chứa khuôn mặt được hiệu chuẩn dựa trên các vector hồi quy Cuối cùng, các cửa sổ xếp chồng lên nhau tại một vùng hợp nhất thành một cửa sổ Kết quả xuất ra là các cửa
sổ có thể chứa khuôn mặt
Hình 3.3: Sơ đồ hoạt động P-Net [7]
Mạng P-net sử dụng kiến trúc CNN bao gồm 3 lớp tích chập và 1 lớp co Kích thước dữ liệu đầu vào của cửa sổ là 12x12x3 Kết quả P-Net gồm các cụm sau:
- Cụm thứ nhất có 2 bộ lọc kích thước 1x1 nhận dạng khuôn mặt
- Cụm thứ hai có 4 bộ lọc kích thước 1x1 đóng khung 4 vị trí hộp giới hạn
- Cụm thứ ba có 10 bộ lọc kích thước 1x1 đóng khung 10 vị trí khuôn mặt
3.1.2 Mạng R-Net
Tất cả các box chứa khuôn mặt từ tầng P-Net sẽ được kiểm tra sàng lọc bằng cách đưa vào một CNN khác gọi là Mạng lọc (R-Net) để tiếp tục loại bỏ một số lượng
Trang 40lớn các cửa sổ không chứa khuôn mặt Sau đó thực hiện hiệu chỉnh vector hồi quy và thực hiện hợp nhất các cửa sổ xếp chồng lên nhau tại một vùng hợp nhất
Hình 3.4: Sơ đồ hoạt động R-Net [7]
Kiến trúc CNN sử dụng trong R-net gồm: 3 lớp tích chập, 2 lớp co và 1 lớp kết nối đầy đủ Kích thước dữ liệu đầu vào của cửa sổ là 24x24x3 Kết quả R-Net gồm các cụm sau:
- Cụm thứ nhất có 2 lớp nhận dạng khuôn mặt
- Cụm thứ hai có 4 lớp đánh dấu vị trí hộp giới hạn
- Cụm thứ ba có 10 lớp vị trí khuôn mặt
3.1.3 Mạng O-Net
Mạng O-net tương tự mạng R-Net, sử dụng mạng CNN chi tiết nhất để được gọi
là mạng Đầu ra (O-net) để lọc kết quả một lần nữa và đánh dấu vị trí năm điểm chính trên khuôn mặt
Hình 3.5: Sơ đồ hoạt động O-Net [7]