Kết quả thực nghiệm trên một số hàm khác nhau trong nghiên cứu

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 72)

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 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) 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 khuôn 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 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:

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 khn 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 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ả 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:

Lần thực hiện Batch_size Epoch Số khn 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 hồ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 tồ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 khn 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

Giao diện chức năng Quản Lý Lớp trong DANH MỤC QUẢN TRỊ: Giao diện này có các chức năng thêm lớp, sửa/ xóa lớp, Về Menu.

Hình 5. 11: Giao diện quản lý lớp

Chức năng thêm lớp, lớp nào chƣa có trong hệ thống ta có thể thêm vào hệ thống bằng cách click vào link “ Thêm Lớp “ và nhập các thông tin thƣ sau:

Hình 5.12: Giao diện thêm lớp

Giao diện chức năng Quản Lý Sinh Viên trong DANH MỤC QUẢN TRỊ: Giao diện này có các chức năng thêm Sinh viên, Sửa/ Xóa Sinh viên, Về Menu và Quản lý mẫu gƣơng mặt.

Hình 5.13: Giao diện Quản Lý Sinh Viên

Các chức năng chính trên hệ thống giáo viên:

Hình 5.14: Giao diện điểm danh sinh viên

Hình 5.15: Giao diện danh sách kết quả điểm danh

5.3.3 Thực nghiệm

Tôi sử dụng bộ tập dữ liệu Lớp học gồm 40 học sinh Lớp 7/4, Trƣờng THCS Nguyễn Bỉnh Khiêm, Thành phố Hội An, Tỉnh Quảng Nam.

5.3.3.1 Thực nghiệm với điểm danh bằng chụp hình.

a. Thử nghiệm lần 1: Với 17 Học sinh điểm danh bằng chụp hình với

Hình 5.16: Hình ảnh nhận dạng lần 1 STT Tổng số học sinh cần STT Tổng số học sinh cần điểm danh Số học sinh nhận dạng đúng Số học sinh không nhận dạng đƣợc 1 17 8 9 Bảng 5.3: Kết quả nhận dạng lần 1

b. Thử nghiệm lần 2: Cũng với 17 Học sinh điểm danh bằng chụp hình

với khoảng cách 2 mét.

STT Tổng số học sinh cần điểm danh Số học sinh nhận dạng đúng Số học sinh không nhận dạng đƣợc 1 17 13 4 Bảng 5.4: Kết quả nhận dạng lần 2

c. Thử nghiệm lần 3: Cũng với 17 Học sinh điểm danh bằng chụp hình với

khoảng cách 2 mét và góc mặt sinh viên có thay đổi.

Hình 5.18: Hình ảnh nhận dạng lần 3 STT Tổng số học sinh cần điểm danh Số học sinh nhận dạng đúng Số học sinh không nhận dạng đƣợc 1 17 13 4

Bảng 5.5: Kết quả nhận dạng với khoảng cách 4 mét

d. Thử nghiệm lần 4: Với 18 Học sinh tiếp theo điểm danh bằng chụp hình

Hình 5.19: Hình ảnh nhận dạng lần 4 STT Tổng số học sinh cần điểm danh Số học sinh nhận dạng đúng Số học sinh không nhận dạng đƣợc 1 18 9 9 Bảng 5.6: Kết quả nhận dạng lần 4

e. Thử nghiệm lần 5: Cũng với 18 Học sinh tiếp theo trên điểm danh bằng

Hình 5.20: Hình ảnh nhận dạng lần 5 STT Tổng số học sinh cần điểm danh Số học sinh nhận dạng đúng Số học sinh không nhận dạng đƣợc 1 18 13 5 Bảng 5.7: Kết quả nhận dạng lần 5 f. Tổng hợp với 5 lần thử nghiệm:

Với tập dữ liệu lớp học gồm 40 học sinh lớp 7/4 đã điểm danh cho 37 học sinh có mặt và 3 học sinh vắng mặt, kết quả đã nhận dạng đúng 95%( 35/37 Học sinh) với 03 lần chụp khác nhau.

5.3.3.2 Thực nghiệm với điểm danh bằng quay video:

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 72)