1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giải pháp quản lý và nhận dạng khuôn mặt hiệu suất cao

77 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giải Pháp Quản Lý Và Nhận Dạng Khuôn Mặt Hiệu Suất Cao
Tác giả Đàm Lam Trường
Người hướng dẫn TS. Trần Vũ Hoàng
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành CNKT Điều Khiển Và Tự Động Hóa
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2021
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 77
Dung lượng 8,55 MB

Nội dung

Nội dung thực hiện đề tài: - Nghiên cứu, khảo sát và lựa chọn mô hình học sâu phát hiện và trích xuất khuôn mặt phù hợp với các tiêu chí: nhanh, nhẹ và chính xác.. Nhận xét chung về nội

Trang 1

THÀNH PHỐ HỒ CHÍ MINH

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT

ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA

GIẢI PHÁP QUẢN LÝ VÀ NHẬN DẠNG KHUÔN MẶT HIỆU SUẤT CAO

GVHD: TS TRẦN VŨ HOÀNG SVTH: ĐÀM LAM TRƯỜNG

S K L 0 0 9 1 1 2

Trang 2

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

GIẢI PHÁP QUẢN LÝ VÀ NHẬN DẠNG KHUÔN

MẶT HIỆU SUẤT CAO

Trang 3

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH

KHOA ĐÀO TẠO CHẤT LƯỢNG CAO

ĐỒ ÁN TỐT NGHIỆP

GIẢI PHÁP QUẢN LÝ VÀ NHẬN DẠNG KHUÔN

MẶT HIỆU SUẤT CAO

Trang 4

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh Phúc

*******

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Họ và tên sinh viên: Đàm Lam Trường MSSV: 17151274

Ngành: CNKT Điều Khiển Và Tự Động Hoá Lớp: 1715CL1B

Giảng viên hướng dẫn: TS Trần Vũ Hoàng ĐT: 0988757515

Ngày nhận đề tài: 1/10/2021 Ngày nộp đề tài: 10/12/2021

1 Tên đề tài: Giải pháp quản lý và nhận dạng khuôn mặt hiệu suất cao

2 Các số liệu, tài liệu ban đầu: mô hình học sâu phát hiện và mô hình học sâu trích xuất đặc trưng khuôn mặt

3 Nội dung thực hiện đề tài:

- Nghiên cứu, khảo sát và lựa chọn mô hình học sâu phát hiện và trích xuất khuôn mặt phù hợp với các tiêu chí: nhanh, nhẹ và chính xác

- Thu thập và khảo sát mô hình lựa chọn trên dữ liệu tự thu thập

- Nghiên cứu thiết kế giao diện ứng dụng giải pháp

- Thiết kế hệ thống, khảo sát ý kiến người dùng và hoàn thiện hệ thống

4 Sản phẩm: Hệ thống quản lý nhận dạng khuôn mặt hiệu suất cao

Trang 5

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh Phúc

*******

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Họ và tên Sinh viên: Đàm Lam Trường MSSV: 17151274

Ngành: Kỹ Thuật Điều Khiển Và Tự Động Hoá

Tên đề tài: Giải pháp quản lý và nhận dạng khuôn mặt hiệu suất cao

Giáo viên hướng dẫn: TS Trần Vũ Hoàng

NHẬN XÉT

1 Về nội dung đề tài & khối lượng thực hiện:

- Nội dung đề tài và khối lượng thực hiện phù hợp

2 Ưu điểm:

- Thiết kế và lựa chọn mô hình phù hợp với yêu cầu đặt ra

- Đánh giá và phân tích kỹ mô hình đạt được với nhiều loại môi trường và nhiều yếu

tố tác động

3 Khuyết điểm:

- Số lượng dữ liệu thử nghiệm còn chưa nhiều

4 Đề nghị cho bảo vệ hay không?

- Đề nghị cho bảo vệ

5 Đánh giá loại: Giỏi

6 Điểm: 9 (Bằng chữ: chín)

Tp Hồ Chí Minh, ngày 27 tháng 12 năm 2021

Giáo viên hướng dẫn

(Ký & ghi rõ họ tên)

Trang 6

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

Độc lập – Tự do – Hạnh Phúc

*******

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN

Ngành: CNKT Điều khiển và Tự động hoá

Tên đề tài: Giải pháp quản lý và nhận dạng khuôn mặt hiệu suất cao

Giáo viên hướng dẫn: TS Trần Vũ Hoàng

Giáo viên phản biện: THS Nguyễn Trần Minh Nguyệt

Ý KIẾN NHẬN XÉT

1 Nhận xét chung về nội dung đề tài:

Đề tài đã thực hiện được nội dung sau:

- Lựa chọn mô hình phù hợp để nhận dạng khuôn mặt ứng dụng trên các thiết bị

có cấu hình không cao

- Đánh giá và phân tích kết quả trong các điều kiện thực nghiệm

- Đề tài sử dụng các thư viện, mô hình và code có sẵn để thực hiện

2 Ý kiến kết luận (ghi rõ nội dung cần bổ sung, hiệu chỉnh):

- Đề nghị SV viết lại cho rõ ý trong nội dung chương 2 SV dùng quá nhiều thuật ngữ tiếng Anh, đề nghị tác giả nên dùng từ chuyên ngành tiếng Việt để mô tả nếu chưa diễn tả đủ thì chú thích bên canh bằng tiếng Anh Ngoài ra trong chương 2 văn phong giống như dịch ra hoàn toàn từ nhiều bài báo mà không thấy nhiều ý tưởng hay cách diễn đạt của SV

- Bổ sung các phương trình toán học và thuật toán cụ thể để phát hiện và nhận dạng khuôn mặt

Đề nghị: Được bảo vệ:  Bổ sung để được bảo vệ: □ Không được bảo vệ: □

3 Câu hỏi phản biện (Giảng viên không cho SV biết trước):

1 SV trình bày chi tiết các bước trong phương pháp đề xuất, bao gồm việc phát hiện khuôn mặt như thế nào, độ chính xác bao nhiêu? Trích xuất đặc trưng khuôn

Trang 7

mặt như thế nào? So sánh để xác nhận khuôn mặt dựa trên các đặc trưng như thế nào,

4 Điểm đánh giá đề tài: 6.5/10 (Bằng chữ: Sáu rưỡi)

Tp Hồ Chí Minh, ngày 12 tháng 1 năm 2022

Giáo viên phản biện

Trang 8

LỜI CẢM ƠN

Trước tiên với tình cảm sâu sắc và chân thành, cho phép em được bày tỏ lòng biết ơn đến tất cả các thành viên trong lớp và các thầy cô trong trường đã tạo điều kiện hỗ trợ, giúp đỡ em trong suốt quá trình học tập và nghiên cứu Đồ án tốt nghiệp Trong suốt thời gian từ khi bắt đầu học tập tại trường đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý thầy cô và bạn bè

Và đặc biệt em xin gửi lời cảm ơn sâu sắc nhất đến TS Trần Vũ Hoàng, giảng viên Bộ môn Điều Khiển - Tự Đông Hoá - Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh, người đã tận tình hướng dẫn, chỉ bảo em trong suốt quá trình làm

Đồ án tốt nghiệp

Một lần nữa em xin cảm ơn các thầy cô giáo trong trường Đại Học Sư Phạm

Kỹ Thuật Thành Phố Hồ Chí Minh nói chung, các thầy cô trong Bộ môn Điều Khiển

- Tự Đông Hoá nói riêng đã dạy dỗ cho em những kiến thức về các môn đại cương cũng như các môn chuyên ngành, giúp em có được cơ sở lý thuyết vững vàng và tạo điều kiện giúp đỡ chúng em trong suốt quá trình học tập

Trong quá trình nghiên cứu, tìm hiểu và thực hiện đề tài sẽ không tránh khỏi những sai sót Em mong nhận được sự góp ý từ quý thầy cô để đề tài được hoàn thiện hơn và có thể ứng dụng trên thực tế

Cuối cùng em xin dành lời cám ơn chân thành nhất đến mẹ của mình, chỗ dựa tinh thần vững chắc của em suốt cả con đường học vấn của mình

Em xin chân thành cảm ơn!

Trang 9

LỜI CAM ĐOAN

