You are on page 1of 44

Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

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Ử
-----🙞🙞🙞🙞🙞-----

BÁO CÁO CUỐI KỲ


Tên đề tài
Nhận dạng khuôn mặt

Giảng viên bộ môn : Đào Thanh Toản


Sinh viên thực hiện : Vũ Đức Long
Mã sinh viên : 191412532
Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Khoá: 60

HÀ NỘI, 5 tháng 5 năm 2023

i
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1 k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

LỜI CẢM ƠN

Em xin chân thành gửi lời cám ơn đến quý thầy cô trường Đại Học Giao Thông
Vận Tải nói chung và các thầy cô bộ môn trong khoa Điện - Điện Tử nói riêng đã tạo
điều kiện cho chúng em cơ hội thực hành, tiếp xúc để chúng em có thể tránh được
những vướng mắc và bỡ ngỡ trong môi trường công việc thời gian tới.

Em xin chân thành cảm ơn TS Đào Thanh Toản. Nhờ sự giúp đỡ tận tình và
những chỉ bảo của Thầy từ lúc bắt đầu cho tới lúc kết thúc đồ án mà em đã hoàn thành
đúng thời hạn quy định và tích lũy được cho mình một lượng nền tảng kiến thức quý
báu.

Mặc dù đã cố gắng hoàn thành đề tài tốt nhất nhưng do thời gian và kiến thức
còn có hạn nên em sẽ không thể tránh khỏi những thiếu sót nhất định, rất mong nhận
được sự cảm thông, chia sẻ và tận tình đóng góp chỉ bảo của quý thầy cô cũng như
các bạn

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

Hà Nội, ngày 5 tháng 5 năm 2023

Long

Vũ Đức Long

ii
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1 k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

DANH MỤC HÌNH .......................................................................................................................... V


CÁC TỪ VIẾT TẮT ........................................................................................................................ VI

CHƯƠNG 1: GIỚI THIỆU .................................................................................................................... 1

1.1. GIỚI THIỆU .................................................................................................................................... 2


1.2. MỤC TIÊU ĐỀ TÀI ........................................................................................................................... 2
1.3. GIỚI HẠN ĐỀ TÀI....................................................................................................................... 2
1.4. PHƯƠNG PHÁP NGHIÊN CỨU .................................................................................................. 2
1.5. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU................................................................................. 2
1.6. BỐ CỤC QUYỂN BÁO CÁO ....................................................................................................... 3
1.7. GIỚI THIỆU MẠNG CNN .................................................................................................................. 3
1.8 . HÀM OPENCV ................................................................................................................................ 6
1.8.1. OpenCV là gì? ..................................................................................................................... 6
1.8.2. Cấu trúc OpenCV................................................................................................................. 7
1.8.3. Phát hiện khuôn mặt với các hàm trong OpenCV .................................................................. 8
1.9. HÀM FACE-RECOGNITION .............................................................................................................. 8
1.9.1. Hàm face-recognition là gì?.................................................................................................. 8
1.9.2. Cấu trúc hàm face-recognition .............................................................................................. 8
1.10. BÀI TOÁN NHẬN DIỆN KHUÔN MẶT ............................................................................................. ..9
1.10.1. Nhận dạng dựa trên các đặc trưng khuôn mặt…………………………………..................9
1.10.2. Nhận dạng dựa trên xét toàn bộ khuôn mặt………………………………………………..12
1.10.3. Những khó khăn và thách thức trong bài toán nhận diện khuôn mặt……………………..13
1.10.4. Ứng dụng của bài toán nhận diện khuôn mặt……………………………………………..14

CHƯƠNG 2: XÂY DỰNG CHƯƠNG TRÌNH.................................................................................... 16

2.1. XÂY DỰNG PHẦN MỀM ................................................................................................................. 16


2.2. CÁC BƯỚC THỰC HIỆN ................................................................................................................. 16
2.2.1. Tạo tập dữ liệu ................................................................................................................... 17
2.2.2. Huấn luyện dữ liệu đưa vào ................................................................................................ 20
2.2.3. Hiển thị dữ liệu đầu ra ........................................................................................................ 25

CHƯƠNG 3: KẾT QUẢ THÍ NGHIỆM ............................................................................................. 26

3.1. KẾT QUẢ SAU KHI HUẤN LUYỆN ................................................................................................... 36


3.2. ĐƯA HÌNH ẢNH MỘT NGƯỜI CẦN NHẬN DIỆN ................................................................................. 27

KẾT LUẬN........................................................................................................................................... 34

iii
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1 k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

TÀI LIỆU THAM KHẢO .................................................................................................................... 35

PHỤ LỤC…………………………………………………………………………………………………..36

iv
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1 k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

DANH MỤC HÌNH


