Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 43

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

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


Stt Nội dung thực hiện Nhận xét

Nhận xét tổng quát:

…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

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

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


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

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

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


1.2. MỤC TIÊU ĐỀ TÀI.................................................................................................................................1
1.3. GIỚI HẠN ĐỀ TÀI.............................................................................................................................1
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............................................................................................................2

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT.............................................................................................................3

2.1. GIỚI THIỆU MẠNG CNN........................................................................................................................3


2.2. HÀM OPENCV.......................................................................................................................................6
2.2.1. OpenCV là gì?............................................................................................................................6
2.2.2. Cấu trúc OpenCV.......................................................................................................................7
2.2.3. Phát hiện khuôn mặt với các hàm trong OpenCV......................................................................8
2.3. HÀM FACE-RECOGNITION....................................................................................................................9
2.3.1. Hàm face-recognition là gì?.......................................................................................................9
2.3.2. Cấu trúc hàm face-recognition...................................................................................................9
2.4. BÀI TOÁN NHẬN DIỆN KHUÔN MẶT...................................................................................................10
2.4.1. Nhận dạng dựa trên các đặc trưng khuôn mặt……………………………………..................10
2.4.2. Nhận dạng dựa trên xét toàn bộ khuôn mặt…………………………………………………..13
2.5. Những khó khăn và thách thức trong bài toán nhận diện khuôn mặt…………………………..14
2.6. Ứng dụng của bài toán nhận diện khuôn mặt…………………………………………………..16

CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH.........................................................................................17

3.1. XÂY DỰNG PHẦN MỀM.......................................................................................................................17


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

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

4.1. KẾT QUẢ SAU KHI HUẤN LUYỆN........................................................................................................26


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

KẾT LUẬN...................................................................................................................................................30

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

PHỤ LỤC.....................................................................................................................................................31

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

DANH MỤC HÌNH


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

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.4. ĐỐ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.

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


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 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 3: 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 4: Thử nghiệm và kết quả mô phỏng

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

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

CHƯƠNG 2:

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

CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 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 2.1)

Hình 2.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ỏ.

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 2.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 2.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:
i+2∗p−k
O= +1(2.1)
s
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.

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

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, 𝑥) (2.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ộ).

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

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

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.

2.2HÀM OPENCV

2.2.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.
 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

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

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.

2.2.2Cấ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 2.4 Cấu trúc cơ bản của OpenCV


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

2.2.3Phá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

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

 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í
2.3HÀM FACE-RECOGNITION

2.3.1Hà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.

2.3.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
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 2.5 Trong thư mục của “face-recognition” đã có các bộ huấn luyện có sẵ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

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

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

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

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

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)

2.4.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,

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

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.

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

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

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

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

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

2.6. Ứ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 để

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

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

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

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

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

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

3.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 3.5 Sơ đồ quy trình của mô hình nhận dạng khuôn mặt
3.2 CÁC BƯỚC THỰC HIỆN

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

câu lệnh 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 3.6 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 3.3 Tạo khung khuôn mặt

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

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 3.4 Bức ảnh đã được xác định khuôn mặt

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

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

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

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

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

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

đượ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 3.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 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 3.7).

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

• 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 3.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 3.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.
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

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

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 3.9 Hình ảnh sau khi xử lý của khối B2


Trong Hình 3.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.

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

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

•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|} (3.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 3.1 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 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.

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.11 Dữ liệu phân lớp của mô hình CNN

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

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

3.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 3.13.

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

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

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

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

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

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

4.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 4.2 Hình ảnh trước khi nhận diện

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 4.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 4.4: Hình ảnh trước so sánh (Vũ Phạm )

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

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

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

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

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

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


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

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

TÀI LIỆU THAM KHẢO

[1] PGS. TS Trương Ngọc Sơn, Trí tuệ nhân tạo cơ sở và ứng dụng,
Đại học quốc gia TPHCM, 2020.
[2] Tài liệu online.
[3] Q. Zhang, M. Zhang, T. Chen, Z. Sun, Y. Ma, and B. Yu, “Recent
advances in convolutional neural network acceleration,” Neurocomputing, vol.
323, pp. 0–38, 2019, doi: 10.1016/j.neucom.2018.09.038.

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

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

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

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

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

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

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

37
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