Người nghiên cứu thực hiện đồ án cam đoan không sao chép nội dung và kết quả của các công trình khác Các nội dung tham giảo đã được trích dẫn đầy đủ

Người thực hiện đồ án tốt nghiệp

(Ký & ghi rõ họ tên)

Trang 10

TÓM TẮT

Trải qua nhiều đợt dịch COVID-19, các doanh nghiệp trên khắp thế giới, đặc biệt tại Việt Nam đã nhận ra tính cấp thiết của việc chuyển đổi số, nơi mà trí tuệ nhân tạo đóng một vai trò ngày càng to lớn Các ứng dụng và giải pháp tự động hoá áp dụng trí tuệ nhân tạo ngày một nhiều, đặc biệt phải kể đến các ứng dụng nhận dạng khuôn mặt đang càng được nhiều doanh nghiệp, cơ sở nghiên cứu quan tâm Hệ thống nhận dạng khuôn mặt đang trở thành xu hướng bắt buộc trong xã hội hiện đại Các ứng dụng như giám sát, chấm công, bảo mật đều có thể sử dụng công nghệ nhận dạng khuôn mặt để thay thế những phương pháp thẻ vật lý truyền thống Nhưng để ứng dụng rộng rãi các hệ thống trên công nghệ nhận dạng khuôn mặt phải đáp ứng 3 yêu cầu: độ chính xác cao, tốc độ xử lý thời gian thực, chi phí thấp Các hệ thống hiện đại thường giải quyết bằng cách thu thập và huấn luyện các mô hình học sâu, nhưng để làm được điều này chúng ta phải tiến hành thu thập và dán nhãn số lượng lớn dữ liệu, điều mà rất tốn nhiều thời gian và công sức Vì thế, trong nghiên cứu này, tác giả sẽ

đề xuất thiết kế một hệ thống nhận dạng khuôn mặt không yêu cầu nhiều dữ liệu, không cần train lại mà vẫn đạt được các yêu cầu trên Bên cạnh đó là cung cấp khả năng đăng ký, quản lý khuôn mặt một cách dễ dàng và thuận tiện cho người sử dụng

Để thực hiện đề tài “Giải pháp quản lý và nhận dạng khuôn mặt hiệu suất

cao”, người nghiên cứu sẽ phải nghiên cứu và khảo sát các mô hình học sâu có khả

năng phát hiện và trích xuất các đặc trưng khuôn mặt và đây nền tảng chính để nhận dạng khuôn mặt một cách nhanh chóng và chính xác Nghiên cứu cách ứng dụng các

mô hình học sâu để thiết kế các tính năng phụ trợ đăng ký khuôn mặt tự động, bên cạnh tính năng chính là nhận dạng khuôn mặt Cuối cùng là nghiên cứu nền tảng thiết

kế ứng dụng để xây dựng hệ thống tương tác người dùng đơn giản, hiệu quả, thân thiện với người dùng

Sau thời gian nghiên cứu thực hiện, hệ thống đã hoàn thành và đang thực nghiệm Đáp ứng tất cả các yêu cầu đã đề ra Hệ thống đã có thể nhận dạng khuôn mặt ở nhiều góc độ, phân biệt được các nhận dạng khác nhau ở cự ly gần, tự động hoá quá trình đăng ký khuôn mặt mới và giúp người sử dụng quản lý các khuôn mặt

đã đăng ký, giám sát các khuôn mặt đã sử dụng hệ thống nhận dạng Hệ thống được chạy trên nền tảng Linux, MacOS thời gian khởi động nhanh xấp xỉ 3 giây Hệ thống hoạt động ổn định, FPS đạt 27 khung hình/giây không có hiện tượng giật lag, độ chính xác cao lên tới 99%

Trang 11

MỤC LỤC

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ii

PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN iii

LỜI CẢM ƠN v

LỜI CAM ĐOAN vi

TÓM TẮT vii

MỤC LỤC viii

DANH MỤC CÁC TỪ VIẾT TẮT x

DANH MỤC CÁC BẢNG BIỂU xi

DANH MỤC HÌNH ẢNH BIỂU ĐỒ xii

Chương 1: TỔNG QUAN 1

1.1 Giới thiệu tình hình nghiên cứu hiện nay 1

1.2 Mục tiêu nghiên cứu: 1

1.3 Nhiệm vụ nghiên cứu 2

1.4 Giới hạn đề tài 2

1.5 Đối tượng và phạm vi nghiên cứu 2

1.6 Phương ph́áp nghiên cứu 3

1.7 Bố cục của Đồ án 3

Chương 2: CƠ SỞ LÝ THUYẾT 4

2.1 Model phát hiện khuôn mặt (Face Detection Model) 4

2.1.1 Tổng quan về MediaPipe 4

2.1.2 Mô hình BlazeFace trong MediaPipe 4

2.1.2.1 Phát hiện đối tượng (Object Detection) 5

2.1.2.2 RCNN – Mạng tích chập nơ ron phát hiện đối tượng 6

2.1.2.3 SSD – Single Shot Multibox Detector 7

2.1.2.4 MobileNet – Mang model học sâu lên thiết bị di động 13

2.1.2.5 Những cải tiến ở mô hình phát hiện khuôn mặt BlazeFace 17 2.1.3 Output của Model BlazeFace 19

2.1.4 Các thông số quan trọng của BlazeFace 19

2.2 Model trích xuất đặc trưng khuôn mặt Dlib Face Recognition 20

Trang 12

2.2.1 Tổng quan về Dlib 20

2.2.2 Dlib Face Recognition 20

2.2.3 Các thông số quan trọng của Dlib Face Recognition: 23

2.3 Phần mềm thiết kế giao diện ứng dụng QT Designer 23

Chương 3: THIẾT KẾ HỆ THỐNG 25

3.1 Yêu cầu của hệ thống 25

3.1.1 Sơ đồ khối hệ thống 25

3.1.2 Chức năng của hệ thống 25

3.2 Thiết kế hệ thống 26

3.2.1 Khảo sát các phương pháp 26

3.2.1.1 Khảo sát phương pháp phát hiện khuôn mặt 26

3.2.1.2 Kiến trúc model BlazeFace 29

3.2.1.3 Khảo sát phương pháp trích xuất đặc trưng khuôn mặt 31

3.2.1.4 Kiến trúc model Dlib Face Recognition 33

3.2.2 Phương pháp thực hiện 36

3.2.2.1 Đăng ký khuôn mặt: 36

3.2.2.2 Nhận dạng khuôn mặt: 38

3.3 Giao diện và chức năng hệ thống: 39

3.3.1 Giao diện khâu quản lý, đăng ký: 39

3.3.2 Giao diện khâu nhận dạng 43

Chương 4: KẾT QUẢ THỰC NGHIỆM 46

4.1 So sánh các hệ thống nhận dạng 46

4.2 Kết quả hoạt động của hệ thống 47

4.3 Đánh giá hệ thống 48

4.3.1 Môi trường và dữ liệu 48

4.3.2 Kết quả 48

Chương 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 57

5.1 Kết luận 57

5.2 Hướng phát triển 57

TÀI LIỆU THAM KHẢO 58

PHỤ LỤC 60

Trang 13

DANH MỤC CÁC TỪ VIẾT TẮT

ML: Machine Learning

AP: Average Precision

FPS: Frames per second

CPU: Central Processing Unit

GPU: Graphics Processing Unit

IoU: Intersection Over Union

Bbox: Bounding Box

DFR: Dlib Face Recognition

Trang 14

DANH MỤC CÁC BẢNG BIỂU

Bảng 2.1: Kết quả thử nghiệm trên bộ dataset Pascal VOC2007 8

Bảng 2.2: Kết quả so sánh giữa các model, thử nghiệm trên điện thoại Pixel 1 17 Bảng 2.3: Kết quả so sánh độ chính xác và tốc độ của model trên tập Dataset 2K ảnh sau khi train trên tập Dataset 60K ảnh 18

Bảng 3.1: Cấu hình máy tính thử nghiệm 27

Bảng 3.2: Kết quả tốc độ thực thi giữa các mô hình 27

Bảng 3.3: Ưu và nhược điểm của mỗi model phát hiện khuôn mặt 28