Hình 1.1 Kiến trúc cơ bản của mạng CNN ........................................................... 4
Hình 1.2 Bộ lọc tích chập được sử dụng trên ma trận điểm ảnh ............................ 4
Hình 1.3 Phương thức Avarage Pooling và Max Pooling ...................................... 6
Hình 1.4 Cấu trúc cơ bản của OpenCV ................................................................. 7
Hình 1.5 Trong thư mục của “face-recognition” đã có các bộ huấn luyện có sẵn...8
Hình 1.6 Hệ thống nhận diện khuôn mặt ………………………………………..11
Hình 2.1 Sơ đồ quy trình của mô hình nhận dạng khuôn mặt…………………..17
Hình 2.2 Chuyển về ảnh xám ............................................................................. 18
Hình 2.3 Tạo khung khuôn mặt .......................................................................... 18
Hình 2.4 Bức ảnh đã được xác định khuôn mặt .................................................. 19
Hình 2.5 Đưa bức ảnh cần nhận diện vào chương trình ...................................... 20
Hình 2.6 Sau khi phát hiện khuôn mặt ................................................................ 20
Hình 2.7 Kiến trúc dạng khối của mô hình CNN ................................................ 21
Hình 2.8 Một ảnh đầu vào kích thước 100x100x1 (đa cấp xám) ......................... 22
Hình 2.9 Hình ảnh sau khi xử lý của khối B2 ..................................................... 23
Hình 2.10 Hình ảnh kết quả xử lý sau B4 và B6 ................................................. 23
Hình 2.11 Dữ liệu phân lớp của mô hình CNN ................................................... 25
Hình 2.12 Dữ liệu danh tính ............................................................................... 25
Hình 3.1 Quá trình load dữ liệu từ kho ảnh ......................................................... 26
Hình 3.2 Hình ảnh trước khi nhận diện ............................................................... 26
Hình 3.3 Hình ảnh sau khi nhận diện (Vũ Long) ................................................ 27
Hình 3.4 Hình ảnh trước khi so sánh (Vũ Phạm) ................................................ 27
Hình 3.5 Hình ảnh trước khi so sánh (Vũ Long) ................................................. 28
Hình 3.6 : Kết quả so sánh phát hiện 2 người khác nhau………………………...28
Hình 3.7 : Kết quả so sánh phát hiện cùng 1 người……………………………...29
Hình 3.8 : Hình ảnh ở thời điểm 22 tuổi………………………………………….29
Hình 3.9 : Hình ảnh ở thời điểm 3 tuổi…………………………………………30
Hình 3.10 : Kết quả nhận dạng………………………………………………….30
Hình 3.11 : Kết quả nhận dạng góc nghiêng…………………………………….31

v
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1 k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

CÁC TỪ VIẾT TẮT


ReLu Rectified Linear Unit

CNN Convolutional Neural Network

OpenCV Open Source Computer Vision

CV Computer Vision

MLL Machine Learning Library

CONV Convolution

vi
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1 k60
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Chương 1 : Giới thiệu


1.1 GIỚI THIỆU
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 cuối kỳ 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.

1
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

1.2. MỤC TIÊU ĐỀ TÀI

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
● 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

1.3. GIỚI HẠN ĐỀ TÀI

Phạm vi giới hạn của đề tài:


Đề tài chủ yếu sử dụng các thư viện có sẵn trong lập trình python, đồng thời
ứng dụng các mô hình toán học trong mạng nơ ron nhân tạo. Điều kiện đầu vào
của mô hình là các tệp hình ảnh có giới hạn, đầu ra phân tích khuôn mặt được đưa
vào có độ chính xác tương đối. Đối với chức năng thì có sự giới hạn do hiểu biết
về lập trình và cách ứng dụng của mô hình vào các hệ thống lớn.

1.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ế
● 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ả

1.5. ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU

Các đối tượng cần nghiên cứu và phạm vi nghiên cứu có thể giải quyết được
đề tài:
- Đối tượng nghiên cứu: Trí tuệ nhân tạo, lập trình python.
- Phạm vi nghiên cứu: Mạng CNN, các module trong python: opencv, numpy,
os, face-recognition,cmake, image.

2
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

1.6. BỐ CỤC QUYỂN BÁO CÁO

Chương 1: Tổng quan về hệ thống nhận diện khuôn mặt , cơ sở lý thuyết


bài toán 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.Nội dung trình này giới thiệu về
OpenCV,face_recognition, các thuật toán. 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 2: Xây dựng hệ thống mô phỏng điểm danh
Sản phẩm được em hoàn thành cho báo cáo 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 3: 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 phần mềm
1.7 GIỚI THIỆU MẠNG CNN

