Mơ tả phân phối góc θj

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ điểm danh sinh viên bằng điện thoại dựa trên nhận dạng khuôn mặt người luận văn thạc sĩ công nghệ thông tin (Trang 68)

Hình 4.15: Đường cong logit mục tiêu

Bằng việc kết hợp tất cả các xử lý biên (margin penalty), chúng ta thực hiện SphereFace, ArcFace và CosFace trong một khung thống nhất với m1, m2, m3

các siêu tham số. 1 2 3 1 2 3 (cos( ) ) 4 (cos( ) ) cos 1 1, 1 log y j y j j i s m m m N n s m m m s i j j y e L N e e                (4-4)

Nhƣ mơ tả trong hình 4.15, bằng việc kết hợp tất cả các biên đƣợc đề cập trên, cos(m1θyj + m2) – m3 chúng ta có thể dễ dàng thấy đƣợc một số đƣờng cong logit mục tiêu khác cũng đạt hiệu quả cao.

Khác biệt hình học: Mặc dù có sự tƣơng đồ về số giữa ArcFace và các phƣơng pháp khác, nhƣng biên góc cộng đƣợc đề xuất có thuộc tính hình học tốt hơn vì biên góc có sự tƣơng ứng chính xác với khoảng cách trắc địa. Khi so sánh các ranh giới quyết đinh trong phân loại nhị phân. ArcFace có biên góc tuyến tính khơng đổi trong tồn bộ khoảng thời gian cịn SphereFace và CosFace chỉ có biên góc phi tuyến [12].

Hình 4.16: Mơ tả biên quyết định của các hàm loss trong phân loại nhị phân (Đườ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

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 tố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 tốn ArcFace, thuật tốn đƣợc sử dụng trong Model nhận diện khuôn mặt. Tồ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 q 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 khn 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) khn mặt có trong hình ảnh.

Đây là cơng đoạn rất quan trọng của q trình nhận dạng. Bởi lẽ, để có thể phân tích và nhận dạng khn mặt thì chúng ta cần xác định chính xác vị trí của khn mặt trong bức ảnh. Sau đó, chúng ta cần phải tách khn mặt ra khỏi khung cảnh còn lại.

Bƣớc 2: Từ hình ảnh các khn 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 khn 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 khn 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 q trình nhận dạng đó là danh tính của mỗi khn mặt ngƣời.

Ta có thể khái qt 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 khn 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 q 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 tồ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 để hồ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ố khn 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

Một phần của tài liệu Xây dựng ứng dụng hỗ trợ điểm danh sinh viên bằng điện thoại dựa trên nhận dạng khuôn mặt người luận văn thạc sĩ công nghệ thông tin (Trang 68)