Tải bản đầy đủ (.doc) (53 trang)

ĐỒ ÁN CƠ SỞ 4 Đề tài: Xây dựng ứng dụng nhận diện khuôn mặt sử dụng Deep Learning

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (5.73 MB, 53 trang )

XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN
THÔNG VIỆT HÀN

ĐỒ ÁN CƠ SỞ 4
Đề tài: Xây dựng ứng dụng nhận diện khuôn mặt
sử dụng Deep Learning

Trang 1


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Đà Nẵng, ngày 30 tháng 12 năm 2020

Trang 2


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

MỞ ĐẦU
Hiện nay, cùng với sự phát triển của xã hội, vấn đề án ninh bảo mật đang
được yêu cầu khắt khe ở mọi nơi trên thế giới. Các hệ thống nhận dạng con người


được ra đời với độ tin cậy ngày càng cao. Một trong các bài toán nhận dạng con
người rất được quan tâm hiện nay là nhận dạng khn mặt. Vì nhận dạng khn
mặt là cách cơ bản và dễ dàng nhất mà con người dùng để phân biệt nhau. Bên
cạnh đó, ngày nay việc thu thập, xử lý thông tin qua ảnh để phân biệt đối tượng
đang được quan tâm và ứng dụng rộng rãi. Với phương pháp này, chúng ta có thể
thu nhận được nhiều thông từ đối tượng mà không cần tác nhiều đến đối tượng
nghiên cứu.
Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử
lý ảnh hiện nay đó là nhận dạng khn mặt (Face Recognition). Như chúng ta đã
biết, khn mặt đóng vai trị quan trọng trong q trình giao tiếp giữa người với
người, nó mang một lượng thơng tin giàu có, chẳng hạn như từ khn mặt chúng
ta có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt là xác
định mối quan hệ với đối tượng (có quen biết hay khơng). Do đó, bài tốn nhận
dạng khn mặt đóng vai trị quan trọng trong nhiều lĩnh vực đời sống hằng ngày
của con người như các hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin một
người nổi tiếng, …đặc biệt là an ninh, bảo mật. 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 những phương
pháp này đang vấp phải những thử thách về độ sáng, hướng nghiêng, kích thước
ảnh, hay ảnh hưởng của tham số môi trường.
Trong khuôn khổ đồ án này, chúng em sẽ tiếp tục giải quyết bài tốn nhận
dạng offline. Trong đó đối tượng được thu thập thành các file dữ liệu và được
chuyển về trung tâm. Tại đó, các số liệu sẽ được phân tích xử lý. Chúng em sẽ lấy
đó làm nền tảng để có thể xây dựng các ứng dụng lớn hơn sau này

Trang 3


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG


LỜI CẢM ƠN
Để thực hiện và hoàn thành tốt đồ án này, em đã nhận được sự giúp đỡ và hướng
dẫn rất tận tình của các thầy cơ thuộc Trường Đại học Công nghệ thông tin và Truyền
thông Việt Hàn – Đại học Đà Nẵng. Em xin cảm ơn các thầy cô thuộc bộ môn chuyên
ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùng quý báu và cần thiết
trong suốt thời gian quá để em có thể thực hiện và hồn thành đồ án của mình. Đặc biệt
em xin chân thành cảm ơn thành cô Hà Thị Minh Phương người đã trực tiếp hướng dẫn
chúng em trong thời gian thực hiện đồ án này.
Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đã ủng
hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng tơi trong q
trình nghiên cứu và thực hiện đề tài.
Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễn nên đề
tài không tránh khỏi những sai sót. Em rất mong nhận được sự thơng cảm của q thầy cơ
và mong đón nhận những góp ý của thầy cơ và các bạn.
Em xin chân thành cảm ơn!

Trang 4


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

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

....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
........................................................
Đà Nẵng, ngày 30 tháng 12 năm 2020
Giảng viên hướng dẫn

HÀ THỊ MINH PHƯƠNG

Trang 5


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

MỤC LỤC
Chương 1:.............................................................................................................9
GIỚI THIỆU.........................................................................................................9
1.1 Giới thiệu đề tài........................................................................................................................9
1.2 Phương pháp thực hiện..........................................................................................................10
1.3 Mục đích nghiên cứu.............................................................................................................10
1.4 Giới hạn của đề tài.................................................................................................................11

1.5 Cấu trúc đồ án:......................................................................................................................11

Chương 2:...........................................................................................................12
CƠ SỞ LÝ THUYẾT.........................................................................................12
2.1 Các phương pháp nhận diện khuôn mặt................................................................................12
2.1.1 Nhận dạng khn mặt người dùng thuật tốn PCA.......................................................13
2.1.2 Nhận dạng khn mặt người dựa trên phương pháp LBP [5].......................................14
2.1.3 Nhận dạng khuôn mặt dựa trên phương pháp haar like và thuật tốn Adaboost.........15
2.2 Mạng nơ-ron tích chập (Convolutional Neural Network)....................................................19
2.2.1 Định nghĩa.......................................................................................................................19
2.2.2 Cấu trúc đơn giản của CNN [8]......................................................................................20
2.3 Tìm hiểu về Face Detector - MTCNN:.................................................................................24
2.4 Tìm hiểu Pre-trained model - FaceNet..................................................................................28
2.4.1 Pre-trained model............................................................................................................28
2.4.2 FaceNet...........................................................................................................................28
2.4.3 Thuật toán Triplet loss trong FaceNet:...........................................................................29
2.5 Kỹ thuật căn chỉnh khn mặt (Face alignment)..................................................................32
Hình 21. Căn chỉnh khuôn mặt....................................................................................................33
2.6 Ngôn ngữ Python...................................................................................................................33
2.6.1 Giới thiệu sơ lược về ngôn ngữ Python.........................................................................33
2.6.2 Các đặc điểm của ngôn ngữ Python...............................................................................34
2.6.3 Ứng dụng của Python.....................................................................................................37
2.7 Một số thư viện quan trọng....................................................................................................37
2.7.1 Opencv............................................................................................................................37
2.7.2 Numpy.............................................................................................................................39
2.7.3 Keras...............................................................................................................................39
2.7.4 TensorFlow.....................................................................................................................40
Trang 6



XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

2.7.5 Dlib..................................................................................................................................40

Chương 3:...........................................................................................................41
PHÂN TÍCH VÀ XÂY DỰNG HỆ THỐNG....................................................41
3.1 Phân tích – thiết kế hệ thống phát hiện mặt người................................................................41
3.1.1 Phân tích..........................................................................................................................41
3.1.2 Thiết kế hệ thống:...........................................................................................................42
3.1.4 Trích chọn đặc trưng và gán nhãn..................................................................................43
3.1.5 Phát hiện khuôn mặt trong ảnh đầu vào:........................................................................46
3.1.6 Căn chỉnh khuôn mặt trước khi nhận dạng:...................................................................46
3.1.7 Trích rút đặc trưng khn mặt từ ảnh đầu vào:..............................................................46
3.1.8 Nhận diện khuôn mặt......................................................................................................47
3.1.9 Xác định các khuôn mặt “unknown”.............................................................................48
3.2 Kết quả thử nghiệm hệ thống................................................................................................48
3.2.1 Giao diện chương trình:..................................................................................................48

KẾT LUẬN.........................................................................................................51
1.Kết quả đạt được.......................................................................................................................51
2.Hướng phát triển:......................................................................................................................51

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

Trang 7


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT


GVHD: Ths. HÀ THỊ MINH PHƯƠNG

MỤC LỤC HÌNH ẢNH
Hình 1: Mơ tả tính tốn với bán kính 1 điểm ảnh và lấy mẫu 8 điểm lân cận.......13
Hình 2: Đặc trưng theo cạnh.................................................................................14
Hình 3: Đặc trưng theo đường..............................................................................14
Hình 4: Đặc trưng theo xung quanh tâm...............................................................14
Hình 5: Đặc trưng theo đường chéo.....................................................................14
Hình 6: Cách tính Integral Image của ảnh............................................................15
Hình 7: Cách tính tổng giá trị pixel vùng cần tính...............................................15
Hình 8: Hệ thống phát hiện khn mặt.................................................................16
Hình 9: : Cấu trúc của mạng nơ-ron tích chập......................................................19
Hình 10: Minh họa chập với kernel 3x3...............................................................19
Hình 11: Phép tốn sử dụng phép gộp..................................................................20
Hình 12: Một số hàm phi tuyến............................................................................21
Hình 13: Kiến trúc mạng MTCNN.......................................................................23
Hình 14: Mạng neural P-Net................................................................................23
Hình 15: Mạng neural R-Net................................................................................24
Hình 16: Mạng neural O-Net................................................................................25
Hình 17: FaceNet lấy hình ảnh khn mặt làm đầu vào và xuất ra vector
embedding............................................................................................................26
Hình 18: Triplet loss trên hai positive faces-mặt tích cực và một negative face-mặt
tiêu cực................................................................................................................. 28
Hình 19: Triplet loss.............................................................................................29
Hình 20: Triplet loss trước và sau khi đào tạo......................................................30
Hình 21: Căn chỉnh khn mặt.............................................................................31
Hình 22: Biểu đồ ngữ cảnh của hệ thống..............................................................39
Hình 23: Sơ đồ thực hiện......................................................................................40
Hình 24: Sơ đồ hệ thống.......................................................................................40

Hình 25: T Phát hiện khn mặt với Haar cascade...............................................42
Hình 26: Phát hiện khuôn mặt với MTCNN.........................................................43
Trang 8


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Hình 27: Trước và sau khi căn chỉnh khn mặt..................................................44
Hình 28: Cosine similarity...................................................................................45
Hình 29: Giao diện tạo mới người dùng...............................................................47
Hình 30: File hình ảnh..........................................................................................48
Hình 31: Giao diện training..................................................................................48
Hình 32: Giao diện nhận diện...............................................................................48

Trang 9


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Chương 1:
GIỚI THIỆU
1.1 Giới thiệu đề tài
Ngày nay, trong kỷ ngun số, máy tính là một phần khơng thể thiếu trong
nghiên cứu khoa học cũng như trong đời sống hàng ngày. Tuy nhiên, do hệ thống
máy tính dựa trên lý thuyết cổ điển (tập hợp, logic nhị phân), nên dù có khả năng
tính tốn lớn và độ chính xác cao, thì máy tính cũng chỉ có thể làm việc theo một

chương trình gồm các thuật tốn được viết sẵn do lập trình viên chứ chưa thể tự
lập luận hay sáng tạo.
Học máy (Machine learning) là một phương pháp phân tích dữ liệu có thể
tự động hóa phân tích dữ liệu và tìm ra các trích xuất đặc trưng của bộ dữ liệu.
Học máy sử dụng các thuật toán trừu tượng để tự học từ dữ liệu, cho phép máy
tính tìm thấy những thơng 2 tin có giá trị ẩn ở rất sâu mà khơng thể lập trình được
bằng cách thông thường. Khi tiếp xúc với dữ liệu mới, học máy có thể thích ứng
rất nhanh và độc lập.
Học sâu (Deep Learning) là một ngành đặc biệt của học máy. Học sâu sử
dụng mạng nơ ron nhân tạo (Artificial Neural Networks) để giải quyết các bài
tốn mà tính tốn cứng chưa thể xử lý được như dữ liệu trừu tượng, dữ liệu mờ,
dữ liệu khơng rõ ràng,... Với tính chất như vậy, học sâu thường được ứng dụng
trong nhận diện hình ảnh, nhận diện giọng nói, xử lý ngơn ngữ tự nhiên hoặc dự
đoán, dự báo.
Mạng nơ ron nhân tạo (Artificial Neural Networks) là một mơ hình xử lý
thơng tin, cấu thành từ các lớp nơ ron, được ra đời trên cơ sở mô phỏng hoạt động
não bộ của sinh vật. Mạng nơ ron nhân tạo gắn kết nhiều nơ ron theo một mơ hình
nhất định, được trải qua huấn luyện để rút ra được kinh nghiệm, và sử dụng các
kinh nghiệm đã có để xử lý các thơng tin mới. Mạng nơ ron nhân tạo thường áp
dụng vào giải các bài toán nhận dạng mẫu, hoặc dự đoán.
Mạng nơ ron Tích chập (Convolutional Neural Network) là một trong
những mơ hình học sâu hiện đại nhất hiện nay. Mạng nơ ron Tích chập hiện nay
thường được sử dụng nhiều trong các hệ thống thông minh do ưu điểm của mạng
là có độ chính xác cao, tuy nhiên tốc độ tính tốn lại rất nhanh. Vì lý do đó, mạng

Trang 10


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT


GVHD: Ths. HÀ THỊ MINH PHƯƠNG

nơ ron tích chập rất mạnh trong xử lý hình ảnh, và được ứng dụng rất nhiều trong
ngành thị giác máy tính trong các bài tốn liên quan đến nhận dạng đối tượng.
Ngày nay, với sự phát triển của cơng nghệ bán dẫn, máy tính ngày càng
nhỏ đi, năng lượng tiêu thụ ngày càng thấp xuống, trong khi sức mạnh lại ngày
càng tăng lên. Với những ưu điểm như vậy, chúng ta có thể thấy rất nhiều thiết bị
thông minh đã và đang hiện diện mọi nơi trong đời sống, với camera nhiều điểm
ảnh, bộ nhớ trong lớn và vi xử lý mạnh như: điện thoại thông minh, máy ảnh kỹ
thuật số, camera hành trình,… Ngồi ra, với sự bùng nổ của xu hướng mạng vạn
vật IOT, người ta có thể sẽ cịn thấy rất nhiều thiết bị thông minh mới xuất hiện:
xe ô tô tự lái, thiết bị bay khơng người lái tự giao hàng,... Có thể thấy, việc sử
dụng trí thơng minh nhân tạo để khai thác dữ liệu hình ảnh trong các thiết bị
thơng minh trong tương lai đã và đang trở thành xu hướng. Từ nhận định trên và
sự gợi ý của giảng viên hướng dẫn, nhóm em quyết định chọn nội dung “Xây
dựng ứng dụng nhận diện sử dụng deep learning” để làm đề tài nghiên cứu thực
hiện đồ án cơ sở của mình.
1.2 Phương pháp thực hiện
- Trước tiên ta phải nêu bài tốn, phân tích và thiết kế hệ thống nhận dạng.
- Xây dựng hệ thống deep learning sử dụng ngôn ngữ Python và mạng nơ
ron Tích chập (CNN). Hệ thống lấy mẫu khn mặt bằng camera, sau đó hệ thống
trích xuất, phân tích khn mặt từ hình ảnh hoặc các mẫu được lấy trước đó để so
sánh và hệ thống đưa ra kết luận rằng có phải đối tượng được cho phép hay
không. Sử dụng công cụ IDLE Python để lập trình
- Sau đó xây dựng cơ sở dữ liệu SQLite để thống kê, hiển thị dữ liệu, sử
dụng một số cơng cụ để lập trình như Sublime Text, PHPStorm, Pycharm …
1.3 Mục đích nghiên cứu







Tìm hiểu về các thuật tốn nhận diện khn mặt người.
Tìm hiểu về mạng nơ-ron tích chập (CNN).
Nâng cao kỹ năng thiết kế và lập trình bằng ngơn ngữ Python.
Rèn luyện kỹ năng nghiên cứu và tìm hiểu tài liệu.
Xây dựng mơ hình có thể nhận diện được cảm xúc khuôn mặt người
và đếm được số người ra vào.

1.4 Giới hạn của đề tài
Trang 11


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Với thời gian có hạn nên nhóm chỉ thực hiện nghiên cứu các vấn đề cơ bản
trong phạm vi nhất định:
- Sử dụng thư viện mở có sẵn.
- Sử dụng video quay trực tiếp từ webcam và ảnh có sẵn làm đầu vào.
- Chỉ hoạt động trong điều kiện có ánh sáng và góc quay phù hợp.
1.5 Cấu trúc đồ án:
-

Nghiên cứu tổng quan.

-


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

-

Triển khai xây dựng.

-

Kết luận và hướng phát triển.

Chương 2:
CƠ SỞ LÝ THUYẾT
2.1 Các phương pháp nhận diện khuôn mặt
Trang 12


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Hiện nay các phương pháp nhận dạng mặt được chia thành nhiều hướng
theo các tiêu chí khác nhau: nhận dạng với dữ liệu đầu vào là ảnh tĩnh 2D là phổ
biến nhất, tuy nhiên tương lai có lẽ sẽ là 3D (vì việc bố trí nhiều camera 2D sẽ cho
dữ liệu 3D và đem lại kết quả tốt hơn, đáng tin cậy hơn), cũng có thể chia thành 2
hướng là: làm với dữ liệu ảnh và làm với dữ liệu video. Trên thực tế người ta hay
chia các phương pháp nhận dạng mặt ra làm 3 loại: phương pháp tiếp cận toàn cục
(Global) như Eigenfaces - PCA, Fisherfaces - LDA; phương pháp tiếp cận dựa trên
các đặc điểm cục bộ (Local Feature Based) như LBP, Gabor Wavelets và phương
pháp lai (là sự kết hợp của phương pháp toàn cục và phương pháp cục bộ). [1]
Phương pháp nhận dạng khuôn mặt dựa trên các đặc điểm cục bộ: Đâ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 một khn mặt (như vị trí, diện tích, hình dạng của mắt, mũi, miệng,
…), và mối quan hệ giữa chúng (như khoảng cách của hai mắt, khoảng cách của
hai lông mày,…). [2]
Phương pháp nhận dạng khuôn mặt dựa trên xét tồn diện khn mặt:
Nhận dạng dựa trên tồn diện khn mặt, có nghĩa là sẽ khơng đi xét đến từng
thành phần đặc trưng trên khuôn mặt nữa mà sẽ xem khn mặt là một khơng
gian cụ thể và sẽ tìm những đặc trưng, những đặc điểm chính trên khơng gian đó.
[2]
Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việt
hơn khi làm việc trong các điều kiện khơng có kiểm sốt và có thể nói rằng lịch sử
phát triển của nhận dạng mặt là sự phát triển của các phương pháp trích chọn đặc
trưng (Feature Extractrion Methods) được sử dụng trong các hệ thống dựa trên
feature based. Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mơ hình nhận
dạng: identification (xác định danh tính, bài tốn 1-N), và verification (xác thực
danh tính, bài tốn 1-1). Trong bài tốn identification, ta cần xác định danh tính
của ảnh kiểm tra, cịn trong bài tốn verification ta cần xác định 2 ảnh có cùng
thuộc về một người hay không. [1]

Trang 13


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

2.1.1 Nhận dạng khuôn mặt người dùng thuật toán PCA
Kohonen đã đưa ra phương pháp dùng vector riêng để nhận dạng khuôn
mặt, ông dùng một mạng neural đơn giản để chứng tỏ khả năng của phương pháp
này trên các ảnh đã được chuẩn hóa. Mạng neural tính một mô tả của khuôn mặt

bằng cách xấp xỉ các vector riêng của ma trận tương quan của ảnh. Các vector
riêng sau này được biết đến với cái tên Eigenface [3] . Kirby và Sirovich chứng tỏ
các ảnh có khn mặt có thể được mã hóa tuyến tính bằng một số lượng vừa phải
các ảnh cơ sở. Tính chất này dựa trên biến đổi Karhunen-Lòeve, mà còn được gọi
dưới một cái tên khác là PCA và biến đổi Hotelling. Ý tưởng này được xem là
của Pearson trình bày đầu tiên vào năm 1901 và sau đó là Hotelling vào năm
1933. Cho một tập các ảnh huấn luyện có kích thước n x m được mơ tả bởi các
vector có kích thước m x m, các vector cở sở cho một không gian con tối ưu được
xác định thơng qua lỗi bình phương trung bình khi chiếu các ảnh huấn luyện vào
khơng gian con này. Các tác giả gọi tập các vector cơ sở tối ưu này là ảnh riêng
sau đó gọi cho đơn giản là vector riêng của ma trận hiệp phương sai được tính từ
các ảnh khn mặt đã vector hóa trong tập huấn luyện. Nếu cho 100 ảnh, mà mỗi
khn mặt có kích thước 91x50 thì có thể chỉ dùng 50 ảnh riêng, trong khi vẫn
duy trì được một khả năng giống nhau hợp lý (giữ được 95% tính chất). [4]
Turk và Pentland áp dụng PCA để xác định và nhận dạng khuôn mặt.
Tương tự, dùng PCA trên tập huấn luyện ảnh các khuôn mặt để sinh các ảnh riêng
(cịn gọi là Eigenface) để tìm một khơng gian con (không gian khuôn mặt) trong
không gian ảnh. Các ảnh khuôn mặt được chiếu vào không gian con này và được
gom nhóm lại. Tương tự các ảnh khơng có khn mặt dùng để huấn luyện cũng
được chiếu vào cùng không gian con và gom nhóm lại. Các ảnh khi chiếu vào
khơng gian khn mặt thì khơng bị thay đổi tính chất cơ bản, trong khi chiếu các
ảnh khơng có khn mặt thì xuất hiện sự khác nhau cũng khơng ít. Xác định sự
có mặt của một khn mặt trong ảnh thơng qua tất cả khoảng cách giữa các vị trí
trong ảnh và không gian ảnh. Khoảng cách này dùng để xem xét có hay khơng có
khn mặt người, kết quả khi tính tốn các khoảng cách sẽ cho ta một bản đồ về
khn mặt. Có nhiều nghiên cứu về xác định khn mặt, nhận dạng, và trích đặc
Trang 14


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT


GVHD: Ths. HÀ THỊ MINH PHƯƠNG

trưng từ ý tưởng vector riêng, phân rã, và gom nhóm. Sau đó Kim phát triển cho
ảnh màu, bằng cách phân đoạn ảnh để khơng gian tìm kiếm giảm xuống. [4]

2.1.2 Nhận dạng khuôn mặt người dựa trên phương pháp LBP [5]
Mẫu nhị phân cục bộ (Local Binary Pattern - LBP) là phương pháp trích
chọn kết cấu của ảnh thành vector đặc trưng gọi là đặc trưng LBP. Ý tưởng ban
đầu của phương pháp này được tác giả Ojala và các đồng nghiệp giới thiệu, ban
đầu xử lý trên ảnh xám. Ví dụ với một điểm ảnh xét 8 điểm lân cận và sử dụng
chính giá trị của điểm ảnh tại trung tâm để phân ngưỡng 8 giá trị lân cận. Kết quả
tìm được một chuỗi bit nhị phân có chiều dài bằng 8 tương ứng với 8 điểm lân
cận được định nghĩa theo thứ tự nhất định. Chuỗi bit sẽ được chuyển sang hệ thập
phân và giá trị thập phân này thay thế giá trị ban đầu của điểm ảnh đang xét. Số
điểm lân cận có thể được thay đổi bằng đại lượng bán kính. Hình 2.1 mơ tả q
trình tính tốn LBP cho bài tốn nhận dạng mặt người.

Hình 1: Mơ tả tính tốn với bán kính 1 điểm ảnh và lấy mẫu 8 điểm lân cận
Ưu điểm của phương pháp LBP là có chi phí tính tốn thấp, ổn định khi cường độ
thay đổi đơn điệu và dễ mở rộng lên không gian nhiều chiều như ảnh màu trong
hệ RGB. Tuy nhiên, nhược điểm của đặc trưng dựa trên gradient là:
-

Đầu tiên, gradient phác họa cường độ phân phối xung quanh điểm ảnh một
cách khá thô do chỉ biểu thị bởi hai giá trị 0 và 1. Hai mức gradient giống

-

nhau có thể thuộc hai đối tượng cục bộ khác nhau, do đó khơng rõ ràng.

Thứ hai, thông tin về gradient không đủ biểu diễn cho các đối tượng trong
trường hợp gặp môi trường phức tạp gây ra nhiễu.

Trang 15


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

2.1.3 Nhận dạng khuôn mặt dựa trên phương pháp haar like và thuật
toán Adaboost.
2.1.3.1 Đặc trưng Haar-like [6]
Đặc trưng Haar-like được sử dụng trong việc nhận dạng đối tượng trong
ảnh số được phát biểu bởi Viola và Jones gồm 4 đặc trưng cơ bản để xác định một
đối tượng trong ảnh. Mỗi đặc trưng Haar-like là sự kết hợp gồm 2 hoặc 3 khối chữ
nhật mang giá trị “đen” hoặc “trắng”. Những khối chữ nhật này thể hiện sự liên hệ
tương quan giữa các bộ phận trong ảnh mà bản thân từng giá trị pixel không thể
diễn đạt được.

Hình 2: Đặc trưng theo cạnh

Hình 3: Đặc trưng theo đường

Hình 4: Đặc trưng theo xung quanh tâm

Hình 5: Đặc trưng theo đường chéo
Trang 16



XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Dựa theo các đặc trưng trên, giá trị của đặc trưng Haar-like được xây dựng
bởi độ chênh lệch giữa tổng các pixel của các vùng đen so với tổng các pixel của
các vùng trắng.
Dưới đây là công thức tính giá trị đặc trưng Haar-like:

f(x)=

)

(2.1)

Như vậy để tính giá trị đặc trưng Haar-like cần phải thực hiện tính tốn
tổng các vùng pixel trên ảnh. Điều này làm cho chi phí bài tốn lớn khơng thể đáp
ứng các tính năng yêu cầu thời gian thực. Do vậy Viola và Jones [3] đã đề xuất ra
khái niệm “Integral Image” để giảm thiểu chi phí cho bài tốn tính giá trị của đặc
trưng Haar-like để bài tốn có thể xử lý với thời gian thực. Tính “Integral Image”
bằng cách sử dụng mảng 2 chiều với kích thước bằng kích thước của ảnh cần tính
giá trị đặc trưng Haar-like. Ảnh chia nhỏ ở vị trí (x, y) được tính bằng tổng các giá
trị pixel của vùng từ vị trí (0,0) đến vị trí (x-1, y-1). Việc tính tốn đơn giản là
thực hiện phép cộng số nguyên nên tốc độ thực hiện được tối ưu hóa.

Hình 6: Cách tính Integral Image của ảnh

P(x, y) =

(2.2)


Kết quả có được sau khi tính Integral Image, việc tính tổng giá trị pixel
trong vùng cần tính thực hiện như sau:
Gọi vùng cần tính tổng các giá trị pixel là vùng “A4”.
P1(x1, y1) = A1

(2.3)

P2(x2, y2) = A1 + A2

(2.4)

P3(x3, y3) = A1 + A3

(2.5)

P4(x4, y4) = A1 + A2 + A3 + A4

(2.6)

Ta được: A4 = P4 + P1 – P2 – P3

(2.7)
Trang 17


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG


Hình 7: Cách tính tổng giá trị pixel vùng cần tính

Hình 8: Hệ thống phát hiện khn mặt
Từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành nhiều tỉ lệ rất nhỏ để tính
các đặc trưng qua các hàm đặc trưng cơ bản Haar-like. Sau khi tính toán được các
hàm đặc trưng, ta nhận được một số lượng rất lớn các đặc trưng. Để lựa chọn và
xác định có thể là khn mặt, ta dùng giải thuật Adaboost để lựa chọn và kết hợp
các vùng trọng số yếu thành trọng số mạnh. Cuối cùng, các vùng đã được lựa
chọn sẽ được đưa vào bộ phân loại “Cascade of classifier” để loại bỏ các vùng

Trang 18


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

không phải khuôn mặt và xác định vùng nào là khuôn mặt. Và đưa ra kết quả cuối
cùng.
2.1.3.2 Thuật toán Adaboost [6]
Adaboost là một cách trong hướng tiếp cận dựa trên diện mạo, Viola và
Jones dùng AdaBoost kết hợp cascade để xác định khuôn mặt người với các đặc
trưng dạng Haar wavelet-like. Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80%
trên ảnh xám. Adaboost là một bộ phân loại mạnh phi tuyến phức dựa trên tiếp
cận boosting được Freund và Schapire đưa ra vào năm 1995. Adaboost cũng hoạt
động dựa trên nguyên tắc kết hợp tuyến tính các “weak classifiers” để hình thành
một “strong classifier”. Là một cải tiến của của tiếp cận boosting. Adaboost sử
dụng thêm khái niệm trọng số (weight) để đánh dấu các mẫu khó nhận dạng.
Trong q trình huấn luyện, cứ mỗi “weak classifiers” được xây dựng, thuật toán
sẽ tiến hành cập nhật lại trọng số để chuẩn bị cho việc xây dựng “weak classifier”

kế tiếp: tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu
được nhận dạng đúng bởi các “weak classifier” vừa xây dựng. Bằng cách này
“weak classifier” sau có thể tập trung vào các mẫu mà các “weak classifier” trước
nó làm chưa tốt. Sau cùng, các “weak classifier” sẽ được kết hợp tùy theo mức độ
tốt của chúng để tạo nên “strong classifier”.
2.1.3.3 Khái quát Cascade of classifier [7]
Ta sẽ có một chuỗi các bộ phân lớp, trong đó mỗi bộ phân lớp được xây
dựng bằng thuật toán Adaboost. Bây giờ, ta đưa tất cả các cửa sổ con đi qua chuỗi
các bộ phân lớp này:
 Bộ phân lớp đầu tiên sẽ loại bỏ phần lớn các cửa sổ không phải khuôn mặt
(nagative sub window) và cho đi qua các cửa sổ được cho là khuôn mặt
(positive sub window). Ở đây, bộ phân lớp này rất đơn giản và do đó, độ
phức tạp tính tốn cũng rất thấp. Tất nhiên, vì rằng nó đơn giản nên trong
số các cửa sổ được nhận dạng là khn mặt sẽ có một số lượng lớn cửa sổ
bị nhận dạng sai (không phải là khuôn mặt).
 Những cửa sổ được cho đi qua bởi bộ phân lớp đầu sẽ được xem xét bởi bộ
phân lớp sau đó: nếu bộ phân lớp cho rằng đó khơng phải là khn mặt thì
Trang 19


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

ta loại bỏ; nếu bộ phân lớp cho rằng đó là khn mặt thì ta lại cho đi qua
và chuyển đến bộ phân lớp phía sau.
 Những bộ phân lớp càng về sau thì càng phức tạp hơn, địi hỏi sự tính tốn
nhiều hơn. Người ta gọi những cửa sổ con (mẫu) mà bộ phân lớp không
loại bỏ được là những mẫu khó nhận dạng. Những mẫu này càng đi sâu
vào trong chuỗi các bộ phân lớp thì càng khó nhận dạng. Chỉ những cửa sổ

đi qua được tất cả các bộ phân lớp thì ta mới quyết định đó là khn mặt.
Tóm lại, chuỗi các bộ phân lớp sẽ xử lý các mẫu (cửa sổ con) đi vào theo
nguyên tắc sau: nếu một bộ phân lớp nào đó cho rằng đó khơng phải là mặt người
thì ta loại bỏ ngay; còn nếu bộ phân lớp cho rằng đó là khn mặt thì ta chuyển
đến bộ phân lớp sau. Nếu một mẫu trót lọt hết tất cả các bộ phân lớp thì ta mới
quyết định đó là khn mặt.
Đây là một phương pháp cơ bản phù hợp cho những ai mới tham gia nghiên
cứu lĩnh vực nhận dạng khuôn mặt, đặc trưng Haar-like kết hợp với Adaboot được
cài sẵn trong bộ thư viện Opencv giúp chúng ta dễ dàng phát hiện khuôn mặt, tốc
độ phát hiện nhanh và hoạt động ổn định trong điều kiện đầy đủ sáng.

2.2 Mạng nơ-ron tích chập (Convolutional Neural Network)
2.2.1 Định nghĩa
Mạng nơ-ron tích chập là một trong những mơ hình mạng học sâu phổ biến
nhất hiện nay, có khả năng nhận dạng và phân loại hình ảnh với độ chính xác rất
cao (khoảng 98%). Mơ hình này đã và đang được phát triển, ứng dụng vào các hệ
thống xử lý ảnh lớn của Facebook, Google hay Amazon… cho các mục đích khác
nhau như các thuật tốn gắn thẻ tự động, tìm kiếm ảnh hoặc drone giao hàng tự
động.
Sự ra đời của mạng nơ-ron tích chập là dựa trên ý tưởng cải tiến cách thức
các mạng nơ-ron nhân tạo truyền thống học thông tin trong ảnh. Do sử dụng các
liên kết đầy đủ giữa các điểm ảnh vào nút, các mạng nơ-ron nhân tạo truyền thẳng
bị hạn chế rất nhiều bởi kích thước của ảnh, ảnh càng lớn thì số lượng liên kết
càng tăng nhanh và kéo theo sự bùng nổ khối lượng tính tốn. Ngồi ra sự liên kết
Trang 20


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG


đầy đủ này cũng là sự dư thừa khi với mỗi bức ảnh, các thông tin chủ yếu thể hiện
qua sự phụ thuộc giữa các điểm ảnh với những điểm xung quanh nó mà khơng
quan tâm nhiều đến các điểm ảnh ở cách xa nhau. Mạng nơ-ron tích chập ra đời
với kiến trúc thay đổi, có khả năng xây dựng liên kết chỉ sử dụng một phần cục bộ
trong ảnh kết nối đến nút trong lớp tiếp theo thay vì tồn bộ ảnh như trong mạng
nơ-ron truyền thẳng.
Trong luận văn này, nhóm thực hiện sẽ trình bày về tích chập cũng như ý
tưởng của mơ hình CNN áp dụng trong bài tốn nhận diện cảm xúc trên khn
mặt.

2.2.2 Cấu trúc đơn giản của CNN [8]
Các lớp cơ bản trong một mạng nơ-ron tích chập bao gồm: lớp chập, lớp
gộp và lớp kết nối đầy đủ, đượ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 tốn khác nhau.

Hình 9: Cấu trúc của mạng nơ-ron tích chập
-

Lớp chập
Là lớp quan trọng nhất trong cấu trúc của mạng nơ-ron tích chập. Chập dựa

trên lý thuyết xử lý tín hiệu số, việc chập sẽ giúp trích xuất được những thơng tin
quan trọng từ dữ liệu. Để dễ hình dung, có thể xem tích chập như một cửa sổ trượt
áp đặt lên một ma trận. Cơ chế của tích chập được minh họa qua Hình 2.10 bên
dưới.

Trang 21



XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Hình 10: Minh họa chập với kernel 3x3
Từ Hình 2.10, ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của
ma trận tương đương với một điểm ảnh, 0 là màu đen, 1 là màu trắng (nếu là ảnh
xám thì giá trị biến thiên từ 0 đến 255).
Cửa sổ trượt cịn có tên gọi là kernel hay filter. Ở đây, ta dùng một ma trận
kernel 3×3 nhân từng thành phần tương ứng với ma trận ảnh bên trái. Giá trị đầu
ra do tích của các thành phần này cộng lại. Kết quả của tích chập là một ma trận
sinh ra từ việc trượt ma trận kernel và thực hiện tích chập cùng lúc lên tồn bộ ma
trận ảnh bên trái.
-

Lớp gộp
Bản đồ đặc trưng được tạo ra thơng qua việc tính tốn của lớp chập, tuy

nhiên kích thước của nó so với kích thước đầu vào giảm khơng đáng kể. Nếu kích
thước khơng thay đổi, sẽ tạo nên một số lượng tính tốn lớn và việc học tập cũng
trở nên rất khó khăn. Lớp gộp này sẽ giải quyết vấn đề về làm giảm kích thước và
số lượng tính tốn của bản đồ đặc trưng.
Có nhiều toán tử gộp như Sum-Pooling, Max-Pooling, L_2-Pooling nhưng MaxPooling thường được sử dụng. Về mặt ý nghĩa thì Max-Pooling xác định vị trí cho
tín hiệu mạnh nhất khi áp dụng một loại kernel. Điều này cũng tương tự như là
một bộ lọc phát hiện vị trí đối tượng bằng kernel trong bài toán phát hiện đối
tượng trong ảnh.
Về mặt lý thuyết với ma trận đầu vào có kích thước a*b*c và thực hiện toán tử
gộp trên ma trận con của ma trận đầu vào có kích thước f*f với bước nhảy pixel s
thì ta được ma trận đầu ra a’*b’*c’ trong đó:


Trang 22


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

(2.4)

Hình 11: Phép tốn sử dụng phép gộp
Hình 2.11 là ví dụ về sử dụng tốn tử gộp. Trong đó miêu tả cách thức lớp gộp xử
lý đối với một đầu vào, kích thước của đầu vào là [224*224*64] được thực hiện
với các thông số f = 2 và s = 2 thì đầu ra có kích thước [112*112*64] được thể
hiện ở phía trái của Hình 2.11. Phía phải mô tả chi tiết cách thức hoạt động của
max-pooling trong đó f = 2 và s = 2 kết quả đầu ra ma trận tương ứng.
-

Lớp ReLU
Chập là một phép biển đổi tuyến tính. Nếu tất cả các nơ-ron được tổng hợp

bởi các phép biến đổi tuyến tính thì một mạng nơ-ron đều có thể đưa về dưới dạng
một hàm tuyến tính. Do đó tại mỗi nơ-ron cần có một hàm truyền dưới dạng phi
tuyến.
Có nhiều dạng hàm phi tuyến được sử dụng trong quá trình này như sau:

Hình 12: Một số hàm phi tuyến.
Trang 23


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT


GVHD: Ths. HÀ THỊ MINH PHƯƠNG

Các nghiên cứu gần đây chứng minh được việc sử dụng hàm ReLU cho kết quả
tốt hơn ở các khía cạnh: tính tốn đơn giản, tạo ra tính thưa ở các nơ-ron ẩn (ví dụ
như sau bước khởi tạo ngẫu nhiên các trọng số, khoảng 50% các nơ-ron ẩn được
kích hoạt) và q trình huấn luyện nhanh hơn ngay cả khi không phải trải qua
bước tiền huấn luyện.
-

Lớp kết nối đủ
Cách kết nối các nơ-ron ở hai tầng với nhau trong đó tầng sau kết nối đẩy

đủ với các nơ-ron ở tầng trước nó. Đây cũng là dạng kết nối thường thấy ở mạng
nơ-ron nhân tạo, trong mạng nơ-ron tích chập tầng này thường được sử dụng ở
phía cuối của kiến trúc mạng.
Hiện nay có một số cấu trúc CNN đạt được kết quả khả quan như:
 LeNet: Đây là mơ hình CNN thành cơng đầu tiên, đặc biệt là trong
việc nhận dạng chữ số, kí tự trong văn bản. Được phát triển bởi
Yann Lecun vào cuối những năm 90.
 AlexNet: Được phát triển bởi Alex Krizhevsky, Ilya Sutskever và
Geoff Hinton. Làn đầu được giới thiệu vào năm 2012 với cấu trúc
khá tương tự như LeNet nhưng với số lượng neuron, filter và layer
lớn hơn. Được coi là mạng neural đầu tiên phổ biến rộng rãi khả
năng của CNNs.
 ZF Net: Là mạng CNNs tốt nhất năm 2013 được phát triển bởi
Matthew Zeiler và Rob Fergus (ZF là viết tắt của Zeiler và Fergus).
Mạng neural này được phát triển từ AlexNet với việc tinh chỉnh các
hyperparameter (filter size, stride, ...). Với những layer gần input
layer, filter size và stride nhỏ hơn.

 GoogLeNet: Là mạng CNNs tốt nhất năm 2014 được phát triển bởi
Szegedy từ Google. Với một số thay đổi như giảm thiểu số lượng
tham số trong AlexNet từ 60 triệu xuống 4 triệu, sử dụng Average
Pooling thay cho FC-Layer.

Trang 24


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHUÔN MẶT

GVHD: Ths. HÀ THỊ MINH PHƯƠNG

 VGGNet: Là mạng CNNs tốt nhất năm 2015 được phát triển bởi
Karen Simonyan và Andrew Ziserman. Sử dụng filter 3x3 và
pooling 2x2 từ đầu tới cuối mạng. Và vẫn còn được tiếp tục phát
triển cho đến nay.

2.3 Tìm hiểu về Face Detector - MTCNN:
MTCNN là viết tắt của Multi-task Cascaded Convolutional Networks
(Mạng đa năng xếp tầng đa tác vụ). Nó là bao gồm 3 mạng CNN xếp chồng và
đồng thời hoạt động khi detect khuôn mặt. Mỗi mạng có cấu trúc khác nhau và
đảm nhiệm vai trị khác nhau trong task. Đầu ra của MTCNN là vị trí khn mặt
và các điểm trên mặt: mắt, mũi, miệng…
MTCNN hoạt động theo 3 bước, mỗi bước có một mạng neural riêng lần
lượt là: P-Net, R-Net và O-net

Hình 13. Kiến trúc mạng MTCNN
Với mỗi bức ảnh đầu vào, nó sẽ tạo ra nhiều bản sao của hình ảnh đó với
các kích thước khác nhau.
Tại P-Net, thuật tốn sử dụng 1 kernel 12x12 chạy qua mỗi bức hình để

tìm kiếm khn mặt.

Trang 25


×