Trình bày một kiến trúc mạng CNN, các lớp cơ bản trong một mạng CNN bao
gồm: lớp tích chập (Convolutional); lớp kích hoạt phi tuyến ReLU (Rectified
Linear Unit); lớp lấy mẫu (Pooling); lớp kết nối đầy đủ (Fully connected) được
thay đổi về số lượng và cách sắp xếp để tạo ra các mô hình huấn luyện phù hợp
cho từng bài toán khác nhau. Các lớp tích chập (Convolutional), kích hoạt phi
tuyến ReLU và lấy mẫu (Pooling) Các lớp kết nối đầy đủ (Fully connected) Phân
loại Hình 1. Kiến trúc cơ bản của một mạng CNN.
Lớp tích chập: đây là thành phần quan trọng nhất trong mạng CNN, thể hiện
sự liên kết cục bộ thay vì kết nối toàn bộ các điểm ảnh. Các liên kết cục bộ được
tính toán bằng phép tích chập giữa các giá trị điểm ảnh trong một vùng ảnh cục bộ
với các bộ lọc filters có kích thước nhỏ. (hình 1.1)
3
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 1.1 Kiến trúc cơ bản của mạng CNN


Lớp tích chập: đây là thành phần quan trọng nhất trong mạng CNN, thể hiện
sự liên kết cục bộ thay vì kết nối toàn bộ các điểm ảnh. Các liên kết cục bộ được
tính toán bằng phép tích chập giữa các giá trị điểm ảnh trong một vùng ảnh cục bộ
với các bộ lọc filters có kích thước nhỏ.

Hình 1.2 Bộ lọc tích chập được sử dụng trên ma trận điểm ảnh
Bộ lọc tích chập được sử dụng trên ma trận điểm ảnh. Trong hình 1.2, bộ lọc
được sử dụng là một ma trận có kích thước 3x3, bộ lọc này dịch chuyển lần lượt
qua từng vùng ảnh đến khi hoàn thành quét toàn bộ bức ảnh, tạo ra một bức ảnh
mới có kích thước nhỏ hơn hoặc bằng với kích thước ảnh đầu vào. Kích thước này
được quyết định tùy theo kích thước các khoảng trắng được thêm ở viền bức ảnh
gốc và được tính theo công thức sau:
𝑖+2∗𝑝−𝑘
𝑂= +1 (1.1)
𝑠

4
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Trong đó: O: kích thước ảnh đầu ra; i: kích thước ảnh đầu vào; p: kích thước
khoảng trắng phía ngoài viền của ảnh gốc; k: kích thước bộ lọc; s: bước trượt của
bộ lọc. Như vậy, sau khi đưa một bức ảnh đầu vào cho lớp tích chập nhận được kết
quả đầu ra là một loạt ảnh tương ứng với các bộ lọc đã được sử dụng để thực hiện
phép tích chập. Các trọng số của các bộ lọc này được khởi tạo ngẫu nhiên trong
lần đầu tiên và sẽ được cập nhật trong quá trình huấn luyện. - Lớp kích hoạt phi
tuyến ReLU: được xây dựng để đảm bảo tính phi tuyến của mô hình huấn luyện
sau khi đã thực hiện một loạt các phép tính toán tuyến tính qua các lớp tích chập.
Lớp kích hoạt phi tuyến sử dụng các hàm kích hoạt phi tuyến như ReLU hoặc
sigmoid, tanh… để giới hạn phạm vi biên độ cho phép của giá trị đầu ra. Trong số
các hàm kích hoạt này, hàm ReLU được chọn do cài đặt đơn giản, tốc độ xử lý
nhanh mà vẫn đảm bảo được tính toán hiệu quả. Phép tính toán của hàm ReLU chỉ
đơn giản là chuyển tất cả các giá trị âm thành giá trị 0. Lớp ReLU được áp dụng
ngay phía sau lớp tích chập, với đầu ra là một ảnh mới có kích thước giống với ảnh
đầu vào, các giá trị điểm ảnh cũng hoàn toàn tương tự, trừ các giá trị âm đã bị loại
bỏ.
𝑓(𝑥) = 𝑚𝑎𝑥(0, 𝑥) (1.2)
Lớp lấy mẫu: được đặt sau lớp tích chập và lớp ReLU để làm giảm kích thước
ảnh đầu ra trong khi vẫn giữ được các thông tin quan trọng của ảnh đầu vào. Việc
giảm kích thước dữ liệu có tác dụng làm giảm được số lượng tham số cũng như
tăng hiệu quả tính toán. Lớp lấy mẫu cũng sử dụng một cửa sổ trượt để quét toàn
bộ các vùng trong ảnh như lớp tích chập, và thực hiện phép lấy mẫu thay vì phép
tích chập, sẽ chọn lưu lại một giá trị duy nhất đại diện cho toàn bộ thông tin của
vùng ảnh đó.
Hình 3 thể hiện các phương thức lấy mẫu thường được sử dụng nhất hiện nay,
đó là Max Pooling (lấy giá trị điểm ảnh lớn nhất) và Avarage Pooling (lấy giá trị
trung bình của các điểm ảnh trong vùng ảnh cục bộ).

