You are on page 1of 69

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

TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI


KHOA ĐIỆN – ĐIỆN TỬ
----------

ĐỒ ÁN ………

Xây dựng, mô phỏng hệ thống điểm danh sử


dụng kỹ thuật Học Sâu và Trí tuệ nhân tạo

Giảng viên hướng dẫn : …..


Sinh viên thực hiện : LƯU TRỌNG HIẾU
Lớp : Kỹ thuật điện tử và tin học công nghiệp
Khoá : 57

Hà Nội, tháng 1 năm 2025


Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

LỜI CẢM ƠN

Lời đầu tiên, em xin chân thành cảm ơn các thầy, cô giáo, đội ngũ giảng viên khoa
Điện – Điện tử và các cán bộ, nhân viên của trường Đại học Giao thông Vận tải đã
tạo điều kiện tốt nhất cho em trong suốt quá trình học tập tại trường.

Em xin cảm ơn các anh, các bạn thuộc bộ phận Xử lý Ảnh trong công ty cổ phần
AIMeSoft đã giúp đỡ em trong quá trình thực tập và làm đồ án tốt nghiệp.

Đặc biệt, em xin bày tỏ lòng biết ơn sâu sắc đến Thạc sĩ Nguyễn Thúy Bình đã tận
tình hướng dẫn giúp đỡ em chỉnh sửa, giám sát và kiểm tra quá trình hoàn thành đồ
án tốt nghiệp.

Mặc dù đã có nhiều cố gắng, song do sự hạn hẹp về thời gian, điều kiện nghiên cứu,
đồ án không tránh khỏi những thiếu sót. Em rất mong nhận được những nhận xét,
đóng góp ý kiến của thầy, cô và các bạn để đồ án tốt nghiệp của em được hoàn thiện
hơn.

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

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

MỞ ĐẦU

1. Đặt vấn đề:


Thừa hưởng những thành tựu của nền khoa học kỹ thuật phát triển, nhận diện
khuôn mặt là một công nghệ được ứng dụng rộng rãi trong đời sống hàng ngày
của con người như các hệ thống giám sát tại các tòa nhà, sân bay, trạm ATM,
camera chống trộm, xác thực danh tính,…. Có rất nhiều phương pháp nhận dạng
khuôn mặt để nâng cao hiệu suất tuy nhiên dù ít hay nhiều thì những phương
pháp này đang gặp phải những khó khăn, thử thách như về độ sáng, hướng
nghiêng, kích thước hình ảnh, hay ảnh hưởng của tham số môi trường.

Hệ thống camera giám sát ngày nay đã trở nên phổ biến và đang được sử dụng
rộng rãi trong nhiều lĩnh vực với nhiều mục đích hỗ trợ khác nhau. Nhưng
camera chỉ có khả năng lưu trữ dữ liệu hình ảnh hoặc video và chúng ta cần thêm
nhân lực để giám sát hoặc xử lý thông tin. Phương pháp này đã dần trở nên
không hiệu quả, tốn kém chi phí, thời gian và phụ thuộc nhiều vào yếu tố con
người, khó khăn trong việc tìm kiếm dữ liệu. Cùng thuộc vấn đề này là việc điểm
danh hay chấm công, ở trong các trường học hiện nay chủ yếu vẫn điểm danh
theo phương pháp thủ công rất mất thời gian và công sức. Cải tiến hơn một chút,
ở các công ty, trụ sở sử dụng phương pháp sinh trắc bằng vân tay, tuy nhiên việc
này gây một số bất tiện cho người sử dụng, ví dụ như khi họ phải sử dụng tay để
cầm nắm một món đồ, hoặc khi không may ngón tay họ bị thương hoặc dính bẩn
sẽ ảnh hưởng tới việc nhận dạng vân tay.

Với mong muốn cải thiện những nhược điểm của các hệ thống trước kia, trong đề
tài đồ án này em xin phép được nghiên cứu, xây dựng và mô phỏng hệ thống
điểm danh sử dụng Học Sâu và Trí tuệ nhân tạo.

2. Mục tiêu nghiên cứu:


Tìm hiểu phương pháp nhận diện khuôn mặt người và áp dụng xây dựng hệ
thống điểm danh
Để hoàn thành mục tiêu cần thực hiện các nhiệm vụ sau:
 Tìm hiểu phương pháp xác định vị trí khuôn mặt người
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 Tìm hiểu phương pháp nhận diện khuôn mặt người


 Xây dựng hệ thống giao diện người dùng cho mục đích điểm danh

3. Phạm vi nghiên cứu:


 Phương pháp xác định vị trí khuôn mặt người
 Phương pháp nhận dạng khuôn mặt người
 Ứng dụng kỹ thuật nhận dạng khuôn mặt người xây dựng hệ thống điểm
danh

4. Phương pháp nghiên cứu:


 Tìm kiếm và nghiên cứu các tài liệu về nhận dạng khuôn mặt
 Tìm hiểu các công cụ để xây dựng hệ thống
 Thu thập dữ liệu thực tế
 Sử dụng model đã được huấn luyện để trích xuất các thuộc tính đặc trưng của
dữ liệu
 Thiết kế hệ thống và triển khai xây dựng chương trình
 Kiểm thử và đánh giá kết quả

5. Bố cục đồ án tốt nghiệp:


Chương 1: Tổng quan về hệ thống nhận diện khuôn mặt
Nội dung chương này giới thiệu về bài toán nhận diện khuôn mặt, những khó
khăn, thách thức và ứng dụng của bài toán nhận diện khuôn mặt vào thực tế.
Hệ thống camera giám sát hiện nay.

Chương 2: Cơ sở lý thuyết bài toán nhận diện khuôn mặt


Nội dung chương này trình bày về tổng quan thư viện OpenCV, các thuật toán,
các mô hình và mạng Neural được em sử dụng để hoàn thành đồ án tốt nghiệp.
So sánh giữa các thuật toán chỉ thuần sử dụng học máy và các thuật toán có sử
dụng đến các mô hình học sâu, từ đó đưa ra đề xuất lựa chọn phương án để xử
lý bài toán mà em đề ra

Chương 3: Xây dựng hệ thống mô phỏng điểm danh

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Sản phẩm được em hoàn thành cho báo cáo đồ án tốt nghiệp lần này có bao
gồm phần giao diện người dùng đã được em thiết kế và kết hợp với phần nhận
diện khuôn mặt để cho ra một sản phẩm mô phỏng hoàn chỉnh. Vậy nên trong
chương này em trình bày về các thức hoạt động của giao diện người dùng này.

Chương 4: Thử nghiệm và kết quả mô phỏng


Chương cuối đề cập kết quả mà em đã đạt được trong quá trình chạy thử
nghiệm sản phẩm đồ án tốt nghiệp

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

MỤC LỤC

Lời cảm ơn
Mở đầu
CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHẬN DIỆN KHUÔN MẶT..........1
1.1. Tổng quan sinh trắc học..................................................................................1
1.2. Bài toàn nhận diện khuôn mặt.........................................................................1
1.2.1. Nhận dạng dựa trên các đặc trưng khuôn mặt...........................................4
1.2.2 Nhận dạng dựa trên xét toàn bộ khuôn mặt................................................4
1.3. Những khó khăn và thách thức trong bài toán nhận diện khuôn mặt...............5
1.4. Ứng dụng của bài toán nhận diện khuôn mặt..................................................5
1.5. Hệ thống camera giám sát...............................................................................7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT BÀI TOÁN NHẬN DIỆN KHUÔN MẶT.......9
2.1. Giới thiệu về OpenCV.....................................................................................9
2.1.1. Tổng quan về OpenCV.............................................................................9
2.1.2. Các tính năng............................................................................................9
2.1.3. Cấu trúc OpenCV....................................................................................10
2.2. Phát hiện khuôn mặt......................................................................................11
2.2.1. HaarCascade...........................................................................................11
2.2.1.1. Đặc trưng Haar................................................................................11
2.2.1.2. Adaboost.........................................................................................14
2.2.2. Single Shot MultiBox Detector (SSD)....................................................15
2.2.2.1. Những đặc điểm chính của SSD.....................................................15
2.2.2.2. MultiBox Detector..........................................................................16
2.2.2.3. Cấu trúc mạng SSD.........................................................................17
2.2.2.4. Hàm mất mát (Loss Function)........................................................18
2.2.2.5. MultiBox Prior và IoU....................................................................19
2.2.2.6. So sánh SSD với HaarCascade.......................................................21
2.2.3. Mạng Neural ResNet...............................................................................22
2.2.3.1. Tại sao lại xuất hiện mạng ResNet..................................................22
2.2.3.2. Kiến trúc mạng ResNet...................................................................24
2.2.3.3. Xây dựng mạng ResNet-50.............................................................26
2.3. Theo vết khuôn mặt theo trình tự video.........................................................27

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

2.4. Nhận diện khuôn mặt....................................................................................28


2.4.1. Các phương pháp xác thực khuôn mặt....................................................28
2.4.1.1. Phương pháp truyền thống..............................................................28
2.4.1.2. Nhận diện 3D..................................................................................29
2.4.1.3. Các phương pháp nhận diện khác...................................................30
2.4.2. Các thuật toán nhận diện khuôn mặt.......................................................30
2.4.2.1. One-shot learning............................................................................30
2.4.2.2. Learning similarity..........................................................................30
2.4.2.3. Norm (Chuẩn).................................................................................32
2.4.2.4. Siamese Network............................................................................35
2.4.3. Thuật toán Facenet..................................................................................36
2.4.3.1. Khái quát thuật toán........................................................................37
2.4.3.2. Triplet loss......................................................................................37
2.4.3.3. Lựa chọn ba ảnh đầu vào................................................................40
2.4.4. Một số bộ dữ liệu về khuôn mặt..............................................................40
CHƯƠNG 3: XÂY DỰNG HỆ THỐNG MÔ PHỎNG ĐIỂM DANH...................42
3.1. Phân tích thiết kế hệ thống............................................................................42
3.1.1. Xác định yêu cầu.....................................................................................42
3.1.2. Cơ sở dữ liệu...........................................................................................43
3.1.3. Chức năng nhận diện khuôn mặt.............................................................45
3.2. Hệ thống điểm danh:.....................................................................................46
CHƯƠNG 4: THỬ NGHIỆM VÀ KẾT QUẢ MÔ PHỎNG...................................52
4.1. Kết quả mô phỏng:........................................................................................52
4.2. Nhận xét:.......................................................................................................55
4.3. Hướng phát triển trong tương lai:..................................................................56
DANH MỤC TÀI LIỆU THAM KHẢO.................................................................57

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

THUẬT NGỮ VIẾT TẮT


PCA Principle Components Analysis

LDA Linear Discriminant Analysis

SSD Single Shot MultiBox Detector

IoU Intersection over Union

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

DANH MỤC HÌNH VẼ


Chương 1:

Hình 1.1. Hệ thống nhận dạng khuôn mặt.................................................................2

Chương 2:

Hình 2.1: Đặc trưng Haar – 1.................................................................................11


Hình 2.2: Đặc trưng Haar - 2..................................................................................12
Hình 2.3: Mô phỏng hoạt động của bộ lọc..............................................................12
Hình 2.4: Bộ phân loại Adaboost............................................................................14
Hình 2.5: MultiBox Detector...................................................................................16
Hình 2.6: Cấu trúc mạng SSD.................................................................................17
Hình 2.7: Intersection over nion..............................................................................20
Hình 2.8: So sánh giữa hai phương pháp phát hiện mặt.........................................21
Hình 2.9: Vanishing Gradient.................................................................................23
Hình 2.10: Residual Block.......................................................................................24
Hình 2.11: So sánh mô hình giữa các mạng Neural................................................25
Hình 2.12: Kiến trúc ResNet Neural Network.........................................................26
Hình 2.13: Hệ thống nhận dạng khuôn mặt cơ bản.................................................28
Hình 2.14: Face Land Mark....................................................................................28
Hình 2.15: Nhận diện 3D........................................................................................29
Hinh 2.16: Phương pháp learning similarity...........................................................31
Hình 2.17: Norm 1 và Norm 2 trong không gian hai chiều.....................................34
Hình 2.18: Mô hình Siam Network mã hóa ảnh thành vector..................................36
Hình 2.19: Triplet Loss............................................................................................38

Chương 3:

Hình 3.1: Các trường thông tin trong hai Table......................................................43


Hình 3.2: Sơ đồ khối chức năng nhận diện khuôn mặt............................................45
Hình 3.3: Màn hình đăng nhập của hệ thống..........................................................46
Hình 3.4: Màn hình chính của hệ thống..................................................................47
Hình 3.5: Giao diện Singup chính...........................................................................48
Hình 3.6: Lựa chọn folder lưu trữ...........................................................................49
Hình 3.7: Giao diện danh sách người dùng.............................................................50
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 3.8: Giao diện điền thông tin đăng ký.............................................................50

Chương 4

Hình 4.1: Mô phỏng nhận diện khuôn mặt và xuất thông tin lên màn hình.............52
Hình 4.2: Mô phỏng quá trình check in...................................................................53
Hình 4.3: Mô phỏng quá trình check out.................................................................53
Hình 4.4: Lưu trữ thông tin điểm danh....................................................................54
Hình 4.5: Chụp ảnh hoặc chọn file ảnh từ bên ngoài vào hệ thống.........................54
Hình 4.6: Mô phỏng danh sách người dùng............................................................55

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
1
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHẬN DIỆN KHUÔN MẶT

1.1. Tổng quan sinh trắc học


