Tải bản đầy đủ (.pdf) (56 trang)

NGHIÊN cứu và xây DỰNG hệ THỐNG NHẬN DẠNG mặt NGƯỜI dựa TRÊN ADABOOST

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 (816.44 KB, 56 trang )

Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 1
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN






























Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 2
Lời Cảm Ơn
Em xin chân thành cảm ơn thầy Tiến sĩ Nguyễn Đình Thuân đã tận tình hướng
dẫn, giúp đỡ em trong suốt thời gian thực hiện đồ án tốt nghiệp này, chân cảm ơn
quý thầy cô khoa Công nghệ thông tin Trường Đại Học Nha Trang đã tận tình giảng
dậy, trang bị cho chúng em những kiến thức cần thiết trong suốt quá trình học tập.
Em cũng xin gửi lòng biết ơn đến gia đình, cha, mẹ, và bạn bè đã ủng hộ, giúp đỡ
và động viên em trong suốt quá trình làm đồ án tốt nghiệp.
Đề tài được thực hiện trong một thời gian tương đối gian, nên dù đã hết sức cố
gắng hoàn thành nhưng chắc chắn sẽ không thể tránh khỏi những thiếu sót nhất
định. Rất mong nhận được sự thông cảm và đóng góp ý kiến của các thầy cô, bạn bè
nhằm tạo tiền đề thuận lợi cho việc phát triển đề tài tốt hơn nữa trong tương lai.


Nha Trang, ngày 8/12/2008
Sinh viên thực hiện
Nguyễn Thị Hương Lý


Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 3
Lời Mở Đầu


Trong những năm gần đây, các ứng dụng về nhận dạng mặt người ngày càng

phát triển và được đánh giá cao. Đã có các hệ thống nhận dạng mặt người dựa trên
các phương pháp dò tìm với mạng nơron nhân tạo, SVM và nhận dạng mặt người
dựa trên phương pháp mạng nơron nhân tạo, ICA, SVM…Các ứng dụng vừa nêu
trên mặc dù được dựa trên các lý thuyết khá cổ điển như HMM, nơron nhưng ứng
dụng thực tế thì chưa được nhiều vì giới hạn về tốc độ.
Hệ thống nhận dạng khuôn mặt người vốn có phạm vi ứng dụng lớn nên việc
phát triển hệ thống nhận dạng khuôn mặt người theo các phương pháp mới có ý
nghĩa hết sức quan trọng, đó là lý do tôi chọn đề tài:
“NGHIÊN CỨU VÀ XÂY DỰNG HỆ THỐNG NHẬN DẠNG MẶT NGƯỜI
DỰA TRÊN ADABOOST”
Để có hệ thống nhận dạng khuôn mặt với chất lượng tốt trong thời gian khá
nhanh, tôi đã tiếp cận mô hình học AdaBoost làm công cụ xử lý chính cho việc dò
tìm mặt người dựa vào thông tin trên khuôn mặt và hai phương pháp PCA và LDA
để nhận dạng.
Đề tài được tổ chức thành 7 chương với nội dung:
 Chương 1: Phát biểu bài toán
 Chương 2: Dò tìm khuôn mặt theo phương pháp AdaBoost
 Chương 3: Tổng quan về PCA và LDA
 Chương 4: Ứng dụng phương pháp PCA và LDA nhận dạng mặt người.
 Chương 5: Cài đặt chương trình
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 4
MỤC LỤC
Trang

Chương 1 6

TỔNG QUAN VỀ BÀI TOÁN 6


1.1. Tổng quan và các khái niệm liên quan đến nhận dạng khuôn mặt 6
1.1.1. Hệ thống nhận dạng khuôn mặt 6
1.1.2. Hệ thống xác minh 6
1.1.3. Hệ thống nhận dạng tĩnh - tĩnh, tĩnh - động, động - động 6
1.2. Những khó khăn trong bài toán nhận dạng khuôn mặt 7
1.3. Các hướng tiếp cận chính trong lĩnh vực nhận dạng khuôn mặt 7
1.3.1. Các công trình nghiên cứu về phương pháp dò tìm và nhận dạng khuôn mặt 7
1.3.2. Hướng tiếp cận trong luận văn 8
1.4 Thu thập dữ liệu 9
1.5. Biểu diễn dữ liệu khuôn mặt trong máy tính 10
Chương 2 11

DÒ TÌM KHUÔN MẶT NHANH THEO PHƯƠNG PHÁP ADABOOST 11

2.1. Giới thiệu 11
2.1.1. Các vấn đề trong việc dò tìm khuôn mặt nhanh 11
2.1.2. Các hướng tiếp cận dò tìm khuôn mặt 11
2.1.3. Hướng tiếp cận theo phương pháp AdaBoost 12
2.2. Phương pháp chọn đặc trưng cho AdaBoost 12
2.3. Phương pháp AdaBoost (Adaptive Boost) 15
2.3.1. Tiếp cận Boosting 15
2.3.2. AdaBoost (Adaptive Boost) 16
2.4. Dò tìm khuôn mặt với AdaBoost 21
Chương 3 22

TỔNG QUAN VỀ PCA VÀ LDA 22

3.1. Giới thiệu về việc nhận dạng khuôn mặt người 22
3.2. Sơ lược về toán đại số tuyến tính trong thống kê 22
3.2.1. Vector riêng, trị riêng và sự chéo hóa của ma trận 22

3.1.1.1. Vector riêng và trị riêng 22
3.2.1.2. Ma trận chéo hóa 23
3.2.2. Kỳ vọng và phương sai trong thống kê đa chiều 23
3.1.2.1. Kỳ vọng 23
3.2.2.2. Phương sai trong thống kê đa chiều 23
3.3. Sơ lược về PCA và LDA 25
3.4. Trích rút đặc trưng từ không gian khuôn mặt theo PCA, LDA 27
Chương 4 30