5
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 1.3 Phương thức Avarage Pooling và Max Pooling


Như vậy, với mỗi ảnh đầu vào được đưa qua lấy mẫu sẽ thu được một ảnh đầu
ra tương ứng, có kích thước giảm xuống đáng kể nhưng vẫn giữ được các đặc trưng
cần thiết cho quá trình tính toán và nhận dạng.
Lớp kết nối đầy đủ: được thiết kế tương tự như trong mạng nơ ron truyền
thống, tất cả các điểm ảnh được kết nối đầy đủ với node trong lớp tiếp theo.
So với mạng nơ ron truyền thống, các ảnh đầu vào của lớp này đã có kích
thước được giảm bớt rất nhiều, đồng thời vẫn đảm bảo các thông tin quan trọng
của ảnh cho việc nhận dạng. Do vậy, việc tính toán nhận dạng sử dụng mô hình
truyền thẳng đã không còn phức tạp và tốn nhiều thời gian như trong mạng nơ ron
truyền thống.

1.8. HÀM OPENCV

1.8.1. OpenCV là gì?

Opencv viết tắt của từ Open Source Computer Vision Library.

 OpenCV là một thư viện mã nguồn mở phục vụ cho việc nghiên cứu hay
phát triển về thị giác máy tính.
 Tối ưu hóa và xử lý ứng dụng trong thời gian thực.

6
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

 Giúp cho việc xây dựng các ứng dụng xử lý ảnh, thị giác máy tính ... một
cách nhanhhơn.
 OpenCV có hơn 500 hàm khác nhau, được chia làm nhiều phần phục vụ các
công việc như: xử lý ảnh, an ninh, camera quan sát, nhận diện, robot...
Thư viện được viết bằng ngôn ngữ C và C++ có thể chạy trên các hệ điều hành
Linux, Window và MacOsX. OpenCV được thiết kế để nâng cao hiệu suất tính
toán và nhấn mạnh đến hệ thống thời gian thực. OpenCV đưa ra một hệ thống đơn
giẩn, dễ sử dụng giúp mọi người nhanh chóng xây dựng các ứng dụng trong thị
giác máy, kể cả các hệ thống kiểm tra trong nhà máy, bức ảnh trong lĩnh vực y học,
bảo mật, robot học... Nó chứa các lập trình xử lý ảnh đơn giản, kể cả thực thi các
hàm bậc cao như dò tìm khuôn mặt, theo dõi khuôn mặt, nhận dạng khuôn
mặt...OpenCV được giới thiệu vào tháng 1/1999, OpenCV đã được sử dụng trong
rất nhiều ứng dụng, các sản phẩm và các nghiên cứu như: trong lĩnh vực hàng
không, sử dụng giảm nhiễu trong y học, phân tích đối tượng, an ninh, hệ thống dò
tìm, theo dõi tự động và hệ thống bảo mật...., ngoài ra nó còn được sử dụng trong
nhận dạng âm thanh. OpenCV còn là một chìa khóa quan trọng trong các robot sử
dụng thị giác như Stanford, Asimo.

1.8.2. Cấu trúc OpenCV

Cấu trúc của opencv được chia làm 5 phần chính, 4 trong số đó được chia ra
như trong hình sau:

Hình 1.4 Cấu trúc cơ bản của OpenCV

7
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

CV (computer vision) là thành phần chữa những xử lý ảnh cơ sở và thuật toán


thị giác máy tính mức cao.
MLL (machine learning library) là thư viện machine learning, cái này bao gồm
rất nhiều lớp thống kê và gộp công cụ xử lý.
HighGUI chứa các thủ tục vào ra và các hàm dùng cho việc lưu trữ và tải ảnh
video.
CXCore chứa cấu trúc và nội dung dữ liệu cơ sở.

1.8.3. Phát hiện khuôn mặt với các hàm trong OpenCV

Từ các phương pháp được đưa ra ở phần trước, bài toán phát hiện khuôn mặt
được thực hiện theo các bước:

 Huấn luyện bộ tập mẫu


 Xác định khuôn mặt
Ở bước huấn luyện bộ tập mẫu. Trong khi cài đặt OpenCV 4.4.0 đã có sẵn thư
mục bộ huấn luyện có sẵn. Ta sẽ sử dụng luôn tài nguyên này. Ở bước xác định
khuôn mặt sẽ chia làm 3 bước:

 Tiền xử lí
 Dò tìm khuôn mặt
 Hậu xử lí
1.9.HÀM FACE-RECOGNITION