Sinh trắc học hay Công nghệ sinh trắc học (tiếng Anh: Biometric) là công nghệ
sử dụng những thuộc tính vật lý, đặc điểm sinh học riêng của mỗi cá nhân như
vân tay, mống mắt, khuôn mặt, giọng nói, ... để nhận diện

1.2. Bài toàn nhận diện khuôn mặt


Ngày nay cùng với sự bùng nổ thông tin, sự phát triển công nghệ cao, sự giao
tiếp giữa con người và máy tính đang phát triển rất nhanh, giờ đây giao tiếp này
không còn đơn thuần dùng các thiết bị cơ học như chuột, bàn phím… mà có thể
thông qua các biểu hiện của khuôn mặt. Bên cạnh đó công nghệ càng phát triển
thì giá cả ngày càng giảm. Thêm vào đó tốc độ xử lý máy tính ngày càng cao, do
đó hệ thống xử lý khuôn mặt được phát triển rất nhiều. Trong số đó có thể nói
đến hệ thống phát hiện khuôn mặt, hệ thống này có thể giúp con người và máy
tính giao tiếp với nhau tốt hơn. Những nghiên cứu trong hệ thống này chủ yếu
dựa trên những thông tin trong ảnh để phát hiện vị trí khuôn mặt, tạo tiền đề cho
các ứng dụng tiếp theo. Rất nhiều nghiên cứu và ứng dụng được phát triển dựa
trên hệ thống này. Đó là nhiệm vụ đầu tiên của bất kỳ hệ thống xử lý khuôn mặt
nào. Công nghệ nhận diện khuôn mặt là công nghệ sinh trắc học ít tác động đến
người dùng nhất và là công nghệ sinh trắc học nhanh nhất. Nhà quản lý có thể
chủ động hơn trong việc kiểm soát con người thông qua camera giám sát. Công
nghệ này không cần sự tương tác và không có sự chậm trễ. Trong nhiều trường
hợp đối tượng hoàn toàn không biết gì về quá trình này.

Nhận dạng khuôn mặt (Face Recognition) là một phương pháp sinh trắc để xác
định hoặc xác minh một cá nhân nào đó bằng cách so sánh dữ liệu hình ảnh chụp
được trực tiếp hoặc hình ảnh kỹ thuật số với bản ghi được lưu trữ cho người đó.
Nó được xem là một lĩnh vực nghiên cứu của ngành Biometrics (tương tự như
nhận dạng vân tay – Fingerprint Recognition, hay nhận dạng mống mắt – Iris
Recognition). Xét về nguyên tắc chung nhận dạng khuôn mặt có sự tương đồng

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
2
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

rất lớn với nhận dạng vân tay và nhận dạng mống mắt, tuy nhiên sự khác biệt
nằm ở bước trích chọn đặc trưng (feature extraction) ở mỗi lĩnh vực. Trong khi
nhận dạng vân tay và nhận dạng mống mắt đã đạt tới độ chín, tức là đã có thể áp
dụng trên thực tế một cách rộng rãi thì nhận dạng khuôn mặt người vẫn còn
nhiều thách thức và vẫn là một lĩnh vực nghiên cứu thú vị với nhiều người. So
với nhận dạng vân tay và mống mắt, nhận dạng khuôn mặt có nguồn dữ liệu
phong phú hơn (chúng ta có thể nhìn thấy mặt người ở bất cứ tấm ảnh, video clip
nào liên quan tới con người trên mạng) và ít đòi hỏi sự tương tác có kiểm soát
hơn (để thực hiện nhận dạng vân tay hay mống mắt, dữ liệu input lấy từ con
người đòi hỏi có sự hợp tác trong môi trường có kiểm soát).
Các hệ thống nhận dạng khuôn mặt đầu tiên thường được áp dụng cho các mục
đích an ninh như kiểm soát an ninh tại tòa nhà, sân bay, máy ATM, tra cứu thông
tin tội phạm, phát hiện tội phạm ở nơi công cộng… và ngày càng được ứng dụng
rộng rãi trong cuộc sống.

Bên cạnh những thành công đã được ghi nhận thì nhận dạng khuôn mặt cũng gặp
nhiều khó khăn do tác động từ các yếu tố bên ngoài như ánh sáng, hướng
nghiêng, kích thước ảnh, diện mạo, biểu hiện cảm xúc của khuôn mặt hay ảnh
hưởng của tham số môi trường.

Để xây dựng một hệ thống nhận dạng khuôn mặt có đầu vào của hệ thống là một
hình ảnh kỹ thuật số hay một khung hình video từ một nguồn video. Đầu ra là
xác định hoặc xác minh người ở trong bức hình hoặc trong video đó là ai. Hướng
tới mục tiêu này chúng ta thường chia thủ tục nhận dạng khuôn mặt gồm ba
bước: Phát hiện khuôn mặt, trích rút đặc trưng và nhận dạng khuôn mặt

Hình 1.1. Hệ thống nhận dạng khuôn mặt

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
3
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 Phát hiện khuôn mặt (Face Detection): Chức năng chính của bước này là
phát hiện ra khuôn mặt xem nó có xuất hiện ở trong một bức hình hay một
đoạn video hay không? Tỉ lệ phát hiện ra khuôn mặt phụ thuộc nhiều vào
điều kiện về độ sáng, hướng khuôn mặt, biểu hiện cảm xúc trên khuôn mặt
hay các yếu tố môi trường khác. Để hệ thống nhận dạng hoạt động đạt
hiệu quả cao thì hình ảnh khuôn mặt sau khi được phát hiện cần chuẩn hóa
về kích thước, ánh sáng.
 Trích chọn đặc trưng (Feature Extraction): Sau khi phát hiện ra khuôn mặt
trong bức ảnh, chúng ta tiến hành trích chọn những đặc trưng của khuôn
mặt. Bước này trích xuất ra một vector đặc trưng đại diện cho một khuôn
mặt. Mục đích của bộ mô tả là có khả năng phân biệt giữa những khuôn
mặt khác nhau.
 Nhận dạng khuôn mặt (Face Recognition): Với hình ảnh đầu vào sau khi
phát hiện ra khuôn mặt, trích rút các đặc trưng của khuôn mặt và đem so
sánh các đặc trưng này với cơ sở dữ liệu khuôn mặt.

Bài toán nhận dạng khuôn mặt được ứng dụng nhiều trong các lĩnh vực đời sống
đặc biệt ở những lĩnh vực công nghệ cao, yêu cầu về an ninh, bảo mật. Do đó để
hệ thống nhận dạng khuôn mặt hoạt động mạnh mẽ với tốc độ và độ tin cậy thì có
rất nhiều các phương pháp về nhận dạng khuôn mặt được đưa ra. Các phương
pháp có thể được phân loại theo các tiêu chí khác nhau như nhận dạng với dữ liệu
ảnh đầu vào là ảnh tĩnh 2D (Elastic Bunch Graph, Active Appearance Model).
Phương pháp này là phổ biến nhất và tương lai sẽ là 3D (3D Morphable Model).
Tuy nhiên trên thực tế người ta hay chia phương pháp nhận dạng khuôn mặt ra
thành 2 loại:
 Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt (Feature
Base Face Recognition)
 Nhận dạng dựa trên xét tổng thể toàn khuôn mặt (Appearance Based Face
Recognition)

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
4
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

1.2.1. Nhận dạng dựa trên các đặc trưng khuôn mặt
Đây là phương pháp nhận dạng khuôn mặt dựa trên việc xác định các đặc
trưng hình học của các chi tiết trên khuôn mặt như vị trí, diện tích, khoảng
cách của mắt, mũi, miệng, ….và mỗi quan hệ giữa chúng ví dụ như khoảng
cách giữa hai mắt.

Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng để
nhận biết khuôn mặt. Hơn nữa với việc xác định đặc tính và các mối quan hệ,
phương pháp này cho kết quả tốt trong các điều kiện không có kiểm soát.
Nhược điểm của phương pháp này là cài đặt thuật toán phức tạp do việc xác
định mối quan hệ giữa các đặc tính, đòi hỏi các thuật toán phức tạp và phương
pháp này sẽ hoạt động không hiệu quả khi kích thước hình ảnh nhỏ vì rất khó
phân biệt được các đặc tính.

1.2.2 Nhận dạng dựa trên xét toàn bộ khuôn mặt


Nội dụng chính của hướng tiếp cận này là xem mỗi ảnh có kích thước R x C là
một vector trong không gian có R x C chiều. Ta xây dựng một không gian mới
có chiều nhỏ hơn sao cho khi biểu diễn trong không gian đó các đặc điểm
chính trên khuôn mặt không bị mất đi. Trong không gian đó các ảnh của cùng
một người sẽ được tập trung lại thành một nhóm gần nhau và cách xa so với
các nhóm khác. Hai phương pháp thường được sử dụng trong hướng tiếp cận
này là:
 PCA (Principle Components Analysis)
 LDA (Linear Discriminant Analysis)
Trong đề tài đồ án lần này, em xin phép được lựa chọn phương pháp thứ nhất,
tức là nhận dạng khuôn mặt dựa trên các đặc trưng của khuôn mặt. Đây cũng
là một thách thức rất lớn bởi phát hiện khuôn mặt dựa vào các đặc trưng của
nó sẽ phụ thuộc vào nhiều yếu tố như tỷ lệ, vị trí, hướng nhìn (từ trên xuống,
quay,…), kiểu chụp (chụp đối diện, chụp ngang,…). Ngoài ra những cảm xúc

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
5
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

của khuôn mặt, một số phần bị che, hoặc hướng ánh sáng cũng ảnh hưởng đến
bài toán phát hiện khuôn mặt

1.3. Những khó khăn và thách thức trong bài toán nhận diện khuôn mặt
Bài toàn nhận diện mặt người đã được nghiên cứu từ những năm 70, người đầu
tiên là Kanade. Tuy nhiên đây là một bài toán khó nên những nghiên cứu hiện tại
vẫn chưa đạt được những kết quả mong muốn. Có thể kể đến những thách thức
sau:
 Tư thế, góc chụp: Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc
chụp giữa camera và khuôn mặt. Chẳng hạn như chụp thẳng, chụp chéo
bên trái 45 độ, hay chéo bên phải 45 độ, chup từ trên xuống, chup từ dưới
lên,…. Với các tư thế khác nhau, các thành phần trên khuôn mặt như mắt,
mũi, miệng có thể bị khuất một phần hoặc khuất hết.
 Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt: Các đặc trưng
như ria mép, râu hàm, mắt kính… có thể xuất hiện hoặc không. Vấn đề
này làm cho bài toán càng trở nên khó hơn nhiều.
 Cảm xúc biểu hiện trên khuôn mặt: Cảm xúc có thể làm ảnh hưởng đáng
kể lên các thông số của khuôn mặt. Chẳng hạn cùng một khuôn mặt một
người nhưng sẽ rất khác khi họ cười hoặc sợ hãi.
 Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác,
khuôn mặt khác.
 Hướng của ảnh: Các ảnh của khuôn mặt có thể biến đổi rất nhiều với các
góc quay khác nhau của trục camera. Chẳng hạn chụp với trục máy ảnh
nghiêng làm cho khuôn mặt bị nghiêng so với trục của ảnh
 Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau về:
chiếu sang, tính chất camera (máy ảnh kỹ thuật số, máy ảnh hồng ngoại,
…) ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt.

1.4. Ứng dụng của bài toán nhận diện khuôn mặt
Ứng dụng của bài toán nhận diện khuôn mặt có rất nhiều và đã được triển khai
tương đối hiệu quả trong thực tế. Có thể kể đến một số ứng dụng điển hình sau:
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
6
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Xác minh tội phạm:


Dựa vảo ảnh của một người nhận dạng xem người ấy có phải tội phạm hay
không bằng cách so sánh với các ảnh tội phạm đang được lưu trữ. Hoặc có thể
sử dụng camera để phát hiện tội phạm trong đám đông. Ứng dụng này giúp cơ
quan an ninh quản lý con người tốt hơn.
Camera chống trộm:
Các hệ thống camera sẽ xác định đâu là người không thuộc bộ dữ liệu nó đã
được cung cấp và theo dõi xem người lạ đó có làm gì phạm pháp không ví dụ
như lấy trộm đồ hoặc xâm nhập bất hợp pháp vào một khu vực nào đó để đưa ra
cảnh báo tới người giám sát.
Bảo mật:
Các ứng dụng về bảo mật rất đa dạng, một trong số đó là hệ thống FaceID của
các dòng điện thoại smartphone, cho phép chủ nhân có thể mở máy chỉ thông
qua việc đưa máy lên trước mặt mình. Để sử dụng công nghệ này, người dùng
phải cho máy điện thoại chụp hình khuôn mặt bản thân để làm dữ liệu cho nó
“học” các đặc điểm nhận diện giúp cho quá trình đăng nhập sau này.
Lưu trữ khuôn mặt:
Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự động
(ATM) để lưu trử khuôn mặt của người rút tiền. Hiện nay có một số người bị
người khác lợi dụng lấy trộm thẻ ATM và mã PIN dẫn đến việc mất tiền trong
thẻ, hoặc có những chủ tài khoản đi rút tiền nhưng lại báo với ngân hàng là bị
mất thẻ hoặc bị rút trộm tiền. Nếu lưu trữ được khuôn mặt của người rút tiền,
ngân hàng có thể đối chứng và xử lý dễ dàng hơn.
Chấm công, điểm danh:
Việc điểm danh một cách thủ công sẽ rất mất thời gian và công sức, bằng các
công nghệ sinh trắc sẽ gặp một số bất tiện về điều kiện người dùng. Với nhận
diện khuôn mặt, người dùng chỉ việc đứng trước một camera, nó sẽ phát hiện và

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
7
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

