(Đường nét đứt đại diện cho ranh giới quyết định và các vùng xám là biên quyết
định)
4.3.3.2 So sánh với các hàm mất mát khác
Các hàm mất mát có thể đƣợc thiết kế dựa vào các đại diện góc của các đặc trƣng và vector trọng số. Chẳng hạn, chúng ta có thế thiết kế một hàm mất mát để tăng độ gọn trong một lớp và sự khác biệt giữa các lớp trong một siêu cầu. Chúng ta có thể so sánh với ba hàm mất mát khác là: Intra-loss, Inter-loss và Triplet-loss
Hình 4.17: Mô tả một số hướng tiếp cận của các hàm mất mát khác
Intra-Loss: đƣợc thiết kế để cảu thiện độ gọn trong một lớp bằng cách giảm các góc/cung giữa các mẫu và tâm ground truth.
5 2 1 1 i N y i L L N (4-5)
Inter-Loss: Mục tiêu là làm tăng sự khác biệt giữa các lớp bằng tăng góc/cung giữa các tâm khác nhau.
6 2 1 1, 1 arccos(W W ) ( 1) i i N n T y j i j j y L L N n (4-6)
Inter-loss là một trƣờng hợp đặc biệt của phƣơng pháp Minimum Hyper- speriacal Energy (MHE). Trong cả lớp ẩn và lớp đầu ra đều đƣợc chuẩn hóa bởi MHE.
Tripplet-loss: nhằm mục đích biên góc/cung giữa các mẫu bộ ba Trong FaceNet, biên Euclidean đƣợc áp dụng trong các đặc trƣng đƣợc chuẩn hóa. Còn trong hàm triplet-loss, nó đƣợc sử dụng bằng thể hiện của các góc nhƣ:
arccos(xiposxi) m arccos(xinegxi)
(4-7)
Qua các kiểm nghiệm thực tế cho thấy hiệu quả của phƣơng pháp sử dụng biên góc cộng của hàm ArcFace loss vẫn mang lại hiệu quả tốt nhất so với ba phƣơng pháp này. Để minh chứng trực quan nhất cho hiệu quả của phƣơng pháp này, ta có thể tham khảo kết quả của một số nghiên cứu khoa học đã đạt đƣợc. Thuật toán có hiệu quả rất tốt trong nhận diện với các hệ thống dữ liệu lớn. Một số bộ dữ liệu có thể kể đến:
Datasets #Identity #Image/Video
CASIA 10K 0.5M VGGFace2 9.1K 3.3M MS1MV2 85K 5.8M Asian-DeepGlint 87K 3.9M Asian-DeepGlint 94K 2.83M LFW 5,749 12,233 CFP-FP 500 7,000 Age-DB-30 568 16,488 CPLFW 5,749 11,652 CALFW 5,749 12,174
Datasets #Identity #Image/Video YTF 1,595 3,425 MegaFace 530 (P) 1M (G) IJB-B 1,845 76.8K IJB-C 3,531 148.8K Trillion-Pairs 5,749 (P) 1.58M (G) iQIYI-VID 4,934 172, 835
Bảng 4.2: Một số bộ dữ liệu để huấn luyện và kiểm nghiệm thường dùng
Qua các kiểm nghiệm, hiệu quả của thuật toán đạt đƣơc so với các thuât toán khác nhƣ sau:
Loss Functions LFW CFP-FP AgeDB-30
ArcFace (0.4) 99,53 95,41 94,98 ArcFace (0.45) 99,46 95,47 94,93 ArcFace (0.5) 95,53 95,56 95,15 ArcFace (0.55) 94,41 95,32 95,05 SphereFace 99,42 - - SphereFAce (1.35) 99,11 94,38 91,70 CosFace 99,3 - - CosFace (0.35) 99,51 95,44 94,56 CM1 (1, 0.3, 0.2) 99,48 95,12 94,38 CM2 (0.9, 0.4, 0.15) 99,50 95,24 94,86 Softmax 99,08 94,39 92,33 Norm-Softmax (NS) 98,56 89,79 88,72 NS+Intra 98,75 93,81 90,92 NS+Inter 98,68 90,67 89,50
Loss Functions LFW CFP-FP AgeDB-30 NS+Intra+Inter 98,73 94,00 91,41 Triplet (0.35) 98,98 91,90 89,98 ArcFace+Intra 99,45 95,37 94,73 ArcFace+Inter 99,43 95,25 94,55 ArcFace+Intra+Inter 99,43 95,42 95,10 ArcFace+Triplet 99,50 95,51 94,40
Bảng 4.3: Kết quả thực nghiệm trên một số hàm khác nhau trong nghiên cứu
4.4 Kết chƣơng
Trong nội dung chƣơng 4, luận văn đã trình bày khái quát về cơ sở lý thuyết xây dựng giải pháp nhận dạng khuôn mặt. Trƣớc tiên, nội dung khái quát về mạng Neuron tích chập CNN, từ đó phát triển lên mạng MTCNN để phát hiện và xác định khuôn mặt. Tiếp theo, nội dung chƣơng đã trình bày thuật toán ArcFace, thuật toán đƣợc sử dụng trong Model nhận diện khuôn mặt. Toàn bộ lý thuyết đã đƣợc trình bày trong chƣơng 4 này, ở chƣơng 5 tiếp theo, luận văn sẽ trình bày một cách cụ thể việc xây dựng hệ thống nhận diện khuôn mặt.
Chƣơng 5: XÂY DỰNG HỆ THỐNG VÀ THỰC NGHIỆM
Chƣơng này sẽ trình bày cụ thể về quá trình thực hiện và xây dựng hệ thống nhận dạng khuôn mặt, các thực nghiệm cụ thể bao gồm cách xây dựng bộ dữ liệu huấn luyện, các bƣớc thực nghiệm và kết quả đạt đƣợc, từ đó đƣa ra các phân tích, nhận xét về các kết quả đó.
Trong quá trình nghiên cứu và cài đặt hệ thống, bài toán đƣợc thành hai nhiệm vụ chính: xác định, phát hiện khuôn mặt và nhận dạng khuôn mặt. Để xác định khuôn mặt ngƣời trong ảnh hệ thống sử dụng MTCNN. Hiện nay, thƣ viện MTCNN đã đƣợc tích hợp khá đầy đủ tính năng cho phƣơng pháp này. Sau khi xác định khuôn mặt, hệ thống sử dụng ArcFace Model để huấn luyện và nhận dạng khuôn mặt. Chƣơng trình đƣợc viết trên ngôn ngữ Python trên công cụ Pycharm.
5.1 Xây dựng hệ thống 5.1.1 Thuật toán 5.1.1 Thuật toán
Nhiệm vụ của hệ thống nhận diện khuôn mặt là thực hiện nhận diện khuôn mặt từ webcam trực tiếp. Hƣớng thực hiện gồm hai gồm 3 bƣớc cơ bản sau:
Bƣớc 1: Xác định và lấy ra (các) khuôn mặt có trong hình ảnh.
Đây là công đoạn rất quan trọng của quá trình nhận dạng. Bởi lẽ, để có thể phân tích và nhận dạng khuôn mặt thì chúng ta cần xác định chính xác vị trí của khuôn mặt trong bức ảnh. Sau đó, chúng ta cần phải tách khuôn mặt ra khỏi khung cảnh còn lại.
Bƣớc 2: Từ hình ảnh các khuôn mặt lấy ra từ bƣớc 1, thực hiện phân tích, trích rút các đặc trƣng của khuôn mặt.
Chúng ta nhận dạng gƣơng mặt mọi ngƣời qua các đặc điểm, hệ thống nhận dạng cũng vậy, nhƣng nó thực hiện đánh giá các đặc điểm ở một cấp độ cao hơn, chính xác hơn. Mỗi khuôn mặt đều có những điểm mốc, những phần lồi lõm tạo nên các đặc điểm của khuôn mặt. Các hệ thống nhận dạng gƣơng mặt định nghĩa những điểm này là những điểm nút. Mỗi mặt ngƣời có khoảng 80 điểm nút. Trong bƣớc này, dựa vào các điểm nút mà hệ thống trích rút ra đặc trƣng của từng khuôn mặt. Một số điểm nút có thể đƣợc sử dụng để nhận dạng gồm có: khoảng cách giữa hai
mắt, chiều rộng của mũi, độ sâu của hốc mắt, hình dạng của xƣơng gò má, độ dài xƣơng hàm, …
Bƣớc 3: Từ các thông tin có đƣợc sau khi phân tích, kết luận và xác minh danh tính ngƣời dùng.
Chúng ta thực hiện so sánh dựa trên các đặc trƣng đã trích rút để đƣa ra phân lớp cho mỗi đối tƣợng khuôn mặt. Sau khi phân lớp, ta có thể thu đƣợc kết quả của quá trình nhận dạng đó là danh tính của mỗi khuôn mặt ngƣời.
Ta có thể khái quát mô hình hệ thống nhận dạng mặt ngƣời bằng sơ đồ khối nhƣ sau:
Hình 5.1: Sơ đồ khối tóm tắt hệ thống nhận diện khuôn mặt.
Dù là dữ liệu huấn luyện đƣợc lấy từ phƣơng pháp nào thì cũng có chung một đặc điểm: những bức ảnh có chứa khuôn mặt, thƣờng là ảnh một ngƣời, có đầy đủ mắt, mũi, miệng. Dữ liệu hình ảnh đƣợc tổ chức theo cấu trúc:
/train
/person1
Start
Huấn luyện bộ nhận dạng khuôn mặt
Dữ liệu huấn luyện Dữ liệu kiểm thử
Nhận dạng khuôn mặt
+ face_01.jpg + face_02.jpg + ... /person2 + face_01.jpg + face_02.jpg + ... / ... 5.1.2 Công cụ
Cấu hình phần cứng phục vụ cho quá trình huấn luyện:
- Vi xử lý: Intel® Core™ i3-9100f CPU @ 2.30GHz (4CPUs) GTX-1650.
-Hệ điều hành: Ubuntu 18.04.3
Thƣ viện phần mềm:
-Thƣ viện phần mềm lập trình đƣợc sử dụng: Python 3.68. -Công cụ lập tình: Pycharm bản Community version 2019.3.
5.1.3 Cài đặt các thƣ viện - Opencv-python - Opencv-python - Keras 2.2.4 - Cython 0.26.1 - Pillow 5.1.0- pip3 - Easdict 1.9 - Face-recognition 1.2.3 - Face-recognition-models 0.3.0 - Imutils 0.5.3 - Skit-image 0.15.0 - Skit-learn 0.21.3 - Scipy 1.3.1- sklern 0.0 - Tensorflow 1.13.2 - Torch 1.2.0 - MTCNN 0.0.9 - Mxnet 1.5.1 - Numpy 1.16.2
5.1.4 Thực hiện huấn luyện dữ liệu ảnh
Sau khi đã có môi trƣờng huấn luyện, các dữ liệu đầu vào cũng nhƣ các thƣ viện đƣợc hỗ trợ và các pretrain model có sẵn. Tiếp theo, ta sẽ thực hiện huấn luyện các mẫu dữ liệu đó.
Đầu tiên, chuyển các dữ liệu khuôn mặt thành các vector tƣơng ứng với mặt của từng ngƣời. Hệ thống sẽ xử lý lần lƣợt từng bức ảnh trong dữ liệu hệ thống. Kết quả trả về số lƣợng khuôn mặt đƣợc embedding.
Hình 5.2: Mô tả quá trình xử lý dữ liệu ảnh đầu vào
Tiếp theo, ta thực hiện huấn luyện dữ liệu với các ảnh khuôn mặt đã đƣợc embedding.
Kết quả trả về bao gồm các file accuracy_loss.png, embedings.pickle, le.pickle và my_model.h5 đƣợc lƣu trong folder outputs:
Hình 5.4: Cấu trúc thư mục đầu ra sau khi huấn luyện
Trong đó, có biểu đồ accuracy_loss thể hiện độ chính xác của hàm. Biểu đồ đƣợc vẽ dựa vào các giá trị thu đƣợc trong quá trình train dữ liệu. Biểu đồ có dạng nhƣ sau:
Hình 5.5: Biểu đồ thể hiện tính chính xác của hàm
Theo nhƣ hình 5.5, chúng ta có thể thấy, biểu đồ mô tả hai mối quan hệ chính giữa epoch với acc (độ chính xác) và giữa epoch với loss (độ sai số). Trong đó, epoch là một điểm cắt tùy ý. Ta có thể hiểu là một lần huấn luyện toàn bộ tập dữ liệu đƣợc phân tách thành các giai đoạn riêng biệt. Giả sử, ta có 1000 mẫu huấn luyện và batch = 500 thì sẽ mất 2 lần lặp để hoàn thành một epoch.
Theo các thực nghiệm trƣớc đây, ta có thể thấy phƣơng pháp này đạt đến độ chính xác rất cao. Nhƣ tài liệu bên trên đã cung cấp. Với bộ dữ liệu LFW, phƣơng pháp này đã đạt đến độ chính xác là 99,53%.
5.2.1 Kiểm nghiệm hệ thống nhận dạng khuôn mặt đối với bộ dữ liệu ngƣời nổi tiếng Việt Nam. ngƣời nổi tiếng Việt Nam.
Để kiểm nghiệm hiệu quả của hệ thống nhận dạng khuôn mặt này, luận văn thực hiện kiểm nghiệm trên bộ dữ liệu ngƣời nổi tiếng Việt Nam Dữ liệu này đƣợc
công khai trên web:
https://drive.google.com/file/d/1kpxjaz3pIMrAhEjm7hJxcBsxKNhfl8t2/view. Bộ
dữ liệu này gồm 1010 ngƣời, đƣợc gán nhãn từ 1 đến 1010. Bộ dữ liệu này chỉ bao gồm mặt ngƣời, mỗi thƣ mục có từ 1-15 ảnh nhiều ảnh chất lƣợng xấu, có khi chỉ là hình vẽ. Luận Văn thực hiện huấn luyện trên 80% dữ liệu (800 khuôn mặt với 4568 bức ảnh). Ta nên chọn những folder có nhiều bức ảnh để tăng độ chính xác của kiểm nghiệm. Sau đó, dùng 20% dữ liệu Huấn luyện (800 bức ảnh khuôn mặt ngƣời khác nhau) để thực hiện kiểm nghiệm kết quả. Từ kết quả của 800 khuôn mặt này, đánh giá hiệu quả của hệ thống.
Đầu tiên, ta sử thêm 800 folder ảnh mặt ngƣời vào dữ liệu huấn luyện hệ thống. Sau đó, ta thực hiện các bƣớc huấn luyện dữ liệu nhƣ đã trình bày ở trên. Tổng thời gian huấn luyện ảnh khoảng 3 giờ 30 phút. Kết quả huấn luyện ta có thể mô tả dƣới sơ đồ sau:
Sau khi huấn luyện dữ liệu, ta thực hiện nhận diện khuôn mặt với 3 lần thực hiện. Mỗi lần ta thực hiện với 800 bức ảnh khác nhau, từ đó ta tính đƣợc số kết quả khuôn mặt nhận dạng đúng sau mỗi lần. Ta sử dụng kết quả số khuôn mặt nhận dạng đúng từ đó, ta tính đƣợc độ chính xác thực tế của hệ thống với bộ dữ liệu kiểm nghiệm nhƣ sau:
Độ chính xác = Số khuôn mặt nhận dạng đúng: 800 x 100% Kết quả thu đƣợc nhƣ bảng sau:
Lần thực hiện Batch_size Epoch Số khuôn mặt nhận dạng đúng Độ chính xác (%) 1 12 30 689 86,125 2 12 100 735 91,875 3 12 90 713 89,125
Bảng 5.1: Độ chính xác thu được thực tế với bộ dữ liệu người nổi tiếng Việt Nam
5.2.2 Kiểm nghiệm hệ thống nhận dạng khuôn mặt đối với bộ dữ liệu gint360k. gint360k.
Tiếp theo để kiểm nghiệm rõ hơn về độ hiệu quả của hệ thống nhận dạng khuôn mặt này, luận văn thực hiện kiểm nghiệm trên bộ dữ liệu gint360k. Dữ liệu
này đƣợc công khai trên website
https://pan.baidu.com/s/1GsYqTTt7_Dn8BfxxsLFN0w (Password tải dữ liệu:
o3az). Bộ dữ liệu này gồm 360.231 ngƣời, đƣợc gán nhãn từ id_1 đến id_360231 với hơn 17.000.000 khuôn mặt ngƣời. Bộ dữ liệu này chỉ bao gồm mặt ngƣời, mỗi thƣ mục có từ 5~1000 ảnh nhiều ảnh chất lƣợng ảnh tốt đã căn chỉnh và sàng lọc. Bộ dữ liệu này là rất lớn (gần 130GB) để đảm bảo thời gian hoàn thành Luận Văn và điều kiện máy móc cho phép Luận Văn thực hiện huấn luyện 13.000 ngƣời với 338.212 bức ảnh). Ta nên chọn những folder có nhiều bức ảnh để tăng độ chính xác của kiểm nghiệm. Sau đó, dùng 20% dữ liệu Huấn luyện (67.642 bức ảnh khuôn mặt ngƣời khác nhau) để thực hiện kiểm nghiệm kết quả. Từ kết quả của 67.642 khuôn mặt này, đánh giá hiệu quả của hệ thống.
thống. Sau đó, ta thực hiện các bƣớc huấn luyện dữ liệu nhƣ đã trình bày ở trên. Tổng thời gian huấn luyện ảnh khoảng 26 giờ 43 phút. Kết quả huấn luyện ta có thể mô tả dƣới sơ đồ sau:
Hình 5.7: Mô tả kết quả huấn luyện thực tế với bộ dữ liệu gint360k.
Sau khi huấn luyện dữ liệu, ta thực hiện nhận diện khuôn mặt với 3 lần thực hiện. Mỗi lần ta thực hiện với 67.642 bức ảnh khác nhau, từ đó ta tính đƣợc số kết quả khuôn mặt nhận dạng đúng sau mỗi lần. Thời gian kiểm nghiệm mỗi lần là hơn 3 giờ. Ta sử dụng kết quả số khuôn mặt nhận dạng đúng từ đó, ta tính đƣợc độ chính xác thực tế của hệ thống với bộ dữ liệu kiểm nghiệm nhƣ sau:
Độ chính xác = Số khuôn mặt nhận dạng đúng: 67.642 x 100% Kết quả thu đƣợc nhƣ bảng sau:
Lần thực
hiện Batch_size Epoch
Số khuôn mặt nhận dạng đúng Độ chính xác (%) 1 12 30 66.923 98,93 2 12 100 67.232 99,39 3 12 90 67.232 99,39
Từ đó, ta có thể khái quát độ chính xác của toàn hệ thống bằng trung bình cộng của độ chính xác sau các lần kiểm nghiệm:
Với bộ dữ liệu nhiều mặt xấu kết quả bằng 89,04%
Với bộ dữ liệu với các khuôn mặt tốt kết quả bằng 99,23%
5.3 Xây dựng giao diện 5.3.1 Quy trình điểm danh 5.3.1 Quy trình điểm danh
Giáo viên khi điểm danh học sinh, sẽ sử dụng điện thoại, truy cập ứng dụng Website để chụp ảnh / quay video cách khuôn mặt tối đa 4 mét và yêu cầu học sinh ngồi dƣới lớp và mặt nhìn về phía trƣớc bảng. Sau khi giáo viên quay hết tất cả học sinh thì dừng điểm anh, video giáo viên vừa quay xong sẽ gửi dữ liệu đến máy chủ, Máy chủ khi nhận đƣợc ảnh, sẽ xử lý nhận dạng ảnh này, kết quả nhận dạng đƣợc lƣu vào cơ sở dữ liệu điểm danh. Máy chủ phản hồi thông tin điểm danh cho giáo viên và xác nhận điểm danh.
Minh họa ứng dụng:
Giáo viên dùng smart phone chụp ảnh/video sinh viên
Gƣơng mặt sinh viên sẽ đƣợc so sánh với các mẫu khuôn mặt đã có trong kho lƣu trữ để nhận dạng
Thông tin sinh viên trùng khớp sẽ đƣợc cung cấp cho máy chủ
Khi có đƣợc thông tin sinh viên, máy chủ sẽ lƣu tên sinh viên và thời điểm sinh viên có mặt vào CSDL điểm danh
5.3.2 Giao diện website
Giao diện chƣơng trình hiển thị tất cả các menu chức năng của hệ thống cho phép ngƣời dùng thao tác với hệ thống. Tuy theo từng quyền của ngƣời dùng mà khi đăng nhập vào hệ thống mà chƣơng trình hiển thị chức năng tƣơng ứng. Những ngƣời không phải là admin của hệ thống thì không có quyền truy cập vào trang “Quản trị ” của hệ thống.
Hình 5.8: Đăng nhập của giáo viên.
Đăng nhập của Admin:
Hình 5.9: Đăng nhập của Admin
Hình 5.10: Trang quản trị của Admin