1.9.1. Hàm face-recognition là gì?

Thuật toán nhận dạng khuôn mặt được sử dụng để tìm các tính năng được mô
tả duy nhất trong hình ảnh. Hình ảnh khuôn mặt đã được trích xuất, cắt xén, thay
đổi kích thước và thường được chuyển đổi trong thang độ xám.

1.9.2. Cấu trúc hàm face-recognition ?

Hàm face_recognition.face_encodings(img) là một hàm trong thư viện


face_recognition của Python, được sử dụng để mã hóa khuôn mặt từ hình ảnh đầu
vào.
Khi bạn cung cấp một hình ảnh chứa khuôn mặt, hàm này sẽ trích xuất các
đặc trưng quan trọng của khuôn mặt đó và tạo ra một vectơ mã hóa duy nhất đại
8
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

diện cho khuôn mặt đó. Mỗi khuôn mặt sẽ được mã hóa thành một vectơ số học
dựa trên các đặc trưng như hình dạng, kích thước và vị trí của các thành phần
khuôn mặt.
Mã hóa khuôn mặt này cho phép so sánh và nhận dạng khuôn mặt dễ dàng.
Bằng cách so sánh các vectơ mã hóa, bạn có thể xác định xem hai khuôn mặt có
giống nhau hay không, và từ đó xây dựng các ứng dụng như nhận dạng khuôn
mặt trong ảnh, nhận dạng khuôn mặt trong video, hoặc xây dựng hệ thống nhận
dạng khuôn mặt trong thời gian thực.

Hình 1.5 Trong thư mục của “face-recognition” đã có các bộ huấn luyện có sẵn

1.10 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.

9
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

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

10
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toả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.6. Hệ thống nhận dạng khuôn mặt


● 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ẽ

11
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

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)

1.10.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.10.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)

12
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

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 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.10.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.

13
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

● 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.10.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:
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.

14
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

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à đị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

15
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

CHƯƠNG 2 XÂY DỰNG CHƯƠNG TRÌNH

2.1 XÂY DỰNG PHẦN MỀM

Mô hình nhận dạng được chia thành 3 bước chính (Hình 3.1), bao gồm:
Bước 1: Tạo tập dữ liệu.
Bước 2: Huấn luyện dữ liệu đưa vào và trích chọn các đặc trưng.
Bước 3: Phân loại ảnh khuôn mặt dựa trên đặc trưng được trích chọn và đưa
ra kết quả.

Hình 2.1 Sơ đồ quy trình của mô hình nhận dạng khuôn mặt

2.2 CÁC BƯỚC THỰC HIỆN

2.2.1 Tạo tập dữ liệu

Các dữ liệu dùng để huấn luyện có thể lấy từ ảnh có sẵn hoặc lấy từ webcam.
Các bước phát hiện khuôn mặt và lấy dữ liệu là giống nhau.
Bước 1: Tiền xử lý
- Phương pháp thực hiện trên ảnh xám (gray image). Mỗi điểm ảnh (pixel) sẽ
có giá trị mức xám từ 0 đến 255(không gian màu 8 bit). Như vậy phương pháp sẽ
không khai thác những đặc điểm về màu sắc khuôn mặt để nhận dạng song vẫn rất
hiệu quả. Ảnh màu sẽ được chuyển về ảnh xám để nhận dạng, việc chuyển đổi này
khá đơn giản, thực hiện bằng một hàm chuyển đổi và sử dụng chỉ với một câu lệnh
16
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

trong OpenCV nên báo cáo chưa đề cập tới. Sau khi chuyển thành ảnh xám, ảnh
lại tiếp tục được chuyển thành “ảnh tích hợp” và trong bước đầu tiên của quá trình
nhận dạng.

Hình 2.2 Chuyển về ảnh xám


Bước 2: Dò tìm khuôn mặt
Integal Image là mảng 2 chiều với kích thước ảnh cần tính đặc trưng Haar. Bắt
đầu từ vị trí trên bên trái đến vị trí dưới, bên phải của ảnh. Sau khi đã tính được
Integral Image, việc tính tổng điểm ảnh của một vùng bất kỳ nào đó trên ảnh thực
hiện sẽ đơn giản hơn.
Để phát hiện khuôn mặt, hệ thống sẽ cho một cửa sổ con (sub-window) có kích
thước cố định quét lên toàn bộ ảnh đầu vào. Như vậy sẽ có rất nhiều ảnh con ứng
với từng cửa sổ con, các đặc trưng Haar-like sẽ được đặt lên các cửa sổ con này để
từ đó tính ra giá trị của đặc trưng. Sau đó các giá trị này được bộ huấn luyện xác
nhận xem khung hình đó có phải khuôn mặt hay không.
Bước 3: Hậu xử lí
Sau khi quét các cửa sổ con khắp bức ảnh. Đặc trưng Haar sẽ so sánh với bộ
huấn luyện mẫu và sẽ đánh dấu những nơi có thể là khuôn mặt trong ảnh.

Hình 2.3 Tạo khung khuôn mặt

17
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hàm detectMultiScale là phần tìm kiếm khuôn mặt, hàm (hay phương thức)
này thuộc lớp CascadeClassifier (lớp phục vụ tìm kiếm đối tượng của OpenCV)
Hàm detectMultiScale sau khi tìm kiếm xong sẽ trả về bộ giá trị gồm tọa độ
gốc của khung chứa khuôn mặt x, y; chiều dài, rộng của khung w, h. Các giá trị
này nằm trong mảng faces. Cấu trúc for...sẽ duyệt qua toàn bộ các bộ giá trị này,với
mỗi bộ giá trị ta dùng hàm rectangle để vẽ một hình chữ nhật lên ảnh ban đầu với
tọa độ 2 điểm trái trên và phải dưới: (x,y),(x+w,y+h). (0,0,255) là màu sẽ vẽ hình
chữ nhật.

Hình 2.4 Bức ảnh đã được xác định khuôn mặt

18
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

- Kết quả của quá trình tạo tập dữ liệu:

Hình 2.5 Đưa bức ảnh cần nhận diện vào chương trình

Hình 2.6 Sau khi phát hiện khuôn mặt

19
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

2.2.2. Huấn luyện dữ liệu đưa vào

Mô hình CNN được thiết kế gồm hai phần chức năng là trích chọn đặc trưng
của ảnh khuôn mặt và phân lớp đối tượng dựa trên đặc trưng đã chọn. Mô hình
CNN bao gồm nhiều lớp, số lớp nơron và độ lớn (số nơron) của mỗi lớp ảnh hưởng
đến chất lượng cũng như độ phức tạp trong tính toán của mạng nơron. Các nghiên
cứu thường điều chỉnh hai yếu tố này tuỳ theo bài toán ứng dụng để đạt được chất
lượng mong muốn và đồng thời đảm bảo sự phức tạp tính toán .

Hình 2.7 Kiến trúc dạng khối của mô hình CNN


Mỗi lớp nơron trong mô hình CNN lấy một mảng nhiều chiều gồm các số làm
đầu vào và tạo ra một mảng số nhiều chiều khác ở đầu ra (sau đó trở thành đầu vào
của lớp tiếp theo). Khi phân loại hình ảnh khuôn mặt, đầu vào của lớp nơron đầu
tiên là kích thước hình ảnh đầu vào. Kích thước đầu ra của lớp cuối cùng là tập
hợp các khả năng của các lớp khác nhau được phân loại cho mỗi ảnh đầu vào. Cả
ba loại lớp nơron để xây dựng kiến trúc của CNN bao gồm: 3 lớp tích chập
(CONV), 2 lớp nơron Maxpooling và 2 lớp nơron kết nối đầy đủ để phân loại (gọi
là lớp Dense). Mỗi lớp CONV được kết nối theo sau nó bởi một lớp Maxpooling,
áp dụng cơ chế kích hoạt ReLu (Rectified Linear Unit, mặc định là max(x,0)) sau
mỗi lớp CONV để đảm bảo đầu vào không âm cho lớp nơron kế tiếp. Theo nguyên

20
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

tắc xếp chồng các lớp nơron và giảm không gian mẫu (downsampling) tại các kết
quả đầu ra của chúng, CNN thực hiện trích xuất các đặc trưng ngày càng trừu tượng
và phức tạp hơn, đồng thời, là bất biến đối với các phép biến dạng và chuyển đổi.
Mạng tích chập CNN trong mô hình này được chia thành 8 khối (Hình 2.7).
• Khối B1 là ảnh đầu vào có kích thước H×W×1 (cao × rộng × sâu). Để giảm
bớt không gian và bộ nhớ của quá trình tính toán mạng nơron nên chúng tôi sử
dụng ảnh đầu vào đa cấp xám (số chiều thứ 3 (độ sâu) trong kích thước ảnh bằng
1). Hình vẽ sau minh hoạ cho một ảnh đầu vào:

Hình 2.8 Một ảnh đầu vào kích thước 100x100x1 (đa cấp xám)
• Khối B2, B3 là lớp nơron tích chập có 2 bộ lọc đặc trưng với kích thước cửa
sổ hàm nhân là 3×3. Hàm kích hoạt ReLu được sử dụng trong lớp nơron này. Hiệu
ứng này nhằm cải thiện các đặc trưng thưa của toàn mạng và tránh sự phụ thuộc
vào việc truyền tham số giữa các nơron.
• Khối B4 là lớp Maxpooling, cửa sổ xử lý có kích thước 2×2 được sử dụng.
Lớp giảm không gian mẫu (downsampling) này sử dụng phương pháp MaxPooling
với việc có thể giữ lại thông tin hữu ích và cắt giảm lượng dữ liệu cần xử lý ở bước
tiếp theo.
Hình 2.8 minh hoạ kết quả xử lý của lớp nơron tích chập CONV ở khối B2 và
lớp MaxPooling ở khối B3.
Khối B5 tương tự khối B3 nhưng số các bộ lọc (filter) tăng lên 4, sau đó khối
này kết nối ngay theo sau khối tích chập CONV để thực hiện cắt giảm không gian
mẫu.

21
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Thông thường, chúng ta càng có nhiều bước sử dụng phép tích chập thì cơ hội
trích chọn càng nhiều đặc trưng phức tạp hơn, qua đó kỳ vọng mô hình đề xuất có
thể học để nhận biết đối tượng ở mức tốt hơn. Chẳng hạn, trong phân loại hình
ảnh, mô hình CNN có thể học để phát hiện các đặc trưng cạnh từ các pixel thô
trong lớp CONV đầu tiên, sau đó sử dụng các đặc trưng cạnh này để phát hiện các
đặc trưng hình dạng đơn giản trong lớp CONV thứ hai, sau đó sử dụng các đặc
trưng hình dạng này để phát hiện các đặc trưng ở mức cao hơn, chẳng hạn như
hình dạng khuôn mặt ở các lớp cao hơn.

Hình 2.9 Hình ảnh sau khi xử lý của khối B2


Trong Hình 2.10/a/b/c dưới đây minh hoạ kết quả xử lý ở bộ lọc đầu tiên của các
khối B3, B5 cùng với lớp nơron MaxPooling ngay sau chúng (tương ứng ở B4,
B6), do đó kích thước của hình ảnh sau mỗi bước xử lý giảm dần với hệ số ½
(sau B4 là 50x50, sau B6 là 25x25). Kết quả minh hoạ trực quan cho thấy càng
về sau hình ảnh càng “mờ”, thể hiện khả năng trừu tượng hoá và biểu diễn các
đặc trưng chung nhất của khuôn mặt một cá nhân, dù được chụp dưới góc độ nào.
Hay có thể nói rằng các đặc trưng này của cá nhân có độ bất biến cao nhất đối
với bất kỳ hình ảnh khác nhau nào của họ dù dưới các dạng thức, độ sáng tối,
màu sắc, kích thước khác nhau.

22
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 2.10 Hình ảnh kết quả xử lý sau B4 và B6


•Khối B7 là lớp nơron kết nối đầy đủ (fully connected layers). Lớp này cùng
với lớp trong khối B8 nhằm mục tiêu phân lớp các đặc trưng được trích chọn ở các
lớp trước, do đó chúng tôi thiết kế số nơron đủ lớn. Hàm kích hoạt ReLu cũng
được áp dụng. Dữ liệu sau đây là đầu ra của 512 nơron đầu tiên trong khối B7, các
giá trị ở đây được xem như biểu diễn dạng số của các đặc trưng khuôn mặt tương
ứng với ảnh đầu vào.
• Khối B8 là lớp nơron đầu ra cuối cùng, đây chính là một phân bố cho phân
loại của các lớp đối tượng khác nhau với tính năng của hàm kích hoạt Softmax. Áp
dụng phương pháp hồi quy Softmax ở lớp đầu ra của mạng CNN nhằm thẩm định
cho quá trình huấn luyện mạng. Cơ chế thẩm định này đảm bảo mô hình CNN
không bị quá khớp (overfiting) dữ liệu học và có khả năng dự đoán tốt hơn. Cơ chế
này được thực hiện thông qua việc chia dữ liệu học thành hai phần, một phần để
tính toán cập nhật và điều chỉnh trọng số mạng, một phần để tính toán sai số và
cũng đưa vào pha cập nhật thay đổi trọng số mạng. Đầu ra phân lớp cuối cùng của
mô hình được xác định dựa trên giá trị cực đại hàm Softmax của nơron tương ứng,
với mô hình CNN có lớp (tức là có nơron ở lớp ra) thì ta có công thức xác định
như sau:
outputclassified = argmaxCk{Ok: k = 1, …, |Ok|} (2.1)
Trong đó, Ok là đầu ra của nơron thứ ở lớp nơron cuối cùng và tương ứng với
nó là lớp đối tượng Ck.

Bảng 2.11 minh hoạ dữ liệu gồm 5 giá trị sau là kết quả đầu ra của lớp nơron
cuối cùng (khối B8), tương ứng với kết quả phân lớp của ảnh đầu vào. Kết quả đầu
23
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

ra của mô hình CNN tương ứng với mỗi ảnh đầu vào gồm 5 giá trị (ở đây chỉ minh
hoạ với 5 lớp). Giá trị cao nhất ở vị trí nào (tính theo chỉ số từ 0 và từ trái sang
phải) trong bộ 5 giá trị đầu ra chính là định danh cá nhân (vị trí tương ứng giá trị
và số in đậm) của dữ liệu ảnh đầu vào.

Hình 2.11 Dữ liệu phân lớp của mô hình CNN

Hình 2.12 : Dữ liệu danh tính


24
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

2.2.3. Hiển thị dữ liệu đầu ra

Sau khi mô hình được huấn luyên, lưu module vào file “ImagesAttendance”,
sau đó dùng file này để nhận diện và dự đoán khuôn mặt của hình ảnh đưa vào.

Từ dữ liệu đầu ra của module, đặt tên cho khuôn mặt được nhận diện riêng
biệt. Từ đó sử dụng hàm có sẵn trong OpenCV để hiển thị chữ phía dưới hình
vuông nhận diện khuôn mặt. Cách đặt tên tương ứng với hình ảnh như hình 2.13.

Hình 2.13 Dữ liệu danh tính

25
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

CHƯƠNG 3 KẾT QUẢ THÍ NGHIỆM

3.1 KẾT QUẢ SAU KHI HUẤN LUYỆN

Quá trình huấn luyện tập dữ liệu:

Hình 3.1 Quá trình load dữ liệu từ kho ảnh

3.2 ĐƯA HÌNH ẢNH MỘT NGƯỜI CẦN NHẬN DIỆN

- So sánh kết quả trước và sau khi nhận diện 1 một khuôn mặt:

Hình 3.2 Hình ảnh trước khi nhận diện

26
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 3.3 Hình ảnh sau khi nhận diện (Vũ Long)

-So sánh độ chính xác của 2 hình ảnh

Hình 3.4: Hình ảnh trước so sánh (Vũ Phạm )

27
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 3.5 : Hình ảnh trước so sánh (Vũ Long)


-Hình ảnh sau khi so sánh

Hình 3.6 : Kết quả so sánh phát hiện 2 người khác nhau

28
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 3.7 : Kết quả so sánh phát hiện cùng 1 người


- So sánh 1 người ở 2 độ tuổi khác nhau

Hình 3.8 : Hình ảnh ở thời điểm 22 tuổi

29
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Hình 3.9 : Hình ảnh ở thời điểm 3 tuổi

Hình 3. 10: Kết quả nhận dạng

30
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

-Nhận dạng ở góc độ khác nhau

Hình 3.11 : Kết quả nhận dạng góc nghiêng


-Nhận dạng ở môi trường ban đêm

Hình 3.12 : Kết quả nhận dạng ban đêm


31
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

-Báo cáo số liệu tìm ra độ chinh xác nhất

Phần mềm sẽ cho ta các giá trị và nó sẽ tìm ra giá trị thấp nhất đó chính là người
mà chúng ta đang cần nhận diện khuôn mặt
* Nhận xét:
- Đối với nhận diện một khuôn mặt, kết quả cho ra là chính xác đồng thời phát
hiện được khuôn mặt cần nhận diện
-Đối với so sánh 2 gương mặt, kết quả cho ra tương tự như nhận diện một
khuôn mặt và có độ chính xác cao.
4.3 Hiển thị thời gian quét mặt

32
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

KẾT LUẬN

KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU

1.Kết quả

-Nhận diện được real time camera và phát hiện tên người
-Hiểu thêm về khái quát xử lý ảnh
-Hiểu thêm về bài toán xử lý nhận dạng khuôn mặt con người
-Học hỏi thêm về ngôn ngữ lập trình Python và thư viện Opencv

2.Hướng nghiên cứu

Hoàn thiện về phần giao diện. Tối ưu hóa việc sử dụng của người dùng và ứng
dụng. Sử dụng các phương pháp học dữ liệu nhận diện khuôn mặt này để áp dụng
vào điểm danh ở các nơi công sở, trường học để thuận lợi cho việc quản lý nhân
sự.

33
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

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_K96MnW0
bQ
[5] Florian Schroff, Dmitry Kalenichenko, James Philbin . FaceNet: A Unified
Embedding for Face Recognition and Clustering. 2015

34
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

Phụ Lục
Chương trình được thực hiện trên môi trường pycharms với 2 chương trình như
sau:

1.1 Xây dựng dữ liệu

35
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

36
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

1.2 Nhận diện khuôn mặt

37
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1
Báo cáo cuối kỳ Giáo viên hướng dẫn : Đào Thanh Toản

2.1 So sánh độ chính xác khuôn mặt

38
SVTH : Vũ Đức Long Lớp : Kỹ thuật điện tử và tin học công nghiệp 1

You might also like