định danh người đó là ai để chấm công, điểm danh mà không cần phải làm
thêm một tác vụ gì khác.

Các ứng dụng khác:


 Điều khiển mở cửa ra vào tại các công ty, trụ sở. Cho phép nhân viên
được ra vào những nơi thuộc thẩm quyền họ được cho phép
 An ninh sân bay, xuất nhập cảnh. Dùng camera quan sát để xác thực
người nhập cảnh và kiểm tra xem người đó có phải là tội phạm đang bị
truy nã hay các phần tử khủng bố có trong cơ sở dữ liệu hay không
 Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuôn
mặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn như internet, các
hãng truyền hình,… Ví dụ tìm các đoạn video có Tổng Bí Thư Nguyễn
Phú Trọng phát biểu, tìm các trận bóng có Messi đá, ...
 Kiểm tra tình trạng người lái xe có ngủ gật hay mất tập trung không, hỗ
trợ thông báo khi cần thiết
 Tương lai sẽ phát triển các loại thẻ thông minh có tích hợp sẵn đặc trưng
của người dùng trên đó, khi bất cứ người dùng khác dùng để truy cập
hay xử lý tại các hệ thống sẽ được yêu cầu kiểm tra các đặc trưng khuôn
mặt so với thẻ để biết người này có phải là chủ thẻ hay không

1.5. Hệ thống camera giám sát


Xuất hiện từ những năm 1940, ban đầu hệ thống camera giám sát được dùng vào
mục đích quân sự. Từ đó đến nay, trải qua 3 thế hệ, từ camera tương tự, đến
camera kỹ thuật số và giờ đây là camera IP, hệ thống camera giám sát đã trở nên
phổ biến và đang được sử dụng rộng rãi trong nhiều lĩnh vực.

Hệ thống camera giám sát có thể được thực hiện thủ công, bán tự động, hoặc
hoàn toàn tự động. Trong các hệ thống giám sát video thủ công truyền thống, các
luồng video được quan sát bởi các giám sát viên trong thời gian thực, cho phép
họ can thiệp nhanh chóng nếu có một sự kiện quan tâm được phát hiện. Việc xử

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
8
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

lý trực tiếp của tất cả các luồng video là rất khó khăn do số lượng camera được
triển khai nhiều cùng với một lượng lớn dữ liệu thu nhận từ chúng.

Chính vì vậy, vấn đề giám sát tự động là nhiệm vụ hàng đầu trong hệ thống giám
sát bằng camera nhằm hỗ trợ tối đa con người trong việc điều khiển, giám sát,
giảm thiểu các sai sót không đáng có, đồng thời qua đó cũng giải phóng sức lao
động của các giám sát viên.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
9
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT BÀI TOÁN NHẬN DIỆN KHUÔN MẶT

2.1. Giới thiệu về OpenCV


OpenCV là thư viện mã nguồn mở của Intel, có khả năng nhúng vào trong các
chương trình nhận diện hình ảnh của máy tính. Nó bao gồm khả năng tiên tiến như
phát hiện khuôn mặt, theo dõi khuôn mặt, nhận diện khuôn mặt,… Ngoài ra nó
còn cùng cấp rất nhiều các thuật toán xử lý ảnh thông qua các hàm API.

2.1.1. Tổng quan về OpenCV


Intel phát hành phiên bản đầu tiên của OpenCV vào năm 1999. Ban đầu, nó yêu
cầu như là thư viện xử lý ảnh của Intel. Nhưng các vấn đề phụ thuộc đã được gỡ
bỏ và bây giờ bạn có thể sử dụng OpenCV là một thư viện độc lập. OpenCV hỗ
trợ đa nền tảng, nó hỗ trợ cả Windows và Linux, và gần đây hơn là MacOSX,
với giao diện của nó là nền tảng độc lập

2.1.2. Các tính năng


 General computer-vision and image-processing algorithms (mid-and low-
level APIs): Sử dụng các interface này bạn có thể thử nghiệm nhiều tiêu
chuẩn thuật toán tầm nhìn máy tính mà không cần phải code chúng. Bao
gồm các việc như: phát hiện cạnh, đường, và phát hiện góc,…
 High-level computer-vision modules: OpenCV bao gồm mốt số khả năng
cao cấp. Ngoài việc phát hiện khuôn mặt, nhận diện và theo dõi, nó còn bao
gồm dòng chảy quang học (bằng cách sử dụng máy ảnh chuyển động để
xác định cấu trúc 3D), hiệu chuẩn máy ảnh.
 AI and machine-learning methods: Ứng dụng tầm nhìn máy tính thường
đòi hỏi máy học hoặc sử dụng phương thức AI khác. Một trong số này có
sẵn trong gói phần mềm OpenCV’s Machine Learning.
 Image sampling and view transformations: Thường hữu ích để xử lý một
nhóm các điểm ảnh như một khối. OpenCV bao gồm giao diện cho tiểu
vùng trích xuất hình ảnh, lấy mẫu ngẫu nhiên, thay đổi kích thước, cong
vênh, xoay và các hiệu ứng quan điểm áp dụng.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
10
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 Methods for creating and analyzing binary (two-valued) images: Ảnh nhị
phận thường được sử dụng trong các hệ thống kiểm tra quét phát hiện các
khuyết tật hoặc trong các bộ đếm. Ảnh nhị phân cũng thuận tiện khi định vị
vị trí đối tượng để nắm bắt.
 Methods for computing 3D information: Các chức năng này rất hữu ích để
lập bản đồ và nội địa hóa hoặc với nhiều góc nhìn từ một máy ảnh.
 Math rotines for image processing, computer vision, and image
interpretation: OpenCV bao gồm các thuật toán toán học thường được sử
dụng trong đại số tuyến tính, thống kê, và hình học tính toán.
 Graphics: Các interface này cho phép viết văn bản và vẽ trên hình ảnh.
Ngoài ra các chức năng này rất hữu ích cho việc ghi nhãn và đánh dấu. Ví
dụ nếu chúng ta viết một chương trình phát hiện đối tượng, nõ rất hữu ích
để gán nhãn hình ảnh với kích cỡ và vị trí của họ.
 GUI methods: OpenCV bao gồm các interface, window riêng của nó.
Trong khi đây là những hạn chế so với những gì có thể được thực hiện trên
các nền tảng khác, họ cung cấp một cách đơn giản và đa nền tảng API để
hiển thị hình ảnh, chấp nhận đầu vào người dùng là chuột hoặc bàn phím,
và thực hiện kiểm soát thanh trượt.
 Data Structures and algorithms: Với các interface chúng ta có thể thực
hiện hiệu quả hơn các việc như: tìm kiếm, lưu, và thao tác các danh sách
lớn, bộ sưu tập, đồ thị,…
 Data persistence: Cung cấp giao diện thuận tiện để lưu trữ các loại dữ liệu
vào ổ lưu trữ và lấy chúng sau này.

2.1.3. Cấu trúc OpenCV


Chức năng OpenCV được chứa trong một số module:
 CXCORE chứa các định nghĩa kiểu dữ liệu cơ bản. Ví dụ cấu trúc dữ
liệu điểm cho hình ảnh, hình chữ nhật và được quy định tại cxtypes.h
 CV bao gồm xử lý hình ảnh và các phương pháp hiệu chỉnh máy ảnh.
Các chức năng tính toán hình học cũng nằm ở đây

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
11
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 CVAUX chưa mã thử nghiệm và thực nghiệm, các giao diện đơn giản
nhất để nhận dạng khuôn mặt nằm trong module này
 ML chứa Machine Learning interfaces
 Các chức năng còn lại được chứa trong HighGUI và CVCAM. Cả hai
đều nằm trong thư mục “otherlibs”. Nó chứa các cửa sổ đa nền tảng, đa
chức năng
 CVCAM chứa các giao diện để truy cập video thông qua DirectX trên
nền tảng Windows 32-bit. Tuy nhiên, HighGUI cũng chứa các giao diện
video.

2.2. Phát hiện khuôn mặt


2.2.1. HaarCascade
Về cơ bản HaarCascade sử dụng các đặc trưng Haar nhiều lần liên tiếp nhau để
tạo thành một hệ thống phát hiện khuôn mặt.

2.2.1.1. Đặc trưng Haar


Các bộ lọc được liệt kê ở dưới trong đó a) là các bộ lọc bắt các cạnh trong ảnh,
b) bắt các đường thẳng trong ảnh, đây là 2 bộ lọc cơ bản của đặc trưng Haar.
Ngoài ra còn có các bộ lọc Haar khác, ví dụ như c) là đặc trưng 4 hình vuông

Hình 2.1: Đặc trưng Haar – 1

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
12
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

hoặc đặc trưng nằm gọn trong trung tâm một vùng

Hình 2.2: Đặc trưng Haar - 2


Tuy nhiên, cách áp dụng các bộ lọc này có khác hơn so với các bộ lọc thường
dùng. Chúng ta thường áp dụng bộ lọc cho toàn cửa sổ trượt trên ảnh, trong khi
ở đặc trưng Haar, bộ lọc chỉ chiếm một phần trong cửa sổ trượt, như sau:

Hình 2.3: Mô phỏng hoạt động của bộ lọc


Trong hình trên, cửa sổ trượt được đặt ngay ngắn vừa gọn để nhìn được toàn
bộ ảnh. Chúng ta có thể thấy bộ lọc của đặc trưng Haar đang tìm một cạnh
phân cách giữa “mắt-lông mày” với “mũi”, ở bộ lọc sau lại tìm đường sống

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
13
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

mũi bởi nó sẽ sáng màu hơn so với hai bên cánh mũi. Bộ lọc Haar sẽ chỉ nhìn
vào một vùng cụ thể trong cửa sổ trượt để tìm các đặc trưng của khuôn mặt
Bằng mắt thường chúng ta có thể nhận biết được bộ lọc đã tìm đúng cạnh hay
chưa, nhưng với máy tính chúng ta phải tính các giá trị của đặc trưng Haar là
sự chênh lệch giữa tổng các pixel vùng đen và vùng trắng như công thức:

f(x) = Tổngvùngđen(các mức xám của pixel) – Tổngvùngtrắng(các mức xám của pixel)

Viola và Joines đã đưa ra một phương pháp giúp tính tổng các giá trị mức xám
của một vùng bất kỳ nào đó trên ảnh, sử dụng ảnh tích phân, là một mảng hai
chiều có kích thước bằng kích thước ảnh cần tính đặc trưng Haar, mỗi phần tử
của mảng này là tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của
nó.

Công thức tính Intergral Image

Sau khi tính được Intergral Image, việc tính tổng các giá trị mức xám của một
vùng bất kỳ trên ảnh được thực hiện đơn giản như sau:
Giả sử chúng ta cần tính tổng giá trị mức xám của vùng D như hình dưới:
D = A + B + C + D – (A+B) – (A+C) + A
Với A + B + C + D chính là giá trị tại điểm P4 trên Integral Image, tương tự
như vậy A+B là giá trị tại điểm P2, A+C là giá trị tại điểm P3, và A là giá trị
tại điểm P1. Vậy ta có thể viết lại biểu thức tính D ở trên như sau:

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
14
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

2.2.1.2. Adaboost
AdaBoost là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận
boosting được Freund và Schapire đưa ra vào năm 1995. Adaboost cũng hoạt
động trên nguyên tắc kết hợp tuyến tính các weak classifiers để hình thành một
trong các strong classifiers.

Tuy nhiên, các bộ lọc Haar kể cả sau Adaboost vẫn chỉ bắt được những đặc
trưng rất cơ bản, và để nhận ra một khuôn mặt chúng ta cần khoảng 6000 các
đặc trưng như vậy. Sau đó chúng ta cần có một cách để kiểm tra xem cửa sổ đó
có chứa mắt hay không mà vẫn phải xử lý đủ nhanh cho cả 6000 đặc trưng: câu
trả lời là Cascade of Classifiers.

Việc Cascade of Classifiers đó được thiết kế như sau: trong 6000+ đặc trưng
đó, chia chúng ra thành rất nhiều bước. Trong đó, mỗi lần cửa sổ trượt qua một
vùng bước ảnh, từng bước một sẽ được xử lý: nếu bước 1 nhận đó là mặt, chúng
ta chuyển qua bước 2; và nếu không thì chúng ta bỏ qua vùng đó và trượt cửa sổ
đi chỗ khác. Nếu một vùng pass toàn bộ các bước test mặt đó thì cửa sổ đó có
chứa mặt người.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
15
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 2.4: Bộ phân loại Adaboost

Các vùng không chứa mặt sẽ bị vứt vào hộp đỏ kia và không bao giờ được nhớ
tới nữa, và các vùng có mặt sẽ được đưa vào hộp xanh để xử lý tiếp.
Chúng ta có thể chia kết quả ra làm 4 loại:

Tên Đáp án đúng Đáp án của chúng ta

True positive True True

True negative False False

False positive False True

False negative True False

Trong đó, nếu dự đoán đúng rồi thì không cần bàn cãi, nhưng nếu chúng ta dự
đoán sai một bước sẽ có thể không qua các bước còn lại. Vì vậy, trong quá trình
train, mô hình sẽ lựa chọn các classifier tốt nhất với độ tự tin hợp lý để ưu tiên
việc false negative không được phép tồn tại — vì nếu chúng ta gặp false
positive, các bước sau sẽ loại ví dụ đó cho chúng ta sau. Trong mô hình nhận
mặt người, bước đầu tiên đúng có 2 bộ lọc trên, với tỉ lệ false negative rất gần
0, và tỉ lệ false positive là 40%. Sau đó các cửa sổ nằm trong ô xanh sẽ được trả

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
16
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

về là các ô chứa mặt: nếu có các ô đè lên nhau cùng chứa một mặt, các tọa độ
các góc sẽ được cộng vào lấy trung bình.

2.2.2. Single Shot MultiBox Detector (SSD)


2.2.2.1. Những đặc điểm chính của SSD
Tại mỗi vị trí trên feature map, SSD đặt các default bounding boxes với các
kích thước và tỷ lệ khác nhau. Trong quá trình xử lý, SSD sẽ đánh giá và tìm
đối tượng trên các bounding box đó nhằm tìm ra box phù hợp với đối tượng cần
tìm kiếm. Thêm vào đó, bằng việc tìm kiếm trên các feature map khác nhau,
SSD có thể tìm kiếm các đối tượng với kích thước khác nhau mà không cần
thay đổi kích thước của các bounding box. Thực nghiệm cho thấy, SSD đạt
74.3% mAP trên tập test của VOC2007, đạt 59 FPS khi sử dụng Nvidia Titan
X với kích thước ảnh đầu vào 512 x 512, nhanh hơn Faster R-CNN.

2.2.2.2. MultiBox Detector

Hình 2.5: MultiBox Detector

Ý tưởng chính của SSD đến từ việc sử dụng các bounding box, bằng việc khởi
tạo sẵn các box tại mỗi vị trí trên ảnh, SSD sẽ tính toán và đánh giá thông tin
tại mỗi vị trí xem vị trí đó có vật thể hay không, nếu có thì là vật thể nào, và
dựa trên kết quả các vị trí gần nhau, SSD sẽ tính toán được box phù hợp nhất
bao trọn vật thể.

Ngoài ra, bằng việc tính toán bounding box trên các feature map khác nhau, tại
mỗi tầng feature map, một box sẽ ôm trọn một phần hình ảnh với các kích
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
17
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

thước khác nhau. Như trên ví dụ trên, con mèo và con chó có thể được phát
hiện ở 2 tầng feature map khác nhau, 2 kích thước và tỉ lệ khác nhau. Thay vì
sử dụng 1 box và thay đổi kích thước box cho phù hợp với vật thể, thì SSD sử
dụng nhiều box trên nhiều tầng, từ đó tổng hợp ra vị trí và kích thước box kết
quả.

Sau khi đi qua một số lớp tích chập để trích chọn đặc trưng, chúng ta nhận
được một lớp đặc trưng có kích thước m× n (số lượng các vị trí) với p kênh, ví
dụ 8 × 8 hoặc 4 × 4 như trên hình. Sau đó một lớp tích chập khác có bộ lọc 3 ×3
sẽ được áp dụng vào m× n × p lớp đặc trưng này.

Ở mỗi vị trí, tức là theo như hình trên sẽ là ở mỗi ô vuông nhỏ, chúng ta sẽ có
được k bounding boxes, k bounding boxes này có kích thước và tỉ lệ khung
hình khác nhau. Ví dụ, bounding box của con người thường là hình chữ nhật
đứng, trong khi đó bounding box của chiếc xe hơi thường là hình chữ nhật nằm
ngang. Ở mỗi bounding box, chúng ta sẽ có 5 tham số được dự đoán gồm 1 giá
trị độ chính xác (conf) và 4 giá trị (cx, cy, w, h) liên quan đến hình dạng và vị
trí của bounding box. Cuối cùng chúng ta có (1 + 4) x k x m x n outputs.

2.2.2.3. Cấu trúc mạng SSD

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
18
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 2.6: Cấu trúc mạng SSD

Để tăng khả năng chính xác, các layer của feature map khác nhau cũng đều qua
một lớp convolution nhỏ có kernel 3 x 3 như hình ở trên:
 Như hình trên, tại layer conv4_3 có kích thước là 38 x 38 x 512, một
conv 3 x 3 được áp dụng vào. Ở layer này, chúng ta tạo ra 4 bounding
boxes và mỗi bounding box chúng ta có (classes + 4) outputs. Tổng
cộng, chúng ta sẽ có 38 x 38 x 4 x (c + 4) outputs, trong đó c bao gồm
cả số class và "background". Giả sử chúng ta có 20 object classes cộng
với background class, chúng ta sẽ có 38 x 38 x 4 x (21 + 4) = 144,400.
Và số bounding boxes ta thu được là 38 x 38 x 4 = 5776
 Tương tự, chúng ta áp dụng cách trên với các feature map khác, tuy
nhiên mối feature map chúng ta sẽ tạo ra số các bounding boxes khác
nhau cho mỗi location.
 Conv7: 19 x 19 x 6 = 2166 boxes (6 bounding boxes tạo ra trên mỗi
location)
 Conv8_2: 10 x 10 x 6 = 600 boxes (6 bounding boxes tạo ra trên mỗi
location)

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
19
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 Conv9_2: 5 x 5 x 6 = 150 boxes (6 bounding boxes tạo ra trên mỗi


location)
 Conv10_2: 3 x 3 x 4 = 36 boxes (4 bounding boxes tạo ra trên mỗi
location)
 Conv11_2: 1 x 1 x 4 = 4 boxes (4 bounding boxes tạo ra trên mỗi
location)

Tổng cộng, chúng ta có 8732 boxes. Chính vì số lượng boxes nhiều như vậy,
mà thuật toán SSD vẫn còn chậm hơn so với YOLO, YOLO chỉ xác định số
bounding box ở layer cuối có kích thước 7 x 7, và tại mỗi location, YOLO xác
đinh 2 bounding box, vậy sẽ có 7 x 7 x 2 = 98 boxes.

2.2.2.4. Hàm mất mát (Loss Function)


1
L(x, c, l ,g) = N (Lconf(x, c,) + αLloc(x, l, g)

Loss Function được chia làm hai phần: confidence (L_conf) và location
(L_loc)
 Confidence: thành phần này tính toán tỉ lệ rơi vào class mà bounding
box được tính toán. Độ đo cross-entropy được sử dụng để đo thành phần
này.
 Location: Thành phần này ước lượng sự sai lêch thực tế của bounding
box so với tập dữ liệu mẫu. L2-Norm được sử dụng ở đây.

N ❑

Lloc(x, l, g) = ∑ ∑ x kijsmoothL1(l mn - ^gmj )


i ∈Pos m ∈{cx , cy ,w , h}

^gcxj = ¿¿ - cx
di )/d wi ^gcyj = ¿¿ - cy
di )/d hi
w h
gj gj
^gwj = log( d w ) ^ghj = log( d h ¿
i i

Hàm mất mát Location sử dụng smooth L1 được sử dụng giữa predicted box
(li) và ground-truth box (g), các tham số bao gồm tọa độ tâm (cx,cy), width (w)
và height (h)
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
20
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Smooth L1 có thể được giải thích là sự kết hợp giữa L1-loss và L2-loss, nó là
L1-loss khi giá trị tuyệt đối của đối số lớn, là L2-loss khi giá trị tuyệt đối của
đối số gần bằng 0, có công thức như sau:

{
| x|if |x|> α
L1;smooth = 1 2
x if |x|< α
|α|

Tham số α thường được đặt bằng 1, cạnh x2 để làm cho nó liên tục
p
N exp ⁡(c i )
Lconf(x,c) = - ∑ x log(c^ ) - i ∈¬¿∑
p
ij
p
i
log ⁡¿ ¿ ¿
¿ ) where p
c^ =
i
∑ exp ⁡( c ip)
i ∈Pos
p

Hàm mất mát Confidence là một hàm mất mát softmax đối với nhiều classes
(c), xijp = {1,0}, là một chỉ báo để nối default box thứ i với ground truth box
thứ j của category p.

2.2.2.5. MultiBox Prior và IoU


Logic xoay quanh việc tạo ra bounding box thực sự khá phức tạp. Trong
MultiBox, một khái niệm được sử dụng là priors (hay thuật ngữ anchors trong
Faster-R-CNN), là những bounding box được tính toán trước với kích thước cố
định tuân theo phân phối gần với phân phối của bounding box mẫu. Trong thực
tế, những priors này được lựa chọn khi tỉ lệ Intersection/Union (IoU) lớn hơn
ngưỡng 0.5. Như mô tả trong hình dưới dây, giá trị IoU tại 0.5 vẫn chưa đủ tốt
nhưng nó sẽ là một điểm bắt đầu tương đối ổn cho thuật cho giải thuật bounding
box regression (chính là việc học tham số của mạng) - điểu này thực sự sẽ tiết
kiệm thời gian và đem lại kết quả tốt hơn rất nhiều so với việc bắt đầu tại một vị
trí ngẫu nhiên.
Do đó MultiBox bắt đầu với priors như một prediction khởi tạo với mục đích
hồi quy gần hơn với bounding box thực sự.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
21
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 2.7: Intersection over nion

Kiến trúc của Multibox bao gồm 11 priors với mỗi feature map cell (8x8, 6x6,
4x4, 3x3, 2x2) và chỉ 1 prior với 1x1 feature map dẫn đến tổng cộng có 1420
priors với mỗi hình ảnh, do đó cho phép bao phủ hoàn toàn một bức ảnh đầu
vào trên những tỉ lệ khác nhau, khiến việc nhận diện những đối tượng ở các
kích thước khác nhau trở nên dễ dàng.

2.2.2.6. So sánh SSD với HaarCascade


Cả hai phương pháp trên đều cho phép xác định vị trí nhiều khuôn mặt trên một
bức ảnh hoặc một khung hình trong một video. Tuy nhiên, SSD sử dụng mạng

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
22
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

neural để huấn luyện cho máy tính học được các đặc trưng khuôn mặt nên nó có
khả năng nắm bắt được vị trí khuôn mặt ở những vị trí cường độ sáng và góc
nghiêng mà HaarCascade phát hiện kém hơn. Mặt khác, do SSD sử dụng đến
mô hình mạng neural nên tốn tài nguyên nhiều hơn so với HaarCascade dẫn đến
tốc độ xử lý có thể chậm hơn HaarCascade.

Hình 2.8: So sánh giữa hai phương pháp phát hiện mặt

Chúng ta có thể thấy SSD (khung màu đỏ) phát hiện được hầu hết các khuôn
mặt trong khi HaarCascade bỏ sót khá nhiều. Tùy theo yêu cầu của bài toán cần
độ chính xác cao trong việc xác định vị trí khuôn mặt, hay muốn cải thiện tốc
độ xử lý của hệ thống mà chúng ta có thể chọn một trong hai phương pháp để
xác định tọa độ khuôn mặt trên một bức ảnh.

Trong đề tài đồ án này em đã sử dụng phương pháp xác định vị trí khuôn mặt là
SSD để cải thiện độ chính xác, làm đầu vào cho các bước tiếp theo.

2.2.3. Mạng Neural ResNet


ResNet (Residual Network) là một trong những mạng Neural mạnh nhất, đạt
được kết quả đáng kinh ngạc trong cuộc thi ILSVRC 2015 với tỷ lệ lỗi top 5 chỉ
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
23
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

3.57%. Không những thế nó còn đứng vị trí đầu tiên trong cuộc thi ILSVRC and
COCO 2015 với ImageNet Detection, ImageNet localization, Coco detection và
Coco segmentation.Hiện tại thì có rất nhiều biến thể của kiến trúc ResNet với số
lớp khác nhau như ResNet-18, ResNet-34, ResNet-50, ResNet-101, ResNet-
152,...Với tên là ResNet theo sau là một số chỉ kiến trúc ResNet với số lớp nhất
định.
Tại sao gọi là residual network? Liệu nó có “dư thừa” như tên gọi của mình?
Nhờ khả năng biểu diễn mạnh mẽ của ResNet, hiệu suất của nhiều ứng dụng thị
giác máy, không chỉ các ứng dụng phân loại hình ảnh được tăng cường. Một số
ví dụ có thể kể đến là các ứng dụng phát hiện đồ vật và nhận dạng khuôn mặt.

2.2.3.1. Tại sao lại xuất hiện mạng ResNet


Mạng ResNet là một mạng CNN được thiết kế để làm việc với hàng trăm hoặc
hàng nghìn lớp tích chập. Một vấn đề xảy ra khi xây dựng mạng CNN với nhiều
lớp tích chập sẽ xảy ra hiện tượng Vanishing Gradient dẫn tới quá trình học tập
không tốt.

Vanishing Gradient
Trước hết thì thuật toán lan truyền ngược (Backpropagation Algorithm) là một
kỹ thuật thường được sử dụng trong quá trình huấn luyện. Ý tưởng chung của
thuật toán là sẽ đi từ lớp đầu ra (output layer) trở về lớp đầu vào (input layer)
và tính toán gradient của cost function tương ứng cho từng tham số (weight)
của mạng. Gradient Descent sau đó được sử dụng để cập nhật các tham số đó.

Toàn bộ quá trình trên sẽ được lặp đi lặp lại cho tới khi các tham số của mạng
được hội tụ. Thông thường chúng ta sẽ có một siêu tham số (số Epochs – số

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
24
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

lần huấn luyện và trọng số (weight) được cập nhật định nghĩa cho số lượng
vòng lặp của quá trình này. Nếu số lượng vòng lặp quá nhỏ thì ta có thể gặp
phải trường hợp mạng không cho ra kết quả tốt và ngược lại thời gian huấn
luyện sẽ lâu nếu số lượng vòng lặp quá lớn, chưa kể còn có thể gặp phải hiện
tượng over fitting, tức là hệ thống đã thu được các tham số hội tụ nhưng vẫn
chưa dừng quá trình huấn luyện.

Hình 2.9: Vanishing Gradient

Tuy nhiên, trong thực tế Gradients thường sẽ có giá trị nhỏ dần khi đi xuống
các layer thấp hơn. Dẫn đến kết quả là các cập nhật thực hiện bởi Gradients
Descent không làm thay đổi nhiều weights của các layer đó và làm chúng
không thể hội tụ và mạng sẽ không thu được kết quả tốt. Hiện tượng như vậy
gọi là Vanishing Gradients. Mạng ResNet ra đời để giải quyết vấn đề đó

2.2.3.2. Kiến trúc mạng ResNet

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
25
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Giải pháp mà ResNet đưa ra là sử dụng kết nối “tắt” đồng nhất để xuyên qua
một hay nhiều lớp. Một khối như vậy được gọi là Residual Block, như hình
dưới:

Hình 2.10: Residual Block

ResNet gần như tương tự với các mạng gồm có các lớp tích chập (convolution),
lớp tổng hợp đặc trưng (pooling), hàm kích thích (activation) và lớp fully-
connected. Ảnh trên hiển thị khối dư được sử dụng trong mạng, một mũi tên
cong xuất phát từ đầu và kết thúc tại cuối khối dư. Với H(x) là giá trị dự đoán,
F(x) là giá trị thật (nhãn), chúng ta muốn H(x) bằng hoặc xấp xỉ F(x). Từ x có
được F(x) bằng:
X -> weight1 -> ReLU -> weight2
Và H(x) có được bằng: F(x) + x -> ReLU
Việc xếp chồng các lớp sẽ không làm giảm hiệu suất mạng. Chúng ta có thể
đơn giản xếp chồng các ánh xạ đồng nhất lên mạng hiện tại và hiệu quả của
kiến trúc không thay đổi. Hơn nữa, với kiến trúc này, các lớp ở phía trên có
được thông tin trực tiếp hơn từ các lớp dưới nên sẽ điều chỉnh trọng số hiệu
quả hơn.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
26
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 2.11: So sánh mô hình giữa các mạng Neural

 Hình 1. VGG-19 là một mô hình CNN sử dụng kernel 3x3 trên toàn bộ
mạng, VGG-19 cũng đã giành được ILSVRC năm 2014.

 Hình 2. ResNet sử dụng các kết nối tắt ( kết nối trực tiếp đầu vào của
lớp (n) với (n+x) được hiển thị dạng mũi tên cong. Qua mô hình nó
chứng minh được có thể cải thiện hiệu suất trong quá trình training
model khi mô hình có hơn 20 lớp.

 Hình 3. Tổng cộng có 12 đầu ra từ ResNet-152 và VGG-19 đã được sử


dụng làm đầu vào cho mạng có 2 lớp hidden. Đầu ra cuối cùng được
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
27
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

tính toán thông qua hai lớp ẩn (hidden). Việc xếp chồng các lớp sẽ
không làm giảm hiệu suất mạng. Với kiến trúc này các lớp phía trên có
được thông tin trực tiếp hơn từ các lớp dưới nên sẽ điều chỉnh trọng số
hiệu quả hơn.

2.2.3.3. Xây dựng mạng ResNet-50


Hình dưới mô tả chi tiết kiến trúc mạng neural ResNet:

Hình 2.12: Kiến trúc ResNet Neural Network

"ID BLOCK" trong hình trên là viết tắt của từ Identity block và ID BLOCK x3
nghĩa là có 3 khối Identity block chồng lên nhau. Nội dung hình trên như sau :
 Zero-padding : Input với (3,3)

 Stage 1 : Tích chập (Conv1) với 64 filters với shape(7,7), sử dụng stride
(2,2). BatchNorm, MaxPooling (3,3).

 Stage 2 : Convolutiontal block sử dụng 3 filter với size 64 × 64 ×256 ,


f=3, s=1. Có 2 Identity blocks với filter size 64 × 64 ×256 , f=3.

 Stage 3 : Convolutional sử dụng 3 filter size 128 ×128 ×512, f=3,s=2. Có


3 Identity blocks với filter size 128 ×128 ×512, f=3.

 Stage 4 : Convolutional sử dụng 3 filter size 256 ×256 × 1024, f=3,s=2.


Có 5 Identity blocks với filter size 256 ×256 × 1024, f=3.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
28
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 Stage 5 :Convolutional sử dụng 3 filter size 512 ×512× 2048, f=3,s=2.


Có 2 Identity blocks với filter size 512 ×512× 2048, f=3.

 The 2D Average Pooling : sử dụng với kích thước (2,2).

 The Flatten.

 Fully Connected (Dense) : sử dụng softmax activation.

Thực tế, ResNet không phải là kiến trúc đầu tiên sử dụng các kết nối tắt,
Highway Network là một ví dụ. Trong thử nghiệm cho thấy Highway Network
hoạt động không tốt hơn ResNet. Giải pháp ResNet đưa ra đơn giản hơn và tập
trung vào cải thiện thông tin thông qua độ dốc của mạng. Sau ResNet hàng loạt
biến thể của kiến trúc này được giới thiệu. Thực nghiệm cho thấy những kiến trúc
này có thể được huấn luyện mạng nơ ron với độ sâu hàng nghìn lớp và nó nhanh
chóng trở thành kiến trúc phổ biến nhất trong Computer Vision.

2.3. Theo vết khuôn mặt theo trình tự video


Theo vết khuôn mặt được trình bày trong nội dung của luận văn này sử dụng so
sánh hai khung hình, có thể so sánh khung hình hiện tại với hình nền chúng ta
chụp ban đầu khi chúng ta bật camera hoặc khung hình trước đó.

Để theo vết khuôn mặt chúng ta sử dụng cách so sánh vị trí của khuôn mặt trong 2
frame liên tiếp nhau. Nếu một phát hiện trong thời điểm t quá gần với một trạng
thái đã có tại thời điểm t-1 thì nó sẽ được xem là trùng với đối tượng đó. Một cách
gần đúng, ta giả định những phát hiện này xuất phát từ đối tượng đã có từ thời
điểm t-1 trước đó. Có một khoảng cách được gọi là delta khi một khuôn mặt được
so sánh trong 2 frame liên tiếp mà gần nhau nhất thì được coi là cùng khuôn mặt.
Nếu khoảng cách này vượt qua giá trị delta thì nó là hai khuôn mặt khác nhau.
Ngoài ra do lo sợ sự xuất hiện của hai khuôn mặt liên tiếp nhưng của của người
khác nhau, ta tính thêm một thông số nữa là tỉ lệ khuôn mặt nếu vị trí gần nhau rồi
và tỉ lệ khuôn mặt trước và sau nằm trong khoảng 85-100%.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
29
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

2.4. Nhận diện khuôn mặt

Hình 2.13: Hệ thống nhận dạng khuôn mặt cơ bản


Cơ bản một hệ thống nhận dạng khuôn mặt sẽ có đầu vào là một ảnh tĩnh hoặc một
khung hình của một video. Qua bước tiền xử lý giúp nâng cao chất lượng hình ảnh,
chuẩn hóa về mặt dữ liệu, kích thước hình ảnh, giúp cho việc trích rút đặc trưng
được chính xác hơn.
Trích rút đặc trưng là kỹ thuật sử dụng thuật toán để lấy ra những thông tin mang
những đặc điểm riêng biệt của mỗi khuôn mặt mỗi người, trong phạm vi đồ án của
em, em sử dụng phương pháp mã hóa khuôn mặt về một vector 128 chiều.
Sau khi trích chọn được vector đặc tính, chúng ta sẽ đối chiếu vector này với cơ sở
dữ liệu, từ đó đưa ra kết quả nhận dạng. Cụ thể chúng ta sẽ tính khoảng cách giữa
hai vector, nếu khoảng cách đó nằm trong ngưỡng cho phép thì máy tính sẽ nhận
diện đó là đối tượng cần tìm.

2.4.1. Các phương pháp xác thực khuôn mặt


2.4.1.1. Phương pháp truyền thống
Các phương pháp truyền thống: Xác thực khuôn mặt bằng cách trích xuất ra
một land mark cho khuôn mặt. Land mark như là một bản đồ xác định các vị trí
cố định trên khuôn mặt của một người như mắt, mũi, miệng, lông mày,….

Hình 2.14: Face Land Mark


SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
30
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Như vậy có thể thấy land mark đã loại bỏ những phần thông tin không cần thiết
và giữ lại những thông tin chính. Khi đó mỗi khuôn mặt sẽ được nén thành một
véc tơ n chiều. Thông thường là 68 chiều.

Sử dụng đầu vào là land mark, áp dụng các thuật toán cổ điển như SVM, k-
NN, Naive Bayes, Random Forest, MLP, … để phân loại khuôn mặt cho một
người.

2.4.1.2. Nhận diện 3D


Kĩ thuật nhận diện 3D sẽ sử dụng không gian 3 chiều để biểu diễn khuôn mặt.
Từ thông tin này có thể xác định các đặc trưng khác nhau trên bề mặt khuôn
mặt như các đường countour của mắt, mũi, cằm.
Một lợi thế của nhận diện khuôn mặt 3D là không bị ảnh hưởng bởi những thay
đổi về ánh sáng như các phương pháp 2D. Dữ liệu 3D đã cải thiện đáng kể độ
chính xác của nhận dạng khuôn mặt.
Để tạo ra một ảnh 3D, một cụm ba camera được áp dụng. Mỗi camera sẽ
hướng vào một góc khác nhau. Tất cả các camera này phối hợp cùng nhau
trong việc theo dõi khuôn mặt của một người trong thời gian thực và có thể
nhận diện chúng.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
31
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 2.15: Nhận diện 3D

Nhận diện khuôn mặt của iphone là nhận diện 3D. Bạn sẽ phải quay tròn khuôn
mặt của mình khi xác thực nó để thuật toán học các góc độ khác nhau.

2.4.1.3. Các phương pháp nhận diện khác


Ngoài ra còn có một số phương pháp nhận diện khuôn mặt như nhận diện cảm
biến da và phương pháp kết hợp.

Phương pháp kết hợp có thể sử dụng nhiều thông tin từ đồng thời land mark
face, nhận diện 3D, nhận diện cảm biến da và mang lại độ chính xác cao hơn vì
nó nhận diện tốt được trong các trường hợp khuôn mặt có các biểu cảm như
cau mày, chớp mắt, co dãn khi cười, nói và ít nhạy cảm với chiếu sáng.

2.4.2. Các thuật toán nhận diện khuôn mặt


2.4.2.1. One-shot learning
One-shot learning là thuật toán học có giám sát mà mỗi người chỉ cần một vài,
rất ít, hoặc thậm chí chỉ một bức ảnh để khỏi tạo nhiều biến thể.
Từ đầu vào là bức ảnh của một người, chúng ta sử dụng một kiến trúc thuật
toán CNN đơn giản để dự báo người đó là ai.
Tuy nhiên, nhược điểm của thuật toán này là chúng ta phải huấn luyện lại thuật
toán thường xuyên khi xuất hiện thêm người mới vì “kích thước” của đầu ra
thay đổi tăng thêm 1.
Để khắc phục vấn đề này chúng ta sử dụng phương pháp learning similarity

2.4.2.2. Learning similarity


Phương pháp này dựa trên phép đo khoảng cách giữa hai bức ảnh, thông
thường là các norm chuẩn L1 hoặc L2 sao cho nếu hai bức ảnh cùng thuộc một
người thì khoảng cách là nhỏ nhất, nếu không thuộc thì khoảng cách sẽ lớn hơn

d (img1 , img2)≤ τ → same


{
d (img1, img2)>τ → different

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
32
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hinh 2.16: Phương pháp Học độ đo tương tự


Thay vì dự báo một phân phối xác suất để tìm ra nhãn phù hợp nhất với ảnh
đầu vào. Thuật toán sẽ so sánh khoảng cách giữa ảnh đầu vào (bên phải) với
toàn bộ các ảnh còn lại (bên trái). Ta cần chọn một ngưỡng threshold để quyết
định ảnh là giống hoặc khác. Giả sử ngưỡng threshold là 0.5. Trong các bức
ảnh bên trái thì bức ảnh ở giữa có khoảng cách với ảnh bên phải nhỏ hơn 0.5.
Do đó nó được dự báo cùng một người với ảnh bên phải.

Learning similarity có thể trả ra nhiều hơn một ảnh là cùng loại với ảnh đầu
vào tùy theo ngưỡng threshold.

Ngoài ra phương pháp này không bị phụ thuộc vào số lượng classes. Do đó
không cần phải huấn luyện lại khi xuất hiện class mới.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
33
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Điểm mấu chốt là cần xây dựng được một model encoding đủ tốt để chiếu các
bức ảnh lên một không gian eucledean n chiều. Sau đó sử dụng khoảng cách để
quyết định nhãn của chúng.

Như vậy learning similarity có ưu điểm hơn so với one-shot learning khi không
phải huấn luyện lại model khi mà vẫn tìm ra được ảnh tương đồng.

Vậy làm thế nào để học được biểu diễn của ảnh trong không gian euledean n
chiều? Kiến trúc siam network sẽ giúp chúng ta thực hiện điều này một cách dễ
dàng.

2.4.2.3. Norm (Chuẩn)


Trong không gian một chiều, việc đo khoảng cách giữa hai điểm đã rất quen
thuộc: lấy trị tuyệt đối của hiệu giữa hai giá trị đó. Trong không gian hai chiều,
tức mặt phẳng, chúng ta thường dùng khoảng cách Euclid để đo khoảng cách
giữa hai điểm. Khoảng cách này chính là cái chúng ta thường nói bằng ngôn
ngữ thông thường là đường chim bay. Đôi khi, để đi từ một điểm này tới một
điểm kia, con người chúng ta không thể đi bằng đường chim bay được mà còn
phụ thuộc vào việc đường đi nối giữa hai điểm có dạng như thế nào nữa.
Việc đo khoảng cách giữa hai điểm dữ liệu nhiều chiều, tức hai vector, là rất
cần thiết trong Machine Learning. Chúng ta cần đánh giá xem điểm nào là
điểm gần nhất của một điểm khác; chúng ta cũng cần đánh giá xem độ chính
xác của việc ước lượng; và trong rất nhiều ví dụ khác nữa.

Và đó chính là lý do mà khái niệm norm (chuẩn) ra đời. Có nhiều loại norm


khác nhau mà các bạn sẽ thấy ở dưới đây:

Để xác định khoảng cách giữa hai vector y và z, người ta thưởng áp dụng một
hàm số lên vector hiệu x = y – z. Một hàm số được dùng để đo các vector cần
một vài tính chất đặc biệt.

Một hàm số f() ánh xạ từ một điểm x từ không gian n chiều sang tập số thực
một chiều được gọi là norm nếu nó thõa mãn ba điều kiện sau:

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
34
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 f(x) ≥ 0 Dấu bằng xảy ra khi và chỉ khi x = 0


 f(αx) = |α|f(x), ∀α∈R
 f(x1)+f(x2) ≥ f(x1+x2), ∀x1,x2 ∈ Rn

Điều kiện thứ nhất dễ hiểu vì khoảng cách không thể là một số âm. Hơn nữa
khoảng cách giữa hai điểm y và z bằng 0 nếu và chỉ nếu hai điểm trùng nhau,
tức x=y–z=0

Điều kiện thứ hai có thể được lý giải như sau, nếu ba điểm y,v và z thẳng hàng,
hơn nữa v-y = α(v-z) thì khoảng cách giữa v và y sẽ gấp |α| khoảng cách giữa v
và z

Điều kiện thứ ba chính là bất đẳng thức tam giác nếu ta coi x1 = w−y , x2 =
z−w với w là một điểm bất kỳ trong cùng không gian

Một số chuẩn thường dùng

Giả sử các vector x = [x1,x2,…,xn] , y = [y1,y2,…,yn]

Nhận thấy rằng khoảng cách Euclid chính là một norm, thường gọi là norm 2:

Với p là một số không nhỏ hơn 1 bất kỳ, hàm số sau đây:

được chứng minh đã thỏa mãn ba điều kiện trên, và được gọi là norm p.

Nhận thấy rằng khi p dần về 0 thì biểu thức trên trở thành số các phần tử
khác 0 của x. Hàm số (2) khi p=0 được gọi là giả chuẩn (pseudo-norm) 0. Nó
không phải là norm vì nó không thỏa mãn điều kiện 2 và 3 của norm. Giả-
chuẩn này, thường được ký hiệu là ||x||0, khá quan trọng trong Machine
Learning vì trong nhiều bài toán, chúng ta cần có ràng buộc “sparse”, tức số
lượng thành phần “active” của x là nhỏ.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
35
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Có một vài giá trị của p thường được dùng:

1. Khi p=2 chúng ta có norm 2 như ở trên.


2. Khi p = 1 chúng ta có:

là tổng tuyệt đối của từng phần tử của x. Norm 1 thường được dùng như
xấp xỉ của norm 0 trong các bài toán có ràng buộc “sparse”. Dưới đây là
một ví dụ so sánh norm 1 và norm 2 trong không gian hai chiều:

Hình 2.17: Norm 1 và Norm 2 trong không gian hai chiều

Norm 2 (màu xanh) chính là đường thằng “chim bay” nối giữa hai vector
x và y. Khoảng cách norm 1 giữa hai điểm này (màu đỏ) có thể diễn giải
như là đường đi từ x tới y trong một thành phố mà đường phố tạo thành
hình bàn cờ. Chúng ta chỉ có cách đi dọc theo cạnh của bàn cờ mà không
được đi thẳng.
Khi p dần đến vô cùng, ta có norm p chính là trị tuyệt đối của phần tử lớn
nhất của vector đó

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
36
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Chuẩn của ma trận


Với một ma trận A thuộc Rmxn, chuẩn thường được dùng nhất là chuẩn
Frobenius, ký hiệu là ||A||F là căn bậc hai của tổng bình phương tất cả các
phần tử của ma trận đó

2.4.2.4. Siamese Network


Những kiến trúc mạng mà khi bạn đưa vào 2 bức ảnh và mô hình sẽ trả lời
chúng thuộc về cùng 1 người hay không được gọi chung là Siam network.
Siam network được giới thiệu đầu tiên bởi DeepFace: Closing the Gap to
Human-Level - Yaniv Taigman. elt.
Kiến trúc của Siam network dựa trên base network là một Convolutional neural
network đã được loại bỏ output layer có tác dụng encoding ảnh thành véc tơ
embedding. Đầu vào của mạng siam network là 2 bức ảnh bất kì được lựa chọn
ngẫu nhiên từ dữ liệu ảnh. Output của Siam network là 2 véc tơ tương ứng với
biểu diễn của 2 ảnh input. Sau đó chúng ta đưa 2 véc tơ vào hàm loss function
để đo lường sự khác biệt giữa chúng. Thông thường hàm loss function là một
hàm norm chuẩn bậc 2.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
37
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 2.18: Mô hình Siam Network mã hóa ảnh thành vector

Từ mô hình Convolutional Neural Network trả ra hai vector mã hõa là x1, x2


biểu diễn cho ảnh 1 và ảnh 2, x1 và x2 có cùng số chiều. Hàm f(x) có tác dụng
tạo tính phi tuyến và giảm chiều dữ liệu về các kích thước nhỏ, thông thường là
128 chiều

Khi x1, x2 là cùng một người ¿|f ( x1 ) −f ( x 2 )|¿2 phải là một giá trị nhỏ
2

Khi x1, x2 là hai người khác nhau ¿|f ( x1 ) −f ( x 2 )|¿2 phải là một giá trị lớn
2

Khi sử dụng Siam Network chúng ta sẽ không cần phải lo lắng về vấn đề kích
thước đầu ra bị thay đổi vì mạng đã được loại bỏ lớp cuối.

Mục tiêu chính của Siam Network là tìm ra biểu diễn của ảnh trong không gian
n chiều nên không nhất thiết phải lựa chọn hàm mất mát là hàm binary cross
entropy như các bài toán phân loại nhị phân. Thực tế lựa chọn hàm mất mát là
binary cross entropy vẫn tìm được biểu diễn tốt cho ảnh. Ngoài ra còn một số
biến thể khác của hàm mất mát như sử dụng Norm chuẩn L2 đã chuẩn hóa theo
2
¿∨f ( x 1)−f (x 2 )∨¿2
dạng: hoặc sử dụng Norm chuẩn L1.
¿∨f ( x 1 )+ f ( x 2 )∨¿2

Việc lựa chọn hàm mất mát sẽ có tác động lớn tới độ chính xác của biểu diễn
ảnh. Vậy nên trong phạm vi đồ án này, em xin phép được trình bày về hàm
triplet loss có hiệu quả cao đối với việc biểu diễn vector cho mặt.

2.4.3. Thuật toán Facenet


Facenet chính là một dạng siam network có tác dụng biểu diễn các bức ảnh trong
một không gian eucledean n chiều (thường là 128) sao cho khoảng cách giữa các
véc tơ embedding càng nhỏ, mức độ tương đồng giữa chúng càng lớn.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
38
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

2.4.3.1. Khái quát thuật toán


Hầu hết các thuật toán nhận diện khuôn mặt trước facenet đều tìm cách biểu
diễn khuôn mặt bằng một véc tơ embedding thông qua một layer bottle neck có
tác dụng giảm chiều dữ liệu.
Tuy nhiên hạn chế của các thuật toán này đó là số lượng chiều embedding
tương đối lớn (thường >= 1000) và ảnh hưởng tới tốc độ của thuật toán.
Thường chúng ta phải áp dụng thêm thuật toán PCA để giảm chiều dữ liệu để
giảm tốc độ tính toán.
Hàm loss function chỉ đo lường khoảng cách giữa 2 bức ảnh. Như vậy trong
một đầu vào huấn luyện chỉ học được một trong hai khả năng là sự giống
nhau nếu chúng cùng 1 class hoặc sự khác nhau nếu chúng khác class mà
không học được cùng lúc sự giống nhau và khác nhau trên cùng một lượt huấn
luyện.
Facenet đã giải quyết cả 2 vấn đề trên bằng các hiệu chỉnh nhỏ nhưng mang lại
hiệu quả lớn:
 Base network áp dụng một mạng convolutional neural network và giảm
chiều dữ liệu xuống chỉ còn 128 chiều. Do đó quá trình suy diễn và dự
báo nhanh hơn và đồng thời độ chính xác vẫn được đảm bảo.

 Sử dụng loss function là hàm triplot loss có khả năng học được đồng
thời sự giống nhau giữa 2 bức ảnh cùng nhóm và phân biệt các bức ảnh
không cùng nhóm. Do đó hiệu quả hơn rất nhiều so với các phương
pháp trước đây.

2.4.3.2. Triplet loss


Trong Facenet, quá trình mã hóa của mạng Convolutional Neural Network đã
giúp mã hóa bức ảnh về 128 chiều. Sau đó, những vector này sẽ làm đầu vào
cho hàm mất mát để đánh giá khoảng cách giữa các vector.
Để áp dụng triplet loss, chúng ta sẽ lấy ra ba bức ảnh bao gồm một bức ảnh gốc
(anchor) đã được định danh, một bức ảnh đúng (positive) là ảnh thuộc cùng
một người với ảnh gốc, một bức ảnh sai (negative) là ảnh không phải cùng một

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
39
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

người với ảnh gốc. Em xin phép được ký hiệu ảnh gốc là A, ảnh đúng là P, ảnh
sai là N

Hình 2.19: Triplet Loss

Mục tiêu của hàm mất mát là tối thiểu khoảng cách giữa hai ảnh khi chúng là
Sai, và tối đa khoảng cách khi chúng là Đúng. Tức là chúng ta sẽ chọn bộ ba
ảnh:
 Ảnh Gốc và ảnh Đúng khác nhau nhất có thể để khoảng cách d(A,P)
lớn. Có thể lựa chọn ảnh lúc nhỏ với ảnh hiện tại để thuật toán khó học
hơn. Nhưng nếu học được thì mô hình sẽ “thông minh” hơn

 Ảnh Gốc và ảnh Sai giống nhau nhất có thể để khoảng cách d(A,N) nhỏ.
Có thể lựa chọn ảnh của anh, chị, em, bố…gần giống với người trong
ảnh Gốc.
Triplet loss function luôn lấy ba bức ảnh làm đầu vào, và trong mọi trường hợp
của bộ ba bức ảnh đó ta đều mong muốn d ( A , P)< d ( A , N)
Để làm cho khoảng cách vế trái và vế phải lớn hơn, chúng ta sẽ cộng thêm vào
vế trái một hệ số α không âm rất nhỏ, khi đó kỳ vọng của chúng ta sẽ trở thành:

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
40
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

d ( A , P)+α ≤ d(A ,N )
2 2
→∨¿ f ( A)−f ( P)∨¿ 2+ α ≤ ¿∨f ( A)−f (N )∨¿2
2 2
→∨¿ f ( A)−f ( P)∨¿ 2−¿∨f ( A)−f ( N )∨¿ 2+ α ≤ 0

Như vậy hàm mất mát lúc này sẽ là:


n
L( A , P , N )=∑ ¿∨f ( Ai )−f (Pi )∨¿2−¿∨f ( Ai )−f (N i )∨¿2 +α
2 2

i=0

Trong đó n là số lượng bộ ba ảnh được đưa vào huấn luyện.


Sẽ không ảnh hưởng gì nếu ta nhận diện đúng ảnh Negative và Positive là cùng
cặp hay khác cặp với Anchor. Mục tiêu của chúng ta là giảm thiểu các trường
hợp hợp mô hình nhận diện sai ảnh Negative thành Postive nhất có thể. Do đó
để loại bỏ ảnh hưởng của các trường hợp nhận diện đúng Negative và Positive
lên hàm loss function. Ta sẽ điều chỉnh giá trị đóng góp của nó vào hàm loss
2 2
function về 0. Tức là nếu ¿∨f ( A)−f ( P)∨¿2−¿∨f (A )−f (N )∨¿2 +α ≤ 0 thì
hàm mất mát sẽ được điều chỉnh về bằng 0. Vậy hàm mất mát trở thành:
n
L( A , P , N )=∑ ❑max (¿∨f ( A i)−f (Pi )∨¿ 22−¿∨f ( A i)−f (N i )∨¿ 22+ α , 0)
i=0

Như vậy khi áp dụng Triple loss vào các mô hình convolutional neural network
achúng ta có thể tạo ra các biểu diễn véc tơ tốt nhất cho mỗi một bức ảnh.
Những biểu diễn véc tơ này sẽ phân biệt tốt các ảnh Negative rất giống ảnh
Positive. Và đồng thời các bức ảnh thuộc cùng một nhãn sẽ trở nên gần nhau
hơn trong không gian chiếu euclidean.
Một chú ý quan trọng là khi huấn luyện mô hình Siam Network với Triplet
function chúng ta phải luôn xác định trước cặp ảnh (A,P) thuộc về cùng một
người, ảnh Sai sẽ được chọn ngẫu nhiên từ các ảnh thuộc các nhãn còn lại. Do
đó cần thu thập ít nhất mỗi người hai bức ảnh để có được dữ liệu huấn luyện.

2.4.3.3. Lựa chọn ba ảnh đầu vào

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
41
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Nếu lựa chọn ba ảnh đầu vào một cách ngẫu nhiên có thể khiến cho hàm mất
mát đúng dễ dàng vì trong các ảnh ngẫu nhiên thì khả năng hay ảnh thuộc cùng
một người là khó hơn. Hầu hết các trường hợp đều sẽ thỏa mãn cho hàm mất
mát bé hơn 0 và không gây ảnh ảnh hưởng gì tới giá trị của hàm mất mát do
giá trị của nó sẽ được đặt bằng 0. Như vậy việc học các bức ảnh Sai quá khác
biệt so với ảnh Gốc sẽ không có nhiều ý nghĩa.
Để mô hình khó học hơn và đồng thời cũng giúp mô hình phân biệt chuẩn xác
hơn mức độ giống nhau và khác nhau giữa các khuôn mặt, chúng ta cần lựa
chọn đầu vào theo bộ ba khó học (hard triplets)
Ý tưởng đưa ra là chúng ta sẽ tìm bộ ba ảnh sao cho bất đẳng thức hàm mất
mát trên gần đạt được đẳng thức nhất. Tức là d(A,P) lớn nhất và d(A,N) nhỏ
nhất. Hay nói cách khác, với mỗi ảnh Gốc ta cần xác định:
 Hard Positive: Bức ảnh Positive có khoảng cách xa nhất với Anchor
tương ứng với nghiệm:
argmax P (d ( Ai , Pi))
i

 Hard Negative: Bức ảnh Negative có khoảng cách gần nhất với Anchor
tương ứng với nghiệm:
argmin N ( d (A i , N j))
j

Với i,j là nhãn của người trong ảnh


Chiến lược lựa chọn Triple images sẽ có ảnh hưởng rất lớn tới chất lượng của
mô hình Facenet. Nếu lựa chọn Triplet images tốt, Facenet sẽ hội tụ nhanh hơn
và đồng thời kết quả dự báo chuẩn xác hơn. Lựa chọn ngẫu nhiên dễ dẫn tới
thuật toán không hội tụ.

2.4.4. Một số bộ dữ liệu về khuôn mặt


Dưới đây là hai bộ dữ liệu về khuôn mặt phổ biến nhất, được sử dụng nhiều
trong các bài báo và nghiên cứu về nhận diện khuôn mặt:
 CASIA-WebFace: Bộ dữ liệu gồm gần 500 nghìn ảnh được thu thập từ
khoảng 10 nghìn người

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
42
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 VGGFace2: Bộ dữ liệu gồm khoảng 3 triệu ảnh được thu thập từ gần 9
nghìn người
Ngoài ra còn có một số bộ dữ liệu khác:
 Các bộ dữ liệu từ Trung Quốc cũng khá tốt. Những dữ liệu này được
Baidu công bố để hỗ trợ các nhà nghiên cứu
 Các bộ dữ liệu từ Google, Facebook, flickr và các phòng thí nghiệm
 Hiện nay dữ liệu khuôn mặt cho người Việt thì mới chỉ có trong cuộc thi
“nhận diện người nổi tiếng – aivivn”.

Như vậy, thuật toán Facenet trong nhận diện khuôn mặt đã cải thiện được đồng
thời độ chính xác và tốc độ nhờ áp dụng kích thước đầu ra thấp và hàm mất mát
triplet loss hiệu quả. Mấu chốt để xây dựng một mô hình Facenet tốt đó là lựa
chọn đầu vào sao cho chúng là bộ ba ảnh khó học.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
43
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

CHƯƠNG 3: XÂY DỰNG HỆ THỐNG MÔ PHỎNG ĐIỂM DANH

3.1. Phân tích thiết kế hệ thống


Trong phạm vi đồ án tốt nghiệp, em đã mô phỏng điểm danh bằng máy tính cá
nhân, camera được em sử dụng là webcam của laptop. Khi chạy chương trình,
camera sẽ bắt các khung hình và phát hiện xem có mặt người trong đó không, nếu
có sẽ nhận dạng xem người đó là ai và hiển thị thông tin cơ bản của người đó lên
màn hình hiển thị. Đồng thời lưu thời gian người đó được “nhìn thấy” lần đầu tiên
và đưa thông tin đó vào thống kê điểm danh. Ngoài ra còn cho phép người dùng tự
đăng ký thông tin cá nhân và thông tin đó sẽ được quản lý trong một cơ sở dữ liệu
người dùng.

3.1.1. Xác định yêu cầu


Đầu vào: Luồng stream thu được từ camera theo thời gian thực
Đầu ra: Chương trình giúp chúng ta quan sát, ghi lại dữ liệu; phát hiện, theo vết
và nhận diện đối tượng trong mõi khung hình, đưa ra thông tin cơ bản của người
đó lên màn hình hiển thị và “check in” cho người đó.

Yêu cầu chức năng:


 Hiển thị hình ảnh, thông tin của đối tượng tìm được trong khung hình lên
màn hình hiển thị theo thời gian thực
 “Check in” cho người vừa tìm được

Yêu cầu phi chức năng:


 Thiết kế giao diện người dùng
 Quản lý cơ sở dữ liệu người dùng
 Đầy đủ các chức năng để người dùng thuận tiện sử dụng

Môi trường và công cụ hỗ trợ


 Sử dụng hệ điều hành Ubuntu 20.04
 Sử dụng ngôn ngữ Python, và các Framework của Học Sâu
 Sử dụng thư viện PyQt và QtDesigner để thiết kế giao diện người dùng
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
44
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

 Điều kiện ánh sáng tốt, khoảng cách giữa khuôn mặt với camera không
quá gần

3.1.2. Cơ sở dữ liệu
Để thuận tiện cho việc quản lý dữ liệu người dùng, em đã sử dụng mysql để tạo
ra cơ sở dữ liệu lưu trữ các thông tin cần thiết với mỗi người dùng. Mysql là hệ
quản trị cơ sỏ dữ liệu mã nguồn mở phổ biến nhất thế giới và được các nhà phát
triển ưa chuộng vì mysql là cơ sở dữ liệu tốc độ cao, ổn định và dễ sử dụng, có
tính khả chuyển, hoạt động trên nhiều hệ điều hành, cung cấp một hệ thống lớn
các hàm tiện ích rất mạnh. Với tốc độ và tính bảo mật cao, mysql rất thích hợp
cho các ứng dụng có truy cập cơ sở dữ liệu trên internet.
Trong đồ án lần này, em đã sử dụng mysql để xây dựng một cơ sở dữ liệu với
hai Tables để lưu trữ hai kiểu thông tin người dùng.

Hình 3.1: Các trường thông tin trong hai Table

Thứ nhất là Table của các admin chương trình này, chỉ có các admin mới được
quyền đăng nhập và sử dụng giao diện người dùng này. Ý tưởng của em là
những admin này chính là các thầy cô đang giảng dạy trong nhà trường hoặc
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
45
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

những cán bộ có thẩm quyền kiểm tra mới được phép đăng nhập và theo dõi.
Giảng viên đăng nhập để tiến hành điểm danh và tra cứu thông tin. Các cán bộ
có thẩm quyền có thể truy cập và kiểm tra giám sát cũng như trích xuất thông tin
điểm danh của sinh viên. Dữ liệu được tổ chức gồm 6 trường:
 Admin: Tên của giảng viên hoặc cán bộ có thẩm quyền
 Account: Tên đăng nhập
 Password: Mật khẩu đăng nhập
 Position: Chức vụ hoặc bộ môn trực thuộc
 PhoneNumber: Số điện thoại
 Email: Địa chỉ mail

Thứ hai là Table người dùng đã đăng ký thông tin. Dữ liệu trong Table này được
tổ chức gồm 8 trường:
 STT: Số thứ tự
 UserName: Tên người dùng
 ID: Mã sinh viên hoặc số chứng minh nhân dân
 Unit: Đối với đối tượng ở đồ án là sinh viên thì trường này sẽ là tên lớp
chuyên ngành của mỗi sinh viên
 DateOfBirth: Ngày tháng năm sinh, viết theo dạng YYYY-MM-DD
 Email: Địa chỉ mail người dùng
 PhotoPath: Đường dẫn tới bức ảnh mà người dùng muốn dùng làm ảnh
đại diện
 DisplayName: Tên hiển thị
Cơ sở dữ liệu hình ảnh mã hóa được lấy từ ảnh khuôn mặt của người dùng. Hệ
thống sau khi phát hiện được khuôn mặt sẽ so sánh với cơ sở dữ liệu này để quản
lý nhận diện, check in, hiển thị.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
46
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

3.1.3. Chức năng nhận diện khuôn mặt

Hình 3.2: Sơ đồ khối chức năng nhận diện khuôn mặt

Bắt đầu mở webcam, từng khung hình sẽ được “bắt” để tiến hành xử lý. Với mỗi
khung hình, bước đầu tiên chính là tiền xử lý để đưa khung hình đó về dạng ảnh
blob, làm đầu vào cho mô hình Face Detection. Load mô hình Face Detection
với đầu vào là ảnh đã tiền xử lý, mô hình Face Detection này được xây dựng dựa
SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
47
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

trên mô hình mạng ResNet và thuật toán SSD để xác định trên khung hình có
khuôn mặt nào không và vị trí của khuôn mặt đó ở đâu. Nếu không phát hiện
được bất kỳ khuôn mặt nào trên khung hình hiện tại thì sẽ xuất khung hình đó ra
màn hình mà không cần xử lý gì thêm. Và ngược lại, nếu đã xác định được các
vị trí có khuôn mặt trong khung hình, chúng ta sẽ tiến hành vẽ box đánh dấu
khuôn mặt đó trên khung hình đồng thời sử dụng chính tọa độ đó để trích xuất
vùng ảnh đó làm đầu vào mô hình Face Recognition. Mô hình Face Recognition
sử dụng mô hình mạng Siam Network với hàm mất mát là Triplet loss với đầu
vào là vùng ảnh sẽ cho ra đầu ra là một vector đặc trưng 128 chiều. Sau khi đã
trích chọn được đặc trưng cả vùng có chứa khuôn mặt, hệ thống sẽ sử dụng
Norm chuẩn L2 để tính khoảng cách giữa đặc trưng vừa mã hóa với đặc trưng
được lưu trong cơ sở dữ liệu nhân diện. Nếu khoảng cách tính được cao hơn một
ngưỡng khoảng cách đã đặt trước thì sẽ hiển thị lên màn hình đánh dấu box vừa
xử lý được là None. Nếu khoảng cách đó thấp hơn ngưỡng thì chúng ta lấy thông
tin từ cơ sở dữ liệu người dùng và xuất ra màn hình các thông tin theo yêu cầu
thiết kế. Tiếp tục với các khung hình tiếp theo được đưa vào hệ thống, việc vẽ
box cho khuôn mặt phát hiện được cũng giúp cho việc theo vết đối tượng được
thuận tiện hơn.

3.2. Hệ thống điểm danh:

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
48
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 3.3: Màn hình đăng nhập của hệ thống


Ngay sau khi chạy chương trình, màn hình đăng nhập sẽ xuất hiện và yêu cầu
nhập các thông tin cần thiết cho việc truy cập vào phần mềm đó là Admin và
Password. Mục Admin chính là tên đăng nhập (Account) mà chúng ta đã đăng ký
trong cơ sở dữ liệu và Password chính là mật khẩu. Khi đã hoàn thành việc nhập,
chúng ta bấm vào nút Confirm, lúc này hệ thống sẽ so sánh Account và Password
mà ta vừa nhập với dữ liệu đã được lưu trong cơ sở dữ liệu, nếu không trùng khớp
sẽ xuất hiện một tin nhắn thông báo việc đăng nhập thất bại, ngược lại nếu trùng
khớp thì màn hình chính của phần mềm sẽ xuất hiện

Hình 3.4: Màn hình chính của hệ thống

Tại màn hình chính này sẽ bao gồm ba nút bấm là ShowCam, Sign Up và Statistic.
Khi bấm Statistic, xuất hiện danh sách thống kế điểm danh của các sinh viên. Ở
đây chỉ phép xem chứ không có bất kỳ chỉnh sửa nào vào danh sách, người dùng
có thể xem thống kê điểm danh của một cá nhân hoặc toàn bộ lớp, có thể xem toàn
bộ thời gian được lưu hoặc chỉ một khoảng thời gian mà người dùng mong muốn
lựa chọn. Khi bấm vào nút ShowCam, webcam sẽ được bật và chức năng nhận
diện khuôn mặt được khởi động đồng thời các khung hình sau khi đã được xử lý
sẽ được hiển thị trở lại màn hình theo thời gian thực một cách liên tục tạo thành

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
49
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

một luồng stream, các thông tin của đối tượng nhận diện được sẽ hiển thị ở phía
bên phải. Màn hình hiển thị sẽ xuất khung hình bao gồm luồng stream mà webcam
bắt được cùng với box khuôn mặt đã vẽ và tên hiển thị ở phía trên, giao diện này
cũng bao gồm cả mục ngày tháng và thời gian để phục vụ cho việc điểm danh và
check in, check out. Khi đã mở webcam và tiến dành nhận diện thành công các đối
tượng có trong khung hình, nút check in và check out mới được phép sử dụng,
nháy đúp vào một trong hai nút bấm đó, thông tin gồm tên, thời gian và trạng thái
(check in hay check out) sẽ được trích xuất và lưu lại dưới dạng file csv. File csv
này sẽ được sử dụng khi bấm Statistic.

Còn đối với nút bấm Sign Up, một giao diện khác sẽ được gọi để phục vụ cho các
thao tác liên quan tới vấn đề đăng ký người dùng, ở đây tức là các sinh viên, kèm
với đó là thêm các bức ảnh vào cơ sở dữ liệu hình ảnh nhận diện

Hình 3.5: Giao diện Singup chính

Tại giao diện này có bốn nút bấm. Hai nút bấm Capture và UploadFile phục vụ
cho việc lấy dữ liệu ảnh để thêm vào cơ sở dữ liệu ảnh nhận diện. Khi bấm vào
nút bấm Capture, đầu tiên hệ thống sẽ yêu cầu bạn chọn vị trí lưu file ảnh

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
50
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 3.6: Lựa chọn folder lưu trữ

Chúng ta sẽ chọn vị trí lưu và đặt tên file lưu đó trùng với tên hiển thị mà người
dùng muốn hệ thống hiển thị ra màn hình khi nó nhận diện được họ. Ở trong hệ
thống này em có làm riêng một file ảnh dùng để lưu các dữ liệu này. Sau khi chọn
xong, chúng ta ngồi ngay ngắn trước webcam để hệ thống tự động chụp, cố gắng
cử động đầu để hệ thống có thể chụp được càng nhiều góc độ khuôn mặt càng tốt,
hiện tại vì điều kiện máy tính không đủ khỏe nên em chỉ chụp mỗi người 10 bức
ảnh để làm dữ liệu. Với nút UploadFile, khi bấm vào hệ thống sẽ để chúng ta truy
xuất đến đường dẫn mà chứa file ảnh mà chúng ta muốn sử dùng làm dữ liệu ảnh
nhận diện. Các bức ảnh trong file này sẽ được đưa về lưu vào cơ sở dữ liệu ảnh
nhận diện để tiện cho việc quản lý và huấn luyện.

Tác dụng của nút bấm ConfirmSignup là để xác nhận đã xong việc đăng ký một
người dùng mới và quay trở lại giao diện màn hình hiển thị chính, lúc đó coi nhu
chúng ta đã đăng ký xong và nếu bấm ShowCam hệ thống sẽ nhận diện và trích
xuất thông tin ra màn hình.

Nút bấm List sẽ cho người dùng truy cập vào danh sách người dùng, tức là danh
sách sinh viên đã được đăng ký điểm danh. Được quyền thêm, sửa, xóa thông tin
sinh viên ngay trên giao diện như sau:

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
51
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 3.7: Giao diện danh sách người dùng

Các thông tin của tất cả các sinh viên đã đăng ký thông tin trong cơ sở dữ liệu
người dùng đều sẽ được hiển thị trên đây. Khi bấm con trỏ chuột vào bất kỳ người
nào, hình đại diện của người đó sẽ được hiện lên để dễ dàng nhận biết các sinh
viên với nhau. Ba nút bấm AddDB, AlterDB, Delete chính là ba nút thêm, sửa, và
xóa. Khi nút AddDB hoặc nút AlterDB được bấm, giao diện hiện lên sẽ tương tự
nhau

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
52
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 3.8: Giao diện điền thông tin đăng ký

Tuy nhiên, với nút AddDB các mục để điền thông tin sẽ trống hoàn toàn và chúng
ta sẽ điền đủ các mục được yêu cầu, còn AlterDB thì các muc thông tin đêu được
trích từ thông tin người dùng mà chúng ta đã chọn trước khi bấm AlterDB, việc
của chúng ta là sửa tại mục thông tin nào bị sai. Ở đây có mục Photo, mục này
chúng ta phải điền đường dẫn của bức ảnh đại diện mà chúng ta mong muốn,
đường dẫn này sẽ được lưu vào cơ sở dữ liệu người dùng và sẽ được trích xuất trở
lại khi chúng ta kích vào người dùng ở giao diện List, để điền chúng ta có thể thực
hiện nhập thủ công từ bàn phím hoặc sử dụng nút Browser để lựa chọn đường dẫn
chứa ảnh mà ta muốn. Sau khi đã hoàn thành, ấn nút Add đối với giao diện
AddDB hoặc nút Alter đối với giao diện AlterDB và chúng ta sẽ quay trở lại giao
diện List đồng thời dữ liệu sẽ được sửa ở trên danh sách hiển thị cũng như trong
cơ sở dữ liệu người dùng. Hoặc nếu chúng ta không muốn thêm hoặc sửa nữa, nút
Cancel cũng sẽ có tác dụng tương tự. Nút bấm Delete sẽ xóa dữ liệu ngay trên
danh sách cũng như xóa luôn trong cơ sở dữ liệu người dùng, chúng ta chỉ việc
kích chuột vào sinh viên muốn xóa thông tin và nhấn nút Delete.

Sau khi đã hoàn thành những công việc mong muốn với danh sách dữ liệu người
dùng, chúng ta sẽ bấm nút Back để quay trở lại giao diện SignupDB và tiếp tục
với những thao tác khác.

Em đã trình bày xong về hệ thống giao diện người dùng mà em đã xây dựng với
mục đích phục vụ điểm danh. Với bộ khung là giao diện này, em đã đưa phần
nhận diện khuôn mặt vào để nó trở thành hệ thống mô phỏng điểm danh sử dụng
Học Sâu và Trí tuê nhân tạo, cụ thể ở đồ án này là bài toán nhận diện khuôn mặt.
Sau khi hoàn thành hệ thống, em đã thử nghiệm và có một số kết quả cũng như là
nhận xét và định hướng phát triển, em xin trình bày ở chương sau.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
53
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

CHƯƠNG 4: THỬ NGHIỆM VÀ KẾT QUẢ MÔ PHỎNG

Thực nghiệm đánh giá kết quả sản phẩm của quá trình nhận diện và điểm danh
thông qua webcam của máy tính laptop Dell Vostro 5568 Core i7, tốc độ xử lý
2.5GHz – 3.2GHz, RAM 8GB, hệ điều hành Ubuntu 20.04 sử dụng ngôn ngữ lập
trình Python và các framework Học Sâu.
Hiện tại em đang thử nghiệm với các đối tượng xung quanh em như bạn bè, thầy cô,
các anh chị đồng nghiệp. Em đã thu thập dữ liệu ảnh khuôn mặt mỗi người 10 ảnh
làm ảnh Gốc. Ảnh có thể được chụp trực tiếp bằng máy ảnh điện thoại hoặc bất kỳ
thiết bị chụp ảnh nào, em sẽ lấy file ảnh và lưu vào cơ sở dữ liệu ảnh nhận diện mà
em đã xây dựng. Ảnh cũng có thể được lấy bằng cách chạy chương trình mô phỏng
hệ thống điểm danh mà em đã làm và sử dụng webcam máy tính để chụp ảnh đồng
thời lưu các ảnh đó vào cơ sở dữ liệu ảnh nhận diện. Thử nghiệm sẽ được thực hiện
theo đúng quy trình của một hệ thống điểm danh cơ bản bao gồm đăng nhập, đăng
ký thông tin, lấy dữ liệu khuôn mặt, trích đặc trưng và nhận diện, check in, check
out và lưu trữ để làm dữ liệu cho việc điểm danh.

4.1. Kết quả mô phỏng:


Khi bắt đầu mở webcam, giao diện sẽ hiển thị như sau

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
54
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 4.1: Mô phỏng nhận diện khuôn mặt và xuất thông tin lên màn hình

Nhấn nút CheckIN, trạng thái sẽ được chuyển thành Checking In và xuất hiện
một tin nhắn xác nhận việc check in

Hình 4.2: Mô phỏng quá trình check in

Và khi nhấn nút CheckOUT cũng có tin nhắn xác nhận, đồng thời trạng thái
được chuyển thành Checking Out

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
55
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 4.3: Mô phỏng quá trình check out

Thông tin check in và check out sẽ được lưu dưới định dạng file csv, có bà
trường cơ bản là tên người được check in-check out, thời điểm check in-check
out bao gồm ngày giờ đầy đủ, trạng thái check in hay check out

Hình 4.4: Lưu trữ thông tin điểm danh

Trong giao diện SignUp, hai nút chức năng Capture và UploadFile sẽ được hiển
thị như sau, đi kèm với đó là thông báo đã lưu thành công ảnh vào cơ sở dữ liệu
ảnh nhận diện

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
56
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

Hình 4.5: Chụp ảnh hoặc chọn file ảnh từ bên ngoài vào hệ thống

Với giao diện thông kê cơ sở dữ liệu danh sách người dùng, hệ thống sẽ hiển thị
tất cả thông tin và hình ảnh để dễ dàng nhận biết đó là thông tin của người nào

Hình 4.6: Mô phỏng danh sách người dùng

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
57
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

4.2. Nhận xét:


Qua đồ án em đã tạo được một hệ thống mô phỏng điểm danh tự động phát hiện và
nhận diện khuôn mặt sử dụng Học Sâu và Trí tuệ nhân tạo. Trong báo cáo đồ án
em đã trình bày tổng quan về bài toán nhận diện khuôn mặt và các thuật toán cũng
như các mô hình mạng Neural được em lựa chọn sử dụng cho bài toán này, xây
dựng một hệ thống giao diện người dùng đơn giản để phục vụ cho bài toán đã đặt
ra. Đồng thời em đã hoàn thiện việc mô phỏng, đi qua từng bước của một hệ thống
điểm danh bằng nhận diện khuôn mặt.

Bên cạnh những kết quả đã đạt được thì vẫn còn tồn tại khá nhiều hạn chế.
 Chưa xây dựng được hệ thống camera phục vụ cho quá trình chụp ảnh đối
tượng làm dữ liệu ảnh nhận diện. Hiện tại em chỉ làm được với một camera
là webcam của máy tính laptop.
 Giao diện người dùng vẫn chưa thật sự thuận tiện cho người dùng, vẫn chưa
hẳn là có thể để người dùng hoàn toàn sử dụng hệ thống.
 Do vấn đề thời gian và cấu hình máy tính không đáp ứng yêu cầu nên dữ
liệu dùng để huấn luyện cho việc phát hiện và nhận diện còn chưa đủ để hệ
thống có thể cho ra dự đoán với độ chính xác cao.
 Do vấn đề về điều kiện thiết bị mà em sử dụng nên tốc độ xử lý mỗi khung
hình còn khá chậm, hình ảnh được hiển thị còn bị giật, lag gây cảm giác hơi
khó chịu.

4.3. Hướng phát triển trong tương lai:


 Phát triển và hoàn thiện thêm dữ liệu cung cấp cho máy tính học để nhận
diện.
 Nghiên cứu và phát triển mô hình mạng nơ-ron để cải thiện độ chính xác.
 Xây dựng các cụm camera để tiện cho việc bắt dữ liệu nhận diện người
dùng.
 Áp dụng hệ thống máy thiết bị mạnh hơn để việc xử lý được nhanh hơn, cụ
thể ở đây chúng ta có thể sử dụng các máy tính có GPU dung lượng lớn, sử

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
58
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

dụng server để thực hiện việc huấn luyện và lưu trữ mô hình, tham số của
mạng neural.
 Nghiên cứu và áp dụng bài toán nhận diện khuôn mặt trên một hệ thống
camera gồm nhiều camera tạo thành, xử lý đồng thời các tín hiệu mà các
camera gửi về.
 Ứng dụng hệ thống trên các thiết bị mini PC như Raspberry Pi, Jetson Nano,
… kết hợp với cụm camera tạo thành một hệ thống có thể đưa vào lắp đặt
trong thực tế.

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57
59
Đồ án tốt nghiệp GVHD: ThS. Nguyễn Thúy Bình

DANH MỤC TÀI LIỆU THAM KHẢO

Tiếng Việt:
[1] https://nerophung.github.io/2019/06/15/ssd-single-shot-detector
[2] https://machinelearningcoban.com/math
[3] https://viblo.asia/p/haar-cascade-la-gi-luan-ve-mot-ky-thuat-chuyen-dung-de-
nhan-biet-cac-khuon-mat-trong-anh-E375zamdlGW

Tiếng Anh:
[1] Wei Liu , Dragomir Anguelov , Dumitru Erhan , Christian Szegedy , Scott Reed
, Cheng-Yang Fu , Alexander C Berg. SSD: Single Shot MultiBox Detector. 2016
[2] https://github.com/weiliu89/caffe/tree/ssd .
[3] https://cv-tricks.com/keras/understand-implement-resnets
[4] https://www.tensorflow.org/addons/tutorials/losses_triplet?fbclid=IwAR2JGGd
hNuhoMUSTBuID0RBHuIAm3H8qCF9MqSbMClDNF6kYs_K96MnW0bQ
[5] Florian Schroff, Dmitry Kalenichenko, James Philbin . FaceNet: A Unified
Embedding for Face Recognition and Clustering. 2015

SVTH: Lưu Trọng Hiếu Lớp: Kỹ thuật Điện tử và Tin học Công nghiệp K57

You might also like