Bảng 3.4: Kiến trúc của mạng trích xuất đặc trưng trong model BlazeFace 30

Bảng 3.5: Độ chính xác trung bình của 2 model trên tập LFW 32

Bảng 3.6: So sánh tốc độ thực thi 32

Bảng 3.7: Cấu tạo mạng Resnet-34 34

Bảng 4.1: Cấu hình hệ thống thực nghiệm 46

Bảng 4.2: Tốc độ thực thi của 2 hệ thống 46

Bảng 4.3: Thực nghiệm trong môi trường ánh sáng tốt 49

Bảng 4.4: Thực nghiệm trong môi trường điều kiện ngược sáng 51

Bảng 4.5: Thực nghiệm trong môi trường điều kiện thiếu sáng 54

Bảng 4.6: Thực nghiệm hệ thống với đối tượng ở xa (~2.5m) 55

Bảng 5.1: Bảng đánh giá ưu-nhược điểm của hệ thống 57

Trang 15

DANH MỤC HÌNH ẢNH BIỂU ĐỒ

Hình 2.1: Tổng quan cách hoạt động của R-CNN 6

Hình 2.2: Kiến trúc mạng của SSD300 8

Hình 2.3: Cách thức phân chia feature map để nhận diện các hình ảnh với những kích thước khác nhau 10

Hình 2.4: Các default bounding boxes với tỷ lệ kích thước khác nhau trên mỗi cell của mỗi feature map 10

Hình 2.5: Tích chập 2 chiều thông thường với 5 bộ lọc 3x3x3 13

Hình 2.6: Quá trình tính toán tích chập với bộ lọc 14

Hình 2.7: Tích chập tách biệt chiều sâu 14

Hình 2.8: Tích chập chiều sâu 15

Hình 2.9: Tích chập điểm 16

Hình 2.10: Khối nghẽn cổ chai trong MobileNet v2 16

Hình 2.11: Khối nghẽn cổ chai của BlazeFace đơn (trái), đôi (phải) 17

Hình 2.12: Số lượng default bounding box: SSD (trái) và BlazeFace (phải) 18

Hình 2.13: Bounding box và 6 điểm đặc trưng trên khuôn mặt (màu đỏ) 19

Hình 2.14: Quá trình nhận dạng khuôn mặt 20

Hình 2.15: Chỉnh hướng khuôn mặt 20

Hình 2.16: Quá trình học của mạng để tạo ra 128 đo lường từ khuôn mặt người. 22

Hình 2.17: Giao diện chính của QT Designer 24

Hình 3.1: Sơ đồ khối hệ thống 25

Hình 3.2: Quá trình nhận dạng khuôn mặt 26

Hình 3.3: Kiến trúc model BlazeFace 29

Hình 3.4: Single Blazeblock (trái), Double BlazeBlock (phải) 29

Hình 3.5: Một số hình ảnh được trích xuất từ tệp dữ liệu LFW 32

Hình 3.6: Tổng quan model trích xuất đặc trưng Dlib Face Recognition 33

Hình 3.7: Kiến trúc mạng ResNet-34 33

Hình 3.8: Khối nối tắt Residual 33

Hình 3.9: Tính toán output shape của layer Conv 34

Hình 3.10: Tính toán output shape của layer Conv2 35

Hình 3.11: Lưu đồ giải thuật đăng ký khuôn mặt 36

Hình 3.12: Lưu đồ giải thuật nhận diện cho từng khuôn mặt 38

Hình 3.13: Màn hình chính của khâu quản lý, đăng ký 39

Trang 16

Hình 3.14: Giao diện trang quản lý các khuôn mặt đã được đăng ký 39

Hình 3.15: Giao diện lịch sử nhận dạng 40

Hình 3.16: Thư mục chứa ảnh lịch sử nhận dạng 40

Hình 3.17: Nhập tên người cần đăng ký 41

Hình 3.18: Khuôn mặt đã trong khung định trước, hiển thị khung màu xanh và yêu cầu người dùng quay sang trái 41

Hình 3.19: Khuôn mặt không nằm trong khung định trước, hiển thị khung màu đỏ. 42

Hình 3.20: Sau khi quay trái, hệ thống sẽ yêu cầu người quay sang phải 42

Hình 3.21: Sau khi quay phải, yêu cầu người đăng ký nhìn thẳng về phía camera 43

Hình 3.22: Màn hình tổng quan của module nhận dạng 43

Hình 3.23: Nhận diện khuôn mặt thành công người sử dụng tên “Yen” 44

Hình 3.24: Nhận diện khuôn mặt không thành công 44

Hình 3.25: Không phát hiện bất cứ khuôn mặt nào 45

Hình 3.26: Hiển thị nhận dạng thời gian thực lên màn hình 45

Hình 4.1: Nhận dạng nhiều khuôn mặt cùng lúc 47

Hình 4.2: Phân biệt người đã đăng ký và chưa đăng ký 48

Hình 4.3: Nhận dạng trong điều kiện ánh sáng tốt 49

Hình 4.4: Đối tượng nhận dạng đeo kiếng mát 50

Hình 4.5: Đối tượng nhận dạng đeo khẩu trang 50

Hình 4.6: Đối tượng đeo khẩu trang hoàn toàn 51

Hình 4.7: Nhận dạng mặt bên trong điều kiện ngược sáng 52

Hình 4.8: Nhận dạng mặt trực diện trong điều kiện ngược sáng 52

Hình 4.9: Nhận dạng khi đeo kính mát cỡ lớn trong môi trường ngược sáng 53

Hình 4.10: Nhận dạng trong điều kiện ngược sáng 53

Hình 4.11: Nhận diện mặt bên trong môi trường thiếu sáng 54

Hình 4.12: Nhận diện khuôn mặt trong môi trường thiếu sáng 55

Hình 4.13: Nhận dạng khuôn mặt ở xa (~ 2.5m) 56

Trang 17

Chương 1:

TỔNG QUAN

1.1 Giới thiệu tình hình nghiên cứu hiện nay

Trong nước: Hiện tại ở Việt Nam, những ứng dụng liên quan đến lĩnh vực nhận dạng khuôn mặt thường là những sản phẩm trí tuệ thuộc các công ty dịch vụ bảo vệ

tư nhân cụ thể như công ty Alsok Việt Nam, họ cung cấp những hệ thống, dịch vụ đóng sử dụng phần cứng chuyên dụng Vì vậy, phần lớn người sử dụng phổ thông sẽ không thể tiếp cận được với các công nghệ mới do chi phí cao và ngăn chặn sự phát triển, cạnh tranh ở nước ta

Ngoài nước: Ứng dụng công nghệ nhận diện khuôn mặt hiện tại đã và đang là

xu hướng ở các nước phát triển, từ camera an ninh cho đến điện thoại di động đều được nhiều công ty, đại học lớn nghiên cứu và phát triển Từ những năm đầu 2000, các nhà khoa học đã cố gắng phát triển các thuật toán xử lý ảnh để giải quyết bài toán phát hiện và nhận dạng khuôn mặt nhưng còn còn nhiều giới hạn về tốc độ và độ chính xác Cho tới năm 2015, với sự nở rộ của máy học đặc biệt là học sâu, nhiều mô hình phát hiện và trích xuất đặc trưng khuôn mặt với độ chính xác và tốc độ cao được nghiên cứu và phát triển Cụ thể phương pháp phát hiện khuôn mặt sử dụng thư viện OpenCV DNN [1], được thiết kế dựa trên mạng thần kinh học sâu hiện đại OpenCV DNN Face Detector giải quyết vấn đề nhận dạng khuôn mặt từ nhiều góc khác nhau [2], điều mà những thuật toán cũ như Haar Cascade không thể làm được Tuy nhiên, vấn đề của các detector ứng dụng học sâu là đòi hỏi phần cứng xử lý đồ hoạ mạnh

mẽ để đạt tốc độ xử lý cao [3], cho nên các thuật toán xử lý ảnh truyền thống như Haar Cascade vẫn được phát triển để phát hiện khuôn mặt ở những năm gần đây [4]

Vì thế, ở nghiên cứu này, người nghiên cứu quyết định nghiên cứu, phát triển

