Hệ thống nhận dạng khuôn mặt (Face recognition) là một ứng dụng cho phép máy tính tự
động xác định hoặc nhận dạng một người nào đó từ một bức hình ảnh kỹ thuật số hoặc một khung hình
video từ một nguồn video. Một trong những cách để thực hiện điều này là so sánh các đặc điểm khuôn
mặt chọn trước từ hình ảnh và một cơ sở dữ liệu về khuôn mặt. Trong nghiên cứu này, chúng tôi đưa
ra phương pháp sử dụng đặc trưng HOG, mô hình mtcnn để phát hiện khuôn mặt và phương pháp triplet
loss và K-Nearest Neighbors để huấn luyện mô hình. Từ đó từ đó đưa lên webserver phục vụ cho việc
hiển thị ảnh của người tham gia sự kiện, cũng như từ webcam nhận diện người tham gia sự kiện và gửi
thông tin về sự kiện cho họ.
8 trang |
Chia sẻ: Thục Anh | Ngày: 11/05/2022 | Lượt xem: 588 | Lượt tải: 1
Nội dung tài liệu Xây dựng hệ thống quản lý ảnh và check in sự kiện bằng nhận diện khuôn mặt, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
Xây Dựng Hệ Thống Quản Lý Ảnh Và Check In Sự Kiện
Bằng Nhận Diện Khuôn Mặt
Trương Huỳnh Đức1, Hồ Nguyễn Hoàng Vy1, Lê Song Toàn1
1 Trường Đại học Công nghệ Thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng
thduc.17it3@sict.udn.vn, hnhvy.17ce@sict.udn.vn, lstoan@vku.udn.vn
Tóm tắt. Hệ thống nhận dạng khuôn mặt (Face recognition) là một ứng dụng cho phép máy tính tự
động xác định hoặc nhận dạng một người nào đó từ một bức hình ảnh kỹ thuật số hoặc một khung hình
video từ một nguồn video. Một trong những cách để thực hiện điều này là so sánh các đặc điểm khuôn
mặt chọn trước từ hình ảnh và một cơ sở dữ liệu về khuôn mặt. Trong nghiên cứu này, chúng tôi đưa
ra phương pháp sử dụng đặc trưng HOG, mô hình mtcnn để phát hiện khuôn mặt và phương pháp triplet
loss và K-Nearest Neighbors để huấn luyện mô hình. Từ đó từ đó đưa lên webserver phục vụ cho việc
hiển thị ảnh của người tham gia sự kiện, cũng như từ webcam nhận diện người tham gia sự kiện và gửi
thông tin về sự kiện cho họ.
Từ khoá: Nhận diện khuôn mặt, Triplet Loss, K-Nearest Neighbors, HOG
Abstract. The facial recognition system is an application that allows the computer to automatically
identify or identify someone from a digital photo or a video frame from a video source. One of the ways
to do this is to compare pre-selected facial features from an image and a database of faces. In this paper,
we propose methods using HOG feature, mtcnn model for face detection and triplet loss method and
K-Nearest Neighbors to train the model. From there, it will be posted to webserver for displaying photos
of event participants, as well as from webcam recognizing event participants and sending event infor-
mation to them.
Keywords: Face recogintion, Triplet Loss, K-Nearest Neighbors, HOG
1 Bài toán nhận diện khuôn mặt
Nhận dạng khuôn mặt là khả năng nhận diện, lưu trữ, so sánh và phân tích các mẫu dựa trên đường nét
khuôn mặt để nhận dạng người từ hình ảnh hoặc video. Hệ thống thường sử dụng các công nghệ để thực
hiện nhận dạng khuôn mặt như sử dụng sinh trắc học để ánh xạ các đặc điểm khuôn mặt từ ảnh hoặc video.
Hệ thống so sánh thông tin này với một cơ sở dữ liệu đã lưu trữ về các khuôn mặt để tìm ra một kết quả
khớp chính xác. Nhận dạng khuôn mặt ngày càng được quan tâm trong nhiều lĩnh vực, như Trung Quốc có
hệ thống Skynet để chấm điểm công dân, hay nhiều chuỗi cửa hàng lớn cũng sử dụng nhận dạng khuôn mặt
khách hàng thân thiết để phân tích thói quen tiêu dùng. Trên thực tế, công nghệ nhận dạng khuôn mặt đã
nhận được sự chú ý đáng kể vì nó có tiềm năng cho một loạt các ứng dụng liên quan đến thực thi pháp luật
cũng như các doanh nghiệp khác.
Bài toán nhận dạng khuôn mặt cần xác định hai vấn đề chính: dùng thông tin nào của đối tượng để nhận
dạng và dùng phương pháp nào để huấn luyện cho máy nhận dạng dùng nguồn thông tin đó. Các phương
pháp nhận diện khuôn mặt đã được nghiên cứu như:
Wenyi Zhao, Arvindh Krishnaswamy, Rama Chellappa, Danie L. Swets, John Weng (1998) [1] (Discri-
minant Analysis of Principal Components for Face Recognition) sử dụng phương pháp PCA kết hợp LDA:
Đầu tiên, cần chuyển đổi ảnh khuôn mặt từ không gian ảnh thô sang không gian các không gian khuôn mặt
(Mỗi lớp khuôn mặt được nhận dạng sẽ được mô hình hóa bằng một không gian khuôn mặt) dùng PCA.
Sau đó, sử dụng phương pháp LDA để tạo bộ phân loại tuyến tính có khả năng phân lớp các lớp khuôn mặt.
Oi Bin Sun, Chian Prong Lam và Jian Kang Wu (1998) [2], sử dụng phương pháp tìm vùng hai chân
mày, hai mắt, mũi, miệng và cằm.
196
Trương Huỳnh Đức, Hồ Nguyễn Hoàng Vy, Lê Song Toàn
Guodong Guo, Stan Z.Li, Kap Luk Chan (17 January 2001) [3], dùng phương pháp SVM để nhận dạng
khuôn mặt. Sử dụng chiến lược kết hợp nhiều bộ phân loại nhị phân để xây dựng bộ phân loại SVM đa lớp.
Tổng quan hệ thống điểm danh bằng khuôn mặt.
1.1 Khó khăn của nhận dạng khuôn mặt
Ảnh chụp khuôn mặt có thể thay đổi rất nhiều do các tác động ngoại quan lên ảnh như tư thế góc chụp, sự
che khuất hoặc không rõ nét ở một số chi tiết, các chi tiết thừa hay biểu cảm khuôn mặt lúc chụp.
Tư thế góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc chụp giữa camera và khuôn
mặt. Chẳng hạn như: chụp thẳng, chụp xéo bên trái 45° hay xéo bên phải 45°, chụp từ trên xuống, chụp từ
dưới lên v.v). Với các tư thế khác nhau, các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị
khuất một phần hoặc thậm chí khuất hết.
Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưng như râu mép, râu hàm, mắt
kính, v.v có thể xuất hiện hoặc không. Vấn đề này làm cho bài toán càng khó khăn hơn rất nhiều.
Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt người có thể làm ảnh hưởng đáng kể lên các thông
số của khuôn mặt. Chẳng hạn, cùng một khuôn mặt một người, nhưng có thể sẽ rất khác khi họ cười hoặc
sợ hãi.
Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các khuôn mặt khác.
Hướng của ảnh: Các ảnh của khuôn mặt có thể biến đổi rất nhiều với các góc quay khác nhau của trục
camera. Chẳng hạn chụp với trục máy ảnh nghiêng làm cho khuôn mặt bị nghiêng so với trục của ảnh.
Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng, về tính chất camera
(máy kỹ thuật số, máy hồng ngoại, v.v) ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt.
Nền ảnh phức tạp: Nền của ảnh phức tạp là một trong những khó khăn nhất trong bài toán nhận diện
khuôn mặt người trong ảnh, khuôn mặt người sẽ dễ bị nhầm lẫn với nhiều khung cảnh phức tạp xung quanh
và ảnh hưởng rất nhiều đến quá trình phân tích và rút trích các đặc trưng của khuôn mặt trong ảnh, có thể
dẫn đến không nhận ra khuôn mặt hoặc là nhận nhầm các khung cảnh xung quanh thành khuôn mặt người.
1.2 Các phương pháp nhận dạng
Phương pháp nhận dạng hiện nay có 2 loại:
- Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt (Feature based face recognition).
- Nhận dạng dựa trên xét tổng thể khuôn mặt (Appearance based face recognition).
Ngoài ra còn có một số loại nhận dạng sử dụng mô hình về khuôn mặt như:
- Nhận dạng 2D: Elastic Bunch Graph, Active Appearance Model.
- Nhận dạng 3D: 3D Morphable Model.
Nhận dạng dựa trên các đặc trưng khuôn mặt. Đây là phương pháp nhận dạng khuôn mặt dựa trên việc
xác định các đặc trưng hình học của các chi tiết trên một khuôn mặt (như vị trí, diện tích, hình dạng của
mắt, mũi, miệng, ), và mối quan hệ giữa chúng (như khoảng cách của hai mắt, khoảng cách của hai lông
mày, ).
Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng để nhận biết khuôn mặt. Hơn
nữa với việc xác định đặc tính và các mối quan hệ, phương pháp này có thể cho kết quả tốt trong các trường
hợp ảnh có nhiều nhiễu như bị nghiêng, bị xoay hoặc ánh sáng thay đổi.
Nhược điểm của phương pháp này là cài đặt thuật toán phức tạp do việc xác định mối quan hệ giữa các
đặc tính đòi hỏi các thuật toán phức tạp. Mặt khác, với các ảnh kích thước bé thì các đặc tính sẽ khó phân
biệt do đó khó tính toán được các đặc trưng trên khuôn mặt.
Nhận dạng đựa trên toàn diện khuôn mặt. Phương pháp nhận diện trên toàn diện khuôn mặt có nghĩa sẽ
không đi xét đến từng thành phần đặc trưng trên khuôn mặt nữa mà là xem khuôn mặt là một không gian
cụ thể tìm những đặc trưng, những đặc điểm chính trên không gian đó.
Nội dung chính của hướng tiếp cận này là xem mỗi ảnh có kích thước RxC là một vector trong không
gian RxC chiều. Ta sẽ xây dựng một không gian mới có chiều nhỏ hơn sao cho khi biểu diễn trong không
197
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
gian đó các đặc điểm chính của một khuôn mặt không bị mất đi. Trong không gian đó, các ảnh của cùng
một người sẽ được tập trung lại thành một nhóm gần nhau và cách xa các nhóm khác.
Hai phương pháp thường được sử dụng là trong hướng tiếp cận này là PCA (Principle Components
Analysis) và LDA (Linear Discriminant Analysis).
2 Phương pháp nhận diện khuôn mặt dựa trên đặc trưng HOG
Có rất nhiều phương pháp nhận dạng và phân lớp ảnh khác nhau trong computer vision. Khi phân loại ảnh,
có thể áp dụng họ các mô hình CNN (Inception Net, mobile Net, Resnet, Dense Net, Alexnet, Unet) và
khi phát hiện vật thể là các mô hình YOLO, SSD, Faster RCNN, Fast RCNN, Mask RCNN.
Các mô hình kể trên đều là những mô hình học sâu (Deep Learning). Nhưng trước khi Deep Learning
bùng nổ, thuật toán thường được sử dụng cho xử lí ảnh là HOG (Histogram of Oriented Gradient).
2.1 Giới thiệu về thuật toán HOG
Trong này ta có khái niệm về Gradient, Gradient (độ dốc) là biểu diễn cho tốc độ thay đổi của hàm, chỉ ra
hướng thay đổi mạnh nhất của hàm. Từ một bức ảnh thuật toán này sẽ sẽ lấy ra 2 ma trận quan trọng giúp
lưu thông tin ảnh đó là độ lớn gradient (gradient magnitute) và phương của gradient (gradient orientation).
Bằng cách kết hợp 2 thông tin này vào một biểu đồ phân phối histogram, trong đó độ lớn gradient được
đếm theo các nhóm bins của phương gradient. Cuối cùng thu được véc tơ đặc trưng HOG đại diện cho
histogram. Sơ khai là vậy, trên thực tế thuật toán còn hoạt động phức tạp hơn khi véc tơ HOG sẽ được tính
trên từng vùng cụ bộ như mạng CNN và sau đó là phép chuẩn hóa cụ bộ để đồng nhất độ đo. Cuối cùng
véc tơ HOG tổng hợp từ các véc tơ trên vùng cục bộ.
Có 5 bước cơ bản để xây dựng một vector HOG phát hiện đối tượng cho hình ảnh, bao gồm:
- Tiền xử lý. Bước tiền xử lý sẽ, cắt hình ảnh thành các khối, chuyển kích thước về kích thước chuẩn,
sau đó sử dụng các khối để tính toán đặc trưng ở các bước tiếp theo.
- Tính độ dốc. Để tính toán mô tả HOG, ta tính toán độ dốc trên trục Ox và Oy. Độ dốc được tính bằng
phép nhân chập ảnh gốc với véc tơ hai chiều tương ứng là:
= [−1 0 1] ; = [1 0 − 1]
Đối với hình ảnh màu, độ dốc của ba màu cơ bản (đỏ, xanh lá và xanh da trời) được tính toán. Độ lớn
của dốc tại một điểm ảnh là giá trị lớn nhất của cường độ dốc của ba kênh màu.
- Tính vector đặc trưng cho từng ô (ví dụ 8x8 pixel). Dựa vào độ dốc, trên mỗi ô, tính toán các véc tơ
đặt trưng theo hướng trên từng ô. Trong đó ta chia không gian hướng thành p chiều vector đặt trưng của ô.
Sau đó rời rạc hóa góc hướng nghiêng tại mỗi điểm ảnh vào trong các chiều véc tơ đặc trưng của ô.
- Chuẩn hóa khối (ví dụ 2x2 ô)
Bằng cách tính một ngưỡng cường độ trong một khối và sử dụng giá trị đó để chuẩn hóa tất cả các ô
trong khối, các biểu đồ cục bộ sẽ được chuẩn hóa về độ tương phản để tăng cường khả năng nhận dạng.
Kết quả sau bước chuẩn hóa sẽ là một vector đặc trưng được tính theo tỉ lệ ánh sáng, do đó nó có tính bất
biến cao hơn đối với các thay đổi về điều kiện ánh sáng.
- Tính toán vector HOG
Với một ô, sẽ có một véc tơ có kích thước là 9 x 1. Một khối chứa 2x2 ô, sẽ có một véc tơ có kích thước
là 9 x 1 x 4 = 36 x 1. Tương tự, với ví dụ một khung hình có 7 khối ngang và 15 khối dọc, khi nối toàn bộ
các véc tơ trong khối lại, sẽ thu được một vec tơ HOG với kích thước là 36 x 1 x 7 x 15 = 3780 x 1.
Sau khi hoàn thiện các bước trên, có thể sử dụng véc tơ HOG để tính toán và nhận diện đối tượng.
Phát hiện khuôn mặt bằng đặc trưng HOG: Để xác định khuôn mặt có trong bức ảnh từ webcam, phương
pháp chúng tôi sử dụng HOG. Để tìm khuôn mặt, bắt đầu bằng chuyển ảnh sang đen trắng, dựa trên sự
chênh lệch độ sáng giữa các điểm ảnh lân cận với nhau, có thể tìm ra hướng mà bức ảnh tối dần. Tách bức
ảnh thành chuỗi vùng nhỏ 16x16 pixels. Ở mỗi ô vuông, đếm các sự thay đổi hướng của ánh sáng, và tìm
ra hướng thay đổi ánh sáng chủ đạo đại diện cho cả nhóm.
Sau đó sử dụng bộ lọc Gabor: Bộ lọc Gabor phân tích các thay đổi về ánh sáng và kết cấu để phân tích
hình ảnh: thay đổi cạnh và kết cấu trong một hình ảnh làm nổi bật các đặc tính của bức ảnh. Điều này giúp
198
Trương Huỳnh Đức, Hồ Nguyễn Hoàng Vy, Lê Song Toàn
loại bỏ chi tiết không mong muốn, do đó các chi tiết mà thực sự mong muốn như các đường viền của môi,
mắt, lông mày và vị trí của chúng trong bức ảnh sẽ rõ ràng hơn. Bộ lọc Gabor được sử dụng để phóng đại
hướng của hình ảnh khuôn mặt, các cạnh được phóng đại và sắc nét hơn, các đặc điểm khuôn mặt trở nên
rõ ràng và đơn giản hơn so với hình ảnh gốc, do đó nó tăng cường độ chính xác cho HOG
Kết quả cuối cùng, chuyển ảnh nguyên gốc sáng sang tập hợp hướng sáng đại diện, thể hiện cấu trúc đơn
giản của khuôn mặt.
2.2 Quá trình nhận diện khuôn mặt theo đặc trưng HOG
Có nhiều phương pháp trong đó các hệ thống nhận dạng khuôn mặt hoạt động, nhưng nói chung, chúng
hoạt động bằng cách so sánh các đặc điểm khuôn mặt được chọn từ hình ảnh đã cho với khuôn mặt trong
cơ sở dữ liệu. Nó cũng được mô tả như một ứng dụng dựa trên trí tuệ nhân tạo sinh trắc học có thể nhận
dạng duy nhất một người bằng cách phân tích các mẫu dựa trên kết cấu và hình dạng khuôn mặt của người
đó.
Nhận diện vị trí khuôn mặt bằng thuật toán HOG. Trước hết, để có thể phân tích khuôn mặt và nhận
diện, cần phải xác định vị trí khuôn mặt trước khi nhận diện chúng. Sau khi xác định được khuôn mặt thì
tách khuôn mặt ra khỏi bức ảnh đã cho. Bắt đầu bằng chuyển ảnh sang đen trắng, bởi không cần màu ảnh
trong nhận diện khuôn mặt. Sau đó, nhìn vào từng pixel trong bức ảnh qua đótìm ra sự thay đổi ánh sắng
giữa điểm ảnh và những điểm ảnh xung quanh, và tìm ra hướng mà bức ảnh tối dần. Lặp lại quá trình đó
cho mỗi điểm ảnh sẽ được thay thế bằng mội mũi tên. Những mũi tên này được gọi là gradients (độ dốc)
và chúng chỉ hướng dòng ánh sáng từ sáng sang tối trên toàn bộ bức ảnh. Tách bức ảnh thành chuỗi vùng
nhỏ 16x16 pixels, kết quả thu được giống như ở Hình 1 bên trái. Ở mỗi ô vuông, đếm các sự thay đổi hướng
của ánh sáng, và tìm ra hướng thay đổi ánh sáng chủ đạo đại diện cho cả nhóm.
Hình 1. Tách bức ảnh thành chuỗi vùng nhỏ 16x16 và cấu trúc đặc trưng của khuôn mặt
Kết quả cuối cùng, chuyển ảnh nguyên gốc sáng sang tập hợp hướng sáng đại diện, thể hiện cấu trúc đơn
giản của khuôn mặt. Hình 1 bên phải dưới đây là mô tả cấu trúc khuôn mặt dựa vào đặc trưng HOG.
Để tìm ra khuôn mặt trong hình ảnh HOG, cần tìm phần ảnh có cấu trúc giống nhất với cấu trúc HOG
được trích lọc từ trong quá trình đào tạo. Sử dụng kỹ thuật này, có thể dễ dàng tìm khuôn mặt ở bất cứ ảnh
nào.
Chuẩn hóa vị trí khuôn mặt. Vì khuôn mặt sẽ có nhiều góc chụp khác nhau nên việc nhận dạng khuôn
mặt là một vấn đề lớn. Để giải quyết vấn đề này, cố gắng biến đổi bức ảnh sao cho mắt và môi luôn luôn ở
cùng một vị trí đối với ảnh. Điều này cũng khiến việc so sánh khuôn mặt ở bước kế tiếp dễ hơn.
Dùng thuật toán Face Landmark Estimation (ước lượng cột mốc trên mặt). Để xác định facial landmark,
sẽ phải xác định được những điểm chính trong bức ảnh tạo nên hình dạng khuôn mặt người. Mục đích ở
đây để đưa ra 68 điểm cụ thể như ở Hình 2 (gọi là cột mốc - như trong châm cứu) tồn tại trên mỗi khuôn
mặt - đỉnh cằm, cạnh ngoài của mỗi mắt, cạnh trong cuả mỗi lông mày... Điều này sẽ được thực hiện bằng
cách huấn luyện một thuật toán học máy.
Hình 2. Xác định 68 điểm mốc trên bức ảnh
199
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
Sau khi mắt và môi đã được xác định, cố gắng quay, phóng to, thu nhỏ hay cắt ảnh để mắt và môi nằm
chính giữa nhất có thể, không cần biến đổi 3D bởi có thể khiến ảnh bị méo. Chỉ sử dụng biến đổi đơn giản
như quay, phóng để duy trì các đường thằng song song, phương pháp này trong đồ hoạ được gọi là biến đổi
affine. Dù quay mặt theo hướng nào, cũng có thể chuyển mắt môi về trung tâm.
Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng để nhận biết khuôn mặt. Hơn
nữa với việc xác định đặc tính và các mối quan hệ, phương pháp này có thể cho kết quả tốt trong các trường
hợp ảnh có nhiều nhiễu như bị nghiêng, bị xoay hoặc ánh sáng thay đổi, cũng như khối lượng tính toán
không quá lớn.
Mã hóa khuôn mặt. Mục tiêu của bước này là truyền khuôn mặt đã tìm được vào một mạng nơron để tách
lọc ra 128 đo lường. Trực tiếp so sánh khuôn mặt tìm được ở bước 2 với ảnh có trong bộ dữ liệu. Khi tìm
được một bức ảnh gần giống, ta tìm được tên người trong ảnh.
Sử dụng Deep Convolutional Neural Network - mạng nơron tích chập đa lớp. Nhưng thay vì đào tạo
mạng nơron để nhận diện ảnh, đào tạo nó để tìm ra 128 đo lường cho mỗi khuôn mặt. Quá trình đào tạo
được mô tả ở hình 4 thực hiện bằng cách để máy tính nhìn 3 bức ảnh cùng 1 thời điểm: 2 ảnh (#1, #2) của
cùng 1 người, và 1 ảnh của người khác (#3). Sau đó, thuật toán sẽ khởi tạo ngẫu nhiên 128 giá trị đo lường.
Sau đó nó sẽ thay đổi các trọng số này từ từ để giá trị tìm ra từ ảnh #1 và #2 ngày càng giống nhau, và giá
trị từ ảnh #2 ngày càng khác #3.
Sau khi lặp lại quá trình này hàng triệu lần với hàng triệu bức ảnh của hàng ngàn người khác nhau, mạng
nơron học được cách tạo ra 128 đo lường cho mỗi người. Bất kể ảnh khác nhau nào của 1 người sẽ cho kết
quả gần giống nhau.
Hình. 3. Đo lường khuôn mặt
Bộ 128 đo lường này được gọi là embedding (gắn mã). Ý tưởng giảm chiều dữ liệu thô sang đại diện đo
lường tạo ra từ máy tính xuất hiện rất nhiều trong học máy (đặc biệt là trong dịch thuật). Quá trình đào
tạo Convolutional Neural Network (CNN - mạng nơron tích chập) để sinh mã khuôn mặt yêu cầu rất nhiều
dữ liệu và sức mạnh tính toán. Việc cần làm là truyền hình ảnh khuôn mặt vào mạng đã được đào tạo đó để
lấy ra 128 đo lường cho mỗi khuôn mặt. Tuy nhiên để giải quyết đề này, có thể sử dụng thư viện OpenFace
được pre-train model từ trước để giảm bớt thời gian tính toán. Phương pháp này còn được gọi là Triplet
Loss.
Huấn luyện mô hình dựa trên các đặc trưng mã hoá với thuật toán KNN. Thuật toán K láng giềng gần
nhất trong tiếng Anh là K-Nearest Neighbor, viết tắt là KNN.Thuật toán K láng giềng gần nhất là một kĩ
thuật học có giám sát (supervised learning) dùng để phân loại quan sát mới bằng cách tìm điểm tương đồng
giữa quan sát mới này với dữ liệu sẵn có.
KNN là một mô hình đơn giản và trực quan nhưng vẫn có hiệu quả cao vì nó không tham số; mô hình
không đưa ra giả định nào về việc phân phối dữ liệu. Hơn nữa, nó có thể được sử dụng trực tiếp để phân
loại đa lớp. Thuật toán KNN có nhiều ứng dụng trong ngành đầu tư, bao gồm dự đoán phá sản, dự đoán giá
cổ phiếu, phân bổ xếp hạng tín dụng trái phiếu doanh nghiệp, tạo ra chỉ số vốn và trái phiếu tùy chỉnh.
Trong bài toán này, mỗi cá nhân sẽ có một thư mục riêng với số lượng ảnh nhất định, mỗi ảnh sẽ cho ra
128 đặc trưng, và tất cả sẽ được đưa vào một bộ dữ liệu với label của họ cuối cùng bộ dữ liệu này sẽ được
sử dụng để huấn luyện KNN model.
200
Trương Huỳnh Đức, Hồ Nguyễn Hoàng Vy, Lê Song Toàn
3 Triển khai ứng dụng và đánh giá
3.1 Các tiêu chuẩn đánh giá thực nghiệm
Các phương pháp đánh giá được sử dụng trong bài này bao gồm accuaracy score cho việc so sánh độ hiệu
quả của các thuật toán machine learning khi training, distance threshold khi kiểm tra ảnh đầu vào với KNN
và accuracy, val acurracy, loss, val loss khi thử nghiệm trên mô hình CNN.
Accuracy score: Cách đánh giá này đơn giản tính tỉ lệ giữa số điểm được dự đoán đúng và tổng số điểm
trong tập dữ liệu kiểm thử. Ví dụ có 6 điểm dữ liệu được dự đoán đúng trên tổng số 10 điểm. Vậy kết luận
độ chính xác của mô hình là 0.6 (hay 60%).
Distance threshold: Chỉ số khoảng cách cho phép khi nhận dạng. Nếu khoảng cách dưới một chỉ số này
(càng nhỏ, hệ thống nhận dạng khuôn mặt càng nghiêm ngặt) thì trả về True, biểu thị các khuôn mặt khớp.
Mặt khác, nếu khoảng cách vượt quá ngưỡng dung sai, trả về False vì các mặt không khớp.
3.2 Dữ liệu thử nghiệm
Dữ liệu thu thập được từ 9 sinh viên được sử dụng để thử nghiệm trong báo cáo này. Nguồn ảnh được thu
thập từ webcam, hoặc hình ảnh chứa khuôn mặt được sinh viên cung cấp. Số lượng và phân bố được thể
hiện ở Hình 4.
Hình 4. Số lượng và phân chia label ảnh thử nghiệm được cung cấp
Dữ liệu này yêu cầu mỗi ảnh phải rõ khuôn mặt, có thể bao gồm các định dạng JPEG, JPG, PNG và mỗi
ảnh chỉ chứa duy nhất ảnh của sinh viên đó. Hệ thống cho phép upload ảnh từ web hoặc chụp lại tự động
bằng cách bật webcam khi kết nối trên website.
3.3 Thiết lập thực nghiệm
Theo như biểu đồ Hình 5 ta thấy được số lượng các đặc trưng theo giá trị, ở đây sử dụng trục hoành theo
log để dễ quan sát, với những nét càng đậm nghĩa là tại đó những giá trị mã hóa khuôn mặt tập trung càng
nhiều. Mỗi cá nhân trên biểu đồ có độ đậm nhạt khác nhau tại mỗi điểm do đó các đặc trưng phân bố của
họ cũng khác nhau.
Hình 5. Biểu đồ phân bổ các đặc trưng theo từng cá nhân
Cũng như theo biểu đồ Hình 5 ta thấy rằng giá trị mã hóa thường nằm ở đoạn 10-2 đến dưới 1 (0.01 đến
1). Hình 6 bên trái là ví dụ về sự phân lớp đặc trưng khuôn mặt của 2 sinh viên, ta thấy được 2 lớp màu đỏ
ứng với các đặc trưng của sinh viên mã 002 và màu xanh ứng với sinh viên 029, mỗi 128 đặc trưng sẽ được
lấy 2 đặc trưng làm mô tả chính ở trục x và y theo thư viện PCA. Như hình, sự phân bố của 2 sinh viên nằm
cách nhau rất xa, vậy nên khả năng dự đoán của 2 sinh viên này sẽ đạt hiệu suất khá cao, tuy nhiên vẫn sẽ
201
KỶ YẾU HỘI THẢO KHOA HỌC QUỐC GIA CITA 2020 “CNTT VÀ ỨNG DỤNG TRONG CÁC LĨNH VỰC”
có điểm làm nhiễu nằm gần đoạn phân bổ của sinh viên mã 002 nhưng chỉ 1 điểm không ảnh hưởng nhiều
điều này là không thể tránh khỏi.
Tương tự bên phải Hình 6 mô tả sự phân bố đặc trưng khuôn mặt của cả 9 sinh viên, đa phần ở cách khá
xa nhau, mặc dù một số trường hợp gần nhau, nhưng với thuật toán sử dụng là KNN, thuật toán này còn
xét số lượng điểm lân cận nên accuracy vẫn đạt trên 99%. Điều kiện này đối với bài toán đề ra là chấp nhận
được.
Hình 6. Biểu đồ phân lớp của 2 sinh viên 002 và 029 (trái) và cả 9 sinh viên (phải)
Áp dụng phương pháp sử dụng thuật toán HOG để nhận dạng khuôn mặt và mô hình mạng CNN để mã
hóa khuôn mặt trên tổng số 3308 ảnh của 9 sinh viên, trên GPU NVIDIA Gerforce 940MX và CPU Intel
Core I3-7100U thì thời gian chạy mất 1h đồng hồ với kết quả:
Bảng 1. Accuracy thu được khi đánh giá dữ liệu
Thuật toán phân lớp Accuracy Score (%)
SVC 39.58
Random Forest 98.69
Gausian Native Bayes 99.79
KNN 99.79
CNN
99.12 (val acurracy),
99.8 (accuracy)
Như vậy theo bảng trên ta thấy được Model dựa KNN model có hiệu quả khá cao, do đó trong ứng dụng
này, KNN sẽ được sử dụng để huấn luyện mô hình.
Triển khai vào thực tế, với ngôn ngữ sử dụng là Python và framework Flask, một web framework, nó
thuộc loại micro-framework được xây dựng bằng ngôn ngữ lập trình Python. Flask cho phép xây dựng các
ứng dụng web từ đơn giản tới phức tạp.
Một vài kết quả chạy thử nghiệm, Hình 7 bên trái hiển thị kết quả chạy nhận diện bằng webcam, độ
chính xác là 90.12. Độ chính xác này được tính bằng khoảng cách Vector từ điểm nhận dạng đến các điểm
trong mô hình đã được huấn luyện, khuôn mặt được nhận diện bằng thuật toán KNN, thuật toán so sánh
các điểm lân cận gần với nó để xác định. Hình 7 bên phải là kết quả trang web hiển thị ảnh của cá nhân
xuất hiện trong ảnh được thuật toán phát hiện và lọc ra.
Hình 7. Kết quả nhận diện từ webcam và giao diện hiển thị ảnh cá nhân trên nền web
202
Trương Huỳnh Đức, Hồ Nguyễn Hoàng Vy, Lê Song Toàn
Tài liệu tham khảo
1. W. Zhao, R. Chellappa, P. Phillips, and A. Rosenfeld.: Face recognition: A literature survey. ACM Computing
Surveys Vol.35(4):399-458, 2003
2. Oi Bin Sun, Chian Prong Lam và Jian Kang Wu (1998)
3. Guodong Guo, Stan Z.Li, Kap Luk Chan (17 January 2001), Revue technique-Thomson-CSF, 1993 Local Binary
Patterns with Python & OpenCV – 2015 by Adrian Rosebrock
4. P. Viola and M. Jones.: Robust Real-time Object Detection. International Journal of Computer Vision, 2001
5. P. Belhumeur, J. Hespanha and D. Kriegman.: Eigenfaces vs. Fisherfaces: Recognition using class specific linear
projection. IEEE Transactions On Pattern Analysis And Machine Intelligence Vol.19(7):711-720, 1996
6. Y. LeCun and Y. Bengio.: Convolutional networks for images, speech, and time series. The handbook of brain
theory and neural networks 3361 (10), 1995
7. M. Turk and A. Pentland.: Face recognition using eigenfaces. Proceedings of the Conference on Computer Vision
and Pattern Recognition, 1991
8. R. Lienhart and J. Maydt.: An Extended Set of Haar-like Features for Rapid Object Detection. Proceedings of
International Conference on Image Processing, 2002, pp. 900-903
9. Y. Freund and R. Schapire.: A decision-theoretic generalization of on-line learning and an application to boosting.
Proceedings of the Second European Conference on Computational Learning Theory. 1995, pp. 23-37
203
Các file đính kèm theo tài liệu này:
- xay_dung_he_thong_quan_ly_anh_va_check_in_su_kien_bang_nhan.pdf