ỨNG DỤNG PHƯƠNG PHÁP PCA VÀ LDA TRONG NHẬN DẠNG KHUÔN MẶT NGƯỜI .30

4.1. Eigenface là gì? 30
4.2. Rút trích đặc trưng chính thông qua các eigenfaces 30
4.3. Thuật toán PCA 36
4.4. Thuật toán LDA 37
4.5. PCA và LDA phân lớp một ảnh khuôn mặt 38
Chương 5 43

CÀI ĐẶT CHƯƠNG TRÌNH 43

5.1. Giới thiệu 43
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 5
5.2. Các module của chương trình 43
5.3. Giao diện màn hình và hướng dẫn sử dụng 55
5.4. Nhận xét 55
TÀI LIỆU THAM KHẢO 56








Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 6
Chương 1
TỔNG QUAN VỀ BÀI TOÁN
1.1. Tổng quan và các khái niệm liên quan đến nhận dạng khuôn mặt
1.1.1. Hệ thống nhận dạng khuôn mặt
Hệ thống nhận dạng khuôn mặt là một hệ thống được thiết kế để tìm thông tin
của một người. Kĩ thuật nhận dạng là kiểm tra sự phù hợp dựa trên phép so sánh
một – nhiều cụ thể là tìm ra một người là ai trong số những người đã được lưu trữ
trong hệ thống dựa vào thông tin khuôn mặt.
1.1.2. Hệ thống xác minh
Hệ thống xác minh/ xác thực khuôn mặt là một hệ thống được thiết kế để xác
minh thông tin của một người. Kĩ thuật xác minh là kiểm tra sự phù hợp trên phép
so sánh một – một cụ thể là đối chiếu thông tin mới nhận về một người với thông tin
đã lưu trữ về người này có khớp hay không dựa trên thông tin khuôn mặt.
1.1.3. Hệ thống nhận dạng tĩnh - tĩnh, tĩnh - động, động - động
 Hệ thống nhận dạng tĩnh – tĩnh
Hệ thống nhận dạng tĩnh – tĩnh là hệ thống được thiết kế bằng cách sử dụng
một số ảnh tĩnh làm mẫu để nhận dạng khuôn mặt người trong ảnh tĩnh. Kĩ thuật
nhận dạng này kiểm tra sự phù hợp dựa trên phép so sánh một nhiều như hệ thống
nhận dạng nói chung ở trên.
 Hệ thống nhận dạng tĩnh – động
Hệ thống nhận dạng tĩnh – động là hệ thống được thiết kế bằng cách sử dụng
một số ảnh tĩnh làm mẫu để nhận dạng khuôn mặt người trong ảnh động. Kĩ thuật

nhận dạng này kiểm tra sự phù hợp dựa trên phép so sánh một nhiều như hệ thống
nhận dạng nói chung ở trên, song ảnh cần kiểm tra là các khung ảnh động trong các
đoạn phim từ các máy camera. Kĩ thuật này dĩ nhiên không thể chính xác vì chuyển
động của mặt người trong phim khá phức tạp song thể hiện trong ảnh tĩnh để huấn
luyện lại ít.


Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 7
 Hệ thống nhận dạng động – động
Hệ thống nhận dạng động – động là hệ thống được thiết kế bằng cách sử dụng
các ảnh động làm mẫu để nhận dạng khuôn mặt người trong ảnh động. Kĩ thuật
nhận dạng này kiểm tra sự phù hợp dựa trên phép so sánh một nhiều như hệ thống
nhận dạng chung nói trên. Tuy nhiên, kĩ thuật này chính xác hơn kĩ thuật sử dụng
trong hệ thống nhận dạng tĩnh – động do sự chuyển động phức tạp của khuôn mặt
người cũng được huấn luyện bằng các khung ảnh động.
1.2. Những khó khăn trong bài toán nhận dạng khuôn mặt
Những biến đổi quá lớn giữa các ảnh khuôn mặt khác nhau từ một người cần
nhận dạng gồm trạng thái cảm xúc trên khuôn mặt, ánh sáng và các thay đổi vị trí
của khuôn mặt
Giới hạn về số ảnh cần thiết cho việc nhận dạng, tập học không thể bao quát
được tất cả các biến đổi có thể có trên khuôn mặt của một người cần nhận dạng
trong thế giới thực.
1.3. Các hướng tiếp cận chính trong lĩnh vực nhận dạng khuôn mặt
1.3.1. Các công trình nghiên cứu về phương pháp dò tìm và nhận dạng khuôn
mặt
Bài toán nhận dạng khuôn mặt cần xác định hai vấn đề chính: dùng thông tin
nào để nhận dạng (chân mày, cặp mắt, mũi, môi, tai, hay kết hợp các thông tin trên).
Và dùng phương pháp nào để huấn luyện cho máy nhận dạng dùng nguồn thông tin

đó. Nhận dạng khuôn mặt trên máy tính trải qua nhiều bước thăng trầm với các kết
quả như sau:
Wenyi Zhao, Arvindh Krishnaswamy, Rama Chellappa, Danie L.Swets,
John Weng (1998) sử dụng phương pháp PCA (phân tích thành phần chính) kết hợp
LDA (phân tích độc lập tuyến tính). Bước 1, chiếu ảnh khuôn mặt từ không gian
ảnh thô sang không gian các không gian khuôn mặt (mỗi lớp khuôn mặt được nhận
dạng sẽ được mô hình hóa bằng một không gian khuôn mặt) dùng PCA. Bước 2, sử
dụng phương pháp LDA để tạo bộ phân loại tuyến tính có khả năng phân lớp các
lớp khuôn mặt.
Emmanuel Viennet và Francoise Fogelman Soulie (1998), sử dụng
phương pháp mạng neural nhân tạo để xử lý và nhận dạng khuôn mặt.
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 8
Antonio J.Colmenarez và Thomas S.Huang (1998) sử dụng kỹ thuật học
thị giác và phù hợp mẫu 2D. Ông quan niệm bài toán dò tìm khuôn mặt là thao tác
phân loại khuôn mặt trong đó khuôn mặt thuộc về một lớp và các đối tượng khác
thuộc về lớp còn lại bằng cách ước lượng mô hình xác suất cho mỗi lớp và việc dò
tìm sử dụng luật quyết định Maximum- likehood.
Ara V.Nefian và Monson H.Hayes III (1998) trình bày hướng tiếp cận
theo mô hình Markov (HMM) trong đó ảnh mẫu khuôn mặt được lượng hóa thành
chuỗi quan sát trên khuôn mặt theo quan niệm dựa trên thứ tự xuất hiện các đặc
trưng khuôn mặt (hai chân mày, hai lông mi, mũi, miệng, cằm). Trong chuỗi quan
sát đó, mỗi quan sát lại là một vector nhiều chiều và mỗi vector quan sát này được
sử dụng để đặc trưng cho mỗi trạng thái trong chuỗi trạng thái của HMM. Mỗi
người được ước lượng bằng một mô hình của HMM.
Guodong Guo, Stan Z.Li, Kap Luk Chan (17 January 2001), dùng
phương pháp SVM để nhận dạng khuôn mặt. Sử dụng chiến lược kết hợp nhiều bộ
phân loại nhị phân để xây dựng bộ phân loại SVM đa lớp.
Hichem Sahbi (7 April 2003) sử dụng phương pháp SVM để dò tìm

khuôn mặt, áp dụng các chiến lược đa cấp để tối ưu hóa tốc độ.
ZhenQui Zhang, Long Zhu, Stan Z.Li và HongJiang Zhang (2001) sử
dụng phương pháp AdaBoost để dò tìm khuôn mặt trong thời gian thực với nhiều
góc nhìn khác nhau.
1.3.2. Hướng tiếp cận trong luận văn
Trong bài luận văn tốt nghiệp này đã sử dụng hai phương pháp đó là: phương
pháp PCA (phân tích thành phần chính) và phương pháp LDA (Phân tích biệt số
tuyến tính) để nhận dạng khuôn mặt.
Việc cô lập khuôn mặt trong ảnh đầu vào (ảnh chứa khuôn mặt – cửa sổ chứa
khuôn mặt) được thực hiện với phương pháp dò tìm khuôn mặt trong ảnh dùng
AdaBoost. Hình dưới mô phỏng các thao tác trong hệ thống nhận dạng mặt người.

Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 9


Hình 1: Sơ đồ hệ thống nhận dạng khuôn mặt
1.4 Thu thập dữ liệu
Cơ sở dữ liệu ảnh khuôn mặt gồm nhiều người được thu thập từ nhiều nguồn
khác nhau.
Tập huấn luyện bộ dò tìm (phát hiện) khuôn mặt được lấy từ trang web
của trung tâm CBCL thuộc trường đại học MIT.
Tập ảnh gồm hai bộ ảnh như sau: ảnh huấn luyện (gồm khoảng trên 2000 mặt người
và trên 4000 không phải mặt người) và ảnh thử nghiệm.
Cơ sở dữ liệu ảnh để nhận dạng khuôn mặt:
- Cho PCA: gồm 30 người, được chụp từ webcam và lấy từ các ảnh của các
bạn sinh viên lớp 46TH.
- Cho LDA: gồm 20 người, mỗi người bao gồm khoảng 10-15 ảnh khác nhau.
Nhận xét về tập mẫu dữ liệu: Hầu hết các khuôn mặt xuất hiện trong ảnh là

khuôn mặt trực diện mặt phẳng và mỗi khuôn mặt đều đầy đủ thông tin đặc trưng
như (hai chân mày, hai mắt, mũi, miệng, cằm).




Ảnh tĩnh
Webcam
Phát hiện khuôn mặt
bằng AdaBoost
Trích
chọn đặc
trưng bằng
eigenface


?
Nhận dạng với PCA,
LDA

Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 10
Kích thước chuNn hóa của mỗi mẫu trong tập huấn luyện là 250x250 pixels.
1.5. Biểu diễn dữ liệu khuôn mặt trong máy tính
Dữ liệu ảnh biểu diễn trong máy tính là cường độ sáng của điểm ảnh, tại vị trí
(x, y) là I(x, y).
Để biểu diễn dữ liệu cho các thuật toán học nhận dạng, ta dùng cách tổ chức
dữ liệu như xau:
Đọc từng dòng ảnh theo thứ tự từ trên xuống, mỗi dòng ảnh được bố trí liên

tục nhau trên một mảng số thực nhiều chiều hay chính là vector có kích thước
250x250:
), ,,(
6250011
xxxx =
. Đây là cách bố trí cho phương pháp PCA và LDA.
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 11
Chương 2
DÒ TÌM KHUÔN MẶT NHANH THEO PHƯƠNG PHÁP ADABOOST
2.1. Giới thiệu
Dò tìm đối tượng là bài toán cơ bản và quan trọng trong lĩnh vực thị giác máy
tính. Việc cô lập khuôn mặt trong ảnh đầu vào (ảnh chứa khuôn mặt) được thực
hiện với phương pháp AdaBoost.
Dò tìm khuôn mặt nhanh theo phương pháp AdaBoost là một bài toán quan
trọng vì là quá trình nhận dạng đối tượng sẽ thiếu chính xác nếu như thiếu bước dò
tìm và định vị được đối tượng.
2.1.1. Các vấn đề trong việc dò tìm khuôn mặt nhanh
Bản thân việc dò tìm khuôn mặt trên ảnh đã có nhiều vấn đề như:
o Biến đổi mặt phẳng ảnh (quay, hướng vv… của khuôn mặt)
o Biến đổi độ sáng và ngữ cảnh
o Biến đổi nền
o Biến đổi hình dáng (các sắc thái khuôn mặt khác nhau)
2.1.2. Các hướng tiếp cận dò tìm khuôn mặt
o Hướng dò tìm khuôn mặt trên ảnh màu dựa trên sự phân tích màu sắc
của vùng da. Mặc dù việc xử lý khá nhanh nhưng hướng này có giới hạn chỉ
xử lý trên ảnh màu và thường nhạy cảm với ảnh, thường chỉ sử dụng làm
các bước tiền xử lý cho các hướng khác.
o Hướng dò tìm khuôn mặt dựa trên đặc trưng chủ yếu dựa vào các đặc

trưng của khuôn mặt người được quy định trước. Thành công nhất trong dò
tìm khuôn mặt người trong thời gian thực là phương pháp ASM (Active
shape Models).
o Hướng dò tìm khuôn mặt dựa trên thông tin hình ảnh gồm mạng
nơron nhân tạo, các hướng thống kê (SVM, AdaBoost…). Phương pháp
SVM và mạng nơron nhân tạo cũng đạt được kết quả khá cao trong thời
gian khá nhanh song cũng chỉ vài ảnh trong một giây nhưng với AdaBoost
thì cho kết quả khả quan hơn.
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 12
2.1.3. Hướng tiếp cận theo phương pháp AdaBoost
Trong đồ án tốt nghiệp này việc dò tìm khuôn mặt người theo phương pháp
AdaBoost với các lý do sau:
o Phương pháp AdaBoost dựa trên ý tưởng xây dựng các bộ dò tìm yếu,
mặc dù độ chính xác không cao nhưng có thời gian xử lý rất nhanh. Tuy
nhiên, khi kết hợp các bộ dò tìm lại có thể đạt độ chính xác cao.
o Phương pháp AdaBoost sử dụng kết hợp các đặc trưng vốn dĩ tính
toán rất nhanh, thích hợp cho việc dò tìm trong thời gian thực.
2.2. Phương pháp chọn đặc trưng cho AdaBoost
Một phương pháp chọn đặc trưng thích hợp cho AdaBoost là phép biến đổi
Haar-like. Haar feature là một loại đặc trưng thường được dùng cho bài toán nhận
dạng trên ảnh. Haar feature được xây dựng từ các hình chữ nhật có kích thước bằng
nhau, dùng để tính độ chênh lệch giữa các giá trị điểm ảnh trong các vùng kề nhau.
Có ba tập hợp miền hình học chính như sau:











Hình 2- Các miền hình học đặc trưng Haar-like

Giả sử miền đen là dương và miền trắng là miền âm thì đặc trưng Haar-like
tính bằng tổng giá trị pixel của các ô đen trừ cho tổng giá trị pixel của các ô trắng.
1. Đặc trưng cạnh
(a)

(d)

(b)

(c)
2. Đặc trưng đường
(a) (b) (c) (d) (e) (f) (g) (h)
3. Đặc trưng tâm
(a) (b)
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 13

Hình 3- Haar Feature cơ bản

Trong hình 3.2a và 3.2b, giá trị của feature cho bởi 1 ảnh bằng hiệu số giữa
tổng các điểm ảnh thuộc 2 vùng hình chữ nhật sáng và tối. Trong hình 3.2c thì giá
trị feature bằng tổng các điểm ảnh trong hai vùng hình chữ nhật bên ngoài trừ cho

tổng các điểm ảnh nằm trong hình chữ nhật ở giữa. Trong hình 3.2d, giá trị feature
bằng tổng các điểm ảnh nằm trong vùng 2 hình chữ nhật mầu tối trừ cho tổng các
điểm ảnh nằm trong 2 hình chữ nhật màu sáng.
Haar-like được ưa thích vì các lý do sau:
• Nó diễn đạt được tri thức về các đối tượng trong ảnh (bởi vì nó biểu
diễn mối liên hệ giữa các bộ phận của đối tượng), điều mà bản thân từng
điểm ảnh không diễn đạt được.
• Nó phân loại mạnh trong việc xác định khuôn mặt người hay không
phải khuôn mặt người.
• Có hiệu quả khi dùng bảng tổng các vùng hoặc các kỹ thuật ảnh đầy
đủ.






nh
A. Feature x2


B. Feature y2


C. Feature x3


D. Feature x2-y2

Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người


SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 14

Hình 4- Haar Feature cho mặt người

Trong quá trình huấn luyện, số lượng xử lý trên các Haar Feature là rất lớn,
việc tính tổng các điểm ảnh cho bởi từng feature làm cho thời gian xử lý tăng đáng
kể. Để khắc phục điều này, Viola và Jones đã đưa ra khái niệm Integral Image để
tính toán nhanh cho các feature cơ bản.
 Integral image
Cách tính nhanh phương pháp Haar-like dựa trên đạo hàm ảnh bậc nhất ii(x,y)
của ảnh i(x,y). Đạo hàm ii(x,y) của ảnh i(x,y) chính là tổng giá trị các pixel tính từ
góc trái trên đến (x,y):
(
)
(
)


≤ ≤
=
xx yy
yxiyxii
' '
',',


Hình 5- Ý nghĩa hình học của đạo hàm ảnh
Việc tính toán đạo hàm ảnh được thực hiện rất nhanh bằng việc cộng tích lũy
như sau:

(
)
(
)
(
)
( ) ( ) ( )
yxsyxiiyxii
yxiyxsyxs
,,1,
,1,,
+−=
+

=

trong đó
),( yxs
là tổng của cột x tính từ đầu dòng đến vị trí
(
)
yx,
.
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 15
Sau khi có được đạo hàm ảnh, ta chỉ việc tính giá trị một ô chữ nhật bằng cách
như sau: chẳng hạn ta cần tính ô hình chữ nhật D thì ta có công thức sau
(
)

(
)
(
)
(
)
)(AvalABvalACvalABCDvalDVal +−−=
, do đó nếu tính theo tọa độ
(
)
yx,
ta
có phương trình sau:
(
)
(
)
(
)
(
)
(
)
(
)
LyxiiyWxiiLyWxiiyxiis
r
−+−−−−+= ,,,,




Hình 6 – Cách tính giá trị một ô đặc trưng

Cuối cùng, việc tính các đặc trưng Haar-like chỉ còn là trừ giá trị tổng các ô
chữ nhật được tính như trên.
2.3. Phương pháp AdaBoost (Adaptive Boost)
2.3.1. Tiếp cận Boosting
Boosting là kỹ thuật dùng để tăng độ chính xác cho các thuật toán học
(learning algorithm). Nguyên lý cơ bản của nó là kết hợp các bộ phân loại yếu
(weak classifiers) thành một bộ phân loại mạnh (strong classifier). Trong đó, weak
classifiers là các bộ phân loại đơn giản chỉ cần có độ chính xác trên 50%. Bằng cách
này chúng ta nói bộ phân loại đã được “boost”.
Ví dụ, xét một bài toán phân loại hai lớp (mẫu cần nhận dạng sẽ được phân
vào 1 trong 2 lớp) với D là tập huấn luyện gồm có n mẫu. Trước tiên, chúng ta sẽ
chọn ngẫu nhiên ra n1 mẫu từ tập D (n1<n) để tạo tập D
1
. Sau đó, chúng ta sẽ xây
dựng weak classifier đầu tiên C
1
từ tập D
1
. Tiếp theo, chúng ta xây dựng tập D
2
để
huấn luyện bộ phân loại C
2
. D
2
sẽ được xây dựng sao cho một nửa số mẫu của nó
được phân loại đúng bởi C

1
và nửa còn lại bị phân loại sai bởi C
1
. Bằng cách này,
D
2
chứa đựng những thông tin bổ sung cho C
1
. Bây giờ chúng ta sẽ xây dựng huấn
luyện C
2
từ D
2
.
Tiếp theo, chúng ta sẽ xây dựng tập D
3
từ những mẫu không được phân loại
tốt bởi sự kết hợp giữa C
1
và C
2
: những mẫu còn lại trong D mà C
1
và C
2
cho kết
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 16
quả khác nhau. Như vậy, D

3
sẽ gồm những mẫu mà C
1
và C
2
hoạt động không có
hiệu quả. Sau cùng, chúng ta sẽ huấn luyện bộ phân loại C
3
từ D
3
.
Bây giờ, chúng ta đã có một strong classifier: sự kết hợp C
1
, C
2
và C
1
. Khi tiến
hành nhận dạng một mẫu X, kết quả sẽ được thỏa thuận của 3 bộ C
1
, C
2
và C
3
. Nếu
C
1
và C
2
đều phân X vào cùng một lớp thì lớp này chính là kết quả phân loại của X;

ngược lại, nếu C
1
và C
2
phân X vào 2 lớp khác nhau, C
3
sẽ quyết định X thuộc về
lớp nào.

Hình 7- Boosting

2.3.2. AdaBoost (Adaptive Boost)
AdaBoost là một tiếp cận boosting được Freund và Schapire đưa ra vào năm
1995. AdaBoost cũng hoạt động trên nguyên tắc kết hợp tuyến tính các weak
classifiers để có một strong classifier.
Là một cải tiến của tiếp cận boosting, AdaBoost sử dụng thêm khái niệm trọng
số (weigth) để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ
mỗi weak classifier được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để
chuNn 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 weak
classifier vừa được xây dựng. Bằng cách này, các weak classifier sau có thể tập
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 17
trung vào các mẫu mà các weak classifiers trước đó chưa làm tốt. Sau cùng, các
weak classifiers sẽ được kết hợp tùy theo mức độ “tốt” của chúng để tạo dựng nên
strong classifier.
Có thể hình dung một cách trực quan như sau: để biết một ảnh có phải là mặt
người hay không, ta hỏi T người (tương đương với T weak classifiers xây dựng từ T
vòng lặp của boosting), đánh giá của mỗi người (tỉ lệ sai dưới 50%). Sau đó, ta sẽ

đánh trọng số cho đánh giá của từng người (thể hiện qua hệ số α), người nào có khả
năng đánh giá tốt các mẫu khó thì mức độ quan trọng của người đó trong kết luận
cuối cùng sẽ cao hơn những người chỉ đánh giá tốt được các mẫu dễ. Việc cập nhật
lại trọng số của các mẫu sau mỗi vòng boosting chính là để đánh giá độ khó của các
mẫu (mẫu càng có nhiều người đánh giá sai là mẫu càng khó).

Hình 8- Strong classifier H(x) xây dựng bằng AdaBoost


Dữ liệu huấn luyện
Dữ liệu trọng số
Dữ liệu trọng số


Dữ liệu trọng số



h
1
(x)
h
n
(x)
h
2
(x)
Đánh trọng số ban đầu
Cập nhật lại trọng số
Cập nhật lạ

i trọng số


Cập nhật lạ
i trọng số


( )






=

=
n
k
kk
xhsignxH
1
)(
α


Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 18
Các weak classifiers h

k
(x) được biểu diễn như sau:



<
=
otherwise
pxfp
xh
kkkk
k
,0
)(,1
)(
θ

Trong đó:
• X= (x
1
, x
2
,…, x
n
): vector đặc trưng của mẫu.

θ
: ngưỡng
• f
k

: hàm lượng giá vector đặc trưng của mẫu
• p
k
: hệ số quyết định chiều của bất phương trình
Công thức trên có thể được diễn giải như sau: nếu giá trị vector đặc trưng của
mẫu cho bởi hàm lượng giá của bộ phân loại vượt qua một ngưỡng cho trước thì
mẫu object (đối tượng cần nhận dạng), ngược lại là background (không phải đối
tượng nhận dạng).
Thuật toán AdaBoost:














1. Cho một tập huấn luyện gồm n mẫu có đánh dấu
(
)
11
, yx
,
(

)
22
, yx
, …,
(
)
NN
yx , với
(
)
kMkkk
xxxXx , ,,
21
=∈ là vector đặc trưng và
{
}
1,1−∈
k
y là nhãn
của mẫu ( 1 ứng với object, -1 ứng với background).
2. Khởi tạo trọng số ban đầu cho tất cả các mẫu:
N
W
k
1
,1
=

3. Xây dựng T weak classifiers (T vòng lặp boosting)
Lặp t=1, , T

-
Với mỗi đặc trưng trong vector đặc trưng, xây dựng một weak
classifier h
j
với ngưỡng và
j
θ
lỗi
j
ε

(
)

−=
kkjktj
yxhW
,
ε

-
Chọn ra h
j
với
j
ε
nhỏ nhất, được h
t
.
{

}
1,1: −→Xh
t

-
Cập nhật lại trọng số






=
×=

+
kkt
kkt
t
kt
kt
yxhe
yxhe
Z
W
W
t
t
)
,

,1
(,
)(,
α
α



Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 19

Quá trình huấn luyện bộ phân loại được thực hiện bằng một vòng lặp mà ở mỗi
bước lặp, thuật toán sẽ chọn ra một weak classifier h
t
thực hiện việc phân loại với
lỗi
t
ε
nhỏ nhất (do đó sẽ là bộ phân loại tốt nhất) để bổ sung vào strong classifier.
Mỗi khi chọn được 1 bộ phân loại h
t
, AdaBoost sẽ tính giá trị
t
α
theo công thức ở
trên,
t
α
cũng được chọn trên nguyên tắc làm giảm thiểu giá trị lỗi

t
ε
.
Hệ số
t
α
nói lên mức độ quan trọng của h
t
:
- Trong công thức của bộ phân loại H(x):






=

=
T
t
tt
xhsignxH
1
)()(
α

Ta thấy tất cả các bộ phân loại h
t
đều có đóng góp vào kết quả phân loại của

H(x), và mức độ đóng góp càng lớn thì nó càng có vai trò quan trọng trong H(x).
- Trong công thức tính
t
α
:









=
j
j
t
ε
ε
α
1
ln
2
1

Dễ thấy giá trị
t
α
tỉ lệ nghịch với

j
ε
. Bởi vì h
t
được chọn với tiêu chí đạt
j
ε

nhỏ nhất, do đó nó sẽ đảm bảo giá trị
t
α
lớn nhất. Công thức này do Freund và
Schapire đưa ra.
Sau khi tính được giá trị
t
α
, AdaBoost tiến hành cập nhật trọng số của các
mẫu: tăng trọng số của các mẫu mà h
t
phân loại sai, giảm trọng số các mẫu mà h
t

Trong đó:
o










=
j
j
t
ε
ε
α
1
ln
2
1

o Z
t
: hệ số dùng để đưa W
t+1, k
về đoạn [0,1] ( normalization factor)
4. Strong classifier xây dựng được
( )






=


=
T
t
tt
xhsignxH
1
)(
α


Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 20
phân loại đúng. Bằng cách này, trọng số của các mẫu phản ánh được mức độ khó
nhận dạng của mẫu đó và h
t+1
sẽ ưu tiên học cách phân loại những mẫu này.
Vòng lặp sẽ dừng lại sau T lần lặp. Trong thực tế cài đặt, người ta ít sử dụng T
vì không có công thức nào đảm bảo tính được giá trị T tối ưu cho quá trình huấn
luyện. Thay vào đó, người ta sử dụng giá trị max false positive hay max false alarm
(tỉ lệ nhận dạng sai tối đa các mẫu background). Tỉ lệ này của bộ phân loại cần xây
dựng không được phép vượt quá giá trị này. Khi đó, qua các lần lặp, false alarm của
strong classifier H
t
(x) xây dựng được (tại lần lặp thứ t) sẽ giảm dần, và vòng lặp kết
thúc khi tỉ lệ này thấp hơn max false alarm.
 Lỗi xảy ra trong quá trình huấn luyện
Lỗi xảy ra khi
(
)

yxH ≠
hay
(
)
0<xyH
. Lề của mẫu
(
)
yx,
qua hàm
(
)
Rxh ∈

trên tập các mẫu huấn luyện được định nghĩa là
(
)
xyh
. Lề có thể được xem là các số
đo độ tin cậy của giá trị đoán trước của h. Lỗi phân lớp của H
M
có biên trên là:
(
)
(
)


=
i

xHy
M
iMi
eHJ

Thuật toán AdaBoost xây dựng hàm
(
)
xh
bằng cách giảm tối đa công thức
trên. Cho
( ) ( ) ( )


=

=
1
1
1
,
M
m
MmM
xhxhxH
tốt nhất cho phân lớp mạnh
(
)
(
)

(
)
xhxHxH
mMM
+=

1
là hàm dẫn tới giá trị nhỏ nhất:
(
)
(
)
)(minarg
1
xhxHJh
M
h
M
τ
τ
+=

và hàm có giá trị nhỏ nhất được chứng minh là:
(
)
(
)
( )
( )
1

1
,1
,1
log
2
1
)(


−=
±=
=
M
M
M
xyP
xyP
xh
ω
ω
với
(
)
1−M
ω
là trọng lượng tại thời điểm M.
Dùng công thức
)(),(),( yPyxPxyP
ωω
=

và cho
),1(
),1(
log
2
1
)(
ω
ω
−=
+=
=
yxP
yxP
xL
M







−=
+=
=
)1(
)1(
log
2

1
yP
yP
T
(1) chúng ta có được
TxLxh
MM
−=
)()(
.
M
L
là các mẫu
của cả hai phân lớp. Ngưỡng T được xác định bằng tỉ lệ log của các xác suất trước
đó.

Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 21
2.4. Dò tìm khuôn mặt với AdaBoost
Trong đồ án này sử dụng 4 loại đặc trưng cơ bản và với kích thước các mẫu
huấn luyện là 19x19.

Hình 9 Các features cơ bản được sử dụng trong luận văn

và tập các features là 53130 features. Tuy nhiên, không phải feature nào cũng thực
hiện tốt việc phân loại mà chỉ có một số lượng nhỏ trọng số 53130 features này là
thực sự hữu dụng. Nhiệm vụ của bộ phân loại là phải tìm ra các feature này.
Mỗi weak classifier có 1 feature và 1 ngưỡng, ngưỡng này chính là giá trị của
một mẫu cụ thể cho bởi feature này. Như vậy, với N mẫu và M features thì số weak

classifiers có thể là MxN, tức là với 1100 mẫu và 53130 features thì hệ thống sẽ
phải chọn được 1 weak classifier trong số 1100 x 53130 = 58443000 weak
classifiers trong mỗi vòng boosting.
AdaBoost được thiết kế để có thể chọn nhanh các features, cũng là chọn nhanh
các weak classifiers.
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 22
Chương 3
TỔNG QUAN VỀ PCA VÀ LDA
3.1. Giới thiệu về việc nhận dạng khuôn mặt người
Mặc dù việc nhận dạng mặt người là một vấn đề thuộc về mặt thị giác, có một
số phương pháp lạm dụng chức năng này. Chúng ta khai thác một số mô hình trên
và đưa ra mô hình nhận dạng dựa vào cách tiếp cận lý thuyết thông tin, tìm kiếm
những thông tin quan trọng nhất trong nhóm mặt người; nó sẽ phân biệt rất tốt giữa
các khuôn mặt với nhau. Phương pháp này chuyển đổi những ảnh mặt người thành
các chuỗi ảnh mang nét đặc trưng, chúng là các thành phần chính của dãy huấn
luyện ban đầu của những ảnh mặt người. Việc nhận dạng được thực hiện bằng cách
chiếu bức ảnh mới vào không gian con được trải rộng bởi không gian mặt và sau đó
phân loại mặt người bằng cách so sánh vị trí của nó trong không gian mặt người với
vị trí các cá thể đã biết trước. Việc học và nhận dạng ảnh mặt người mới chính là
phần kiểm chứng quan trọng của phương pháp này. Việc nhận dạng mặt người dưới
những điều kiện thay đổi là nhờ huấn luyện hướng nhìn đặc trưng (góc nhìn thẳng,
góc nhìn 45
0
) lợi điểm của phương pháp hơn các phương pháp nhận dạng mặt
người khác là tốc độ, sự đơn giản, khả năng học , sự thay đổi từ từ của mặt người.
3.2. Sơ lược về toán đại số tuyến tính trong thống kê
3.2.1. Vector riêng, trị riêng và sự chéo hóa của ma trận
3.1.1.1. Vector riêng và trị riêng

Xét một toán tử tuyến tính f trong không gian R
n
với các vector cơ sở:
E
i
= [0…1…0]
T
( với giá trị 1 nằm tại vị trí thứ i) (1)
Toán tử tuyến tính này sẽ được biểu diễn bởi một ma trận vuông T kích thước
n
n
×
.
Nếu tồn tại một đại lượng vô hướng
λ
và một vector x, x
0

, sao cho thỏa
điều kiện:

xxf
λ
=
)(
(2)
hay
xxT
λ
=

*
(3)
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 23
Khi đó
λ
được gọi là trị riêng của f, và vector f được gọi là vector riêng của f,
hay của T, ứng với giá trị riêng
λ
. Ma trận T với kích thước
n
n
×
sẽ có tối đa n trị
riêng và n vector riêng tương ứng. Một ma trận T khả nghịch đảo sẽ có đủ n trị
riêng (kể cả trị riêng bội) và n vector riêng tương ứng.
3.2.1.2. Ma trận chéo hóa
Ma trận vuông T gọi là có dạng chéo nếu tất cả các phần tử không nằm trên
đường chéo chính của nó đều bằng không, nghĩa là
njijiT
ij
,1:,,,0 ≠∀=
.
Ma trận vuông T gọi là chéo hóa được nếu tồn tại một ma trận vuông không
suy biến C sao cho C
-1
TC là ma trận chéo hóa.
Nếu ta có C là một ma trận có các cột là các vector cơ sở đã được chuNn hoá
của không gian R

n
thì C
T
= C
-1
, khi đó ta được:
T
c
= C
T
C (4)
Định lý: Điều kiện để một ma trận chéo hóa được
Ma trận vuông T cấp n chéo hóa được nếu và chỉ nếu T có n vector riêng độc
lập tuyến tính trong không gian R
n
nghĩa là A có n giá trị riêng (kể cả số lần bội) và
ứng với vector riêng bội m có m vector riêng độc lập tuyến tính.
3.2.2. Kỳ vọng và phương sai trong thống kê đa chiều
3.1.2.1. Kỳ vọng
Đối với thống kê đa chiều, mỗi một mẫu thống kê là một vector đa chiều. Giả
sử ta có một biến ngẫu nhiên X trong không gian tuyến tính n chiều.

[
]
T
n
xxxX
21
=
(6)

Khi đó kỳ vọng của biến ngẫu nhiên X cũng là một vector n chiều, trong thống
kê, kỳ vọng E[X] của một biến ngẫu nhiên X có thể được ước lượng bằng trung
bình mẫu
X
, và được tính bằng công thức:


=
=
M
i
i
X
M
X
1
1
(7)
trong đó M là tổng số mẫu có trong thống kê.
3.2.2.2. Phương sai trong thống kê đa chiều
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 24
 Hiệp phương sai là độ đo sự biến thiên cùng nhau của hai biến ngẫu nhiên
(phân biệt với phương sai là độ đo mức độ phân tán của một biến ngẫu nhiên xung
quanh giá trị kỳ vọng).
Hai biến có xu hướng thay đổi cùng nhau (nghĩa là, khi một biến có giá trị cao
hơn giá trị kỳ vòng thì biến kia có xu hướng cũng cao hơn giá trị kỳ vọng), thì hiệp
phương sai giữa hai biến này có giá trị dương. Mặt khác, nếu một biến nằm trên giá
trị kì vọng còn biến kia có xu hướng nằm dưới giá trị kì vọng, thì hiệp phương sai

của hai biến này có giá trị âm.
Hiệp phương sai giữa hai biến ngẫu nhiên giá trị thực X và Y, với các có giá trị
kỳ vọng E(X) = µ và E(Y) = ν được định nghĩa như sau:
(
)
(
)
(
)
νµ
−−= YXEYXCov ),(
,
(8)

trong đó E là hàm giá trị kỳ vọng. Công thức trên còn có thể được viết là:
(
)
µν
−⋅= YXEYXCov ),(
.
(9)

N
ế
u X và Y
độ
c l

p, thì hi


p ph
ươ
ng sai c

a chúng b

ng 0.
Đ
ó là do khi có s


độ
c l

p
th

ng kê,
(
)
(
)
µν
=⋅=⋅ YEXEYXE )(

(10)

Thay thế vào dạng thứ hai của công thức hiệp phương sai ở trên, ta có
0),(
=


=
µν
µν
YXCov

(11)

Tuy nhiên, điều ngược lại không đúng: nếu X và Y có hiệp phương sai bằng 0,
hai biến này không nhất thiết độc lập.
 Ma trận hiệp phương sai ( chính là phương sai trong thống kê đa chiều)
Xét ví dụ, chúng ta tạo ra một ma trận hiệp phương sai cho tập dữ liệu 3 chiều
x, y và z. Ta được ma trận hiệp phương sai với 3 hàng, 3 cột:










=
),cov(),cov(),cov(
),cov(),cov(),cov(
),cov(),cov(),cov(
zzyzxz
zyyyxy
zxyxxx

C

Trong ví dụ trên ta thấy, các phần tử nằm trên đường chéo (từ trái sang phải, từ
trên xuống dưới) lần lượt là phương sai tương ứng của các biến này. Một điểm khác
là từ
(
)
(
)
abba ,cov,cov =
nên ma trận chéo hóa đối xứng qua đường chéo chính.
Đồ án tốt nghiệp: Xây dựng hệ thống nhận dạng mặt người

SVTH: Nguyễn Thị Hương Lý – 46TH1 –ĐH Nha Trang Trang 25
Định nghĩa: Ma trận hiệp phương sai của tập hợp m biến ngẫu nhiên là một ma
trận vuông hạng
(
)
mm×
mà mỗi phần tử c
ij
của ma trận là hiệp phương sai giữa hai
thành phần x
i
và x
j
là độc lập hay không phụ thuộc lẫn nhau.


( )( )

T
M
i
ii
XXXX
M
C

=
−−

=
1
1
1
(12)

3.3. Sơ lược về PCA và LDA

Có nhiều phương pháp thống kê khác nhau cho việc nhận dạng khuôn mặt
đã được đưa ra trong những năm gần đây và những nhóm tìm kiếm khác nhau đã
đưa ra những kết quả trái ngược nhau khi so sánh chúng với nhau. Và nhận dạng
mặt người đã thu hút được sự quan tâm của nhiều người, nhiều đối tượng.
Trong đồ án tốt nghiện này tôi sử dụng 2 giải thuật nhận dạng mặt người phổ
biến sau: PCA (Principal Component Analysis) – Phân tích thành phần chính; LDA
(Linear Discriminant Analysis) – Phân tích biệt số tuyến tính. PCA tìm thấy một tập
các vector phép chiếu tiêu biểu nhất mà những mẫu được chiếu giữ lại thông tin
quan trọng nhất về những mẫu ban đầu. LDA sử dụng lớp thông tin và đi tìm một
tập các vector mà làm cực đại sự phân bố giữa các lớp trong khi làm cực tiểu sự
phân bố trong mỗi lớp.

Tất cả 2 giải thuật đều được gọi là những phương pháp phân tích không gian
con. Một ảnh hai chiều
Γ
(m
×
n) có thể được xem như một vector (hay một điểm)
trong không gian N chiều (
nmN
×
=
). Và công việc của các giải thuật là tìm cách
để tối ưu các vector không gian mặt, làm giảm số chiều của vector để phục vụ cho
việc xử lý nhanh hơn. Dưới đây là mô hình nhận dạng.

×