đề tài “Giải pháp quản lý và nhận diện khuôn mặt hiệu suất cao”, có thể chạy tốt trên phần cứng giới hạn mà vẫn giữ được độ chính xác cũng như tốc độ và tính khả dụng trong môi trường thực tế

1.2 Mục tiêu nghiên cứu:

Mục tiêu nghiên cứu của đề tài này là thiết kế hệ thống quản lý và nhận dạng khuôn mặt với các chức năng: nhận dạng khuôn mặt bằng webcam, đăng ký và quản

lý các khuôn mặt đã được đăng ký và cuối cùng là giám sát và lưu lại lịch sử nhận dạng

Trang 18

1.3 Nhiệm vụ nghiên cứu

Đề tài được thực hiện với các nhiệm vụ nghiên cứu sau:

- Nhiệm vụ 1: Khảo sát đề tài, tham khảo tài liệu, đọc và tóm tắt đưa ra

hướng và lựa chọn đề tài

- Nhiệm vụ 2: Viết đề cương tóm tắt các yêu cầu của đề tài, thiết kế sơ đồ

khối, giải thích thức năng của các khối

- Nhiệm vụ 3: Nghiên cứu lựa chọn các phương pháp giải quyết yêu cầu

- Nhiệm vụ 6: Nghiên cứu nền tảng thiết kế giao diện cho hệ thống

- Nhiệm vụ 7: Tiến hành thiết kế lưu đồ chương trình chính và thi công

Đề tài chỉ tập trung xây dựng hệ thống nghiên cứu nhận dạng khuôn mặt 2D ở

cự ly gần, cần môi trường ánh sáng nhất định Hệ thống tập trung nhận dạng khuôn mặt đa hướng, gồm trực diện, cạnh bên

1.5 Đối tượng và phạm vi nghiên cứu

Đối tượng nghiên cứu:

- Model phát hiện + trích xuất đặc trưng khuôn mặt để ứng dụng trong việc nhận dạng khuôn mặt người dùng

- Nghiên cứu phát triển giao diện, dễ dàng quản lý, thân thiện người dùng

Phạm vi nghiên cứu:

sự kiện phát hiện khuôn mặt của hệ thống Hệ thống có thể được lắp đặt như một thiết

bị giám sát, xác nhận khuôn mặt ở thang máy, văn phòng hoặc làm giải pháp thay thế

Trang 19

ứng dụng chấm công bằng thẻ Bên cạnh đó, ứng dụng cũng giúp người sử dụng hiệu chỉnh camera quan sát trong từng điều kiện môi trường cụ thể Ứng dụng thực hiện trên nền tảng Linux, MacOS để dễ dàng triển khai và hiệu quả

1.6 Phương ph́áp nghiên cứu

Phân tích đánh giá các phương pháp phát hiện và trích xuất đặc trưng khuôn mặt để lựa chọn phương pháp phù hợp cho hệ thống

Nghiên cứu phân tích đặc điểm của các model học sâu Từ đó lấy cơ sở để phát triển hệ thống

Phân tích, đánh giá hệ thống

1.7 Bố cục của Đồ án

Chương 1: GIỚI THIỆU

Chương 2: CƠ SỞ LÝ THUYẾT

(Chương 2 sẽ tìm hiểu cơ sở lý thuyết nhận dạng khuôn mặt, model phát hiện

và trích xuất đặc trưng khuôn mặt Face Detection and Feature Extraction models, phần mềm hỗ trợ lập trình và phần mềm hỗ trợ thiết kế giao diện hệ thống.)

Trang 20

Chương 2:

CƠ SỞ LÝ THUYẾT

2.1 Model phát hiện khuôn mặt (Face Detection Model)

Mô hình phát hiện khuôn mặt là là mô hình học sâu thực hiện chức năng xác định và trích xuất các điểm (landmarks) trên khuôn mặt Các mô hình học sâu phát hiện khuôn mặt đã được nhiều công ty và chính phủ đặc biệt quan tâm những năm gần đây, ứng dụng trong rất nhiều lĩnh vực như: giám sát, bảo mật, điều khiển tự động, Vì thế, ở thời điểm hiện tại có rất nhiều mô hình phát hiện khuôn mặt, và mô hình BlazeFace [5] với các ưu điểm sẽ được trình bài ở các phần tiếp theo Để hiểu hơn về nguồn gốc của mô hình BlazeFace này, chúng ta sẽ tìm hiểu về thư viện MediaPipe [6] một thư viện máy học về thị giác máy tính đang rất phổ biến từ năm

2020

2.1.1 Tổng quan về MediaPipe

MediaPipe [6] là một thư viện mã nguồn mở được nghiên cứu và phát triển bởi Google Với mục tiêu là cung cấp các giải pháp máy học đa nền tảng (PC: Linux, Windows; Mobile: Android, iOS; Web) và đa ngôn ngữ (Python, C++, JavaScript…), hầu hết các model trong thư viện MediaPipe đều có chung đặc điểm là: tốc độ xử lý nhanh, nhẹ và không kém phần chính xác Hiện nay MediaPipe cung cấp các mô hình học sâu cho các ứng dụng quan trọng trong thị giác máy tính như: phát hiện mống mắt, phân đoạn tóc, phát hiện tư thế,… Và đặc biệt, Model quan trọng được người nghiên cứu sử dụng đó là Model phát hiện khuôn mặt BlazeFace [5] trong thư viện MediaPipe [6]

2.1.2 Mô hình BlazeFace trong MediaPipe

BlazeFace [5] là một bộ phát hiện khuôn mặt (Face Detector) cực kỳ nhẹ và chính xác Để đạt được tốc độ và độ chính xác trên, mô hình BlazeFace [5] được thiết

kế và cải tiến dựa trên kiến trúc mạng của mô hình SSD [7], một bộ phát hiện đối tượng (Object detector) tốc độ cao, kết hợp với mạng trích xuất đặc trưng vốn được thiết dành riêng cho các mô hình học sâu chạy trên thiết bị di động: MobileNet [8]

Để hiểu rõ hơn về các cải tiến mà BlazeFace mang lại, chúng ta sẽ tìm hiều sơ lược cách một mạng nơron học sâu có thể phát hiện ra đối tượng cần được phát hiện, cũng như kiến trúc và cách thức hoạt động của 2 mô hình học sâu: SSD [7] và

MobileNet [8] ở mục 2.1.2.1, 2.1.2.2, 2.1.2.3, 2.1.2.4 và 2.1.2.5

Trang 21

2.1.2.1 Phát hiện đối tượng (Object Detection)

Phát hiện đối tượng là một thuật ngữ chung để mô tả một tập hợp các nhiệm

vụ thị giác máy tính có liên quan liên quan đến việc xác định các đối tượng trong ảnh

kỹ thuật số

Phân loại hình ảnh liên quan đến việc dự đoán lớp của một đối tượng trong một hình ảnh Định vị vật thể đề cập đến việc xác định vị trí của một hoặc nhiều đối tượng trong một hình ảnh và vẽ bounding box xung quanh chúng Phát hiện đối tượng kết hợp hai nhiệm vụ trên và thực hiện cho một hoặc nhiều đối tượng trong hình ảnh Chúng ta có thể phân biệt giữa ba nhiệm vụ thị giác máy tính cơ bản trên thông qua input và output của chúng như sau:

Phân loại hình ảnh: Dự đoán nhãn của một đối tượng trong một hình ảnh

nhãn lớp)

Định vị đối tượng: Xác định vị trí hiện diện của các đối tượng trong ảnh và

cho biết vị trí của chúng bằng bounding box

bức ảnh

chiều rộng và chiều cao

Phát hiện đối tượng: Xác định vị trí hiện diện của các đối tượng trong

bounding box và nhãn của các đối tượng nằm trong một hình ảnh

bức ảnh

Ở các phần tiếp theo chúng ta sẽ tìm hiểu các thuật toán học sâu dùng trong bài toán phát hiện đối tượng nói chung và phát hiện khuôn mặt nói riêng, bao gồm các họ mô hình mạng R-CNN [9] (regions with CNN features), SSD [7] và BlazeFace [5]

Trang 22

2.1.2.2 RCNN – Mạng tích chập nơ ron phát hiện đối tượng

R-CNN [9] được giới thiệu lần đầu vào 2014 bởi Ross Girshick và các cộng

sự ở UC Berkeley một trong những trung tâm nghiên cứu AI hàng đầu thế giới trong bài báo “Rich feature hierarchies for accurate object detection and semantic segmentation.”

Nó có thể là một trong những ứng dụng nền móng đầu tiên của mạng nơ ron tích chập đối với vấn đề phát hiện đối tượng Cách tiếp cận này đã được chứng minh

là hiệu quả trên các bộ dữ liệu điểm chuẩn, đạt được kết quả tốt nhất trên bộ dữ liệu VOC-2012 và bộ dữ liệu phát hiện đối tượng ILSVRC-2013 gồm 200 lớp

Kiến trúc của R-CNN [9] gồm 4 thành phần như hình 2.1 đó là:

Ảnh đầu vào (Input Image)

Vùng đề xuất hình ảnh (Region proposal): Có tác dụng tạo và trích xuất các

vùng đề xuất chứa vật thể được bao bởi các bounding box

Trích lọc đặc trưng (Feature Extractor): Trích xuất các đặc trưng giúp nhận

diện hình ảnh từ các region proposal thông qua các mạng tích chập nơ ron sâu (deep convolutional neural network)

Phân loại (Classifier): Dựa vào input là các features ở phần trước để phân

loại hình ảnh chứa trong region proposal về đúng nhãn

Kiến trúc của mô hình được mô tả trong biểu đồ bên dưới:

Hình 2.1: Tổng quan cách hoạt động của R-CNN

Trang 23

Một kỹ thuật được sử dụng để đề xuất các vùng đề xuất hình ảnh (region proposal) hoặc các bounding box chứa các đối tượng tiềm năng trong hình ảnh được gọi là “selective search”, các vùng đề xuất hình ảnh có thể được phát hiện bởi đa dạng những thuật toán khác nhau Nhưng điểm chung là đều dựa trên tỷ lệ IoU giữa bounding box và ground truth box

Trích xuất đặc trưng về bản chất là một mạng CNN học sâu, ở đây là AlexNet [10], mạng đã giành chiến thắng trong cuộc thi phân loại hình ảnh ILSVRC-2012 Đầu ra của CNN là một vectơ 4096 chiều mô tả nội dung của hình ảnh được đưa đến một mô hình SVM tuyến tính để phân loại

Đây là một ứng dụng tương đối đơn giản và dễ hiểu của CNN đối với vấn đề định vị vật thể và phát hiện vật thể Một nhược điểm của phương pháp này là chậm, đòi hỏi phải vượt qua nhiều module độc lập trong đó có trích xuất đặc trưng từ một mạng CNN học sâu trên từng vùng đề xuất hình ảnh được tạo bởi thuật toán đề xuất vùng chứa ảnh Đây là một vấn đề chính cần giải quyết vì bài viết mô tả mô hình hoạt động trên khoảng 2000 vùng được đề xuất cho mỗi hình ảnh tại thời điểm thử nghiệm

Để giải quết những nhược điểm kể trên của mạng R-CNN [9], Fast R-CNN [11] và Faster R-CNN [12] lần lượt ra đời Tuy nhiên, cả 3 kiến trúc mạng vẫn dựa trên thuật toán gồm 2 phần xử lý riêng biệt: phát hiện các vùng đề xuất và phân loại hình ảnh Phát hiện các vùng đề xuất hình ảnh và trích xuất đặc trưng của từng vùng

đề xuất hình ảnh bằng mạng CNN học sâu tiêu tốn nhiều tài nguyên và thời gian, vì thế các các mạng R-CNN rất hiếm được sử dụng trong thực tế vì đòi hỏi thiết bị phần cứng vô cùng mạnh mẽ để có thể chạy trong thời gian thực được

2.1.2.3 SSD – Single Shot Multibox Detector

Mô hình phát hiện khuôn mặt BlazeFace được thiết kế dựa trên cấu trúc mạng của cũng như cách thức hoạt động của SSD [7] Vì thế ở phần này, chúng ta sẽ làm

rõ cách thức hoạt động, kiến trúc và ưu điểm của nó so với mạng R-CNN [9] để hiểu được tại sao BlazeFace lại chọn nó làm nền tảng phát triển của mình

Cũng giống như hầu hết các kiến trúc phát hiện vật thể dựa trên mạng nơ rơn tích chập khác, đầu vào của SSD [7] là các tọa độ gồm tâm của bounding box (x, y) và chiều dài, chiều rộng (w, h) của bounding box chứa vật thể (hay còn gọi là offsets của bounding box) và nhãn của vật thể chứa trong bounding box Điểm đặc biệt làm nên tốc độ của SSD [7] model là mô hình sử dụng một mạng nơ rơn duy nhất Cách tiếp cận của nó dựa trên việc nhận diện vật thể trong các feature map (là một output shape 3D của một mạng deep CNN sau khi bỏ các fully connected layers cuối) có độ phân giải khác nhau Mô hình sẽ tạo ra một lưới các ô vuông gọi là grid

Trang 24

cells trên các feature map, mỗi ô được gọi là một cell và từ tâm của mỗi cell xác định một tập hợp các boxes mặc định (default boxes) để dự đoán khung hình có khả năng bao quanh vật thể Tại thời điểm dự báo, mạng nơ ron sẽ trả về 2 giá trị đó là: phân phối xác suất nhãn của vật thể chứa trong bounding box và một tọa độ gọi là offsets Quá trình huấn luyện cũng là quá trình tinh chỉnh xác suất nhãn và bounding box về đúng với các giá trị ground truth input của mô hình (gồm nhãn và offsets bounding box)

Thêm nữa, network được kết hợp bởi rất nhiều các feature map với những độ phân giải khác nhau giúp phát hiện được những vật thể đa dạng các kích thước và hình dạng Trái với mô hình fast R-CNN [10], SSD [7] bỏ qua bước tạo mặt nạ region proposal network để đề xuất vùng vật thể Thay vào đó tất cả quá trình phát hiện vật thể và phân loại vật thể được thực hiện trong cùng 1 mạng Bản thân tên của mô hình

- Single Shot MultiBox Detector cũng nói lên được rằng mô hình sử dụng nhiều khung hình box với tỷ lệ (scales) khác nhau nhằm nhận diện vùng vật thể và phân loại vật thể, giảm thiểu được bước tạo region proposal network so với fast R-CNN

nên tăng tốc độ xử lý lên nhiều lần, cụ thể kết quả ở Bảng 2.1

Bảng 2.1: Kết quả thử nghiệm trên bộ dataset Pascal VOC2007

Ta thấy SSD512 có độ chính xác trung bình là cao nhất 76.8% trong khi tốc

độ xử lý gần đạt mức thời gian thực là 22 fps

Hình 2.2: Kiến trúc mạng của SSD300

Trang 25

Các layer của mô hình SSD (hình 2.2):

Input Layer: Nhận input đầu vào là các bức ảnh có kích thước (width x height

x channels) = 300x300x3 đối với kiến trúc SSD300

Conv5_3 Layer: Chính là mạng trích xuất đặc trưng sử dụng kiến trúc của

VGG16 nhưng loại bỏ một số lớp kết nối đầy đủ (layers fully connected) ở cuối cùng Output của layer này chính là Conv4_3 Layer và là một feature map

có kích thước 38 x 38 x 512

Conv4_3 Layer: Ta có thể coi Conv4_3 là một feature map có kích thước 38

x 38 x 512 Trên feature map này ta sẽ áp dụng 2 biến đổi chính đó là:

Áp dụng một tầng tích chập (convolutional layer) như một mạng CNN thông thường để thu được output layer tiếp theo Cụ thể tầng tích chập (convolutional layer) có bộ lọc tích chập kích (convolution filter) thước 3x3x1024, đầu ra thu được Conv6 có kích thước là 19x19x1024 Đồng thời ở bước này ta cũng áp dụng một bộ phân loại và cũng dựa trên bộ lọc tích chập kích thước 3x3 để nhằm nhận diện vật thể trên feature map Đây là một quá trình khá phức tạp vì

nó phải đảm bảo phát hiện vật thể (thông qua phát hiện bounding box) và phân

loại vật thể Quá trình này thực hiện tương tự như mô tả ở hình 2.3 Đầu tiên

