Hình 4.14 Loss và accuracy khi evaluate tập dữ liệu ValidationHình 4.15 Lượng tham số của mô hình MobileNetV2 với input size 96x96 Hình 4.16 Lượng tham số của mô hình MobileNetV3 với inp
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGUYÊN THÀNH NHÂN
PHẠM TÂN NHẬT
KHÓA LUẬN TÓT NGHIỆP UNG DỤNG NHAN DẠNG KHUÔN MAT VÀO DONG
MỞ CỬA TỰ ĐỘNG CHO NHÀ THÔNG MINH
FACE RECOGNITION AND ITS APPLICATION IN
AUTOMATIC DOOR FOR SMARTHOME
KY SU NGANH KY THUAT MAY TÍNH
TP HO CHÍ MINH - NĂM 2022
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGUYÊN THÀNH NHÂN - 18521178
PHẠM TÂN NHẬT - 18521197
KHÓA LUẬN TÓT NGHIỆP
UNG DỤNG NHẬN DẠNG KHUÔN MAT VÀO DONG
MỞ CỬA TỰ ĐỘNG CHO NHÀ THÔNG MINH
FACE RECOGNITION AND ITS APPLICATION IN
AUTOMATIC DOOR FOR SMARTHOME
KỸ SU NGANH KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
TS PHAM QUOC HUNG
Trang 3THÔNG TIN HỘI ĐÒNG CHÁM KHÓA LUẬN TÓT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số 526/QD-DHCNTT
ngày 19 tháng 07 năm 2022 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4Lời cảm ơn
Lời đầu tiên, xin gửi lời cảm ơn tới TS Phạm Quốc Hùng đã hướng dẫn tận tình
để chúng tôi có được định hướng tốt nhất, xác định được đúng đề tài, mục tiêu, quy trình
cần thiết dé xây dựng và hoàn thiện khoá luận này Bên cạnh đó, thay còn giúp chúng tôichỉnh sửa cũng như bổ sung những thiếu sót trong quá trình thực hiện
Xin được cảm ơn quý thầy cô cũng như Trường Đại học Công nghệ thông tin đãtạo điều kiện về cơ sở vật chất, hệ thống thư viện, tài liệu cũng như kiến thức cho chúng
tôi trong quá trình tìm biểu và làm khoá luận Cảm ơn hội đồng chấm khoá luận đã đưa
ra nhiều góp ý dé giúp hoàn thiện dé tai
Cảm ơn gia đình, người thân đã tạo động lực, điều kiện để chúng tôi có thể hoàntoàn tập trung và nỗ lực Cảm ơn bạn bè đã giúp đỡ, hỗ trợ chúng tôi trong quá trình thực
hiện khoá luận này.
Trang 53.1 Phát hiện khuôn mặt (Face detection)
3.1.1 Tổng quan về Haar Cascade
3.1.2 Haar-like feature
3.1.3 Ảnh tích phân (Integral image) -22+++2222E+v++++tttEEEExvrrrtttrrrkkrrrrrrrrrkk 12
3.1.4 Thuật toán Adaboos( 525222 2t2xtrttrterxerrerrrrirrrrrrrrrrrirrerrrer 14
3.2 Tiền xử lý anh (Preprocessing Image) cccccce+ccccvssccrrerrrrsssercerrrr., TỔ
3.2.1 Landmark detection
3.2.2 Điều chỉnh hướng của khuôn mặt
3.3 Principal Components Analysis
3.3.1 Mô tả phương phương thức thực hiện của PCA - : ‹:-5:©5+55+>+ 2 3.4 Mô hình máy học dé phân loại (Suport Vector Machine) - c cccsscc+ 24
3.5 Huấn luyện mô hình máy học -¿-¿ ¿c5 S5 SE‡eekeeekeeeteeetrseerererrerrree 20
4.1 Két ốc cố mm ẽ.ẽ 47 4.1.1 Thuật toán phát hiện khuôn mặt ¿- + +2 +5++x+v£x+xererxrrerxrxerrrxer 4.1.2 Tiền xử lý ảnh và thu thập Dataset
4.1.3 Nhận dạng khuôn mặt
4.1.4 Cải thiện độ chính xác nhi
Trang 64.1.5 — Thiết kế giao điện :22222222 2222222111222 c1 68
4.1.6 Mô hình cửa tự động cs St kg 82
4.17 Công suất tiêu thụ
4.2 _ Ưu điểm — Nhược điểm của khoá luận 2 s¿++2+++£EE+tEE+etEExevrxkesrrrrrrke 87 4.2.1 UU Gin iecceccseeeessccsssssssesecccesssnnesseccesssnnnseeeccsssnmnseeecessstseeecessnnseeeeeesssnseecessneee 87 4.2.2 Nhược điểm -2222cc 2222222122222 c1 87
63 Về để tài cửa tự động ứng dụng nhận dạng khuôn mặt -. -‹ - OS w108i1089:71/0‹4 G0777 97
Trang 7DANH MỤC HÌNH
Hình 3.1 Năm loại đặc trưng Haar điển hình
Hình 3.2: Ví dụ về cách tính toán một đặc trưng Haar.
Hình 3.3: Đặc trưng đường được dùng dé phát triển con ngươi.
Hình 3.4 Ví dụ về cách tính giá trị của một pixel trong ảnh tích phân
Hình 3.5 Mô tả trực quan về cách hoạt động của thuật toán Adaboost
Hình 3.6 Thuật toán Adaboost trong trường hop dung dé phát hiện khuôn mặt
Hình 3.7: Một ví dụ khi phát hiện khuôn mặt băng phương pháp Haar Cascade.
Hình 3.8 Mô tả 68 điểm của Dlib's face landmark detector [7]
Hình 3.9 Kết qua sau khi áp dụng Dlib Face landmark detector
Hình 3.10 Ví dụ cho ảnh gốc, sau khi xoay 15 độ kim đồng hồ
Hình 3.11 Ví dụ về một bức ảnh landmark có góc mặt bị nghiêng.
Hình 3.12 Minh họa toàn bộ các bước tiền xử lý hình ảnh.
Hình 3.13 Mô phỏng các bước thực hiện PCA
Hình 3.14 Hình (a) biểu diễn dữ liệu có margin nhỏ hơn (b)
Hình 3.15 Dữ liệu khuôn mặt xét trong không gian 2 chiều
Hình 3.16 Các bước của quá trình Hyperparameter cho mô hình SVM
Hình 3.17 Sơ đồ liên kết của các Thread
Hình 3.18 Ví dụ việc hệ thống bỏ qua ảnh khi quá trình dự đoán vẫn chưa hoàn thành
Hình 3.19 Thread 3 xử lý dữ liệu dau vào liên tục mà không phải đợi một cách tuần tự
Hình 3.20 Sơ đồ khối phần cứng của hệ thông
Hình 3.21 Sơ do kêt nôi cua module L298N
Hình 3.22 Cầu tạo cơ bản của một IR Sensor
Hình 3.23 Schematic của một mạch chia áp đơn giản
Hình 3.24 Mặt trước mô hình với IR Sensor được đánh dấu "1"
Hình 3.25 Mặt sau của mô hình
Hình 3.26 Lưu đồ giải thuật quá trình hoạt động của hệ thống với các IR Sensor
Hình 3.27 Nguyên lý hoạt động của công tắc hành trình
Hình 3.28 Sơ đồ khi kết nôi module L298N với 2 công tắc hành trình và động cơ
Hình 3.29 Sơ đồ kết nối phần cứng và phần mềm
Hình 3.30 Quá trình training và nhúng mô hình vào máy tính nhúng.
Hình 3.31 Quá trình Three-way Handshake
Hình 4.1 Quá trình trích xuất hình ảnh khuôn mặt khi sử dụng Haar cascade.
Hình 4.2 Các bước tiền xử lý hình ảnh
Hình 4.3 Hai đối tượng trong dataset đã được xử lý để đúng với yêu cầu đặt ra.
Hình 4.4 Mã chương trình thực thi Tuning Hyperparameter
Hình 4.5 Kết quả cặp tham số C, gamma tốt nhất đối với kernel linear
Hình 4.6 FPS hệ thống đạt được khi áp dụng Multi-Threading
Hình 4.7 FPS hệ thống đạt được khi chưa áp dụng Multi-Threading
Hình 4.8 Mức tiêu thụ CPU của hệ thống khi chưa áp dụng Multi-Threading
Hình 4.9 Mức tiêu thụ CPU của hệ thông khi đã áp dụng Multi-Threading
Hình 4.10 Ví dụ về lượng phép toán tích chập của một mạng CNN tiêu chuẩn [10]
Hình 4.11 Ví dụ về lượng phép toán tích chập của MobileNet [10]
Hình 4.12 Sự khác biệt giữa MobileNet và MobileNetV2
Hình 4.13 Khai báo model MobileNetV2, không train lại pre-trained model
lì is 12 13 15
15
17
17 19 19 20 21 23 25 27 28 32 33
33 34
35 36
37 38
38 39 40 4I 42 45 45 47 49 50
51 52
54 54
55 55
57 58
59 60
Trang 8Hình 4.14 Loss và accuracy khi evaluate tập dữ liệu Validation
Hình 4.15 Lượng tham số của mô hình MobileNetV2 với input size 96x96
Hình 4.16 Lượng tham số của mô hình MobileNetV3 với input size 224x224
Hình 4.17 Evaluate tập dữ liệu Training và Validating trên MobileNetV2
Hình 4.18 Evaluate tập dit liệu Training va Validating trên MobileNetV3
Hình 4.19 Xác thực admin dé truy cập ứng dung
Hình 4.20 Giao diện lựa chọn mô hình máy học
Hình 4.21 Các tính năng chính của ứng dụng
Hình 4.22 Giao diện của chức năng cửa tự động khi đang bật chế độ tự động
Hình 4.23 Giao diện của chức năng cửa tự động khi đã tắt chế độ tự động
Hình 4.24 Giao diện nhận dạng khuôn mặt của chế độ tự động
Hình 4.25 Giao diện đổi mật khâu bao mật.
Hình 4.26 Một ví dụ cho tính năng Verification Testing
Hình 4.27 Gợi ý người dùng thêm mới dữ liệu và database cho lần training kế tiếp.
Hình 4.28 Các chức năng con của tính năng quản lý dữ liệu khuôn mặt
Hình 4.29 Anh GIF về quá trình tương tác di liệu giữa Raspbery Pi và Laptop
Hình 4.30 Ảnh tĩnh về giao điện huấn luyện mô hình máy học
Hình 4.31 Anh GIF về quá trình thu thập dữ liệu cho người dùng mới
Hình 4.32 Ảnh tĩnh về giao diện thu thập dữ liệu cho người dùng mới
Hình 4.33 Ảnh tĩnh cho kết quả cuối cùng của việc thu thập mẫu cho người mới
Hình 4.34 Giao diện xoá người dùng ra danh sách được phép vào nhà.
Hình 4.35 Tổng quan về cách bó trí của mô hình.
Hình 4.36 Điện năng tiêu thụ bình thường của Raspberry Pi + Camera
Hình 4.37 Điện năng tiêu thụ đỉnh của Raspberry Pi + Camera
Hình 4.38 Điện năng tiêu thụ bình thường của các linh kiện khác
Hình 4.39 Điện năng tiêu thụ đỉnh các linh kiện khác
Hình 4.40 Một vài trường hợp phát hiện khuôn mặt sai của Haar Cascade
61
62
62 63
68
69 70 71 72 73 74 75 76 T7 78 78 79 80 80 81
82
83 84 85 85 88
Trang 9DANH MỤC BANG
Bảng 3.1 Một số đặc trưng trên khuôn mặt mà Dlib face detector có thể phát hiện được
Bảng 3.2 Một vài kernel funtion và các bộ phân loại mà chúng được định nghĩa
Bảng 3.3 Bang mô tả input va output của L298N
Bảng 3.4 Thời gian training trên các thiết bị
Bang 4.1 Bảng két qua qué trinh trich xuất ảnh từ video.
Bảng 4.2 Các thông sô trung bình của quá trình Hyperparameter trên tập dữ liệu Test
Bảng 4.3 Kết quả chỉ tiết của 31 đối tượng với các kernel riêng biệt trên tập validation Bảng 4.4 Kết quả chỉ tiết của các đối tượng khi triển khai trên MobileNetV2
Bảng 4.5 Kết quả chi tiết của các đối tượng khi triển khai trên MobileNetV3
Bang 5.1 So sánh một số đề tài đã thực hiện
Trang 10DANH MỤC TU VIET TAT
RFID Radio Frequency Identification
GPU Graphics Processing Unit
SVM Support Vector Machine
PCA Principal Components Analysis
CNN Convolutional Neural Network
HOG Histogram of oriented gradients
Faster R-CNN
Network OpenCV Open Source Computer Vision Library
FPS Frames Per Second
Al Artificial Intelligence
Gaussian RBF Gaussian radial basis function
VCC Voltage Common Collector
GND Ground
Ww Watt
A Ampe
V Voltage
CPU Central Processing Unit
USB Universal Serial Bus
RAM Random-access memory
Faster Region-based Convolutional Neural
Trang 11CUDA Compute Unified Device Architecture loTs Internet of Things
FTP File Transfer Protocol
SYN Synchronize
SYN-ACK Synchronize - Acknowledgement
SYN-Req Synchronize — Requirement
Trang 12TÓM TAT ĐÈ TÀI
Hiện nay trong kỷ nguyên của công nghệ - kỹ thuật, chúng ta luôn gặp phải những rắc
rồi, bat cập xung quanh van dé bảo mật Đề giải quyết vấn dé này, các giải pháp bảo mật
liên tục được cải thiện, cập nhật Liên hệ với đề tài này, cửa ra vào là một đồ vật cực kỳquen thuộc và không thể thiếu đối với mọi ngôi nhà Từ trước đến nay, luôn có rất nhiều
cách cho việc đóng mở cửa, từ những cách truyền thống như thanh gạt từ thời xưa chođến những 6 khóa sử dung chìa, rồi hiện đại hơn với RFID, mật khẩu hay pattern Cho
đến hiện nay, các công nghệ mở khóa cửa bằng các biện pháp bảo mật sinh trắc học trởnên nỗi bật và ngày càng được biết đến rộng rãi Bởi sở dĩ, sinh trắc học mang đến một
giải pháp bảo mật với tốc độ cao và đáp ứng sự tiện lợi đối với nhu cầu của người dùng
hiện nay do không đòi hỏi nhiều thao tác, công cụ đề có thể mở khoá Tuy nhiên, vấn đề
về độ an toàn của các phương pháp bảo mật, nhất là bảo mật sinh trắc khuôn mặt vẫn
đang tồn đọng nhiều vấn đề xung quanh khả năng nhận dạng của nó Trong đề tài này,
nhóm sinh viên áp dụng mô hình nhận dạng khuôn mặt lên một hệ thống cửa lùa có tíchhợp khả năng đóng/mở tự động Đề tài hướng đến việc xây dựng mô hình có chỉ phí thấptuy nhiên vẫn đảm bảo được độ chính xác cũng như tốc độ phản hồi nhanh Với việc
những mô hình cửa tự động và 6 khoá có tích hợp nhận dang khuôn mặt đã và đang phát
triển mạnh mẽ thì giảm chỉ phí cho mô hình giúp tăng giá trị cạnh tranh, đồng thời tiếpcận tới đa dạng đối tượng người dùng hơn Do đó, việc lựa chọn phần cứng cũng như
phương pháp học máy là bước quan trọng hàng đầu Raspberry PI 4 là một máy tính
nhúng với kích thước nhỏ gọn, được tích hợp GPU nên thích hợp cho việc huấn luyện
các mô hình học máy (Machine Learning) và xử lý quá trình đóng/mở cửa Việc nhận
diện khuôn mặt bao gồm hai quá trình là phát hiện khuôn mặt và nhận dạng khuôn mặt
Nhóm sử dụng phương pháp Haar-cascade cho việc phát hiện khuôn mặt, phương pháp
nay sử dụng các đặc trưng phát hiện được dé xuất bởi Viola và Jones SVM va PCA làhai phương pháp được sử dụng cho nhận dạng khuôn mặt Đặt trong trường hợp triển
Trang 13khai mô hình trên một hệ thống nhúng có cấu hình hạn chế, hơn nữa đây còn là xử lý
ảnh thì việc giảm chiều dữ liệu nhưng vẫn giữ lại được những chỉ tiết chính sẽ tăng tốc
độ xử lý Sau khi đã giảm được chiều dữ liệu thì việc còn lại là sử dụng một bộ phân loạiđơn giản, không áp dụng học sâu đề nhận dang khuôn mặt, ở đây nhóm sinh viên sẽ dùng
một phương pháp phổ biến là Support Vector Machine bởi vì mô hình này không sửdụng tài nguyên nhiều như các bộ phân loại học sâu, đây là yếu tố then chốt dé lựa chọn
khi mà Raspberry Pi là một loại máy tính nhúng có cấu hình hạn chế, việc chạy một môhình ma có quá nhiều thông số như MT-CNN, ANN, FaceNet, EfficientNet, DeepFace
mà không áp dụng nhiều phương pháp hợp ly dé giảm độ nặng của mô hình sẽ làm tăng
tốc độ phản hồi hoặc thậm chí gây giật, lag Việc nhận diện khuôn mặt là quá trình baogồm việc máy ảnh chụp lại hình ảnh, sau đó hình ảnh sẽ được tiền xử lý (GrayScale, lọc
chỉ tiết khuôn mặt, cân bằng lại góc nhìn) đề cải thiện chất lượng ảnh cũng như để phùhợp với quá trình xử lý sau đó, tiếp theo, ảnh sẽ được kiểm tra dé xác định có hay không
huôn mặt người trong đó, nếu có, ảnh sẽ được so sánh với những khuôn mặt mà hệthống đã được học từ trước đề xác thực rằng người đứng trước cửa có phải thành viên
hợp lệ hay không Dựa vào kết quả của quá trình nhận diện khuôn mặt, máy tính nhúng
sẽ điều khiển động cơ dé mở khóa cửa hay không Tại trường Dai học Công nghệ thôngtin, Đại học quốc gia Thành phó Hồ Chí Minh đã có nhiều nghiên cứu liên quan đến mô
hình cửa tự động và nhận dạng khuôn mặt Tham khảo hai để tài là “Hệ thống xác thực
mở khoá cửa tự động bằng khuôn mặt sử dụng Board Intel Galileo” (Vũ Bá Tấn Đạt,
Nguyễn Ngọc Lâm — 2016) và “Hệ thống nhúng định danh qua nhận dạng khuôn mặt”(Nguyễn Tan Phat, La Tuấn Vinh - 2021) Đề tài đầu tiên sử dung board Intel Galileo và
có khả năng nhận dạng nhiều khuôn mặt, tuy nhiên tốc độ xử lý có thé lên đến 5 giây, vàtrong đề tài thứ hai nghiên cứu ứng dụng mô hình DeepLearning lên KIT Jatson Nano
và đạt FPS ở khoảng 6-9FPS Độ chính xác của cả hai đề tài đều đạt trên 80% tuy nhiên
chưa chú trọng vào việc cải thiện tốc độ phản hồi của mô hình
Trang 14Chương 1 MỞ ĐẦU
1.1 Lí do chọn đề tài
Hiện nay, công nghệ và kỹ thuật đang phát triển cực kỳ mạnh mẽ và dần khẳng địnhđược độ ảnh hưởng cũng như quan trọng của nó đối với cuộc sống của con người Chúng
ta hoàn toàn có thể nhận ra điều nảy thông qua những tin tức, thời sự, báo chí, Một
phần của sự phát triển đó là động lực thúc day đến từ nhu cầu luôn muốn hiện đại hoá,công nghệ hoá dé cải thiện chất lượng cuộc sống của người dùng Những nhà nghiên
cứu, phát triển thì luôn muốn đem đến những sản phẩm, công trình mang tính thực tế,hữu ích Sự bùng nổ của các thiết bị thông minh như điện thoại, máy tinh bang, robot,
càng minh chứng rõ ràng cho việc con người luôn muốn đưa công nghệ về gần hơn với
bản thân Đó cũng chính là lí do cho việc xây dựng và phát triển các thiết bị cho mộtngôi nhà thông minh trở thành xu hướng nổi bật trong thời gian gần đây Đối với nhà
thông minh, hoặc có thể chỉ là một ngôi nhà, tòa nhà thông thường, một hệ thống cửa tự
động và hiện tại có thể coi là linh hồn đầu tiên của ngôi nhà - đảm bảo cho sự an toàncũng như tiện lợi to lớn mà nó mang lại Đi lên từ những phương pháp truyền thống nhưRFID, password, dấu van tay, người dùng phải thực hiện một loạt các thao tac hoặc cham
để có thể mở cửa thì bảo mật sinh trắc khuôn mặt như một giải pháp thiết thực cho vấn
đề trên, đồng thời vẫn đáp ứng cực tốt van dé về bảo mật, nhất là khi Covid-19 vẫn còn
hiện hữu và van đề tiếp xúc là nhạy cảm Tuy nhiên, giá thành sẽ là rao cản lớn dé phổ
biến các sản phẩm như thế này đến với đại đa số người dùng Nhận thấy tính thực tế tiềmnăng nghiên cứu, phát triển của mô hình cửa với bảo mật khuôn mặt hiện nay, nhóm sinh
viên thực hiện xây dựng mô hình cửa tự động áp dụng nhận dạng khuôn mặt cho đề tài
nghiên cứu.
1.2 Mục đích nghiên cứu
Ứng dụng hai xu hướng công nghệ hiện nay là máy học (Machine Learning) và
internet vạn vật (Internet of things) để xây dựng một mô hình cửa tự động ứng dụng công
Trang 15nghệ nhận dạng khuôn mặt nhằm khắc phục một số hạn chế cũng như phát triển thêm
các tính năng, ưu điểm cho hệ thống này Cụ thể là:
- Tìm hiểu và ứng dụng các phương pháp máy học là Haar Cascade cho phát hiệnkhuôn mặt, PCA và SVM cho nhận dạng khuôn mặt, tối ưu và tinh chỉnh trên mô hình
máy học để đạt được độ chính xác cao
- Tiền xử lý ảnh bằng các phương pháp như chuyền đổi ảnh xám, chuyền đổi tỉ lệ
ảnh, trích xuất landmarks, điều chỉnh hướng nghiêng khuôn mặt
- Khai thác khả năng Multi-Threading dé tăng FPS cũng như thời gian đáp ứng
cho hệ thống
- Điều khiển và xử lý các tín hiệu, ngoại vi trên Raspberry chính xác
- Đảm bảo độ an toàn phải có trên cửa, đồng thời nâng cao độ tiện lợi thông qua
việc tích hợp và xử lý tín hiệu từ hệ thống các cảm biến
- Mô hình thực hiện được phải có tính hợp lý và ứng dụng cao Đảm bảo các mặt
hạn chế về chi phí và năng lượng
1.3 Phạm vi nghiên cứu
Phạm vi của đề tài là giải quyết hai vấn đề chính Thứ nhất là nhận dạng khuônmặt: thực hiện tiền xử lý ảnh, phát hiện khuôn mặt và nhận dạng khuôn mặt Thứ hai là
đóng/mở cửa tự động: xử lý tín hiệu thu và nhận đề điều khiển cửa
Việc xây dựng một mô hình cửa tự động áp dụng nhận dạng khuôn mặt bao gồm
ba vấn dé chính cần quan tâm dé đánh giá là công suất, độ chính xác và tốc độ xử lý
Tuy nhiên, trong để tài này, nhóm sinh viên chỉ tập trung cải thiện độ chính xác và tốc
độ xử lý, bỏ qua các vấn đề về công suất và bảo mật
Trang 16Chương2 TONG QUAN
2.1 Tinh hình trong nước
Các mô hình cửa tự động và khóa cửa có nhận dạng khuôn mặt đã và đang được
biết đến ngày càng rộng rãi hơn ở thị trường Việt Nam Về cửa tự động - đây không còn
là một hệ thống quá xa lạ đối với người dùng, các sản phẩm về cửa tự động đã được sử
dụng cách đây khá lâu Trong nước cũng có rất nhiều các doanh nghiệp lớn, nhỏ thựchiện thi công, lắp ráp cửa tự động phục vụ cho các công ty, tòa nhà cho đến các ngôi nhà
ở bình thường — hầu như sử dụng các hệ thống cửa nhập khẩu từ nước ngoài Hiện naytại Việt Nam chưa có công ty phát triển các sản phẩm khóa cửa có ứng dụng nhận dạng
khuôn mặt Tuy nhiên, về phát triển các giải pháp về AI hay cụ thể là nhận dạng khuôn
mặt thì một số công ty nồi tiếng ở Việt Nam có thé kể đến như VinAI thuộc Vin Grouphay AI View thuộc BKAV chuyên về các giải pháp AI (bao gồm nhận dạng khuôn mặt)
Mặt hạn chế này có thé xuất phát từ khả năng cạnh tranh trực tiếp đối với các sản phẩmđến từ các thương hiệu nồi tiếng ở ngoài nước
Việc các công ty, doanh nghiệp nước ngoài thường sản xuất ra các sản phẩm theo
xu hướng và sự ảnh hưởng từ danh tiếng khiến cho phần lớn người dùng trong nước sẽ
chọn mua các sản phẩm ngoại nhập Điều này dẫn tới việc dù khối lượng nghiên cứu
nhiều nhưng rẤt Ít các nghiên cứu được hiện thực thành sản phẩm được thương mại hóa
Xét riêng tại trường Đại học Công nghệ thông tin - Đại học Quốc gia Thành phố
Hồ Chí Minh, ké từ năm 2011 đến nay, mỗi năm đều có nhiều hơn 1 dé tài thực hiện các
nghiên cứu liên quan đến vấn đề này Mỗi nghiên cứu đều mang những hướng tiếp cận,kết quả khác nhau Có thể ké đến như về phan cứng: năm 2016, nhóm sinh viên Vũ BáTat Dat đã nhúng mô hình nhận dạng khuôn mặt trên board Intel Galileo, nhóm cua sinhviên Nguyễn Tan Phát nhúng trên Jetson nano, hoặc trên máy tính cá nhân và cả
Raspberry PI Các phương pháp máy học cũng được ứng dụng đa dạng, từ các phương, pháp, thuật toán phức tạp như Deep Learning (Facanet, MTCNN, MobileFaceNets, ),
Trang 17đến những mô hình nhẹ hơn như LBP cascade, Eye Cascade, Eigenfaces Điều này cho
thây khả năng nghiên cứu, phát triển trên đề tài này là rất lớn và tiềm năng
2.2 Tình hình ngoài nước
Cửa tự động hay công nghệ nhận dạng khuôn mặt đều là những công nghệ đãxuất hiện từ khá lâu Từ cửa đóng-mở sử dụng hơi nước từ nhiều thế kỷ trước, đến năm
1960, các nhà khoa học người Mỹ cho ra cửa tự động hiện đại đầu tiên sử dụng thiết bị
truyền động sàn - thiết lập ra một ngành công nghiệp mới Sau đó, các công nghệ đượccập nhật và phát triển liên tục, như sử dụng bộ dò chuyển động vào những năm 1970 cho
đến cảm biến hồng ngoại như ngày nay vào 1980 Hiện nay, con người vẫn liên tục cảitiến các công nghệ cho cửa tự động xung quanh hệ thống cảm biến hồng ngoại, radar
hay lidar hay còn được gọi là "Mắt thần"
Hiện nay khá nhiều công ty, doanh nghiệp đã và đang tham gia phát triển, sản
xuất những sản phẩm, giải pháp liên quan đến cửa tự động và công nghệ nhận dạng
khuôn mặt, có thé kể đến như Xiaomi, Hafele, Samsung,
Hình 2.1 Ô khóa cửa có tích hợp mở khóa bằng nhận dạng khuôn mặt của Xiaomi [1]
Trang 18Đối với sản phẩm trên của Xiaomi, nó mang khá nhiều đặc điểm chung của hầu hết
những sản phẩm về 6 khóa tự động có tích hợp nhận dạng khuôn mặt hiện này Đó là độ
chính xác khi nhận dang cao, hoạt động én định cũng như có đội ngũ phát triển, bảo trìchuyên nghiệp Đồng thời, ngoài khả năng nhận dạng khuôn mặt, nó còn đi kèm theo rất
nhiều phương pháp dé mở khóa khác như dùng chìa truyền thống, vân tay, NFC,
password, mở khóa thông qua điện thoại thông minh, Những điều này dẫn đến việc giáthành của những sản phẩm như thế này thường cao đến rất cao
Về các nghiên cứu, riêng đối với cửa tự động ứng dụng nhận dạng khuôn mặt, có
khá nhiều bài báo, nghiên cứu được đăng trên các tạp chí
2.3 Vấn đề cần giải quyết
Đối với các nghiên cứu trong và ngoài nước, vấn đề mà các sản phẩm/nghiên cứu liênquan đến lĩnh vực nhận dạng khuôn mặt đa só đều gặp phải đó là giá thành quá cao, việcmột sản phẩm/ứng dụng phát triên và sự cạnh tranh giữa các doanh nghiệp, nhà pháttriển sẽ có gắng đề giảm giá thành sản phẩm và tiếp cận với nhiều đối tượng người dùnghơn Điều này là rào cản lớn cho họ có bước đầu tiếp cận với một hệ thống JoTs cơ bản
Van dé đầu tiên nhóm cần giải quyết chính là vấn đề về giá thành với việc lựa chọn cácthiết bị phần cứng giá rẻ có cấu hình không quá cao, cụ thê là Raspberry Pi 4 Điều này
sẽ dẫn đến các thách thức về việc lựa chọn các phương pháp, mô hình máy học phù hợpvới khả năng tính toán, xử lí của thiết bị
Hơn nữa, vấn đề về việc tiêu thụ năng lượng cũng được nhóm chú ý đến, nhưng vì giới
hạn phạm vi của đề tài, nên nhóm chỉ thực hiện việc khảo sát sự tiêu thụ năng lượng của
hệ thống, việc tối ưu hóa năng lượng tiêu thụ sẽ được thực hiện trong tương lai gần.
Xét đến một số nghiên cứu tại Khoa Kỹ Thuật Máy Tính - Trường Đại học Công nghê
Thông tin, ĐHQG TP.HCM Các nghiên cứu liên quan trước đó đều thực hiện trên các
thiết bị có cấu hình cao như Jetson Nano hoặc máy tính cá nhân đều đạt độ chính xáccao, các nghiên cứu trên cho ra một mức FPS dao động từ 2-10 FPS tùy đề tài Chính vìthế, van dé thứ hai nhóm cần giải quyết là cố gắng tạo ra một mô hình nhận dạng tuy áp
Trang 19dụng các thuật toán đơn giản nhưng đem lại độ chính xác cao cũng như thời gian phản
hồi nhanh với các mục tiêu:
+ Độ chính xác của mô hình dự kiến >=90%
+ FPS trung bình đạt được từ 7-13 FPS
Nhóm cũng đặt ra mục tiêu về công suất tiêu thụ khi nguồn điện tiêu thụ lý tưởng được
đề xuất cho Raspberry Pi 4 là 5V-3A (Tương đương 15W), nhóm cũng dự định cung cấp
một nguồn điện 5V-2A (Tương đương 10W) cho các linh kiện còn lại Chính vì vậy,tổng công suất tiêu thụ cho toàn hệ thống dự kiến nhóm đưa ra sẽ không vượt quá 15W
+10W=25W.
Trang 20Chương3 LY THUYET
Phan nay sẽ đi sâu hơn về các thuật toán đã được nêu ở trên, làm rõ hơn về cơ sở lý
thuyết của phần cứng cũng như phần mềm, để từ đó có một cái nhìn tổng thể hơn về lý
do tại sao lại lựa chọn những linh kiện, mô hình, thuật toán đó.
3.1 Phát hiện khuôn mặt (Face detection)
3.1.1 Tổng quan về Haar Cascade
Haar cascade được biết đến là một bộ công cụ phân loại và phát hiện đối tượng (bao gồm
cả đồ vật và con người) khá phổ biến Day có thể được xem là một thuật toán mạnh mẽ
bởi cầu trúc nhẹ và dé sử dụng nên có tốc độ nhận diện cực nhanh nhưng vẫn có độ chínhxác khá cao Ở dé tài này, nhóm sử dụng thuật toán Haar cascade cho mục đích phát hiện
khuôn mặt Năm 2001, các tác giả Paul Viola và Michael Jones đã đề xuất một
framework phát hiện khuôn mặt thời gian thực được mô tả là xử lý ảnh cực kỳ nhanh
mà vẫn có tỷ lệ phát hiện được khuôn mặt cao Ba giải thuật chính mà nhóm tác giả đóng
góp trong framework này dựa trên Haar basic function và Haar wavelets [2] Đầu tiên là
một cách biểu diễn hình ảnh mới được gọi là integral image (ảnh tích phân), điều này
giúp cho việc tính toán các đặc trưng trở nên cực kỳ nhanh chóng với nhiều tỉ lệ khácnhau Với ảnh tích phân này, sau khi đã tính toán xong, bất kỳ đặc trưng Haar-like nào
cũng đều có thể tính toán được ở mọi tỉ lệ và mọi nơi trong ảnh Tiếp theo là giải thuậtAdaboost Đây là một phương pháp xây dựng một bộ phân loại mạnh dựa trên nhiều bộ
phân loại yếu Sở dĩ đối với việc trích xuất đặc trưng Haar-like trên mỗi cửa số phụ làcực kỳ lớn, do đó, để việc phân loại diễn ra nhanh, quá trình huấn luyện phải loại bỏnhững đặc trưng có sẵn và tập trung vào những tính năng quan trọng — ràng buộc mỗi bộphân loại yếu với một đặc trưng duy nhất
Va cuối cùng là việc kết hợp nhiều bộ phân loại phức tạp theo cau trúc kiểu tang, điềunay làm tăng đáng ké tốc độ xử lý bằng việc chỉ tập trung phát hiện vào những khung
ảnh tiềm năng
Trang 21Haar cascade cũng gần giống như một nhân (kernel) CNN, tuy nhiên, đối với CNN,
kernal của nó được xác định thông qua quá trình huấn luyện, còn đối với Haar cascade
thì đặc trưng Haar của nó phải xác định một cách thủ công.
Tóm lại, Haar Cascade tuy không phải thuật toán tốt nhất cho việc phát hiện khuôn mặt
hiện nay như (HOG, Faster R-CNN, YOLO và một số thuật toán khác), tuy nhiên nó vẫncực kỳ hữu dụng bởi tốc độ xử lý khó có thể bị vượt qua Chính vì khả năng xử lý cùng
cấu trúc nhẹ nên Haar cascade phù hợp dé nhúng nên những thiết bị có hạn chế về tàinguyên (thiết bị nhúng, máy tính nhúng, ), đó cũng là lí do nhóm sinh viên chọn Haar
Cascade cho đề tài này
3.1.2 Haar-like feature
Các đặc trưng Haar là những đặc trưng ảnh kỹ thuật số thường được sử dụng trong pháthiện, nhận diện khuôn mặt và cả đồ vật Tên Haar-like dựa trên một số sự tương đồng
với Haar wavelet và được sử dụng trong bộ phát hiện khuôn mặt thời gian thực đầu tiên
Trước khi tìm hiểu về Haar-like features, ta sẽ nói về cách hoạt động tổng thé của Haarcascade, thuật toán sẽ sử dụng một cửa số có kích thước có định để trượt trên toàn bộ
bức ảnh lấy được từ trái sang phải và từ trên xuống dưới, đối với mỗi cửa số như vậy,thuật toán sẽ tính toán xem rằng trong đó có hay không chứa khuôn mặt Dựa vào đó, bộ
phân loại sẽ được huấn luyện thông qua mẫu negative va positive của một khuôn mặt.Đối với mỗi cửa số như vậy, những đặc trưng Haar sẽ được tính toán, các đặc trưng này
gồm ba loại điển hình đó là đặc trưng cạnh (egde features), đặc trưng đường (linefeatures) và đặc trưng bốn hình chữ nhật (four-rectangle features)
Những đặc trưng Haar này được xác định bằng cách lấy chênh lệch giữa tổng giá trị cácpixel của vùng màu sáng trừ đi tong số pixel của vùng màu tối Cụ thé, đối với đặc trưng
có hai hình chữ nhật (đặc trưng cạnh), giá trị của nó được tính bằng hiệu giữa tổng các
pixel trong hai hình chữ nhật Các vùng có cùng kích thước và hình đạng sẽ nằm kể nhautheo chiều năng hoặc chiều doc Hình 3.1 thể hiện năm loại đặc trưng Haar điển hìnhthường được sử dụng nhất
10
Trang 22Đặc trưng đường (line features)
na Đặc trưng cạnh (edge features)
Đặc trưng bốn hình vuông (four-rectangle features)
Hình 3.1 Năm loại đặc trưng Haar điển hình
Những đặc trưng có ba hình chữ nhật (đặc trưng đường) sẽ được tính bằng cách lấy tổngpixel của hai hình chữ nhật bên ngoài trừ đi tong pixels của hình chữ nhật ở giữa Cuối
cùng là đặc trưng có bón hình chữ nhật (đặc trưng bón hình chữ nhật) được tính bằng sự
chênh lệnh giữa hai cặp hình chữ nhật nằm chéo nhau
‘SUM OF THE DARK PIXEIS/NUMBER OF DARK PIKELS
-‘SUM OF THE LIGHT PIXELS/NUMBER OF THE LIGHT PIXELS.
Trang 23Hình vuông bên trái chính là một frame ảnh được cắt ra từ cửa số trượt, trong đó, hình
vuông ở chính giữa là một đặc trưng Haar với vùng sáng nằm bên trái và vùng tối nằm
bên phải Sau đó, đặc trưng Haar sẽ được tính bằng cách trừ trung bình tổng các pixelcủa vùng tối và tổng các pixel của vùng sáng Dựa vào kết quả thu được, nó sẽ xác định
đặc trưng này là đặc trưng cạnh, đường hay bốn hình chữ nhật Với hình trên, đặc trưng
Haar được tính toán là đặc trưng cạnh [3].
Sau khi trích xuất các đặc trưng này, mỗi đặc trưng sẽ được dùng dé xác định một đặc
trưng duy nhất trong ảnh
+ M
Hình 3.3: Đặc trưng đường được dùng đề phát triển con ngươi
Trong hình trên, hình chữ nhật ở trung tâm màu tối ứng với tròng đen và hai hình chữnhật hai bên ứng với tròng trắng (màu sáng)
Tuy nhiên, đối với những ảnh lớn (độ phân giải cao, số chiều của ảnh lớn) thì việc trích
xuất các tính năng này sẽ trở nên khó khăn và tốn nhiều tài nguyên Viola và Jones đã
đề xuất thuật toán có tên ảnh tích phân (Integral image) dé giảm số lượng phép toán cần
thực hiện.
3.1.3 Ảnh tích phân (Integral image)
Qua lý thuyết ở phan trên, ta có thé hiểu về cách tính toán một đặc trưng Haar, nhưngđồng thời, ta cũng có thể thấy việc tính toán trên thé hiện rõ sự bat cập trong trường hợp
ảnh lớn và nhiều chỉ tiết Điều này sẽ dẫn đến việc tăng rõ rệt thời gian xử lý cũng nhưtài nguyên và cấu trúc của thuật toán này Viola và Jones đã đề xuất thuật toán Integral
image, với công dụng tính toán đặc trưng Haar tương tự như phương pháp trên, tuy nhiên
lại giảm số lượng các phép toán cần thực hiện và từ đó tăng đáng kể tốc độ tính toán Về
12
Trang 24tổng quan, trong một ảnh tích phân, một pixel sẽ có giá trị bằng tổng của các pixel nằm
phía trên và phía bên trái của pixel đó trong ảnh gốc Ta có công thức về giá trị của một
pixel tại vị trí x, y trong ảnh tích phân được tính như sau [4]:
UO) = Äx'sxy!<y (ey), (3.1)
trong đó í;(+, y) là ảnh tích phân va i(x, y) là ảnh gốc ban dau
Giả sử s(x, y) là tổng tích luỹ hàng của một pixel, ta có:
s(x,y) = s(x,y— 1) + i(x,y), với s(x,—1)=0 (3.2)
l(œ,y) = (x— 1,y) + s(,y), với j(—1,y) =0 3.3)
Bằng thuật toán trên, một ảnh ban đầu có thể được biéu diễn thành ảnh tích phân chỉtrong một lần tính toán duy nhất Và bat kỳ một hình chữ nhật nào (tại bat kỳ vị trí và
kích thước nào) cũng có thê được tính thông qua bốn tham chiếu mảng (tham khảo hình
minh hoạ dưới).
a(A) b(B)
c(C) dD)
Hình 3.4 Vi dụ về cách tính giá trị của một pixel trong ảnh tích phân
Bằng ảnh tích phân, tổng các pixel của một hình chữ nhật tại vị trí bất kỳ có thé được
tính bằng bốn tham chiều mảng Cụ thé với hình trên như sau: Giá trị của ảnh tích phântại vị trí A là tổng các pixel của hình chữ nhật a Giá trị tại vị trí B sẽ là tông các pixel
của hình chữ nhật a và b Tại vị trí C sẽ là a+c và vi trí D sẽ là a+b+c+d Từ đó, ta có giá trị của ảnh tích phân cho hình chữ nhật d sẽ là: (a+b+c+d)-(a+c)-(a+b)+a.
Tương tự, đối với đặc trưng Haar có hai hình chữ nhật (đặc trưng cạnh) thì sẽ cần tính
toán trong 6 phép tính, 8 đối với đặc trưng có ba hình chữ nhật (đặc trưng đường) và 9
đối với đặc trưng bốn hình chữ nhật (do các hình chữ nhật nằm liền ké)
Trang 253.1.4 Thuật toán Adaboost
Ở phan trên, qua việc trích xuất đặc trưng Haar và nhờ vào ảnh tích phân, ta có thé thay
một đặc trưng hình chữ nhật có thể được tính toán khá nhanh và hiệu quả Tuy nhiên,hiện nay số lượng các đặc trưng Haar có thé lên tới hàng trăm ngàn đặc trưng khác nhau
Vi vậy, việc tính toán cho toàn bộ hình ảnh trở nên cực kỳ tốn tài nguyên và thời gian
Thông qua thí nghiệm và nghiên cứu, Viola và Jones nhận thấy rằng một số rất nhỏ cácđặc trưng này có thê kết hợp lại và cho ra một bộ phân loại hiệu quả, nhưng vấn đề gặpphải chính là việc tìm ra những đặc trưng ấy [2] Viola va Jones sử dụng một bién thé
của thuật toán Adaboost để chọn ra các đặc trưng cần thiết và huấn luyện bộ phân loại
Về Adaboost, đây là một bộ phân loại phi tuyến được Freund và Schapire đề xuất vào
năm 1995 dựa trên thuật toán boosting, nó hoạt động bằng cách kết hợp các bộ phân loại
yếu (weak classifiers) thành một bộ phân loại mạnh (strong classifier) Sự cải tiến củaAdaboost nằm ở việc nó sử dụng trọng số (weight) để đánh đấu trong quá trình huấn
luyện Một bộ phân loại yếu h được định nghĩa như sau [Š]:
1 if pfx) < p0:
hn = G4)
0 otherwise
trong đó x là cửa số hiện tại ma chúng ta đang xét, 0 là ngưỡng (threshold), fk là giá tri
của Haar like feature và p thông số quyết định chiều của tham số
Từ một tập các bộ phân loại yếu h như trên, chúng ta sẽ có được một bộ phân loại mạnh
H được định nghĩa như sau:
H@) = YF, ayo) (3.5)
trong đó a thông số của các bộ phân loại yếu
Chúng ta có thể hình dung quá trình này theo hình dưới:
14
Trang 26weak week strong
classifier 2 classifer 3 classifier
hy(x) ha(z) ha(x) H(z)
Hình 3.5 Mô tả trực quan về cách hoạt động của thuật toán Adaboost
Cụ thẻ, đầu tiên, thuật toán huấn luyện một bộ phân yếu bằng một đặc trưng Haar-like
tốt nhất Trong lần huấn luyện tiếp theo, những mẫu thử bị phát hiện nhầm sẽ được đánhtrọng số cao hơn và những mẫu thử được phát hiện đúng sẽ được đánh trọng số thấp hơn
để bộ phân loại tập trung hơn vào những mẫu thử này Chúng ta sẽ có flow-chart khi ápdụng Adaboost vào đề tài như sau:
Ï ư Hay Featres
Nota face!
‘Asub window:
r
Hình 3.6 Thuật toán Adaboost trong trường hợp dùng đề phát hiện khuôn mặt
Một cửa số phụ sẽ sau khi được chụp lại sẽ đi qua nhiều lớp phân loại khác nhau (gọi là
cascade classifier), mỗi khi qua một lớp, nếu thuật toán xác định trong đó có khuôn mặtthì nó sẽ được đi qua lớp phân loại tiếp theo, lặp lại cho đến khi kết thúc (vượt qua tat cả
Trang 27các lớp phân loại), ngược lại, chỉ cần không vượt qua một lớp nào đó thì sẽ được xác
định là không có khuôn mặt.
3.2 Tiền xứ lý anh (Preprocessing Image)
3.2.1 Landmark detection
Bởi vi sử dụng phương pháp PCA, mặc dù phương pháp nay sẽ giảm chiều dữ liệu di
đáng kể nhưng không phải lúc nào chỉ tiết giữ lại cũng đều chính xác như mong muốn
Trong một số trường hợp, một số thông tin hữu ích trên khuôn mặt như mắt, mũi hoặcmiệng sẽ bị loại bỏ, còn một số chỉ tiết nhiễu như background, quần áo, cổ, tóc thì lạiđược giữ lại, từ đó làm giảm đi độ chính xác của mô hình Và vấn đề này liên quan đến
thuật toán, hơn nữa dataset là một tập hợp rất nhiều ảnh cho nên việc kiểm soát thủ côngvan dé này hầu như là không thể Chính vì vậy, việc nomalize data trước khi training
model hoặc trước khi dự đoán sẽ trở nên rất quan trọng trong trường hợp này, trong số
đó sẽ có landmark detection Vậy landmark detection là gì? Đây là một phương pháp
trích xuất những đặc trưng của khuôn mặt từ vùng chân mày trở xuống, những chỉ tiết
thừa như là tóc, background sẽ được loại bỏ Ở đây nhóm sẽ lựa chọn loại bỏ chỉ tiếtnhiễu bằng cách thay thế chúng bằng một tắm nền đen đề cho việc xử lý sẽ trở nên dễ
dàng hơn Quay trở lại với landmark detection, quá trình này sẽ được thực hiện ngay sau
khi chúng ta hoàn thành bước phát hiện khuôn mặt bằng Haar Cascade
Trang 28Hình 3.7: Một ví dụ khi phát hiện khuôn mặt bằng phương pháp Haar Cascade.
Chúng ta có thể đễ dàng nhận thấy rằng các chỉ tiết thừa như tóc, background vẫn chưa
được loại bỏ và có khả năng ảnh hưởng đến kết quả dự đoán
Vậy làm cách nào đề triển khai phương pháp này? Rất may là Dlib đã công bố một
opensource detector để thực hiện công việc này Bộ detector này được train từ tập dữliệu iBUG-300-W bao gồm 68 điểm giới hạn từ chân mày đến hàm dưới [6] Và 68 điểm
này được minh họa như hình dưới:
Hình 3.8 Mô ta 68 điểm của Dlib's face landmark detector [7]
Với 68 điểm này, ta có thể phát hiện được các chỉ tiết trên khuôn mặt như bảng dưới:
Bảng 3.1 Một số đặc trưng trên khuôn mặt mà Dlib face detector có thể phát hiện đượcĐặc trưng Điểm
Trang 29Toàn bộ khuôn mặt Từ 1 đến 68
Hàm mặt Từ 1 đến 17
Chân mày bên phải Từ 18 đến 22
Chân mày bên trái Từ 23 đến 27
Mũi Từ 28 đến 36
Mắt phải Từ 37 đến 42
Mắt trái Từ 43 đến 48
Phía bên ngoài môi Từ 49 đến 60
Phía bên trong môi Từ 61 đến 68
Bảng trên trình bày những đặc trưng trên khuôn mặt tương đương với những nhóm số
được mô tả trong hình 3.8.
Thực tế, ở trong dé tài này, chúng ta sẽ chi cần dùng 27 điểm, đó là điểm từ 1-17 và
18-27, tức là chỉ lấy viền bên ngoài khuôn mặt được bao quanh bởi chân mày và hàm Bởi
vì trước đó chúng ta đã dùng Haar cascade để phát hiện khuôn mặt nên sẽ không cầndùng đến các điểm còn lại Sau khi đã xác định được 27 diém trên, chúng ta sẽ tiền hành
nối chúng lại dé khoanh vùng, những vùng bên ngoài sẽ được thay thế bằng một lớp nền
18
Trang 30Hình 3.9 Kết quả sau khi áp dụng Dlib Face landmark detector
Sau khi áp dung face landmark vào khuôn mặt ở hình trên, tat cả các chỉ tiết ở ngoài
những điểm được xác định sẽ bị loại bỏ, chỉ giữ lại đúng những đặc điểm của khuôn
mặt mà các thuật toán nhận dạng sẽ sử dụng
3.2.2 Điều chỉnh hướng của khuôn mặt
Chúng ta sẽ không chỉ dừng lại ở landmark detection, như chúng ta có thé thay ở Hình
3.7, khuôn mặt sau khi được trích xuất vẫn có một độ nghiêng nhất định, và điều nay có
thể ảnh hưởng đến độ chính xác khi mà PCA là thuật toán nhạy cảm với góc nghiêng xét
trong ứng dụng nhận dạng khuôn mặt Chúng ta có thể giải quyết nó một cách đơn giản
là sẽ "xoay" tắm hình của chúng ta theo một góc xác định để sao cho khuôn mặt đượccân chỉnh thang lại Thư viện OpenCV sẽ hỗ trợ việc này, nguyên lý cơ bản là sẽ xoay
bức ảnh theo một góc cho trước, những chỗ còn thiếu sẽ được thay thế bằng màu đen, để
hình dung thì chúng ta sẽ có một ví dụ bên dưới:
Original Image Rotate 15 degree Rotate 15 degree
clockwise counter-clockwise
Hình 3.10 Vi du cho ảnh gốc, sau khi xoay 15 độ kim đồng hồ
Theo ví dụ trên, ta có thể thấy sau khi xoay ảnh, những phần bị thiếu sẽ được thư viện
tự động lấp đầy bằng những vùng đen, từ đó có thể gây nhiễu dữ liệu Chính vì vậy, đó
là lí do nhóm chọn lấp đầy những vùng ngoài khuôn mặt bằng lớp nền màu đen chứ
Trang 31không phải một màu khác ở bước landmark detection Trở lại vấn đề chính, sau khi đã
phát hiện được các đặc trưng trên khuôn mặt, chúng ta sẽ tiến hành kiểm tra độ nghiêng
và xoay khuôn mặt về hướng thẳng Một lần nữa, chúng ta sẽ tận dụng lại 5 trong 68điêm của Dlib Face Landmark detector, cụ thể là những điểm: 34, 37, 40, 43, 46 Giải
thuật này dựa trên đường thang nối lai của 2 mắt Đường thắng này được nối lại bởi 4điểm 37, 40, 43, 46 Từ trung điểm của đường thẳng này, ta sẽ nối nó với điểm 34, tạo
thành 2 đường thẳng vuông góc, đường thang này đặc trưng cho sống mũi Và chúng taphải làm sao cho 2 đường thẳng này song song với chiều rộng và chiều dài của bức ảnh[7] Đề hình dung rõ hơn chúng ta có ví dụ bên dưới:
Is not straight!
Hình 3.11 Vi dụ về một bức anh landmark có góc mặt bi nghiêng
Từ hình ảnh trên, dựa vào sự chênh lệch góc của 2 đường màu đỏ và màu xanh, chúng
ta sẽ tìm ra được số góc chính xác để xoay bức ảnh, và phần thừa màu đen sẽ được đồngđiệu với nền đen của bức ảnh, từ đó không gây nhiễu cho dữ liệu đầu vào Và kết quảcuối cùng chúng ta sẽ thu được được biểu diễn như hình dưới:
Hai bước tiền xử lý có sự quan trọng nhất định trong việc cải thiện độ chính xác cho môhình Ví dụ trường hợp trong hình 3.12 (bên dưới), trong bức ảnh gốc, tuy được chụptrong điều kiện ánh sáng đây đủ, tuy nhiên đối với những phương pháp nhưng PCA vàSVM thì nhiều từ nền và góc nghiêng khuôn mặt hoàn toàn có thể ảnh hưởng tới độchính xác đầu ra của mô hình
20
Trang 32Original Image Haar Cascade Landmark detection Face alignment Final Image
Hình 3.12 Minh họa toàn bộ các bước tiền xử lý hình ảnh
Ảnh đầu tiên là ảnh gốc, ngoài khuôn mặt người còn có phần thân trên cùng nền ảnh.Sau khi được detect bang Haar Cascade, nó sẽ chi lay phần khuôn mặt người nằm trongkhung ảnh mà nó quét được (ảnh khi này sẽ gồm khuôn mặt, tóc và nền ảnh) Tiếp theo,Landmark detection sẽ loại bỏ toàn bộ những vùng ảnh nằm ngoài những điểm đã địnhsẵn, từ đó ảnh thu được chỉ bao gồm duy nhất khuôn mặt, những phần bị loại bỏ sẽ được
thay bằng nền màu đen Tuy nhiên lúc này khuôn mặt vẫn còn bị nghiêng nhẹ sang trái,tại đây áp dụng phương pháp Face Alignment sẽ cân chỉnh khuôn mặt về lại hướng thắngđứng, cuối cùng ta thu được Final Image (kết quả cuối cùng của quá trình tiền xử lý ảnh)
3.3 Principal Components Analysis
Principal components analysis hay viết tắt là PCA là một thuật toán rất phô bién trongviệc phân tích và khám phá dữ liệu và đồng thời được ứng dụng trong rất nhiều lĩnh vực
công nghệ - kỹ thuật khác nhau PCA được dé xuất lần đầu vào năm 1901 bởi KarlPearson và sau đó được nhiều nhà khoa học nâng cấp cũng như điều chỉnh để phù hợp
với mục tiêu nghiên cứu của họ Thuật toán PCA cực kỳ hữu ích đối với việc phân tích
cũng như xử lý những dữ liệu lớn (như dữ liệu có nhiều biến, ảnh có độ phân giải cao,ảnh có độ tương quan cao) Ở day, PCA sẽ làm nhiệm vụ giảm sé chiều dữ liệu, tức biểu
Trang 33diễn đữ liệu gốc dưới một không gian con ít chiều (giảm/loại bỏ bớt những đặc trưng)
và đồng thời phải hạn chế mat mát thông tin ở mức tối thiểu
Một số điểm mạnh của PCA có thé ké đến như: Khả năng trực quan hoá dữ liệu 2D và3D, việc giảm chiều dữ liệu giúp giảm đáng ké không gian bộ nhớ, đồng thời việc loại
bỏ thông tin không cần thiết và giữ lại thông tin cần thiết giúp giảm nhiễu tương đối
Tuy nhiên, chính vì vay, PCA đôi khi sẽ loại bỏ nhằm những thông tin cần thiết, gây
nhiễu cho dữ liệu.
3.3.1 Mô tả phương phương thức thực hiện của PCA
Cách cơ bản nhất để giảm chiều dữ liệu của một đữ liệu X là chỉ giữ lại K phần tử quantrọng nhất của X, tuy nhiên, van dé gặp phải ở đây là phải xác định thành phần nào là
quan trọng nhất, vì nếu lược bỏ thông tin một cách ngẫu nhiên sẽ dẫn đến sai lệch nghiêmtrọng cho dữ liệu Vì vậy, PCA sẽ đi tìm và xây dựng một hệ trực chuẩn mới sao cho
trong đó tầm quan trọng của các thành phần có sự khác nhau rõ rệt, từ đó loại đi những
thành phần it quan trọng hơn Quy trình thực thi của PCA [8] được thể hiện như bên
Tiếp theo, tính các trị riêng có norm bằng | của ma trận, sau đó sắp xếp chúng theo thứ
tự giảm dần của các trị riêng này Từ đó, chọn K eigenvectors ứng với K Eigenvalueslớn nhất dé xây dựng ma trận Ủy (Eigenspace) tạo thành một ma trận trực giao K
Eigenvectors này chính là các thành phần chính (principal components) tạo thành một
2
Trang 34không gian con Chiếu dữ liệu đã chuẩn hoá Ÿ xuống không gian con tìm được Các điểm
dữ liệu mới chính là toạ độ của các điểm dữ liệu trên eigenspace
Z=U7£ (3.9)Tương quan giữa dữ liệu ban đầu và dữ liệu mới có thé được tính xắp xi theo công thức
sau:
xe URL +X (3.10)
Quan sát hình bên dưới dé dé hình dung hơn về các bước thực hiện của PCA.
trừ mỗi điểm dữ liệu cho veetorky vong —_ 11h ma trận hiệp phương sai
Trang 35Đầu tiên là tìm vector kỳ vọng (màu đỏ) bằng biểu thức (3.6) Tiếp theo sẽ trừ mỗi điểm
đữ liệu cho vector kỳ vọng, ta sẽ thu được một bộ điểm dit liệu mới (3.7) Tiếp theo là
tính ma trận hiệp phương sai, rồi tìm K Eigenvectors ứng lớn K Eigenvalues lớn nhấtcủa ma trận hiệp phương sai, từ đó thu được một ma trận trực giao (Eigenspace) Chiếu
dữ liệu đã được chuẩn hóa ở bước 2 xuống không gian con (Eigenspace) mới tìm được,các điểm dữ liệu mới này sẽ là tọa độ của các điểm dữ liệu ở trên Eigenspace
3.4 Mô hình máy học dé phân loại (Suport Vector Machine)
Để đạt được hiệu suất tốt nhất trên KIT Raspberry Pi, những model thuộc trường deep
learning sẽ không được sử dụng Những model này có một lượng thông số khổng lồ, yêucầu cấu hình tương đối cao đề training cũng như triển khai, mà đây vốn là điểm yếu lớn
của Raspberry Pi, chúng ta không thé yêu cầu một thiết bị máy tính nhúng có giá thành
rẻ, lượng GPIO lớn mà lại có thêm một cấu hình mạnh nữa Raspberry Pi có một cấu
hình khá khiêm tốn với bộ CPU 4 nhân Cortex A72 với xung nhịp tối đa chỉ đạt 1.5 GHz,thì việc chạy các model deep learning một cách mượt mà là điều không tưởng Hơn nữa,
các model này hau như chỉ tận dụng được lõi GPU CUDA của Nvidia, cái mà KIT Jetson
Nano được trang bị, nhưng các bộ KIT nay có giá thành rất cao, đi ngoài phạm tri mụctiêu của khóa luận Tuy vậy, nhóm sinh viên cũng muốn dé xuất một vài model như
Efficient Net, CNN, DeepFace, MTCNN với mục đích phát triển ở trong tương lai vớicác bộ KIT khác mạnh hơn Quay trở lại với chủ đề chính, mô hình máy học được nhóm
sử dụng trong dé tài này là SVM Bên cạnh việc không yêu cầu tài nguyên lớn, SVM sẽhiệu quả hơn đối với dữ liệu nhiều chiều, nhưng nó cũng có hiệu suất không kém khi số
chiều dữ liệu nhiều hơn số mẫu Mục đích cuối cùng của SVM là tạo ra một hyper-plane
dé phân chia các lớp đã được gan nhãn trước đó với nhau Hãy hình dung chúng ta có 2
lớp dữ liệu tuyến tính độc lập với nhau
D = (xp vier (3.1L
với / nhãn đã được gan nhãn sẵn với y¡ € —1,1 được biéu diễn như hình dưới:
24
Trang 36sa” oo °
(a) (b)
Hình 3.14 Hình (a) biểu diễn dữ liệu có margin nhỏ hon (b)
Ở hình trên, chúng ta có một thuật ngữ mới là "margin" Vậy margin là gì? Margin làkhoảng cách giữa 2 hoặc nhiều lớp dữ liệu được biểu diễn trong không gian n chiều, với
margin càng lớn thì chúng ta càng dễ dàng phân loại các lớp dữ liệu với nhau hơn, đồng
nghĩa với việc khi margin càng lớn, thì mô hình cuối cùng chúng ta thu được sẽ có độtin cậy cao hơn Sự cân bằng giữa margin và sự phân loại sai được quyết định bởi mộtthông số gọi là C (hay còn được gọi là tham số chính quy) Thông số này được chúng ta
lựa chọn thủ công trước khi bắt đầu quá trình training model Xét ví dụ trên, sau khi khảo
sát thi chúng ta nhận thay rằng chúng ta sẽ chọn một bộ phân loại tuyến tinh dé giải quyếtvấn đề Cụ thé [9]:
Wa) =A; + zai Digi (3.13)
Tối thiểu hóa A; bang cách cho:
Trang 37Añy =0
¡—Œ<0 (3.14)
A, <0
với Dị, = y¡yj¡ x;
Nhưng đây là hướng giải quyết với bộ phân loại tuyến tính, vậy còn bộ phân loại phi
tuyến tính thì sao? Thực tế thì đa số các hướng giải quyết đều phải dùng đến bộ phânloại phi tuyến vi dữ liệu trong thực tế không hề đơn giản như trên
Chúng ta cũng sẽ chiếu một tập các biến dữ liệu x ở một không gian feature có nhiều
chiều hơn [9] Phương trình cũng ta sẽ có dạng:
với a; và yp; là những giá trị riêng và hàm riêng của hàm tích phân có kernel K(x, y) là
một hàm đối xứng luôn dương Với các thông số nay, tích vô hướng trong không gian
đặc trưng trở nên đơn giản hơn bởi vì:
œ
z”()z() = ` #iJ(x)J;(y) + b) = KŒx,y) (3.17)
TẾT
Cuối cùng, chúng ta có một vài kernel function được biểu diễn ở bảng dưới:
Bảng 3.2 Một vài kernel funtion và các bộ phân loại mà chúng được định nghĩa
Kernel Function Bộ phân loại
KŒ,x) = exp (-Ilx _ xil|’) Gaussian RBF
K(x, x) = (x?x, + 1)# Polynomial of degree d.
K(x, x,) = tanh(xTx¡ — @) Multi-Layer Perceptron
26
Trang 38Bảng trên liệt kê ba bộ phân loại phổ biến là Gaussian RBF, Polynomial of degree d va
Multi-Layer Perceptron tương ứng với những công thức của hàm kernel.
3.5 Huấn luyện mô hình máy học
Ở mô hình SVM, chúng ta sẽ có 3 thông số chính cần làm rõ: C, gamma và kernelfunction Giả sử chúng ta có 3 thông số C, 3 thông số gamma và 3 kernel function, nếu
như training thủ công từng trường hợp một thì chúng ta sẽ phải thực hiện 33 = 27 lần
Chúng ta sẽ lại thực hiện tiếp trường hợp khác, và thời gian training của mỗi trường hợpchúng ta sẽ phải đợi cho trường hợp này xong rồi lại thực hiện tiếp trường hợp khác,
chúng ta sẽ phải đợi trường hợp này xong rồi không thể xác định được Và sci-kit-learn
có một thư viện tên là GridSearchCV giúp chúng ta thực hiện công việc đó một cách tự
động Thư viện nay sẽ nhận đầu vào là danh sách các thông số C, gamma và kernel, sau
đó thư viện này sẽ tự động training, khảo sát các trường hợp dé đưa ra thông só, mô hình
tốt nhất, quá trình này thường được gọi với tên "Hyperparameter Tuning"
Đây là danh sách các thông số mà nhóm sinh viên sẽ lựa chọn cho quá trình
Trang 39Dé dang dé nhận ra là dữ liệu của các khuôn mặt không tuyến tính vì sự phân bố của
chúng quá phức tạp Chúng vi vậy chúng ta sẽ cần phải dùng thêm kernel-trick đề tối
ưu độ tin cậy của mô hình Ở đây nhóm sinh viên sẽ chọn 3 kernel-trick phổ biến:
kernel: {'rbf’, 'sigmoid’, Tinear'}
Cuối cùng, chúng ta có flow-chart tổng quan về các bước hoạt động của quá trình
Hyperparameter tuning như sau:
INPUT: Các thông số C, gamma, kernel
cho việc training
Khởi tạo không gian
[tường bop dâu nên
Đánh giá hiệu suất của
Hyper parameter
Tuning
Đầu tiên, nhóm sẽ phải tự chọn những thông số C, gamma, kernel Tiép theo la khoi tao
không gian Grid search dé tiến hành để tiến hành train từng trường hợp ứng với từngnhóm thông số cụ thé lần lượt, sau đó nó sẽ xuất ra được bộ thông số tốt nhất của quátrình tuning tham số đã thực hiện Cuối cùng, dữ liệu sẽ được huấn luyện lại với bộ tham
số tốt nhất đó, từ đó ta thu được mô hình SVM tối ưu và tốt nhất
3.6 Multi-Threading
28
Trang 40Bắt cứ bài toán, vấn đề đều sẽ có một hay nhiều hướng giải quyết nhất định Xét ở trường
hợp chúng ta đang làm việc với bài toán nhận dạng khuôn mặt thì việc giải quyết vấn đề
sẽ theo các bước như sau:
Nhận ảnh đầu vào -> Phát hiện khuôn mặt -> Trích xuất các thuộc tính -> Tiền xử lý dữ
liệu - > Dự doán kết quả -> Đưa ra quyết định -> Nhận ảnh đầu vào mới
Như chúng ta có thể thấy, để dự đoán được dữ liệu khuôn mặt là của ai sẽ trải qua khá
nhiều bước, và các bước này sẽ phải thực hiện một cách tuần tự, bước này muốn thựchiện thì phải đợi bước trước đó hoàn thành, dẫn đến độ trễ tăng lên, FPS theo đó sẽ bị
kéo xuống và khó có thé đáp ứng được yêu cầu real-time của bài toán
Để giải quyết vấn đề trên, nhóm đã tận dụng kha năng Multi-Threading dé tối ưu hóa
khả năng xử lý cua KIT.
Đầu tiên, chúng ta cần phải phân biệt được Thread va Process Thread (luồng) là mộtđơn vị cơ ban trong CPU Luéng ở đây tức là một tiến trình nhỏ hay còn gọi là tiến trình
con, trong tiếng Anh là Sub-process Đây được biết đến là một đơn vị nhỏ nhất của máytính được sử dụng để xử lý và thực hiện một công việc nào đó một cách riêng biệt Một
luồng sẽ chia sẻ với các luồng khác trong cùng Process (Tiến trình) về thông tin data,
các dữ liệu của mình Việc sử dụng Multi-thread sẽ giúp cho việc quản lý các yêu cầucủa người dùng với số lượng nhiều hơn mà không cần phải chạy thêm hay sử dụng thêm
các phiên bản khác của chương trình đang chạy và thực hiện trong máy tính Process là
quá trình hoạt động của một ứng dụng, nó chứa đựng thông tin tài nguyên, trạng thái
thực hiện của chương trình Từ định nghĩa trên, nhóm sinh viên quyết định chọn Threading thay vì Multi-Processing bởi vì thread nằm trong cùng một process sẽ dùng
Multi-một không gian bộ nhớ giống nhau, trong khi process thì không Điều này cho phép cácthread đọc và viết cùng một kiểu cấu trúc và dữ liệu, giao tiếp dé dang giữa các thread
với nhau.
Một vài ưu điểm của Multi-Threading: