4.3 Nhận dạng khuôn mặt bằng ArcFace Model
4.3.3 So sánh Arcface với các hàm mát (Loss function) khác
4.3.3.1 So sánh với Face và CosFace
Tƣơng đồng số học ba phƣơng pháp SphereFace, ArcFace và CosFace là ba loại khác nhau của xử lý biên biên góc nhân (multiplicative angular margin) m1, biên góc cộng (additive angular margin), biên cosine tổng (additive cosine margin) m3. Về mục đích, cả ba phƣơng pháp đều làm tăng tính gọn nhẹ trong cùng một lớp và sự khác biệt giữa các lớp khác nhau bằng logit mục tiêu. Trong hình 2-15 mơ tả đƣờng cong logit mục tiêu của SphereFace, ArcFace và CosFace dƣới cài đặt biên tốt nhất. Chúng ta chỉ quan tâm đến các các đƣờng cong logit mục tiêu trong khoảng từ 200 đến 1000 vì các góc giữa Wyi và xi đƣợc khởi tạo ngẫu nhiên bắt đầu từ khoảng 900 và kết thúc vào khoảng 300 trong quá trình huấn luyện ArcFace đƣợc thể hiện nhƣ trong hình 4.14. Bằng trực quan, ta có thể thấy có ba yếu tố trong đƣờng cong logit mục tiêu ảnh hƣởng đến hiệu suất. Đó là điểm bắt đầu, điểm kết thúc và độ dốc.
Hình 4.14 Mơ tả phân phối góc θj
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 là các siêu tham số. L4 = − 1 N N i =1 e e + )−m n j =1, j ≠ yi s cosθ j (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].
∑ log
s (cos( m1θ y j + m2 3 )
∑
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 (Đườ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.
L5 = L2 + π1 N N i =1 i (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.
L6 = L2 − π N (n −1)1
N n
i (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ƣ
pos neg
(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 ∑i =1 j =∑j1, ≠ y arccos(WyTi Wj ) x ) + m ≤ arccos(x arccos(xi i i ix )
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
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.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 khn 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 khn 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.
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
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 tốn đƣợc thành hai nhiệm vụ chính xác định, phát hiện khn 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ống5.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 khn 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 khn 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
Start
Dữ liệu huấn luyện Dữ liệu kiểm thử
Huấn luyện bộ nhận dạng khn mặt
Nhận dạng khn mặt
End
Hình 5.1 Sơ đồ khối tóm tắt hệ thống nhận diện khn 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
+ 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 khn mặt đƣợc embedding.
Hình 5.2 Mơ tả q 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 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 để 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ệungƣờ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ả khn 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ố khn mặt nhận dạng đúng 800 x 100% Kết quả thu đƣợc nhƣ bảng sau
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ệugint360k. 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.
Đầu tiên, ta sử thêm 13.000 folder ảnh mặt ngƣời vào dữ liệu huấn luyện hệ
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
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ả khn 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
Bảng 5.2 Độ chính xác thu được thực tế với bộ dữ liệu gint360k