ta sẽ phân chia feature map kích thước 38x38x512 thành một grid cell kích thước 38x38 (bỏ qua độ sâu kênh vì ta sẽ thực hiện tích chập trên toàn bộ độ sâu kênh) Sau đó mỗi một cell trên grid cell sẽ tạo ra 4 default bounding boxes

với các tỷ lệ khung khác nhau (aspect ratio) hình 2.4, mỗi một default

bounding box ta cần tìm các tham số sau: phân phối xác suất của nhãn (class)

là một véc tơ có n_classes + 1 chiều (Lưu ý số lượng classes luôn cộng thêm

1 để bao gồm phần nền) Đồng thời chúng ta cần thêm 4 tham số là offsets để xác định bounding box của vật thể trong khung hình Do đó trên một default bounding box sẽ có n_classes + 4 tham số và trên 1 cell sẽ có 4*(n_classes+4) output cần dự báo Nhân với số cells của Conv4_3 để thu được số lượng output

là một tensor kích thước 38x38x4x(n_classes+5), trong trường hợp coi nền (background) cũng là 1 nhãn thì tensor có kích thước 38x38x4x(n_classes+4)

Và số lượng các bounding box được sản sinh ra là 38 x 38 x 4

các layer Conv7, Conv8_2, Conv_9, Conv10_2, Conv11_2 Shape của các layer sau sẽ phụ thuộc vào cách thức áp dụng tích chập (convolutional process)

ở layer trước, kích thước kernel filter (như trong sơ đồ trên thì kernel_size luôn

là 3 x 3) và stride (độ lớn bước nhảy) của tích chập Trên mỗi cell thuộc feature

Trang 26

map ta xác định một lượng 4 hoặc 6 các default bounding boxes Do đó, số lượng các default boxes sản sinh ra ở các layers tiếp theo lần lượt như sau:

Conv7: 19×19×6 = 2166 boxes (6 boxes/cell)

Conv8_2: 10×10×6 = 600 boxes (6 boxes/cell)

Conv9_2: 5×5×6 = 150 boxes (6 boxes/cell)

Conv10_2: 3×3×4 = 36 boxes (4 boxes/cell)

Conv11_2: 1×1×4 = 4 boxes (4 boxes/cell) Tổng số lượng các boxes ở output

sẽ là: 5776 + 2166 + 600 + 150 + 36 + 4 = 8732 Tức là chúng ta cần phải dự đoán 8732 box mỗi class trong khung hình ở output

𝑦𝑇 = (𝑜𝑓𝑓𝑠𝑒𝑡, 𝑠𝑐𝑜𝑟𝑒𝑠 𝑜𝑓 𝑐𝑙𝑎𝑠𝑠𝑒𝑠) = (𝑥, 𝑦, 𝑤, ℎ, 𝑐1, 𝑐2, … , 𝑐𝑛) (2.1)

bounding box có điểm dự đoán cao nhất và loại bỏ các bounding box với IoU

> 0.5 so với các bounding box với điểm dự đoán cao nhất trước đó

Hình 2.3: Cách thức phân chia feature map để nhận diện các hình ảnh với

những kích thước khác nhau

Hình 2.4: Các default bounding boxes với tỷ lệ kích thước khác nhau trên mỗi

cell của mỗi feature map

Trang 27

Tóm gọn lại quá trình phát hiện vật thể của mô hình SSD sẽ là sự kết hợp của 3 bước:

- Trích xuất các feature map từ mạng CNN

- Áp dụng default bounding boxes để phát hiện vật thể trên các feature map có

độ phân giải khác nhau Điều này cho phép các default bounding box phân biệt hiệu quả kích thước vật thể khác nhau

- Cuối cùng sử dụng “non-max suppression” để giữ lại các bounding box với điểm dự đoán cao nhất

Huấn luyện mô hình SSD để tìm ra object: Việc dự báo các object sẽ được

số đánh giá cho việc matching giữa default bounding box thứ i với ground truth box thứ j đối với nhãn thứ k Trong quá trình mapping chúng ta có thể có nhiều bounding

1 Hàm loss function là tổng có trọng số của 2 hàm localization loss (loc) và confidence loss (conf):

1 ( , , , ) ( ( , ) ( , , ))

Localization loss: là một hàm Smooth L1 đo lường sai số giữa tham số của

box dự báo (predicted box) (p) và box thực (ground truth box) (g) như bên dưới:

ˆ

1 { , , , }

1

0.5 if | | 1( )

Trang 28

 Độ scale theo chiều dài và rộng (pw, ph) của predicted box so với chiều dài và rộng (dw, dh) của ground truth box:

Confidence loss: là một hàm mất mát được tính toán dựa trên sai số dự báo

nhãn Đối với mỗi một positive match prediction, chúng ta phạt loss function theo confidence score của các nhãn tương ứng Đối với mỗi một negative match prediction, chúng ta phạt loss function theo confidence score của nhãn

‘0’ là nhãn đại diện cho background không chứa vật thể Cụ thể hàm confidence loss như bên dưới:

được dự báo là không chứa vật thể chúng ta sẽ chỉ có duy nhất một nhãn là 0

Và tất nhiên ta đã biết trước bounding box là không chứa vật thể nên xác xuất

Hàm loss function cuối cùng được tính là tổng của 2 confidence loss và

localization loss như công thức (2.2) Bằng cách tối thiểu hàm loss này bằng việc

huấn luyện mạng mô hình học sâu SSD [7] bằng đầu vào là một tập dữ liệu ảnh gồm bounding box chứa vật cần phát hiện (ground truth box), mạng có thể dự đoán bounding box vật thể trên các frame ảnh (predicted box) với độ chính xác cao như đã

so sánh ở bảng 2.1.

Trang 29

2.1.2.4 MobileNet – Mang model học sâu lên thiết bị di động

Model SSD [7] đã mang lại một hướng tiếp cận mới trong việc phát hiện và phân loại vật thể, giúp chúng ta có thể sử dụng mô hình học sâu thời gian thực Tuy nhiên, mạng CNN được sử dụng ở phần trích xuất các feature map, cơ bản còn đòi hỏi nhiều tài nguyên tính toán vốn còn rất hạn chế các thiết bị như di động, IoT Vì vậy, những mô hình số lượng tính toán ít và độ chính xác cao là giải pháp thay thế

mà chúng ta cần tìm MobileNet [8] là một trong những mô hình như vậy, trong phần này chúng ta sẽ tìm hiểu những kỹ thuật và cấu trúc mạng khiến MobileNet thành công trong việc mang các mô hình học sâu lên các thiết bị di động và IoT

Tích chập 2 chiều thông thường: Như chúng ta đã biết tích chập 2 chiều

thông thường là nền tảng của các mạng nơ rơn tích chập (CNN) Tích chập 2 chiều thông thường sẽ được tính toán trên toàn bộ chiều sâu (channel), do đó số lượng tham

số của mô hình sẽ gia tăng đáng kể phụ thuộc vào độ sâu của layer trước đó Chúng

ta có công thức tính tổng số tính toán của tích chập 2 chiều cụ thể như sau:

𝐶𝑜𝑚𝑝𝑢𝑡𝑎𝑡𝑖𝑜𝑛𝑎𝑙 𝑐𝑜𝑠𝑡 = #𝑓𝑖𝑙𝑡𝑒𝑟 𝑝𝑎𝑟𝑎𝑚𝑠 ∗ #𝑓𝑖𝑙𝑡𝑒𝑟 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛𝑠 ∗ #𝑓𝑖𝑙𝑡𝑒𝑟𝑠 (2.8)

Như vậy, với ví dụ hình 2.5, chúng ta sẽ cần (3 x 3 x 3) x (4 x 4) x 5 = 2160

phép tính sử dụng tích chập 2 chiều thông thường

Hình 2.5: Tích chập 2 chiều thông thường với 5 bộ lọc 3x3x3

Trang 30

Kích thước output của đầu ra (output shape) sau khi tích chập với bộ lọc có

thể tính bằng công thức sau, với mô tả bằng hình 2.6:

- P (padding): quá trình thêm P số không vào các biên của đầu vào

- S (stride): độ trượt S ký hiệu số pixel mà cửa sổ sẽ di chuyển sau mỗi lần thực hiện phép tính

Hình 2.6: Quá trình tính toán tích chập với bộ lọc

Kích thước output của hình 2.5 (output shape) sau khi tích chập với 5 bộ lọc

có kích thước là 3x3 là: 6 − 3 + 0

Tích chập tách biệt chiều sâu (Depthwise Separable Convolution): Chúng

ta nhận định rằng độ sâu là một trong những nguyên nhân chính dẫn tới sự gia tăng

số lượng tham số của mô hình Tích chập tách biệt chiều sâu sẽ tìm cách loại bỏ sự phụ thuộc vào độ sâu khi tích chập mà vẫn tạo ra được một output có kích thước tương đương so với tích chập thông thường Cụ thể quá trình sẽ được chia thành hai

bước tuần tự:

Hình 2.7: Tích chập tách biệt chiều sâu

Trang 31

- Tích chập chiều sâu (Depthwise Convolution): Chúng ta sẽ chia khối input

tensor3D thành những lát cắt ma trận theo độ sâu bằng 1 Thực hiện tích chập trên từng lát cắt ứng với mỗi filter (#filters = chiều sâu của input tensor) Mỗi một channel sẽ áp dụng một bộ lọc khác nhau và hoàn toàn không chia sẻ tham

số Điều này có ba tác dụng chính cho mô hình:

 Nhận diện đặc trưng: Quá trình học và nhận diện đặc trưng sẽ được tách biệt theo từng bộ lọc Nếu đặc trưng trên các kênh là khác xa nhau thì sử dụng các bộ lọc riêng cho kênh sẽ chuyên biệt hơn trong việc phát hiện các đặc trưng Chẳng hạn như đầu vào là ba kênh RGB thì mỗi kênh áp dụng một bộ lọc khác nhau chuyên biệt

 Giảm thiểu khối lượng tính toán: Để tạo ra một điểm pixel trên output thì tích chập thông thường cần sử dụng k×k×c phép tính trong khi tích chập chiều sâu tách biệt chỉ cần k×k phép tính

 Giảm thiếu số lượng tham số: Ở tích chập chiều sâu cần sử dụng c×k×k tham số Số lượng này ít hơn gấp c′ lần so với tích chập chiều sâu thông thường

Ở hình 2.8, chỉ cần tính (3 x 3) x (4 x 4) x 3 = 432 phép tính ở phần

tích chập chiều sâu

Hình 2.8: Tích chập chiều sâu

- Tích chập điểm (Pointwise Convolution): Có tác dụng thay đổi độ sâu của

output bước trên từ c sang c′ Chúng ta sẽ áp dụng c′ bộ lọc kích thước 1×1×c Như vậy, kích thước chiều ngang và chiều cao không thay đổi mà chỉ độ sâu

thay đổi Tương tự, ta có (1x1x3) x (4x4) x 5 = 240 phép tính ở hình 2.9

Trang 32

Hình 2.9: Tích chập điểm

Sử dụng tích chập tách biệt chiều sâu (Depthwise Separable Convolution), mô hình MobileNet v1 [8] chỉ cần tính: 432 + 240 = 672 phép tính so với 2160 phép tính cần tính sử dụng tích chập 2 chiều thông thường ở ví dụ trên, giảm gần 2160/672 = 3.2 lần số lượng tính toán

Hình 2.10 : Khối nghẽn cổ chai trong MobileNet v2

Ở phiên bản tiếp theo của MobileNet v1 [8], các nhà nghiên cứu đã đưa ra một

kiến trúc mạng cổ chai như hình 2.10, kiến trúc này gồm 3 phần chính: Phần mở rộng

(Expansion), phần tích chập tách biệt chiều sau (Depthwise Separable Convolution)

và Skip Connection Kiến trúc cổ trai này giúp mạng có thể học được nhiều feature phong phú nhờ phần Expansion làm tăng số lượng parameters lên bằng cách tăng số lượng kênh của input (tăng chiều sâu) và được sau đó nén lại ở phần Projection (Tích chập điểm) giúp giảm số lượng giá trị cần truyền trong mạng, giúp tiết kiệm tài nguyên hệ thống của các thiết bị di động, IoT Bên cạnh đó với Residual connection, mạng có thể học tốt hơn và tránh được tình trạng tiêu biến gradient khi mạng trở nên quá sâu Kết hợp cả 3 lại, MobileNet v2 không những làm model nhẹ hơn mà lại còn

chính xác hơn, cụ thể kết quả ở bảng 2.2

Trang 33

Bảng 2.2 : Kết quả so sánh giữa các model, thử nghiệm trên điện thoại Pixel 1

Convolution) và khối nghẽn cổ chai mà MobileNet v2 [13] có thể giảm được số lượng lớn các tính toán của mô hình mà không phải hy sinh nhiều độ chính xác

2.1.2.5 Những cải tiến ở mô hình phát hiện khuôn mặt BlazeFace

Như đã đề cập ở trên, BlazeFace [5] là sự kết hợp của 2 mô hình: MobileNet v2 [13] và SSD [7] giúp tăng tốc độ nhận dạng và có thể chạy tốt trên thiết bị có phần cứng giới hạn Tuy nhiên, không chỉ là sự kết hợp đơn thuần của 2 model, các nhà nghiên cứu còn đưa vào những tinh chỉnh trong kiến trúc mạng để giúp BlazeFace [5] trở nên nhanh và chính xác hơn

Tăng kích thước của trường thụ cảm (Receptive Field): Theo đánh giá của

các nhà nghiên cứu, họ thấy phần lớn số lượng tính toán của phép tích chập tách biệt chiều sâu (Depthwise Separable Convolution) nằm ở tích chập điểm Vì vậy, bằng cách tăng kích thước của trường thụ cảm từ 3x3 trong MobileNet v2 [13] lên 5x5

trong phần tích chập chiều sâu như hình 2.10, BlazeFace [5] giảm được số lượng

khối nghẽn cổ chai từ đó giảm được số lượng tính toán nhiều hơn nữa so với mạng MobileNet v2 [5] Bên cạnh đó, do phần tích chập chiều sâu có số lượng tính toán ít, các nhà nghiên cứu đặt thêm một khối tích chập chiều sâu 5x5 giữa hai khối tích chập

điểm 1x1 và cùng lúc chuyển vị trí 2 khối Expansion và Projection như hình 2.11,

giúp mạng có thể học nhanh và nhiều hơn

Hình 2.11 : Khối nghẽn cổ chai của BlazeFace đơn (trái), đôi (phải)

Trang 34

Hiệu chỉnh default bounding box và độ phân giải ở phần phát hiện: sử

dụng kỹ thuật phát hiện đối tượng giống model SSD, BlazeFace [5] cũng sử dụng nhiều default bounding boxes trên nhiều feature map với độ phân giải khác nhau để phát hiện các đối tượng Tuy nhiên, khi nghiên cứu các nhà nghiên cứu thấy khuôn mặt người có tỷ lệ không thay đổi nhiều như các vật thể khác và việc giảm tỷ lệ độ phân giải xuống quá nhiều có thể dư thừa vì vậy họ chọn tỷ lệ bounding box là 1:1 đồng thời không giảm độ phân giải của feature map xuống 1x1 mà dừng ở 8x8 như

hình 2.12 Điều này giúp giảm tải tài nguyên tính toán cho GPU, từ đó tăng tốc độ

xử lý cho model

Hình 2.12 : Số lượng default bounding box: SSD (trái) và BlazeFace (phải)

Thay thế thuật toán “non-max suppression”: Việc không giảm độ phân giải

xuống dưới 8x8 gây ra một vấn đề là số lượng dự đoán trùng lặp ở đầu ra sẽ nhiều hơn, vì thế thuật toán “non-max suppression” không thể hoạt động một cách ổn định được khi input là một video Để giải quyết vấn đề này, BlazeFace ước tính các tham

số hồi quy của một bounding box bằng một trọng số trung bình giữa các dự đoán trùng lặp

Bằng những thay đổi trúc kiến trúc đã được đề cập ở trên, các nhà nghiên cứu

đã tăng độ chính xác của model BlazeFace lên 7% khi so sánh với với model

MobileNetV2-SSD, cụ thể kết quả ở bảng 2.3

Bảng 2.3: Kết quả so sánh độ chính xác và tốc độ của model trên tập Dataset 2K

ảnh sau khi train trên tập Dataset 60K ảnh

Trang 35

2.1.3 Output của Model BlazeFace

Sau khi sử dụng model BlazeFace lên một frame ảnh thì output của model

được thể hiện ở hình 2.13 cho ra một bounding box và vị trí 6 điểm trên mỗi khuôn

mặt khuôn mặt phát hiện được

Hình 2.13: Bounding box và 6 điểm đặc trưng trên khuôn mặt (màu đỏ)

 Bounding box bao gồm: (xmin, xwidth, ymin, ywidth) được bình thường

hoá nằm trong vùng giá trị từ [0, 1] Có nghĩa là x, y biểu diễn giá trị tỷ lệ tương ứng với chiều rộng và chiều cao đối với khung hình

 6 điểm đặc trưng bao gồm: mắt phải, mắt trái, đỉnh mũi, trung tâm miệng, tai

phải, tai trái Mỗi điểm bao gồm toạ độ (x, y) cũng được bình thường hoá

2.1.4 Các thông số quan trọng của BlazeFace

Python là ngôn ngữ phổ biến nhất trong ML hiện nay, cho nên các nhà nghiên cứu của Google về MediaPipe cũng đã hỗ trợ Python API Chúng ta có thể sử dụng bằng cách import mediapipe như một thư viện bình thường

model_selection (0, 1):

 Trường hợp model_selection= 0: chọn mô hình phát hiện khuôn mặt ở cự ly

gần, mô hình sẽ phát hiện tốt các khuôn mặt ở cự ly 2m

 Trường hợp model_selection= 1: chọn mô hình phát hiện khuôn mặt ở cự ly

xa hơn, mô hình sẽ phát hiện tốt các khuôn mặt ở cự ly 10m

min_detection_confidence (float in [0.0, 1.0]):

Giá trị tối thiểu để mô hình quyết định khuôn mặt được phát hiện có được coi

là khuôn mặt hay không Nếu output của mô hình dưới ngưỡng này thì coi như không detect được khuôn mặt Giá trị mặc định là 0.5

Trang 36

2.2 Model trích xuất đặc trưng khuôn mặt Dlib Face Recognition

2.2.1 Tổng quan về Dlib

Dlib là một bộ thư viện C++ chứa các thuật toán học máy và các công cụ hỗ trợ phát triển phần mềm phức tạp để giải quyết các vấn đề trong thế giới thực Nó được sử dụng trong cả ngành công nghiệp, học thuật và trong nhiều lĩnh vực bao gồm robot, thiết bị nhúng, điện thoại di động và môi trường máy tính hiệu suất cao Đặc biệt, bao gồm mô hình nhận dạng khuôn mặt Dlib Face Recognition

2.2.2 Dlib Face Recognition

Model Face Recognition là một trong những model học sâu trong thư viện Dlib

Model gồm 3 phần chính như hình 2.14

Hình 2.14: Quá trình nhận dạng khuôn mặt

Face Alignment (chỉnh hướng khuôn mặt): là bước xử lý đầu tiên trong

model nhận diện khuôn mặt Dlib Sau khi khuôn mặt được phát hiện và trích xuất thông qua model phát hiện khuôn mặt BlazeFace, chúng ta phải đối mặt với một vấn

đề là các khuôn mặt có thể hướng đi các hướng khác nhau, điều này có thể gây khó khăn trong việc nhận dạng cho mô hình Vì thế dựa trên đầu ra của model BlazeFace,

mô hình nhận dạng Dlib sẽ áp dụng các ma trận biến đổi để sao cho hướng nhìn của

khuôn mặt trở thành trực diện, cụ thể ở hình 2.15

Hình 2.15: Chỉnh hướng khuôn mặt

Trang 37

Representation (mã hoá khuôn mặt):

Cách tiếp cận đơn giản nhất với nhận diện khuôn mặt là trực tiếp so sánh khuôn mặt tìm được ở bước 2 với ảnh của tất cả khuôn mặt đã được tag Khi chúng ta tìm được một bức ảnh được tag gần giống, ta tìm được tên người trong ảnh Tuy nhiên, cách tiếp cận này nảy sinh một vấn đề: một hệ thống nhận dạng có thể có hàng nghìn người sử dụng tương ứng với hàng trăm nghìn ảnh Việc tìm kiếm qua từng ảnh tốn quá nhiều thời gian Chúng ta cần nhận diện khuôn mặt trong 1/1000s chứ không phải hàng giờ

Vì vậy, hướng tiếp cận thứ 2, cũng là giải pháp mà mô hình DFR sử dụng Đó

là trích xuất các đo lường của tất cả khuôn mặt đã biết và lưu trữ chúng lại, sau này mỗi khi cần nhận dạng một khuôn mặt, nó chỉ cần tính trích xuất các đo lường của khuôn mặt cần nhận dạng và đem so sánh chúng với đo lường đã được trích xuất sẵn

Việc có thể tìm ra các đo lường (các chi tiết về mắt, tai, mũi, hình dạng khuôn mặt) đối với con người là điều dễ dàng tuy nhiên đối với máy tính các thông tin nó tiếp nhận chỉ là những pixel vô nghĩa Từ lâu các kỹ thuật nhận dạng khuôn mặt đã được quan tâm và phát triển, tuy nhiên chưa có giải pháp nào đủ chính xác để được ứng dụng rộng rãi cho đến những năm gần đây Với sự phát triển mạnh mẽ của học sâu, các nhà nghiên cứu nhận ra giải pháp nhận dạng chính xác nhất chính là sử dụng mạng nơ ron tích chập học sâu

Thay vì huấn luyện mạng học sâu để nhận diện từng khuôn mặt, các nhà nghiên

trình huấn luyện thực hiện (hình 2.16) bằng cách để mạng 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 (embeddings) Sau đó nó sẽ thay đổi các trọng số trong mạng này từ từ để 128 giá trị đo lường tìm ra từ ảnh #1 và #2 ngày càng có khoảng cách gần nhau, và 128 giá trị đo lường từ ảnh #2 ngày càng xa 128 giá trị đo lường từ ảnh #3

Trang 38

Hình 2.16: Quá trình học của mạng để tạo ra 128 đo lường từ khuôn mặt người

Ở model DFR [15], tác giả đã sử dụng mạng ResNet-34 [23] đã được lược bớt vài layer để huấn luyện trên tập dataset gồm 3 triệu khuôn mặt được trích xuất từ 2 tập dataset khác nhau bao gồm: face scrub dataset, VGG dataset để tối thiểu hàm loss sau:

𝐿 = 𝑚𝑎𝑥(0, 𝑙𝑒𝑛𝑔𝑡ℎ(𝐴1 − 𝐴2) − 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒_𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑() + 𝑚𝑎𝑟𝑔𝑖𝑛())

+ 𝑚𝑎𝑥(0, 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑒_𝑡ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑() − 𝑙𝑒𝑛𝑔𝑡ℎ(𝐴1 − 𝐵1) + 𝑚𝑎𝑟𝑔𝑖𝑛()) (2.4)

Với:

- A1, A2 là 2 bức ảnh khuôn mặt cùng 1 người, B1 là bức ảnh của người khác

- length: là hàm tính khoảng cách giữa các đo lường, sử dụng khoảng cách Euclid

- distance threshold = 0.6

- margin = 0.04

Nhìn vào công thức 2.3, ta có thể thấy được nếu 2 khuôn mặt giống nhau mà

xa nhau (> 0.6) thì sẽ được tính vào hàm loss tương tự nếu 2 khuôn mặt khác nhau

mà khoảng cách giữa chúng nhỏ hơn 0.6 thì hàm loss sẽ lớn hơn không Mạng sẽ tối

ưu các thông số để cho ra giá trị hàm loss nhỏ nhất thông qua cách huấn luyện được

mô tả ở hình 2.15, sau hàng triệu cặp ảnh mô hình đã có thể trích xuất ra 128 đo

lường một cách ổn định và tin cậy với độ chính xác được kiểm tra trên tập dữ liệu nhận dạng LFW lên tới 99.38% [15]

Ngày đăng: 25/02/2024, 15:01

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w