You are on page 1of 101

Lời cảm ơn

1
Lời mở đầu
Sự ra đời của chiếc máy vi tính là một đột phá trong lịch sử loài người, một
bước tiến lớn trong khoa học. Máy vi tính đã giúp đỡ con người hoàn thành từ
những công việc nhỏ nhặt như tính toán vài con số đến những nhiệm vụ to lớn như
đưa con người lên mặt trăng một cách thuận lợi. Công dụng của máy vi tính vô
cùng đa dạng. Sự đa dạng này là do con người đã tận dụng khả năng xử lý, tính
toán và lưu trữ của máy để linh hoạt sáng tạo ra các ứng dụng khác nhau phục vụ
cho từng mục tiêu riêng biệt.
Nhận dạng khuôn mặt người là một trong những ứng dụng tuyệt vời của thị
giác máy tính nói riêng cũng như khoa học máy tính nói chung. Bài toán nhận
dạng khuôn mặt người vốn được nghiên cứu từ những năm 1970 và cho đến nay,
rất nhiều nghiên cứu lẫn ứng dụng cho bài toán này đã ra đời. Tuy nhiên, bài toán
nhận dạng khuôn mặt người vẫn còn nhiều thử thách và trong luận văn này, chúng
tôi đề xuất một hướng giải quyết mới cho bài toán, đó là: NHẬN DẠNG MẶT
NGƯỜI VỚI ĐẶC TRƯNG GABOR WAVELET KẾT HỢP ADABOOST. Với
hướng giải quyết này, chúng tôi lập trình ứng dụng để thực nghiệm, qua đó thấy rõ
được hiệu quả của hướng giải quyết. Luận văn gồm 4 chương, được bố cục như
sau:
• Chương 1 – Tổng quan: Giới thiệu bài toán nhận dạng khuôn mặt
người, các hướng tiếp cận của bài toán và đề xuất hướng tiếp cận
trong luận văn.
• Chương 2 – Cơ sở lý thuyết: Trình bày cơ sở lý thuyết cơ bản về
Gabor wavelet, phương pháp học AdaBoost và phương pháp gom
nhóm.
• Chương 3 – Xây dựng thuật giải: Nhận dạng mặt người với đặc
trưng Gabor wavelet kết hợp AdaBoost, đưa ra mô hình giải quyết
bài toán.
• Chương 4 – Cài đặt chương trình thực nghiệm, kết quả và đánh giá:
Thiết kế chương trình ứng dụng, giới thiệu về tập mẫu huấn luyện,
số đặc trưng cần lựa chọn; kết quả huấn luyện và kết quả kiểm tra;
đưa ra nhận xét và hướng phát triển trong tương lai.

2
Dù đã hết sức cố gắng nhưng trong bài viết khó tránh khỏi những sai sót.
Xin hãy gửi phản hồi cũng như những ý kiến đóng góp cho chúng tôi để đề tài này
ngày một hoàn thiện hơn. Mọi góp ý xin liên hệ nhóm tác giả:

3
Mục lục
Lời cảm ơn 1

Lời mở đầu 2

Mục lục 4

Danh sách các hình 7

Danh sách các bảng 9

Chương 1: Tổng quan 10

1.1 Giới thiệu 10

1.1.1 Nhu cầu thực tế 10

1.1.2 Bài toán nhận dạng mặt người 10

1.1.3 Các ứng dụng hiện nay 12

1.1.4 Những khó khăn của bài toán nhận dạng mặt người 13

1.2 Các hướng tiếp cận của bài toán nhận dạng mặt người 14

1.2.1 Các hướng tiếp cận 14

1.2.2 Một số công trình nghiên cứu hiện nay 15

1.3 Đề xuất hướng tiếp cận trong luận văn 17

Chương 2: Cơ sở lý thuyết 20

2.1 Gabor wavelet 20

2.1.1 Wavelet là gì? 20

2.1.2 Hàm cơ sở - Hàm cơ sở biến thiên tỉ lệ 23

2.1.3 Giải tích Fourier 24

2.1.4 Biến đổi Wavelet và biến đổi Fourier 26

4
2.1.5 Giải tích Wavelet 28

2.1.6 Gabor wavelet 30

2.1.7 Chọn Gabor wavelet biểu diễn khuôn mặt người 36

2.2 Tổng quan về AdaBoost 39

2.2.1 Giới thiệu 39

2.2.2 Phương pháp Boosting 39

2.2.3 AdaBoost 41

2.3 Tổng quan phương pháp gom nhóm 53

2.3.1 Giới thiệu 53

2.3.2 Phương pháp gom nhóm 53

2.3.3 Thuật toán k-means 57

Chương 3: Xây dựng thuật giải 69

3.1 Vector Đặc trưng Gabor 69

3.1.1 Gabor wavelet 70

3.1.2 Đại diện cho ảnh khuôn mặt dùng Gabor wavelet 70

3.2 Không gian intra-personal và không gian extra-personal 74

3.3 Chọn lựa đặc trưng và phân lớp bằng AdaBoost 76

3.4 Gom nhóm cơ sở dữ liệu 81

Chương 4: Cài đặt chương trình thực nghiệm, kết quả và đánh giá 85

4.1 Thu thập và chuẩn hóa tập dữ liệu 85

4.2 Cài đặt chương trình thực nghiệm 87

4.3 Giao diện chương trình 88

4.4 Kết quả 91

5
4.5 Đánh giá 92

4.5.1 Ưu điểm 92
4.5.2 Khuyết điểm 93
4.5.3 Hướng phát triển 95

Tài liệu tham khảo 99

6
Danh sách các hình
Hình 1.1 – Một hệ thống nhận dạng mặt người. 11

Hình 2.1 – Hàm cơ sở Fourier, trục thời gian – tần số và độ phủ trong mặt phẳng. 27

Hình 2.2 – Hàm cơ sở wavelet Daubechies, trục thời gian – tần số và độ phủ trong
mặt phẳng. 28

Hình 2.3 – (Trái) Một họ Gabor wavelet; (Phải) Độ phủ của nó trong mặt phẳng. 35

Hình 2.4 – Một tập nhỏ các đặc trưng có thể nhận dạng mặt người. 35

Hình 2.5 – Phần thực của 40 bộ lọc Gabor theo 5 tỉ lệ và 8 hướng. 38


Hình 2.6 – Ví dụ của ảnh mặt người phản ứng trên bộ lọc Gabor. 38
Hình 2.7 – Minh họa Boosting trên tập mẫu là các điểm hai chiều. 42
Hình 2.8 – Quá trình cập nhật lại trọng số và xây dựng bộ phân loại mạnh H. 44

Hình 2.9 – Minh họa thuật toán AdaBoost trên tập mẫu là các điểm hai chiều. 48
Hình 2.10 – Các cách chia nhóm khác nhau của cùng một tập điểm. 54
Hình 2.11 – Minh họa thuật toán gom nhóm k-means. 56

Hình 2.12 – Minh họa gom nhóm dựa trên phương pháp phân cấp. 56

Hình 2.13 – Hai loại phương pháp tạo kiến trúc phân cấp nhóm. 57

Hình 2.14 – Gom tập dữ liệu thành 3 nhóm dùng thuật toán k-means. 61

Hình 2.15 – Gom nhóm tối ưu và không tối ưu. 64

Hình 2.16 – Chọn trọng tâm ban đầu tốt. 65


Hình 2.17 – Chọn trọng tâm ban đầu không tốt. 66

Hình 2.18 – Hai cặp nhóm vói mỗi cặp trọng tâm ban đầu thuộc một nhóm. 67

Hình 2.19 – Hai cặp nhóm, mỗi cặp có ít hơn hoặc nhiều hơn hai trọng tâm ban
đầu. 67

Hình 3.1 – Đại diện Gabor wavelet cho một bức ảnh khuôn mặt. 73

7
Hình 3.2 – Một mẫu trong không gian IS. 75

Hình 3.3 – Một mẫu trong không gian ES. 75

Hình 3.4 – Mô hình quá trình huận luyện dùng AdaBoost 79

Hình 3.5 – Mô hình quá trình huấn luyện gom nhóm dùng k-means. 83

Hình 3.6 – Mô hình quá trình kiểm tra. 84

Hình 4.1 – Tập dữ liệu thực nghiệm. 86


Hình 4.2 – Giao diện chương trình thực nghiệm. 88

Hình 4.3 – Phần thực của 40 bộ lọc Gabor. 89

Hình 4.4 – Đại diện Gabor cho ảnh. 90

Hình 4.5 – Kết quả nhận dạng. 90

Hình 4.6 – Các vị trí trên ảnh được lựa chọn. 91

Hình 4.7 – Năm bộ lọc Gabor được chọn. 91

8
Danh sách các bảng
Bảng 1: Thuật toán AdaBoost. 44

Bảng 2: Thuật toán k-means. 58

Bảng 3: Bảng ký hiệu 1. 62

Bảng 4: Thuật toán AdaBoost dùng để chọn lựa đặc trưng. 78

Bảng 5: Bảng ký hiệu 2. 82

Bảng 6: Kết quả huấn luyện. 92

Bảng 7: Kết quả của AdaBoost và AdaBoost kết hợp k-means. 92

Bảng 8: Mô hình phân tầng AdaBoost. 97

9
Chương 1
Tổng quan

1.1 Giới thiệu


1.1.1 Nhu cầu thực tế

Hiện nay, xã hội ngày càng phát triển kéo theo quan hệ giữa người và người
càng mở rộng. Con người vừa phải tất bật làm việc, vừa chăm lo cho các mối quan
hệ quanh mình. Có rất nhiều điều cần phải biết, nhiều thứ cần phải nhớ nhưng trí
não con người không thể chứa hết. Do đó, con người đành nhờ đến sự trợ giúp của
khoa học kỹ thuật, cụ thể chính là chiếc máy tính.

Trong cuộc sống, bạn phải giao tiếp với nhiều người, thậm chí có thể lên
đến hàng trăm người. Hiển nhiên rằng việc nhớ tên tất cả là một điều khó khăn.
Đây chính là mục tiêu mà đề tài chúng tôi nhắm đến. Một chương trình có thể
cung cấp cho bạn tên của người bạn cần thông qua hình ảnh của người đó cùng với
một bộ cơ sở dữ liệu gồm các bức ảnh của những người đã được định danh. Với
chương trình này, bạn không còn phải nhớ tất cả mọi khuôn mặt cũng như tên của
người quen nữa, đồng thời có thể nhanh chóng biết được bạn có quen biết đối
phương không. Tất nhiên để có thể xây dựng được một chương trình như vậy,
trước hết ta cần xác định rõ bài toán xuyên suốt luận văn này: bài toán nhận dạng
khuôn mặt người.

1.1.2 Bài toán nhận dạng mặt người

Hệ thống sinh trắc học là một hệ thống được thiết kế để xác minh và nhận
dạng một người dựa vào những đặc trưng sinh học duy nhất của người đó.

Hệ thống nhận dạng mặt người là hệ thống sinh trắc học đượ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

10
phép so sánh một-nhiều. Cụ thể hơn, hệ thống nhận vào là một ảnh hoặc một đoạn
video (một chuỗi các ảnh). Qua xử lý tính toán hệ thống xác định là người nào
trong số những người hệ thống đã được biết hoặc là người lạ, hình 1.1.

Hình 1.1 – Một hệ thống nhận dạng mặt người.

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ố hình ảnh tĩnh làm mẫu để nhận dạng khuôn mặt 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 trên [8].

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ố hình ảnh tĩnh làm mẫu để nhận dạng khuôn mặt trong ảnh động. Kỹ thuật
nhận dạng này kiểm tra sự phù hợp dựa trên 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ừ 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 đoạn phim khá phức tạp, song thể hiện trong ảnh tĩnh để
huấn luyện ít lại [8].

Hệ thống nhận dạng động-động: là hệ thống được thiết kế bằng cách sử


dụng một số hình ảnh động làm mẫu để nhận dạng khuôn mặt 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 trên. Tuy nhiên, kỹ thuật này chính xác hơn kỹ thuật sử dụng

11
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 [8].

Các hướng nghiên cứu về bài toán này (dựa theo Face Recognition Vendor
Test – FRVT [1] ):

• Nhận dạng từ ảnh về khuôn mặt được chụp chính diện.


• Nhận dạng từ ảnh về khuôn mặt được chụp không chính diện.
• Nhận dạng với tỉ lệ sai sót thấp chấp nhận được.
• Hiểu được tại sao đàn ông dễ nhận dạng ra hơn so với phụ nữ.
• Hiểu rõ hơn về ý nghĩa của các yếu tố nhân khẩu học được thể hiện.

Ngoài ra, còn có một hướng mới cho bài toán nhận dạng khuôn mặt người
là nhận dạng khuôn mặt theo thời gian, kết hợp với nghề nghiệp và môi trường
làm việc, hay chủng tộc,…

1.1.3 Các ứng dụng hiện nay

Bài toán nhận dạng mặt người có thể áp dụng rộng rãi trong nhiều ứng
dụng thực tế khác nhau. Đó chính là lý do mà bài toán này hấp dẫn rất nhiều nhóm
nghiên cứu trong thời gian dài. Các ứng dụng liên quan đến nhận dạng mặt người
có thể kể như:

• Hệ thống phát hiện tội phạm: camera được đặt tại một số điểm công
cộng như: siêu thị, nhà sách, trạm xe buýt, sân bay,… Khi phát hiện được
sự xuất hiện của các đối tượng là tội phạm, hệ thống sẽ gởi thông điệp về
cho trung tâm xử lý.

• Hệ thống theo dõi nhân sự trong một đơn vị: giám sát giờ ra vào của
từng nhân viên và chấm công.

• Hệ thống giao tiếp người - máy: thay thế việc tương tác giữa người
và máy theo những cách truyền thống như: bàn phím, chuột,… Thay vào đó

12
là sử dụng các giao tiếp trực quan: biểu cảm khuôn mặt, dấu hiệu, cử chỉ
bằng tay ,...

• Hệ thống tìm kiếm thông tin trên ảnh, video dựa trên nội dung (chỉ
mục theo người). Chẳng hạn như: một đài truyền hình có một kho dữ liệu
video tin tức khá lớn cần tìm kiếm nhanh những đoạn video nào có
B.Obama , C.Ronaldo…

• Các hệ thống bảo mật dựa trên thông tin trắc sinh học: mặt người,
vân tay,… thay vì xác nhận mật khẩu, khóa,… như thông thường.

1.1.4 Những khó khăn của bài toán nhận dạng mặt người

Bài toán nhận dạng mặt người là bài toán đã được nghiên cứu từ những
năm 1970. 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 kết quả mong muốn. Chính vì thế vấn đề này vẫn đang được nhiều
nhóm trên thế giới quan tâm nghiên cứu. Khó khăn của bài toán nhận dạng mặt
người có thể kể như 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
xéo bên trái 450 hay xéo bên phải 450, chụp từ trên xuống, chụp 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 thậm chí 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ư: râu 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 rất nhiều.

• Sự biểu cảm của khuôn mặt: Biểu cảm của khuôn mặt người 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 có thể sẽ rất khác khi họ cười hoặc sợ
hãi,…

13
• Sự che khuất: Khuôn mặt có thể bị che khuất bởi các đối tượng khác
hoặc các khuôn mặt khác.

• Hướng của ảnh: Các ảnh của khuôn mặt có thể biến đổi rất nhiều
với các góc quay khác nhau của trục camera. Chẳng hạn chụp với trục máy
ảnh nghiêng làm cho khuôn mặt bị nghiêng so với trục của ảnh.

• Điều kiện của ảnh: Ảnh được chụp trong các điều kiện khác nhau
về: chiếu sáng, về tính chất camera (máy kỹ thuật số, máy hồng ngoại,…)
ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt.

• Giới hạn về số ảnh cần thiết cho việc nhận dạng, tập huấn luyện
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.

Tuy bài toán có rất nhiều khó khăn khách quan lẫn chủ quan nhưng đây vẫn
là một bài toán hấp dẫn đối với con người. Nhiều hướng tiếp cận cũng như phương
pháp giải quyết đã được đề xuất cho bài toán nhận dạng mặt người. Mỗi phương
pháp có chỗ hay, chỗ chưa hay khác nhau nhưng đều đã đóng góp ít nhiều cho
khoa học. Hầu hết các nghiên cứu đếu cố gắng giải quyết bài toán từ trường hợp
đơn giản nhất như ảnh khuôn mặt người được chụp chính diện, đầy đủ các chi tiết
và là ảnh xám. Sau khi đạt được thành công nhất định cho trường hợp đơn giản
nhất này, các nghiên cứu dần dần tiến đến từng trường hợp khó hơn như ảnh chụp
nghiêng hay ảnh đầu vào là ảnh màu, hay thậm chí chỉ cải tiến phương pháp cũ
cho nhanh hơn, chính xác hơn, hoặc đề xuất phương pháp mới tốt hơn…

1.2 Các hướng tiếp cận của bài toán nhận dạng mặt người
1.2.1 Các hướng tiếp cận

Bài toán nhận dạng khuôn mặt cần xác định hai vấn đề chính. Thứ nhất,
dùng thông tin nào để nhận dạng, chẳng hạn như mắt, mũi, miệng, tai, chân

14
mày,… hay kết hợp tất cả các thông tin trên. Thứ hai, dùng phương pháp nào để
huấn luyện cho máy nhận dạng nguồn thông tin đó.

Nhiều phương pháp nhận dạng khuôn mặt người được đề xuất trong khoảng
30 năm gần đây, và có rất nhiều công trình và bài báo đã được công bố rộng rải
trên thế giới. Nhận dạng khuôn mặt người là một vấn đề thú vị và đầy tính thử
thách, nó đã thu hút nhiều nhà nghiên cứu từ nhiều lĩnh vực khác nhau như: tâm lý
học, nhận dạng mẫu (hay nhận dạng mô hình), mạng nơron nhân tạo, thị giác máy
tính, đồ họa máy tính,… Thông thường, một hệ thống máy tính đơn lẻ chứa nhiều
kỹ thuật được vận hành dựa trên những nguyên tắc khác nhau. Chính sự kết hợp
nhiều kỹ thuật đã gây khó khăn cho việc phân loại những hệ thống này (dựa trên
loại kỹ thuật mà chúng sử dụng cho biểu diễn đặc trưng hay sự phân lớp). Để có
một phân loại tốt và rõ ràng, chúng tôi đi theo một hướng do tâm lý học đề nghị,
cách thức con người sử dụng những đặc trưng tổng thể và cục bộ.

Cụ thể có 3 hướng tiếp cận chính cho bài toán nhận dạng khuôn mặt người:

(1) Phương pháp so khớp tổng thể (holistic matching methods). Những
phương pháp này sử dụng toàn bộ vùng mặt như là dữ liệu thô đầu vào cho
hệ thống nhận dạng. Các thuật toán nổi bật đại diện cho lớp này có thể kể
như là Eigenfaces và Fisherfaces.

(2) Phương pháp so khớp dựa trên đặc trưng (feature-based matching
methods). Đối với những phương pháp này, những đặc trưng cục bộ như
đôi mắt, mũi, miệng,… được trích ra đầu tiên và vị trí của chúng cũng như
những thông tin cục bộ được nạp vào một lớp có cấu trúc.

(3) Phương pháp lai (hybrid methods). Tương tự hệ thống nhận dạng
của con người sử dụng đồng thời những đặc trưng cục bộ lẫn toàn vùng mặt
để nhận dạng một khuôn mặt.

1.2.2 Một số công trình nghiên cứu hiện nay

Phương pháp so khớp tổng thể

15
• Eigenfaces, ứng dụng trực tiếp của PCA. Kirby và Sirovich dùng
vector riêng để nhận dạng khuôn mặt người. Sử dụng mạng neural đơn giản
để 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 chuẩn hóa [1].

• Probabilistic eigenfaces, Moghaddam và Pentland [1, 23] đề xuất độ


đo xác suất cho vấn đề 2 lớp: “intra-presonal” và “extra-personal”, chuyển
bài toán nhận dạng mặt người về bài toán hai lớp và sử dụng kỹ thuật so
khớp dựa trên eigenfaces để nhận dạng.

• Fisherfaces/subspace LDA (Linear Discriminant Analysis), dùng


biệt số tuyến tính Fisher (Fisher’s Linear Discriminant - FLD) để chiếu các
mẫu từ không gian ảnh có số chiều cao sang một không gian đặc trưng có
số chiều thấp hơn [1].

Phương pháp so khớp dựa trên đặc trưng

• Kelly và Kanade [1] sử dụng phương pháp hình học để so khớp đặc
trưng, hầu hết những phương pháp cũ đều được xếp vào nhóm phương pháp
đối chiếu cấu trúc, sử dụng độ rộng của đầu, khoảng cách giữa hai mắt và
từ mắt đến miệng.

• Okada và Steffens [8] sử dụng phương pháp đối chiếu đồ thị nhận
dạng khuôn mặt dựa vào sóng Gabor và phương pháp đối chiếu đồ thị. Với
ý tưởng dùng đồ thị để biểu diễn khuôn mặt, ảnh khuôn mặt được đánh dấu
tại các vị trí đã được xác định trước trên khuôn mặt, gọi các vị trí này là các
vị trí chuẩn. Khi thực hiện thao tác so khớp đồ thị với một ảnh, các điểm
chuẩn (Jets) sẽ trích ra từ ảnh và so sánh các điểm chuẩn này với tất các các
điểm chuẩn tương ứng trong các đồ thị khác nhau và đồ thị nào phù hợp với
ảnh sẽ được chọn.

• Nefian và Hayes [8] sử dụng mô hình Markov ẩn (HMM) để nhận


dạng. Ảnh mẫu khuôn mặt được lượng hóa thành chuỗi quan sát trên khuôn

16
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
(chân mày, 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 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.

• Phillips [1] sử dụng phương pháp học Support Vector Machine


(SVM). Xác định vị trí những thành phần của khuôn mặt, rút trích chúng,
kết hợp chúng vào một vector đặc trưng đơn được phân lớp bằng SVM.
[1998].

• Guodong Guo, Stan Z.Li và Kap Luk Chan [8] 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.

• Peng Yang, Shiguang Shan, Wen Gao, Stan Z. Li và Dong Zhang


[10] nghiên cứu và thực thi ứng dụng phương pháp AdaBoost cho bài toán
nhận dạng mặt người. Các tác giả dùng bộ lọc Gabor cho việc rút trích đặc
trưng và sử dụng mô hình AdaBoost phân tầng để chọn lựa đặc trưng và
xây dựng bộ phân loại mạnh.

• Boris Ruf [12] sử dụng Gabor wavelet để rút trích ra các vectơ đặc
trưng Gabor, xây dựng một hàm ngưỡng để tạo nên các bộ phân loại yếu,
dùng AdaBoost để lựa chọn đặc trưng và tìm ra bộ phân loại mạnh.

1.3 Đề xuất hướng tiếp cận trong luận văn


Để giải quyết bài toán nhận dạng mặt người, hướng tiếp cận của chúng tôi
sử dụng phương pháp nhận dạng dựa trên việc so khớp các đặc trưng. Chúng tôi
sử dụng phương pháp này bởi vì đối với con người, sự khác biệt giữa khuôn mặt
người này và người khác chủ yếu là sự khác biệt về các đặc trưng trên khuôn mặt
như mắt, mũi, chân mày, gò má, miệng, cằm. Do đó, việc so khớp các đặc trưng
trên khuôn mặt để tiến hành nhận dạng là rất hợp lý và phù hợp với thực tế.

17
Áp dụng hướng tiếp cận này để giải quyết bài toán nhận dạng mặt người,
chúng tôi sử dụng lại một số kiến thức trong các công trình nghiên cứu của các tác
giả là dùng Gabor wavelet rút trích các vectơ đặc trưng Gabor để đại diện cho ảnh
khuôn mặt và dùng AdaBoost để chọn lựa đặc trưng, đồng thời tạo ra bộ phân loại
mạnh dùng để nhận dạng [7, 10, 11, 12, 16, 18, 19, 21]. Bên cạnh việc sử dụng lại
một số kết quả nghiên cứu của các tác giả, chúng tôi cũng đề xuất ra một số hiệu
chỉnh cho thuật toán AdaBoost, chỉ ra cách xây dựng nên các bộ phân loại yếu dựa
trên các đặc trưng Gabor và kết hợp thêm phương pháp gom nhóm, cụ thể là thuật
toán k-means để giải quyết bài toán nhận dạng mặt người này.

Chúng tôi sử dụng Gabor wavelet để rút trích đặc trưng bởi vì các đặc trưng
Gabor được rút trích từ Gabor wavelet diễn đạt được tri thức về các đối tượng
trong ảnh nghĩa là 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 thể hiện được. Mỗi thành phần trong họ Gabor
wavelet mô hình một cấu trúc không gian vùng tiếp thu của một tế bào đơn trong
vỏ não nguyên thủy ở động vật hữu nhũ. Phân tích Gabor có thể xem như một
chiếc kính hiển vi nhạy cảm với hướng và tỷ lệ [5, 6]. Do đó, việc chọn Gabor
wavelet để rút trích đặc trưng là hợp lý, giống như cách con người phân biệt các
đặc trưng khác nhau trên khuôn mặt. Đồng thời, việc sử dụng Gabor wavelet để
rút trích vectơ đặc trưng Gabor cho ảnh thực hiện khá nhanh, chỉ là phép tính tích
chập với ảnh.

Từ khi AdaBoost ra đời, nó đã được ứng dụng nhiều trong lĩnh vực phân
loại mẫu và nhận dạng mẫu. AdaBoost là thuật toán học có nhiều thuận lợi, đơn
giản, dễ hiểu, dễ lập trình. Sử dụng AdaBoost, ngoài việc xây dựng được bộ phân
loại mạnh dùng trong quá trình nhận dạng, ta còn có thể chọn được các đặc trưng
Gabor quan trọng trên khuôn mặt để đại diện cho ảnh.

Chúng tôi sử dụng thuật toán k-means để gom nhóm dữ liệu bởi vì k-means
thì đơn giản, dễ hiểu, tương đối hiệu quả và có thể dùng cho rất nhiều loại dữ liệu.
Việc gom nhóm tập dữ liệu thành các nhóm riêng biệt nhau này sẽ giúp cho quá

18
trình kiểm tra thực hiện nhanh hơn thay vì duyệt qua toàn bộ ảnh, đồng thời giúp
hạn chế các trường hợp phân loại sai nhóm.

Sau đây, chúng tôi sẽ mô tả chi tiết các bước để giải quyết bài toán nhận
dạng mặt người.

Quá trình nhận dạng khuôn mặt gồm hai giai đoạn. Đầu tiên là giai đoạn
huấn luyện. Từ ảnh khuôn mặt người trong tập dữ liệu, chúng tôi dùng Gabor
wavelet để đại diện cho ảnh khuôn mặt và rút trích các đặc trưng trên ảnh để tạo
thành vectơ đặc trưng. Bởi vì vectơ đặc trưng này có số chiều lớn, do đó để giảm
số chiều của vectơ này đồng thời lựa chọn ra được các đặc trưng đóng vai trò thật
sự quan trọng có thể đại diện chính xác cho đối tượng trong ảnh, chúng tôi sử
dụng phương pháp học AdaBoost để lựa chọn các đặc trưng quan trọng đó. Đặc
biệt, AdaBoost ngoài việc chọn lựa ra các đặc trưng để xây dựng nên vectơ đặc
trưng mới có số chiều nhỏ hơn vectơ đặc trưng được rút trích từ Gabor wavelet,
AdaBoost còn tìm ra được một bộ phân loại mạnh đóng vai trò quan trọng trong
việc phân lớp ảnh khuôn mặt giúp cho việc nhận dạng đạt hiệu quả.

Giai đoạn thứ hai là quá trình kiểm tra, với ảnh cần kiểm tra, ta có được
vectơ đặc trưng đại diện cho ảnh đó. Đối với mỗi ảnh trong tập dữ liệu, sau quá
trình huấn luyện ta cũng có được các vectơ đặc trưng đại diện cho tập ảnh đó.
Thay vì tiến hành so khớp bằng cách duyệt tuyến tính hết ảnh trong cơ sở dữ liệu
để đối chiếu với ảnh cần kiểm tra để tìm sự tương đồng của chúng. Chúng tôi sử
dụng phương pháp gom nhóm, cụ thể là thuật toán k-means để tiến hành phân
nhóm các ảnh trong cơ sở dữ liệu. Mỗi nhóm được phân như vậy sẽ đại diện cho
nhiều bức ảnh và mỗi nhóm sẽ được đại diện bởi một vectơ đặc trưng cho từng
nhóm. Với ảnh cần kiểm tra, ta tiến hành kiểm tra nó “gần” với nhóm nào nhất,
sau đó duyệt hết ảnh trong nhóm đó để so khớp với ảnh cần kiểm tra mà không
cần quan tâm đến các nhóm còn lại.

19
Chương 2
Cơ sở lý thuyết

2.1 Gabor Wavelet


Rút trích đặc trưng là một chức năng quan trọng của một hệ thống nhận
dạng nói chung và của một hệ thống nhận dạng mặt người nói riêng.Trong chương
này chúng tôi sẽ trình bày một phương pháp để rút trích đặc trưng cho khuôn mặt
chính là sử dụng bộ lọc Gabor wavelet. Vậy Gabor wavelet là gì? Tại sao chúng
tôi lại chọn Gabor wavelet để rút trích đặc trưng? Phần trình bày sau đây sẽ giúp ta
nắm rõ hơn về Gabor wavelet. Nhưng trước hết, ta phải biết wavelet là gì.

2.1.1 Wavelet là gì?

Wavelet [24] là những hàm có thể chia cắt dữ liệu ra các thành phần có tần
số khác nhau. Chúng có một vài thuận lợi hơn phương pháp Fourier truyền thống
trong việc phân tích các tình huống vật lý như tín hiệu chứa những điểm không
liên tục hay đỉnh nhọn. Wavelet được ứng dụng rất nhiều trong xử lý tín hiệu, một
vài lĩnh vực đặc sắc như nén dữ liệu, xử lý âm thanh (nhịp điệu nhạc), hay giảm
nhiễu… Chúng tôi sẽ mô tả lịch sử của wavelet bắt đầu từ Fourier, so sánh biến
đổi wavelet với biến đổi Fourier, mô tả tính chất của wavelet. Từ đó, chúng tôi sẽ
giới thiệu về Gabor Wavelet.

• Ý tưởng

Ý tưởng chính của wavelet là phân tích dựa trên từng tỷ lệ. Wavelet là
những hàm thỏa mãn các điều kiện toán học nào đó và được sử dụng để đại diện
cho dữ liệu hay những hàm khác. Sự xấp xỉ sử dụng nguyên lý chồng chất của
hàm đã xuất hiện từ đầu những năm 1800, khi Joseph Fourier phát hiện ra rằng
ông ấy có thể “chồng” (hay tổng hợp) những hàm sin và hàm cos để đại diện cho

20
các hàm khác. Tuy nhiên, trong phân tích bằng wavelet, tỷ lệ mà ta sử dụng để
xem xét dữ liệu đóng một vai trò đặc biệt. Thuật toán wavelet xử lý dữ liệu ở
những tỷ lệ hay độ phân giải khác nhau. Nếu ta nhìn tín hiệu qua một khung cửa
sổ lớn, ta sẽ chú ý đến những chi tiết thô, to. Ngược lại, khi ta nhìn tín hiệu với
một khung cửa sổ nhỏ, ta sẽ chú ý đến những chi tiết nhỏ, đặc trưng. Có thể nói,
kết quả của phân tích bằng wavelet có thể cho ta thấy được cả khu rừng và từng
cây trong rừng.

Điều đó làm wavelet trở nên thú vị và hữu dụng. Trong nhiều thập kỷ, các
nhà khoa học muốn có nhiều hơn những hàm xấp xỉ thay vì kết hợp những hàm sin
và cos dựa trên nền tảng ý tưởng của Fourier, để xấp xỉ những tín hiệu rạn nứt
(choppy signals). Như định nghĩa của chúng, đây là những hàm không địa phương
và có thể kéo dãn ra vô hạn. Do đó chúng khá tệ khi xấp xỉ những đỉnh nhọn.
Nhưng với wavelet, ta có thể xấp xỉ những hàm được chứa gọn gàng trong những
miền hữu hạn. Wavelet rất tiện lợi cho việc xấp xỉ những dữ liệu không liên tục,
có đỉnh sắc, nhọn.

Tiến trình phân tích wavelet được thực hiện thông qua một hàm wavelet
mẫu, gọi là wavelet mẹ. Phân tích theo trục thời gian sẽ được biểu diễn bằng một
dạng chặt, tần số cao của wavelet mẫu, trong khi phân tích theo tần số sẽ được
biểu diễn bằng một dạng không chặt, tần số thấp của cùng một wavelet mẫu. Do
tín hiệu gốc hay hàm gốc được biểu diễn dựa trên một khai triển wavelet (dùng
những hệ số trong sự kết hợp tuyến tính của các hàm wavelet), dữ liệu đang làm
việc có thể được biểu diễn bằng việc sử dụng những hệ số wavelet tương ứng. Nếu
ta chọn được những wavelet tốt thích ứng với dữ liệu, hoặc chặn những hệ số dưới
một ngưỡng nào đó, dữ liệu của ta có thể được biểu diễn một cách thưa thớt.
Chính sự thưa này đã giúp wavelet trở thành một công cụ tuyệt vời trong lĩnh vực
nén dữ liệu.

21
• Nguồn gốc toán học

Trước năm 1930, một nhánh của toán học dẫn đến wavelet được bắt đầu
bởi Joseph Fourier (1807) với lý thuyết của ông ta về giải tích tần số, nay là phép
tổng hợp Fourier. Ông ấy đã khẳng định rằng bất kỳ hàm tuần hoàn f ( x) nào cũng
có thể biểu diễn thành tổng những chuỗi Fourier của nó

a0 +  (ak cos kx + bk sin kx) . (2.1)
k =1

Trong đó,
2 2 2
1 1 1
a0 =
2 
0
f ( x)dx, ak =
 
0
f ( x) cos(kx)dx, bk =
 
0
f ( x) sin(kx)dx .

Khẳng định của Fourier đóng một vai trò quan trọng trong tiến trình phát triển ý
tưởng của các nhà toán học về hàm. Ông đã mở ra cánh cửa đến với một không
gian mới về hàm.

Sau năm 1807, bằng việc khảo sát ý nghĩa về hàm, tính hội tụ của chuỗi
Fourier, không gian trực giao, các nhà toán học dần dần hướng sự chú ý từ giải
tích tần số sang giải tích tỷ lệ. Nghĩa là, phân tích hàm f ( x) thành những cấu trúc
toán học, những cấu trúc toán học này biến thiên theo tỷ lệ. Nhưng làm thế nào?
Xây dựng một hàm, biến đổi nó đi một vài khoảng, và thay đổi tỷ lệ của nó. Áp
dụng hàm này trong việc xấp xỉ một tín hiệu. Bây giờ ta lặp lại tiến trình. Lấy hàm
gốc, biển đổi nó, biển đổi nó một lần nữa. Lại áp dụng nó cho cũng một tín hiệu để
nhận được một xấp xỉ mới, cứ thế lặp lại. Qua đó, ta có thể thấy dạng phân tích
mảnh này ít bị ảnh hưởng bởi nhiễu vì nó tính sự biến thiên trung bình của tín hiệu
ở những mảnh khác nhau.

Wavelet được đề cập lần đầu tiên trong một phụ lục trong luận án của A.
Haar (1909). Một đặc tính của Haar wavelet là nó hỗ trợ tính compact, nghĩa là nó
triệt tiêu bên ngoài khoảng con hữu hạn. Đáng tiếc, Haar wavelet không khả vi
liên tục nên phần nào gây hạn chế cho những ứng dụng của chúng.

22
Trong những năm 1930, một số nhóm nghiên cứu việc biểu diễn các hàm
thông qua những hàm cơ sở biến thiên tỷ lệ. Tại mục 2.1.2, chúng tôi sẽ giới thiệu
rõ thêm về hàm cơ sở và hàm cơ sở biến thiên tỷ lệ.

Bằng việc sử dụng hàm cơ sở biến đổi tỷ lệ gọi là hàm cơ sở Haar, Paul
Levy, một nhà vật lý những năm 1930, đã tiến hành khảo sát chuyển động Brown,
một dạng tín hiệu ngẫu nhiên. Ông nhận ra rằng hàm cơ sở Haar tốt hơn các hàm
cơ sở Fourier trong việc xem xét các chi tiết nhỏ phức tạp trong chuyển động
Brown.

Cũng trong những năm 1930, Littlewood, Paley, và Stein đã đưa ra công
thức tính năng lượng của một hàm f ( x) , công thức 2.2
2
1
energy = 
2
f ( x) dx . (2.2)
2 0

Đến năm 1985, Stephane Mallat đưa wavelet thêm một bước nhảy thông
qua nghiên cứu của ông về xử lý tín hiệu số. Ông đã phát hiện ra mối liên hệ giữa
các bộ lọc đối xứng gương cầu phương, thuật toán hình chóp và nền tảng wavelet
trực giao. Dựa trên những kết quả này, Y. Meyer đã xây dựng những wavelet bất
thường. Không giống Haar wavelet, wavelet của Meyer khả vi liên tục, nhưng
chúng lại không hỗ trợ compact. Vài năm sau, Ingrid Daubechies dựa vào kết quả
của Meyer, ông đã xây dựng một tập những hàm wavelet cơ sở trực giao, đây
chính là những viên đá nền tảng cho các ứng dụng wavelet hiện nay.

2.1.2 Hàm cơ sở - Hàm cơ sở biến thiên tỷ lệ


Để đơn giản việc giải thích về hàm cơ sở, ta tạm thời rời bỏ mảng tín hiệu
analog (các hàm) và đi vào mảng tín hiệu số (các vector).

Mỗi vector 2 chiều ( x, y) là một sự kết hợp của 2 vector (1,0) và (0,1) . Hai
vector này gọi là hai vector cơ sở của ( x, y) . Tại sao? Khi chúng ta nhân (1,0) cho
x và nhân (0,1) cho y, sau đó tổng lại ta sẽ được vector ( x, y) . Những vector cơ sở

23
tốt thường có thêm đặc tính trực giao với nhau, với (1,0) và (0,1) điều này là thỏa
mãn.

Ta trở lại với thế giới hàm, làm sao để liên hệ những khái niệm trên cho
hàm cơ sở. Thay vì một vector ( x, y) , ta có một hàm f ( x) . Tưởng tượng rằng
f ( x) như một điệu nhạc, nói nốt A trong một quãng tám cụ thể. Ta có thể tạo A

bằng cách cộng những hàm sin và hàm cos sử dụng sự kết hợp biên độ và tần số.
Những hàm sin và hàm cos chính là những hàm cơ sở trong ví dụ này, và cũng là
những nhân tố trong tổng Fourier. Ta có thể xây dựng thêm các điều kiện để các
hàm sin và cos này trực giao nhau. Như thế nào? Chọn hàm hợp tương ứng của
các hàm sin và cos này sao cho tích trong (tích vô hướng) của nó bằng 0. Tập hợp
gồm những hàm như vậy là trực giao và những hàm f ( x) trong đó là những hàm
cơ sở trực giao.

Một hàm cơ sở biến đổi theo tỷ lệ bằng cách chia nhỏ hàm hay không gian dữ
liệu bởi những kích thước tỷ lệ khác nhau. Ví dụ, giả sử ta có một tín hiệu trên
miền từ 0 đến 1. Ta có thể chia tín hiệu thành 2 hàm từ 0 đến 1/2 và từ 1/2 đến 1.
Ta có thể tiếp tục chia tín hiệu gốc thành 4 hàm từ 0 đến ¼, ¼ đến ½ , ½ đến ¾, ¾
đến 1. Và cứ thế. Mỗi tập biểu diễn tín hiệu gốc với một tỷ lệ cụ thể.

2.1.3 Giải tích Fourier


Việc Fourier biểu diễn các hàm bằng cách “tổng” những hàm sin và cos đã
trở nên thông dụng, từ những phương pháp số và phương pháp giải tích để giải
phương trình vi phân đến việc phân tích và xử lý tín hiệu giao tiếp. Giải tích
Fourier và Wavelet có sự liên kết rất mạnh mẽ.
• Biến đổi Fourier

Sự hữu ích cũng như khả năng của biến đổi Fourier là phân tích một tín
hiệu trong miền thời gian bởi lượng tần số của nó. Biến đổi Fourier chuyển một
hàm trong miền thời gian sang một hàm trong miền tần số. Sau đó tín hiệu có thể
được phân tích dựa trên tần số của nó bởi vì những hệ số Fourier của hàm đã biết

24
đổi biểu diễn sự đóng góp của mỗi hàm sin và hàm cos tại mỗi tần số. Để chuyển
đổi dữ liệu từ miền tần số sang miền thời gian, một biến đổi Fourier ngược chính
là điều ta mong đợi.

• Biến đổi Fourier rời rạc

Biến đổi Fourier rời rạc ước lượng biến đổi Fourier của một hàm từ một số
hữu hạn những điểm được lấy mẫu của nó. Các điểm được lấy mẫu xem như đặc
trưng cho tín hiệu tại một thời điểm nào đó. Biến đổi Fourier rời rạc có hầu hết các
tính chất đối xứng giống với biến đổi Fourier liên tục. Hơn nữa, công thức đảo của
biến đổi Fourier rời rạc được tính dễ dàng bằng việc sử dụng công thức của biến
đổi Fourier rời rạc vì hai công thức này gần như đồng nhất với nhau.

• Biến đổi Fourier khung

Nếu f (t ) là một tín hiệu không tuần hoàn thì tổng của những hàm tuần
hoàn, sin và cos, không biểu diễn chính xác được tín hiệu. Ta có thể khếch đại một
cách gượng ép khiến cho tín hiệu trở nên tuần hoàn, nhưng điều này đòi hỏi thêm
sự liên tục tại những điểm kết thúc. Biến đổi Fourier khung là một giải pháp cho
vấn đề này, giúp cho việc biểu diễn những tín hiệu không tuần hoàn được tốt hơn
và chính xác hơn. Biến đổi Fourier khung được sử dụng để lấy thông tin về những
tín hiệu trong miền thời gian và miền tần số một cách đồng thời.

Với biến đổi Fourier khung, tín hiệu đầu vào f (t ) được “băm” nhỏ vào
từng khu vực, mỗi khu vực được phân tích một cách riêng biệt theo tần số của nó.
Nếu tín hiệu có những điểm nhọn chuyển tiếp, ta đóng khung dữ liệu đầu vào để
các khu vực hội tụ về 0 tại những điểm kết thúc. Việc đóng khung này được thực
hiện bởi một hàm trọng lượng. Tác dụng của khung là địa phương hóa tín hiệu
theo thời gian.

25
• Biến đổi Fourier nhanh

Để xấp xỉ một hàm bằng mẫu, và xấp xỉ tích phân Fourier bằng biến đổi
Fourier rời rạc, ta cần dung một ma trận có bậc là số những điểm lấy mẫu n. Do
khi nhân một ma trận kích thước n  n với một vector hao tốn khoảng n2 phép tính
số học, nên vấn đề sẽ tệ hơn khi số điểm lấy mẫu tăng nhanh. Tuy nhiên, nếu các
mẫu được lấy cách đều nhau, sau đó ma trận Fourier được phân tích thành tích của
một vài ma trận thưa hơn, và những nhân tử kết quả này được áp dụng cho một
vector với số phép tính chỉ còn n log n . Đây gọi là biến đổi Fourier nhanh.

2.1.4 Biến đổi Wavelet và biến đổi Fourier


• Giống nhau
Biến đổi Fourier nhanh và biến đổi wavelet rời rạc đều là những phép tính
tuyến tính, từ đó sinh ra một cấu trúc dữ liệu chứa log 2 n đoạn có chiều dài khác
nhau, thường được làm kín và biến đổi nó sang một vector dữ liệu khác có chiều
dài 2n .
Những tính chất toán học của các ma trận trong cả hai phép biến đổi cũng
tương tự nhau. Ma trận nghịch đảo trong biến đổi Fourier nhanh và biến đổi
wavelet rời rạc đều là chuyển vị từ ma trận gốc. Chưa hết, xét về mặt kết quả, ta có
thể xem cả hai phép biến đổi như một phép quay trong không gian hàm sang một
miền khác. Đối với biến đổi Fourier nhanh, miền mới chứa các hàm cơ sở có dạng
sin và cos. Đối với biến đổi wavelet, miền mới chứa nhiều hàm cơ sở phức tạp hơn
gọi là các wavelet, wavelet mẹ hay giải tích wavelet.

Cả hai phép biến đổi còn có điểm tương đồng khác. Các hàm cơ sở được
địa phương hóa trong miền tần số, tạo ra những công cụ toán học như phổ năng
lượng (bao nhiêu năng lượng chứa trong một khoảng tần số) và đồ thị mức rất hữu
dụng trong việc tách các tần số và tính toán năng lượng phân phối.

• Khác nhau

26
Điểm khác nhau thú vị nhất giữa hai phép biến đổi là cá nhân từng hàm
wavelet được địa phương hóa trong không gian. Các hàm sin và cos Fourier thì
không. Đặc trưng địa phương hóa này, cùng với sự địa phương hóa của wavelet
trong tần số, tạo nên nhiều hàm và toán tử dùng wavelet thưa khi được biến đổi
sang miền wavelet. Chính sự thưa này là tốt cho một số ứng dụng như nén dữ liệu,
trích đặc trưng ảnh, và giảm nhiễu cho các chuỗi thời gian.

Một cách khác để thấy sự khác nhau về độ phân giải thời gian – tần số
giữa biến đổi Fourier và biến đổi wavelet là nhìn vào độ phủ của hàm cơ sở trong
mặt phẳng thời gian – tần số. Hình 2.1 cho thấy một biến đổi Fourier khung, trong
đó khung chỉ là một sóng hình thang đơn giản. Khung sóng thang cắt hàm sin hay
cos sao cho vừa với độ rộng cụ thể của một khung. Bởi vì chỉ có một khung đơn
duy nhất được dùng cho mọi tần số trong biến đổi Fourier khung nên độ phân giải
là như nhau tại mọi nơi trong mặt phẳng thời gian – tần số.

Hình 2.1 – Hàm cơ sở Fourier, trục thời


gian – tần số và độ phủ trong mặt phẳng.

Thuận lợi của biến đổi wavelet là khung này biến thiên. Để cô lập sự không
liên tục của tín hiệu, cần những hàm cơ sở ngắn. Nhưng đồng thời, để thu được
những phân tích tần số tỉ mỉ, cần những hàm cơ sở dài. Tức là phải xây dựng
những hàm cơ sở tần số cao thì ngắn còn tấn số thấp thì dài. Và đây chính là thứ ta

27
có khi sử dụng biến đổi wavelet. Hình 2.2 cho thấy độ phủ của một hàm wavelet
trong mặt phẳng thời gian – tần số, hàm wavelet Daubechies.

Hình 2.2 – Hàm cơ sở wavelet Daubechies, trục


thời gian – tần số và độ phủ trong mặt phẳng.
Cần nhớ là biến đổi wavelet không có một tập đơn các hàm sin và cos giống
biến đổi Fourier. Thay vào đó, biến đổi wavelet có một tập vô hạn những hàm cơ
sở có thể. Vì vậy, biến đổi wavelet cung cấp những thông tin mà các phương pháp
thời gian – tần số khác không thấy được, ví như phương pháp Fourier.

2.1.5 Giải tích Wavelet


Bây giờ ta bắt đầu vào lý thuyết wavelet, nơi ta phân tích tín hiệu trong thời
gian dựa vào lượng tần số của nó. Khác với giải tích Fourier, nơi ta phân tích tín
hiệu bằng các hàm sin và cos, nay ta dùng các hàm wavelet.

• Biến đổi wavelet rời rạc


Những phép giãn và phép tịnh tiến của hàm mẹ Φ( x) , định nghĩa một cơ sở
trực giao, cơ sở wavelet của ta:
s

 ( s ,l ) ( x) = 2 2 (2− s x − l ) (2.3)

Các biến s và l là số nguyên, để thay đổi tỷ lệ và giãn hàm mẹ, sinh ra các
wavelet, như là họ wavelet Daubechies. Chỉ số tỷ lệ s cho biết độ rộng của

28
wavelet, và chỉ số địa phương l cho biết vị trí của nó. Điều khiến nền tảng wavelet
trở nên đặc biệt thú vị chính là khả năng tự đồng dạng khi thay đổi tỷ lệ. Một khi
ta biết hàm mẹ, ta sẽ biết mọi thứ về cơ sở.

Để mở rộng miền dữ liệu tại các độ phân giải khác nhau, wavelet được
dùng trong phương trình tỷ lệ:
N −2
W ( x) =  (−1) c
k =−1
k
Φ(2 x + k )
k +1 (2.4)

với W(x) là hàm tỷ lệ từ hàm mẹ Φ , và ck là những hệ số wavelet. Hệ số wavelet


phải thỏa mãn ràng buộc tuyến tính và ràng buộc bậc hai sau:
N −1 N −1

 ck = 2,
k =0
c c
k =0
k k + 2l = 2 l ,0

với  là hàm delta và l là chỉ số địa phương.

Một trong những đặc trưng hữu hiện nhất của wavelet là nó dễ cho các nhà
khoa học chọn định nghĩa hệ số cho một hệ thống wavelet cho trước ứng với một
vấn đề cho trước. Trong bài báo gốc của Daubechies, bà đã phát triển một họ
wavelet đặc biệt rất tốt cho xử lý đa thức. Wavelet Haar còn đơn giản hơn, thường
được dùng cho mục đích học.

Hãy xem các hệ số {c1 , c2 ,..., cn } như là một bộ lọc. Bộ lọc hay các hệ số
thay thế cho một ma trận biến đổi, thứ được áp dụng cho một vector dữ liệu thô.
Các hệ số được sắp xếp thứ tự theo hai dạng, một bên hoạt động như một bộ lọc
trơn (như phép trung bình động), một bên mang ra các thông tin chi tiết của dữ
liệu. Hai dạng thứ tự của các hệ số gọi là một cặp bộ lọc đối xứng gương cầu
phương theo cách nói trong xử lý tín hiệu.

Để kết thúc phần giới thiệu về biến đổi wavelet rời rạc, ta hãy xem thử làm
sao áp dụng ma trận hệ số wavelet cho vector dữ liệu. Ma trận được ứng dụng
trong một thuật toán phân tầng, thường gọi là thuật toán hình chóp. Các hệ số
wavelet được sắp xếp sao cho những hàng lẻ thì chứa các hệ số có tác dụng như bộ

29
lọc làm trơn, những hàng chẵn thì chứa các hệ số với các ký hiệu khác nhau giúp
mang lại chi tiết của dữ liệu. Ma trận được áp dụng lần đầu cho vector gốc. Sau
đó, vector sẽ trơn hơn và giảm đi một nửa. Tiếp tục áp dụng ma trận cho vector
này. Thế là vector lại trơn hơn và cũng bị giảm đi một nửa. Quá trình cứ thế lặp lại
cho đến khi tính trơn đến một ngưỡng nào đó mà dữ liệu còn thể hiện được. Nghĩa
là, mỗi lần áp dụng ma trận ta sẽ được một độ phân giải cao hơn của dữ liệu đồng
thời làm trơn dữ liệu còn lại. Đầu ra của biến đổi wavelet rời rạc chứa các thành
phần trơn còn lại ấy và tất cả thành phần chi tiết tích lũy được.

• Biến đổi wavelet nhanh

Thông thường ma trận biến đổi wavelet rời rạc không thưa, do đó tại lại đối
mặt với cùng một vấn đề như trong biến đổi Fourier rời rạc. Ta sẽ giải quyết nó
cùng một cách như biến đổi Fourier nhanh, phân tích biến đổi wavelet rời rạc
thành tích các ma trận thưa hơn có tính tự đồng dạng với nhau. Kết quả là một
thuật toán chỉ cần n phép toán cho một vector n mẫu. Đây chính là biến đổi
wavelet rời rạc nhanh của Mallat và Daubechies.

Với phần sơ lược phía trên về wavelet, ta đã phần nào hình dung được
wavelet là gì và dùng wavelet để làm gì. Qua những kiến thức cơ bản trên, ta tiếp
tục đến với trọng tâm của vấn đề rút trích đặc trưng: Gabor Wavelet.

2.1.6 Gabor Wavelet

Từ khi phát hiện về cấu tạo tinh thể của vỏ thị giác nguyên thủy trong não
động vật hữu nhũ hơn 30 năm trước bởi Hubel và Wiesel [5], một lượng lớn
những nghiên cứu từ lý thuyết đến thực nghiệm đã nâng cao sự hiểu biết của
chúng ta về lĩnh vực này và các đặc tính phản xạ của các tế bào của nó. Về mặt lý
thuyết, Marcelja và Daugman [5] đã đề xuất một nhận thức quan trọng là các tế
bào đơn giản trong vỏ thị giác có thể được mô hình hóa bằng các hàm Gabor.
Những hàm Gabor được Daugman đề nghị là những bộ lọc băng thông địa phương

30
trong miền không gian, chúng có những hạn chế lý thuyết về độ phân giải kết hợp
của thông tin trong không gian hai chiều và miền Fourier hai chiều.

Hàm Gabor được Dennis Gabor đưa ra lần đầu tiên như là một công cụ để
xác định tín hiệu bị nhiễu. Gabor đã chứng minh được ở đây tồn tại một nguyên lý
lượng tử cho thông tin. Miền liên kết thời gian – tần số cho tín hiệu một chiều cần
phải được lượng tử để không tín hiệu hay bộ lọc nào có thể chiếm diện tích ít hơn
một diện tích nhỏ nhất nào đó trong nó. Tuy nhiên, ở đây có một sự cân bằng giữa
độ phân giải thời gian và độ phân giải tần số. Gabor phát hiện ra rằng hàm mũ
phức bị biến điệu của Gauss cung cấp sự cân bằng tốt nhất. Do đó, các hàm sơ cấp
Gabor nguyên gốc xuất phát từ một hàm Gauss được chỉnh sửa, trong khi tần số
của sóng biến điệu biến thiên.

Dennis Gabor cho rằng lý thuyết truyền thông dựa trên hai phương pháp
tách biệt sau đây,

• Phương pháp thứ nhất là mô tả tín hiệu như một hàm của thời gian.
• Phương pháp thứ hai là mô tả tín hiệu như một hàm của tần số. Phân
tích Fourier là một dạng của mô tả này.

Lý thuyết Gabor đưa ra một phương pháp mới để mô tả tín hiệu theo cả hai
miền thời gian và tần số.

Gabor xét hai phương pháp biểu diễn tín hiệu nêu trên. Biểu diễn trong
miền thời gian sẽ xác định biên độ của một tín hiệu tại mỗi thời điểm tức thời.
Trong khi đó, biểu diễn trong miền tần số sử dụng một chuỗi vô hạn các hàm tuần
hoàn được xác định bằng tần số, biên độ và pha của chúng. Hai phương pháp biểu
diễn này là lý tưởng. Bởi vì biểu diễn trong miền tần số cho rằng một tín hiệu
trong miền thời gian là dài vô hạn khi tần số của một tín hiệu hữu hạn trong miền
thời gian không thể xác định chính xác được. Tương tự, một tín hiệu tức thời trong
miền thời gian (chẳng hạn hàm xung đơn vị) có một phổ tần số chứa tất cả các tần
số khác nhau được phân bố đều torng miền tần số. Điều kiện này là không thỏa

31
mãn cho các tín hiệu trong thực tế. Ví dụ một tín hiệu là một sóng âm nhạc bao
gồm một số nốt nhạc vối một tần số đặc biệt nhưng chúng được thể hiện chỉ trong
một khoảng thời gian hữu hạn. Rõ ràng, các biểu diễn như vậy không thích hợp
cho phân tích các tín hiệu có chiều dài hữu hạn trong miền thời gian.

Tiếp theo, Gabor xét các đáp ứng tần số (phổ Fourier) của các đường cong
Gauss với các chiều rộng khác nhau. Các đường cong Gauss này có các độ lệch
chuẩn tỉ lệ nghịch với nhau thông qua các trục thời gian và tần số tương ứng và
thấy rằng giữa thời gian và tần số của một tín hiệu có một sự liên hệ mật thiết.
Theo Gabor, đó chính là xuất phá điểm để hình thành lý thuyết của ông. Gabor đã
tìm thấy mối quan hệ này và hình thức hóa bằng các hệ thức quan trọng được dẫn
ra có thứ tự trong phần sau.

Độ lệch chuẩn của mỗi đường cong Gauss theo trục thời gian là tỉ lệ nghịch
với độ lệch chuẩn của phép biến đổi của nó theo trục tần số.

Áp dụng nguyên lý bất định của Heisenberg, Gabor đưa ra mối quan hệ bất
định trong miền thời gian và miền tần số như sau:

1 (2.5)
t f 
2

trong đó:

t là khoảng bất định tại một vị trí của tín hiệu trong miền thời gian.

f là khoảng bất định của tần số tín hiệu trong miền tần số.

Trong công thức 2.5, Gabor chứng tỏ rằng:

• Không thể xác định một cách chính xác một khoảng của tín hiệu trong
miền thời gian cũng như tần số trong miền tần số của tín hiệu đó.

• Tích của khoảng bất định trong miền thời gian và khoảng bất định trong
miền tần số phải lớn hơn một hằng số nào đó.

32
Nghĩa là nếu một tín hiệu được định nghĩa trên một khoảng thời gian tức
thời duy nhất ( t = 0) thì nó sẽ không được xác định một cách đầy đủ trong miền
tần số (f = ) . Ngược lại, một tín hiệu được xác định một cách chính xác trong
miền tần số ( f = 0 ) nó phải có chiều dài vô hạn ( t =  ). Giữa hai thái cực này,
một tín hiệu là bất định với một mức độ nào đó theo cả hai miền thời gian và tần
số. Nhưng tích của hai khoảng bất định này tối thiểu phải bằng ½.

1
Gabor chỉ ra rằng có tồn tại một dạng tín hiệu có thể biến đổi t f  trở
2
1
thành đẳng thức t f = và tín hiệu đó được gọi là Gabor wavelet.
2

Ta xét tín hiệu ở đây chính là ảnh, miền thời gian như đã nói ở trên gọi là
miền không gian và miền tần số nó ở trên sẽ gọi là miền không gian tần số. Trong
miền không gian, một ảnh được xem như tập hợp các pixel. Trong miền không
gian tần số, một ảnh được xem như tổng vô hạn các hàm tuần hoàn. Theo
Daugnam, trong các thực nghiệm liên quan đến các dữ kiện sinh lý học và tâm lý
học của hệ thống thị giác con người và đã chứng tỏ rằng có một sự liên hệ mật
thiết giữa đáp ứng tần số (hay còn gọi là tỉ lệ) của chúng và đáp ứng hướng của
chúng. Ông đã chọn ra một hàm có khả năng điều chỉnh tần số và hướng một cách
độc lập. Hàm mà ông chọn chính là hàm Gabor hai chiều, hàm này giờ đây được
sử dụng rộng rãi trong các ứng dụng thị giác máy tính. Daugman [5] đã tổng quát
hóa hàm Gabor theo không gian hai chiều để mô hình những mảng tiếp thu của
các tế bào đơn có định hướng chọn lựa:
2 2 2
ki ki x 2
i ( x) = exp( )[exp( jki x ) − exp(− )] (2.6)
2 2 2 2

Mỗi Ψ i là một sóng được đặc trưng bởi một vector k i , vector này được bao bởi
một hàm Gauss, trong đó  là độ lệch chuẩn của hàm Gauss này. Hàm Gauss là
hàm có dạng

33
( x − b) 2
f ( x) = a exp[− ], (2.7)
2c 2

được sử dụng rộng rãi trong thống kê để mô tả phân phối chuẩn, còn trong xử lý
tín hiệu thì dùng định nghĩa bộ lọc Gauss. Tần số trung tâm của bộ lọc thứ i được
cho bởi vector có đặc tính sóng:

 kix   kv cos   
ki =   =  
 (2.8)
 kiy   kv sin   

Trong đó: k là tần số của sóng,   là hướng của sóng, các Gabor wavelet được

tạo ra từ một bộ lọc bằng cách thay đổi các hướng và tỉ lệ của vectơ k i . Biến đầu
tiên trong ngoặc cho biết phần dao động của nhân, cái còn lại bù đắp cho giá trị
một chiều (DC value) của nhân.

Các bằng chứng thần kinh học gần đây cho thấy rằng cấu trúc không gian
của vùng tiếp thu của các tế bào đơn có kích thước khác nhau thì hầu như bất biến.
Daugman và một vài nhà nghiên cứu khác đề xuất rằng, một tập các tế bào đơn
được mô hình hóa tốt nhất như là một họ các Gabor wavelet hai chiều lấy mẫu
trong miền tần số. Họ này tương đương với một họ các trạng thái dính affine sinh
bởi phép quay và phép giãn. Sự phân tích một ảnh I trong các trạng thái trên chính
là biến đổi wavelet của một ảnh:

Ri ( x ) =  I ( x) i ( x − x)dx (2.9)

Với I ( x ) là giá trị cường độ ảnh tại x .

Mỗi thành phần trong họ Gabor wavelet mô hình một cấu trúc không gian
vùng tiếp thu của một tế bào đơn trong vỏ não nguyên thủy. Phân tích Gabor có
thể xem như một chiếc kính hiển vi nhạy cảm với hướng và tỷ lệ [5, 6]. Do tính
chất riêng của các tế bào này, chúng phản ứng với các đường thẳng ngắn, những
điểm kết của đường và sự thay đổi sắc, nhọn trong độ cong. Bởi vì những đường
cong thường ứng với một số đặc trưng lồi mức thấp trong một ảnh nên có thể xem

34
các tế bào này như một bản đồ các đặc trưng mức thấp của ảnh xám, hình 2.3, hình
2.4.

Hình 2.3 – (Trái) Một họ Gabor wavelet; (Phải) Độ phủ của nó trong mặt phẳng
tần số.

(a) (b) (c) (d) (e)

Hình 2.4 – Một tập nhỏ các đặc trưng có thể nhận dạng mặt người và các
vùng tiếp thu được đối chiếu với vài đặc trưng địa phương trên khuôn mặt (a)
miệng, (b) mũi, (c) mi mắt, (d) đường viền hàm dưới, (e) gò má.

Từ khi Gabor wavelet được giới thiệu trong lĩnh vực thị giác máy tính, một
trong những ứng dụng quan trọng nhất của biểu diễn Gabor wavelet hai chiều là
nhận dạng khuôn mặt người. Đã có một số nghiên cứu về hệ thống nhận dạng
khuôn mặt người trong đó áp dụng biểu diễn Gabor wavelet, nổi bật là vài hệ
thống nhận dạng cùa chính phủ Mỹ, hệ thống của B.S. Manjunath…

35
2.1.7 Chọn Gabor wavelet biểu diễn khuôn mặt người

Do nhận dạng khuôn mặt người không phải là một nhiệm vụ khó đối với
con người nên việc chọn các bộ lọc Gabor là hợp lý cho vấn đề này. Các bộ lọc
Gabor, mô hình các phản ứng của các tế bào đơn trong vỏ não nguyên thủy, là
những song phẳng đơn giản được thu hẹp bởi hàm bao Gauss.

Ta thấy rằng, một Gabor wavelet có ba đặc tính quan trọng là vị trí, hướng
và tỉ lệ. Do đó, khi áp dụng Gabor wavelet để rút trích đặc trưng trên ảnh chúng ta
cần phải xác định rõ hai tham số quan trọng là hướng và tỉ lệ.

Tuy nhiên, vấn đề xác định hai tham số trên vẫn còn là một vấn đề mở. Vì
hiện nay, chưa có một báo cáo nào cho thấy với mỗi ứng dụng cụ thể, trong đó, có
thể sử dụng Gabor wavelvet để trích các đặc trưng nên chọn hướng và tỉ lệ như thế
nào? Bao nhiêu hướng, bao nhiêu tỉ lệ có thể chọn? Và giá trị của chúng là bao
nhiêu? Chẳng hạn, trong lĩnh vực nhận dạng chữ viết tay bằng tiếng Anh, các tác
giả sử dụng tối đa 16 Gabor wavelet (chọn 4 hướng và 4 tỉ lệ).

Trong các ứng dụng về nhận dạng mặt người, số lượng các bộ lọc Gabor
được chọn còn tùy thuộc vào tập ảnh mà chúng ta sử dụng cũng như tùy thuộc vào
sự khác nhau của các ứng dụng. Tuy nhiên, thông thường thì người ta thường sử
dụng 40 bộ lọc (8 hướng và 5 tỉ lệ khác nhau) [5, 7, 10, 11, 12, 18, 19]. Do đó,
trong luận văn này chúng tôi cũng sử dụng 40 bộ lọc như trên để tìm ra các vectơ
đặc trưng Gabor của ảnh khuôn mặt.

Sau đây, chúng ta sẽ nhắc lại định nghĩa các Gabor wavelet và xem xét một
số vấn đề liên quan đến việc chọn hướng và tỉ lệ và một số thông số khác cho
Gabor wavelet.

Các Gabor wavelet   , (còn gọi là bộ lọc Gabor hay nhân Gabor) được

xác định như sau:


2 2 2
k , z
k , −
  , ( z ) = eik , z − e− 
2
2 2 2
(2.10)
e
 2  

36
Trong đó, z = (x,y) là một điểm trong không gian hai chiều. Các tham số  và 
được định nghĩa lần lượt là hướng và tỉ lệ của nhân Gabor, σ là độ lệch chuẩn của
phân phối Gauss, ||.|| là toán tử tính chuẩn. Một Gabor wavelet có ba thuộc tính
quan trọng là: vị trí, hướng và tỉ lệ.

i kmax
Một vectơ sóng k , được xác định như sau, k ,v = kv e  . Trong đó k =
f

là tần số của sóng,  = là hướng của sóng, với kmax là tần số tối đa của sóng,
8
f  là hệ số khoảng cách giữa các nhân trong miền tần số. Các Gabor wavelet được

tạo ra từ một bộ lọc bằng cách thay đổi các hướng và tỉ lệ của vectơ k , .

Trong luận văn, chúng tôi đề xuất sử dụng 8 hướng khác nhau và 5 tỉ lệ
khác nhau để tạo thành 40 bộ lọc Gabor, cụ thể  {0,...,7} và  {0,..., 4} . Ngoài
ra, các thông số σ, kmax và f  thường được chọn để xây dựng một Gabor wavelet

như sau:  = 2 , kmax = , f = 2 . Với sự lựa chọn hướng và tỉ lệ như vậy,
2

chúng ta có được tất cả 40 bộ lọc Gabor để biểu diễn cho ảnh khuôn mặt, hình 2.5.

Một ảnh được biểu diễn bằng biến đổi Gabor wavelet cho phép mô tả cấu
trúc tần số không gian lẫn các liên kết không gian. (Xin lưu ý: Tần số không gian
là một đặc tính của một cấu trúc bất kỳ tuần hoàn quanh một vị trí nào đó trong
không gian. Nó như một độ đo để đo sự lặp lại của cấu trúc trên một đơn vị
khoảng cách). Việc “cuộn” ảnh bằng bộ lọc Gabor phức theo 5 tần số không gian –
hay còn gọi là tỷ lệ ( v = 0,1,..., 4 ) và 8 hướng (  = 0,1,...,7 ) sẽ chụp được toàn bộ
phổ tần số, kể cả biên độ và pha. Trong hình 2.6, ảnh đầu vào mặt người và các
biên độ của phản ứng của bộ lọc Gabor được thể hiện.

Như vậy, với bộ lọc Gabor, ta đã có thể rút trích được các đặc trưng tiêu
biểu đại diện cho ảnh, ta gọi chúng là các đặc trưng Gabor. Lợi ích của đặc trưng
Gabor là 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

37
không diễn đạt được. Bước tiếp theo, ta dùng phương pháp AdaBoost để lựa chọn
các đặc trưng quan trọng nhất vì số đặc trưng rút trích được là rất lớn. Trong phần
2.2 sẽ cho ta một cái nhìn tổng quan về phương pháp học AdaBoost.

Biến
thiên
tần
số

Biến thiên hướng

Hình 2.5 – Phần thực của 40 bộ lọc Gabor theo 5 tỉ lệ và 8 hướng.

Biến
thiên
tần
số

(a)
Biến thiên hướng
(b)

Hình 2.6 – Ví dụ của ảnh mặt người phản ứng trên bộ lọc
Gabor, (a) ảnh mặt người gốc; (b) phản ứng của bộ lọc.
38
2.2 Tổng quan về AdaBoost
2.2.1 Giới thiệu

AdaBoost (Adaptive Boost) là một tiếp cận Boosting được Freund và


Schapire [4] đưa ra vào năm 1995. Cũng giống như Boosting, AdaBoost là
phương pháp dùng để tăng độ chính xác cho các thuật toán học. AdaBoost ra đời
dùng để giải quyết các hạn chế mà Boosting chưa giải quyết được. AdaBoost là
phương pháp nhận dạng dựa trên lý thuyết học thống kê ngày càng được sử dụng
phổ biến trong nhiều lĩnh vực, đặc biệt là lĩnh vực phân loại mẫu và nhận dạng
mẫu. Đồng thời có nhiều tính năng ưu việt so với các phương pháp cổ điển khác:
dể dàng xử lý, thực hiện nhanh chóng, xử lý với tính ổn định cao trên dữ liệu phức
tạp, có số chiều cao và quan trọng là khả năng xử lý tổng quát.

2.2.2 Phương pháp Boosting

Boosting là kỹ thuật dùng để tăng độ chính xác cho các thuật toán học.
Boosting có nguồn gốc cơ sở lý thuyết dựa trên mô hình PAC (Probably
Approximately Correct). Boosting ra đời như một câu trả lời cho câu hỏi của
Kearns: “Liệu có thể xây dựng một học viên mạnh từ một tập hợp các học viên
yếu? ”. Nguyên lý cơ bản của nó là kết hợp các bộ phân loại thành một bộ phân
loại mạnh. Trong đó, bộ phân loại yếu là các bộ phân loại đơn giản chỉ cần có độ
chính xác trên 50%, các bộ phân loại yếu này thì tốt hơn so với việc dự đoán một
cách ngẫu nhiên. Bằng cách này, chúng ta nói bộ phân loại đã được “boost”.

Ví dụ 2.1: Một người cá cược đua ngựa với hy vọng tối ưu hóa chiến thắng
đã quyết định tạo ra một chương trình máy tính có thể dự đoán một cách chính xác
con ngựa thắng cuộc trong một cuộc đua với những thông tin thông thường như:
số trận thắng của mỗi con ngựa, tỉ lệ đặt cược của mỗi con… Để tạo một chương
trình như vậy, anh ta yêu cầu một chuyên gia cá cược rất thành công giải thích
chiến lược đặt cược của mình. Tất nhiên, người chuyên gia không thể đưa ra rõ

39
ràng một tập hợp lớn gồm những nguyên tắc để chọn một con ngựa. Mặt khác, khi
được giới thiệu tập dữ liệu cụ thể của các cuộc đua, người chuyên gia không ngần
ngại đưa ra “nguyên tắc ngón tay cái” cho tập dữ liệu này, chẳng hạng: đặt cược
cho con ngựa thắng hầu hết các cuộc đua gần đây, hay đặt cho con ngựa có tỉ lệ
cược tốt nhất… Hiển nhiên, bản thân “nguyên tắc ngón tay cái” vốn rất thô và
không chính xác, nhưng nó vẫn đưa ra những dự đoán một cách hợp lý và ít nhất
nó cũng tốt hơn việc dự đoán ngẫu nhiên. Hơn nữa, bằng cách hỏi đi hỏi lại ý kiến
của người chuyên gia đối với những tập hợp khác nhau, người cá cược đã có thể
rút trích được nhiều “nguyên tắc ngón tay cái”.

Nhưng để sử dụng những “nguyên tắc ngón tay cái” này có hiệu quả nhất,
người cá cược phải đối mặt với hai vấn đề. Đầu tiên, anh ta phải chọn những tập
dữ liệu như thế nào để khi giới thiệu với người chuyên gia, anh ta có thể rút ra
những nguyên tắc hữu dụng nhất. Thứ hai, một khi anh ta đã thu thập được nhiều
nguyên tắc, anh ta phải kết hợp chúng lại như thế nào để tạo ra một luật dự đoán
đơn lẻ và chính xác cao.

Boosting là một phương pháp hiệu quả để đưa ra một nguyên tắc dự báo
chính xác bằng cách kết hợp những nguyên tắc thô và thiếu chính xác trong một
khía cạnh nào đó, tương tự với ví dụ 2.1.

Tiến trình của Boosting như sau: cung cấp cho “booster” một tập huấn
luyện được dán nhãn gồm các mẫu ( x1 , y1 ),...,( xN , yN ) , với mỗi yi là một nhãn
tương ứng cho xi ; trở lại ví dụ cá cược đua ngựa ở trên, xi có thể xem là dữ liệu
quan sát được từ mỗi cuộc đua cụ thể và yi sẽ là con ngựa thắng cuộc ở mỗi cuộc
đua. Với mỗi vòng lặp t = 1,2,…, T “booster” sẽ thiết lập một phân phối Dt trên
tập hợp các mẫu và yêu cầu (từ một sự chỉ dẫn nào đó) một giả thuyết yếu hay
nguyên tắc ngón tay cái ht với một sai số thấp  t đối với Dt . Do đó, phân phối
Dt định rõ tầm quan trọng tương đối của mỗi mẫu trên vòng lặp hiện hành. Sau

40
T vòng lặp, “booster” phải kết hợp những giả thuyết yếu thành một luật dự đoán
đơn lẻ.

Ví dụ 2.2: Xét một bài toán phân loại hai 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 D1. Sau đó, chúng ta sẽ xây dựng bộ phân loại yếu đầu tiên C1 từ tập D1.
Tiếp theo, chúng ta xây dựng tập D2 để huấn luyện bộ phân loại C2. D2 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 C1 và nửa còn
lại bị phân loại sai bởi C1. Bằng cách này, D2 chứa đựng những thông tin bổ sung
cho C1. Bây giờ chúng ta sẽ xây huấn luyện C2 từ D2. Tiếp theo, chúng ta sẽ xây
dựng tập D3 từ những mẫu không được phân loại tốt bởi sự kết hợp giữa C1 và C2:
những mẫu còn lại trong D mà C1 và C2 cho kết quả khác nhau. Như vậy, D3 sẽ
gồm những mẫu mà C1 và C2 hoạt động không hiệu quả. Sau cùng, chúng ta sẽ
huấn luyện bộ phân loại C3 từ D3. Bây giờ chúng ta đã có một bộ phân loại mạnh
là sự kết hợp C1, C2 và C3. Khi tiến hành nhận dạng một mẫu X, kết quả sẽ được
quyết định bởi sự thỏa thuận của ba bộ C1, C2 và C3. Nếu cả C1 và C2 đề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 C1
và C2 phân X vào 2 lớp khác nhau, C3 sẽ quyết định X thuộc về lớp nào, hình 2.7.

Có nhiều thuật toán boosting và cải tiến của nó được đưa ra điển hình như:
Boosting by majority, AdaBoost, LPBoost, TotalBoost, BrownBoost, MadaBoost,
LogitBoost,… Trong số đó, AdaBoost phổ biến nhất và có tầm ảnh hưởng to lớn
trong sự phát triển của thuật toán boosting.

2.2.3 AdaBoost

• Giới thiệu về AdaBoost

Adaboost là một cải tiến của tiếp cận Boosting được Freund và Schapire
đưa ra vào năm 1995. Adaboost là phương pháp nhằm để tăng độ chính xác cho
các thuật toán học, AdaBoost cũng hoạt động trên nguyên tắc kết hợp tuyến tính
các bộ phân loại yếu để có một bộ phân loại mạnh. Có hai lý do chính để giải thích

41
cho sự thành công của AdaBoost: một là tính đơn giản của AdaBoost, hai là một
đặc điểm của AdaBoost mà các thuật toán Boosting trước nó đều thiếu: tính thích
nghi.

Hình 2.7 – Minh họa Boosting trên tập mẫu là các điểm hai chiều.

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ố để đánh dấu các mẫu khó nhận dạng. Trong quá trình huấn luyện, cứ mỗi
bộ phân loại yếu đượ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 bộ phân loại yếu 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 bộ phân
loại yếu vừa xây dựng. Bằng cách này, các bộ phân loại yếu được xây dựng ở
bước sau có thể tập trung vào các mẫu mà các bộ phân loại yếu trước nó chưa làm
tốt. Sau cùng, các bộ phân loại yếu sẽ được kết hợp tùy theo mức độ “tốt” của
chúng để tạo dựng nên một bộ phân loại mạnh , hình 2.8.

42
• Thuật toán AdaBoost

Đầu vào:

1. Cho một tập huấn luyện gồm N mẫu có đánh dấu (x1, y1), (x2, y2),...,
(xN,yN) với xi thuộc X và yi thuộc Y={-1, 1}.

2. Một phân phối D trên N mẫu (thường chọn là phân phối đều).

3. Số nguyên T – số vòng lặp.

4. Một thuật toán học yếu WeakLearn.

Khởi tạo:

Khởi tạo trọng số ban đầu cho tất cả các mẫu: với i = 1,…,N.

1
w1,i = D(i ) = .
N

1 1 1
(Ta có vector trọng số w1 = ( w1,1 , w1, 2 ,..., w1, N ) = ( , ,..., ) )
N N N

Xây dựng T bộ phân loại yếu:

For t = 1,2,...,T

wt ,i
{ 0. Chuẩn hóa lại các trọng số : wt ,i = N , với i = 1,…,N
w
i =1
t ,i

1. Huấn luyện các học viên yếu dùng phân phối wt.

Gọi thuật toán WeakLearn xây dựng một bộ phân loại yếu cho hj cho
N
từng mẫu. Tính sai số (lỗi) của mỗi bộ phân loại yếu  j =  wt ,i (h j ( xi ) − yi ) / 2 .
i

2. Chọn ra h j với  j nhỏ nhất, ta được ht , tương ứng  t

ht : X → {-1,1}.

43
e−t , ht ( xi ) = yi
3. Cập nhật lại trọng số: wt +1,i = wt ,i   
, với i = 1,…,N
e t , ht ( xi )  yi

1  1− t 
trong đó :  t = ln  
2  t 

 T

Đầu ra: Một bộ phân loại mạnh H: H( x ) = dâu    t ht ( x )  .
 t =1 

Bảng 1 : Thuật toán AdaBoost.

Hình 2.8 – Quá trình cập nhật lại trọng số và xây dựng bộ phân loại mạnh H.

• Mô tả thuật toán

Một tập gồm N mẫu huấn luyện {( x1 , y1 ),( x2 , y2 ),...,( xN , yN )} được lấy một
cách ngẫu nhiên từ X Y . Freund và Schapire [4, 13] bắt đầu mô tả thuật toán từ

44
trường hợp đơn giản nhất là tập nhãn Y = {-1,1}. Sử dụng Adaboost để tìm một
phân lớp mạnh H phù hợp với tất cả các mẫu, nghĩa là H(xi) = yi với mọi
1  i  N . Giả thuyết này chính xác trên tập huấn luyện nhưng có thể không chính
xác với những mẫu bên ngoài tập huấn luyện, ta gọi đây là hiện tượng quá khớp .

Mục đích của thuật toán là tìm một bộ phân loại mạnh với sai số thấp có
liên quan đến phân phối D cho trước trên tập huấn luyện. Phân phối D này chỉ
trên các mẫu trong tập huấn luyện và được điều khiển bởi người giám sát. Thuật
toán duy trì một tập những trọng số wt trên những mẫu huấn luyện. Tại vòng lặp
t , ta sẽ chuẩn hóa lại các trọng số để tổng tất cả luôn bằng một.

Trong mỗi vòng lặp, ta sử dụng thuật toán WeakLearn để phát sinh ra bộ
phân loại yếu ht có sai số nhỏ, sai số nhỏ này có liên hệ với phân phối đưa vào. Ở
đây ứng với mỗi mẫu, thuật toán WeakLearn chỉ cần tìm ra các bộ phân loại yếu
hj có độ chính xác trên 50%, như thế đảm bảo hiệu quả tốt hơn so với việc ta chỉ
dự đoán một cách ngẫu nhiên với xác suất chỉ 50%. Thuật toán WeakLearn này do
người giám sát chọn lựa để sử dụng trong quá trình huấn luyện của mình. Thuật
toán WeakLearn này có thể là mạng nơron nhân tạo, phương pháp SVM, mô hình
Markov ẩn, phương pháp Linear Fisher Discriminant (LFD) hay sử dụng một
ngưỡng  nào đó để đánh giá bộ phân loại yếu,…

1, p j f j ( x)  p j j
h j ( x) =  (2.11)
0, p j f j ( x)  p j j

• x: mẫu.

• θj: ngưỡng.

• fj: hàm lượng giá của mẫu.

• pj: hệ số quyết định chiều của bất phương trình.

45
Linlin Shen, Li Bai, Daniel Bardsley, Yangsheng Wang [19] sử dụng phương
pháp Linear Fisher Discriminant để xây dựng nên các bộ phân loại yếu. Ulas,
Ba˘gc, Li Bai [7] sử dụng ngưỡng k để đánh giá các bộ phân loại yếu như sau:

−1, f k ( I )  k
hk =  (2.12)
1, f k ( I )  k

1 1 m 1 l 
k =  
2  m p =1
( x pk | y p = 1) +  ( xqk | yq = −1)  (2.13)
l q =1 

trong đó: m là số lượng mẫu dương tính (+1), l là số lượng mẫu âm tính (-1).

Mỗi khi chọn được một bộ phân loại yếu ht , Adaboost sẽ tính giá trị  t
theo công thức 2.14.  t cũng được chọn trên nguyên tắc làm giảm thiểu giá trị lỗi
t.

1  1− t 
 t = ln   (2.14)
2  t 

 T 
H( x ) = dâu    t ht ( x )  (2.15)
 t =1 

Trong công thức 2.15, ta thấy tất cả các bộ phân loại ht đề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ủa chúng phụ thuộc vào giá
trị  t tương ứng, ht với  t càng lớn thì nó càng có vai trò quan trọng trong H(x).

Trong công thức 2.14, dễ thấy giá trị  t tỉ lệ nghịch với  t . Bởi vì ht được
chọn với tiêu chí đạt  t 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 [13] đưa ra.

Sau khi tính được giá trị  t , Adaboost tiến hành cập nhật lại trọng số của
các mẫu: tăng trọng số các mẫu mà ht phân loại sai, giảm trọng số các mẫu mà ht
phân loại đúng. Bằng cách này, trọng số của mẫu phản ánh được mức độ khó nhận
dạng của mẫu đó và ht+1 sẽ ưu tiên học cách phân loại những mẫu này.

46
Ví dụ 2.3: Quá trình phân lớp sử dụng AdaBoost trên tập mẫu là các điểm
trong không gian hai chiều, hình 2.9.

Ta có phân phối đầu vào:

• Bước lặp thứ nhất:

• Bước lặp thứ hai:

47
• Bước lặp thứ ba:

Hình 2.9 – Minh họa thuật toán AdaBoost trên tập mẫu là các điểm hai chiều.

48
• Phân tích lỗi huấn luyện

Tính chất nền tảng quan trọng nhất của AdaBoost là thuật toán có khả năng
làm giảm thiểu lỗi huấn luyện. Ta biểu diễn lỗi  t của ht dưới dạng:

1
t = − t (2.16)
2

Bởi vì, một bộ phân loại yếu ht được dự đoán là thuộc một trong hai lớp với
xác suất là ½ do đó, giá trị  t dùng để dự đoán về ht tốt hơn. Freund và Schapire
[4, 13] đã chứng minh được rằng lỗi huấn luyện của phân loại mạnh H bị chận trên
bởi:
T T
 
 H    2  t ( 1 −  t )  =  1 − 4 t2  exp  −2 t2  (2.17)
t =1 t =1  t 

Chứng minh :

Đặt :

N
Zt =  wt ,i e −t yi ht ( xi ) (2.18)
i =1

Ta có

N
Zt =  wt ,i e−t yi ht ( xi ) =  wt ,i e −t +  wt ,i et
i =1 i:yi = ht ( xi ) i:yi  ht ( xi )

= ( 1 −  t )e −t +  t et = 2  t ( 1 −  t )

Trọng số của wT +1,i sau khi được chuẩn hóa là

49
T
− t yi ht ( xi )
wT ,i e −T yi hT ( xi ) e t =1

wT +1,i = = T
N  Zt
ZT
t =1

Đặt :

T
f ( xi ) =   t ht ( xi ) (2.19)
t =1

e − yi f ( xi )
ta được wT +1,i = T
N  Zt
t =1

− f ( xi ) yi
Nếu H( xi )  yi thì f ( xi ) yi  0 nên e 1

Khi đó
N
1 1 N − yi f ( xi )
H =
N
 i : H( x
i =1
i )  yi   e
N i =1

N
 T  T T
    Z t  wT +1,i =  Z t =   2  (1 −  t ) 
i =1  t = 1  t =1 t =1
 t

Do đó, với mọi t,  t    0 thì

 H  exp(− 2 2T ) (2.20)

Đây là một thuộc tính được thừa hưởng từ các thuật toán Boosting trước.
Tuy nhiên, các thuật toán trước đây đòi hỏi phải biết trước một chặn dưới  khi
bắt đầu Boosting. Trong thực tế giá trị của một chặn thì khó đạt được một cách
chính xác. Mặt khác, AdaBoost mang tính thích nghi ở chỗ thuật toán sẽ điều
chỉnh theo tỉ lệ lỗi của các bộ phân loại yếu, nghĩa là ta không cần phải biết trước
 hoặc T. Đó là ý nghĩa của từ “Ada” - viết tắt của Adaptive.

50
Ràng buộc được biễu diễn trong công thức 2.17 kết hợp với chặn của lỗi
tổng quát được trình bày sau đây, chứng minh được rằng Adaboost thì thực sự là
một thuật toán Boosting theo nghĩa thuật toán có thể chuyển đổi một thuật toán
học yếu thành một thuật toán học mạnh.

• Lỗi tổng quát

Bây giờ chúng ta thảo luận về lỗi của phân loại mạnh H bên ngoài tập huấn
luyện. Theo trên, Freund và Schapire đã chứng minh được rằng lỗi của H trên tập
mẫu thì nhỏ. Tuy nhiên, đại lượng mà chúng ta quan tâm ở đây chính là lỗi tổng
quát của H, nghĩa là lỗi của H trên toàn bộ không gian X.

Gọi  g là lỗi tổng quát của H. Để làm cho  g gần với lỗi thực nghiệm ˆ

trên tập mẫu, chúng ta phải hạn chế chọn H trong một vài cách. Một cách tự nhiên
để thực hiện đều này trong phạm vi của Boosting là hạn chế học viên yếu, chọn
giả thuyết của nó từ một số lớp đơn giản và hạn chế T - số lượng các bộ phân loại
yếu kết hợp nên H.

Freund và Schapire [4, 13] đã chỉ ra được rằng làm thế nào để tìm được
ràng buộc của lỗi tổng quát của phân loại mạnh H trong các điều kiện về lỗi huấn
luyện của nó, kích thước của tập mẫu N, VC-chiều của không gian các bộ phân
loại yếu và số lượng bược lặp T. (VC-chiều là tiêu chuẩn về thước đo độ “phức
tạp” của một không gian của các bộ phân loại.) Đặc biệt, dùng kỹ thuật của Baum
và Haussler [13] để chứng minh lỗi tổng quát với xác suất cao bị chặn trên bởi

 Td 
ˆ [ H ( x)  y ] + O 
 g  Pr  (2.21)

 N 

ˆ [.] là xác suất thực nghiệm trên mẫu huấn luyện. Ràng buộc này cho thấy
Với Pr
rằng Boosting sẽ dẫn tới hiện tượng quá khớp nếu chạy quá nhiều vòng lặp, ví dụ
T rất lớn. Trong thực tế, điều này đôi khi không xảy ra. Tuy nhiên, trong các thực
nghiệm ban đầu, các tác giả quan sát thấy rằng Boosting thường không quá khớp
thậm chí khi vòng lặp chạy hàng ngàn bước. Hơn nữa, quan sát thấy rằng

51
AdaBoost có xu hướng không quá khớp và lỗi tổng quát tiếp tục giảm hoặc ít nhất
là không tăng sau khi lỗi huấn luyện đạt tới 0, rõ ràng mâu thuẫn với tinh thần của
ràng buộc trên [13].

• Vấn đề đa lớp

Thuật toán AdaBoost đã được trình bày ở trên chỉ áp dụng cho các bài toán
phân loại hai lớp. Tuy nhiên, có rất nhiều vấn đề về việc học trong thế giới thực là
bài toán đa lớp. Có một vài phương pháp để mở rộng AdaBoost thành trường hợp
đa lớp. Tổng quát nhất là thuật toán AdaBoost.M1 [4], thuật toán này phù hợp khi
các học viên yếu đủ mạnh để đạt được độ chính xác cao hợp lý, thậm chí trên các
phân phối khó được tạo ra bởi AdaBoost. Tuy nhiên, phương pháp này không
thành công nếu học viên yếu không đạt được ít nhất 50% độ chính xác khi chạy
trên các phân phối khó. Đối với các trường hợp sau này, một số phương pháp cải
tiến được phát triển để giải quyết vấn đề đa lớp. Các phương pháp đó nói chung
vẫn dựa trên ý tưởng chung là chuyển bài toán đa lớp thành bài toán hai lớp.

Chẳng hạn, Schapire và Singer đưa ra thuật toán AdaBoost.MH, Freund và


Schapire đưa ra thuật toán AdaBoost.M2 (đây là trường hợp đặc biệt của thuật
toán AdaBoost.R). Các phương pháp này đòi hỏi nhiều công sức trong việc xây
dựng các thuật toán học yếu [4, 13].

• Ưu và khuyết điểm của Adaboost

AdaBoost là thuật toán học có nhiều thuận lợi. AdaBoost là thuật toán đơn
giản, dễ hiểu, dễ lập trình và thực hiện một cách nhanh chóng. AdaBoost chỉ có
một tham số để điều chỉnh, đó là số vòng lặp T. AdaBoost không yêu cầu biết
trước kiến thức về học viên yếu do đó thuật toán có tính linh hoạt, nghĩa là có thể
được kết hợp bất kỳ phương pháp nào để tìm các bộ phân loại yếu. Tìm ra được
các giả thuyết tốt hơn so với việc dự đoán ngẫu nhiên. AdaBoost có tính thích nghi
mà các thuật toán Boosting trước đây chưa làm được. Tìm được các mẫu ngoại lai,
các mẫu khó nhất thì thường xuyên là các mẫu ngoại lai.

52
Cũng giống như các thuật toán học khác, AdaBoost phụ thuộc vào tập mẫu
huấn luyện và thuật toán học yếu. AdaBoost có thể không thành công nếu các bộ
phân loại yếu quá phức tạp hoặc các bộ phân loại yếu thì quá yếu ( t tiến tới 0 quá
nhanh). Trong thực nghiệm, AdaBoost đặc biệt chịu ảnh hưởng của nhiễu.

2.3 Tổng quan phương pháp gom nhóm


2.3.1 Giới thiệu
Phương pháp gom nhóm là chia dữ liệu thành những nhóm có nghĩa, hữu
ích hoặc cả hai. Nếu mục đích là những nhóm có nghĩa, thì những nhóm nên giữ
được cấu trúc tự nhiên của dữ liệu. Tuy nhiên, trong một số trường hợp, phương
pháp gom nhóm chỉ là điểm khởi đầu hữu ích cho một mục đích khác, như sự tổng
kết dữ liệu. Dù trong nghiên cứu hay ứng dụng thì phương pháp gom nhóm đã
đóng một vai trò quan trong trong rất nhiều lĩnh vực: tâm lý học và những ngành
khoa học xã hội khác, sinh học, khoa học thống kê, nhận dạng mẫu, phục hồi
thông tin, máy học và khai khoáng dữ liệu… Phương pháp gom nhóm là một công
cụ độc lập để xem xét phân bố dữ liệu và làm bước tiền xử lý cho các thuật toán
khác. Trong đề tài này, chúng tôi chỉ tập trung vào phương pháp gom nhóm sử
dụng thuật toán k-means để gom nhóm dữ liệu ảnh khuôn mặt.

2.3.2 Phương pháp gom nhóm


• Định nghĩa
Phương pháp gom nhóm là gom các đối tượng dữ liệu tương tự với một đối
tượng khác vào trong một nhóm và không tương tự với các đối tượng trong các
nhóm khác. Các đối tượng dữ liệu được gom nhóm chỉ dựa trên thông tin được tìm
thấy trong dữ liệu mô tả những đối tượng đó hay những mối quan hệ của chúng.
Mục đích của gom nhóm là để gom tập các đối tượng thành các nhóm có ý nghĩa,
những đối tượng bên trong một nhóm thì tương tự (có liên quan) với nhau và
chúng khác (không liên quan) với những đối tượng trong các nhóm khác. Nếu sự
tương tự trong một nhóm càng lớn và sự khác nhau giữa các nhóm càng nhiều thì
phép gom nhóm càng tốt hơn hay dễ phân biệt hơn.

53
Trong nhiều ứng dụng, khái niệm một nhóm không được định nghĩa rõ
ràng. Để hiểu rõ hơn sự khó khăn khi quyết định điều gì tạo thành một nhóm,
chúng ta xem hình 2.10, biểu diễn hai mươi điểm và ba cách phân nhóm khác
nhau. Những ký hiệu chỉ rõ thành phần của mỗi nhóm. Hình 2.10(b) và 2.10(d) lần
lượt chia dữ liệu thành hai và sáu nhóm. Không thể không có lý khi cho rằng các
điểm tạo thành bốn nhóm như trong hình 2.10(c). Hình này biểu diễn định nghĩa
một nhóm là không chính xác và định nghĩa tốt nhất phụ thuộc vào trạng thái
nguyên thủy của dữ liệu và những kết quả mong muốn.

Hình 2.10 – Các cách chia nhóm khác nhau của cùng một tập
điểm.
• Các ứng dụng của phương pháp gom nhóm

Có nhiều ứng dụng của phương pháp gom nhóm đối với những vấn đề thực
tiễn. Chúng tôi cung cấp một vài ví dụ tiêu biểu tùy theo mục đích nghiên cứu hay
ứng dụng.

Tiếp thị: khám phá các nhóm khác hàng phân biệt trong CSDL mua hàng.

Sử dụng đất: nhận dạng các vùng đất sử dụng giống nhau khi khảo sát
CSDL quả đất.

Bảo hiểm: nhận dạng các nhóm công ty có chính sách bảo hiểm mô tô với
chi phí đền bù trung bình cao.

Hoạch định thành phố: nhận dạng các nhóm nhà cửa theo loại nhà, giá trị
và vị trí địa lý.

54
Y học: Một bệnh thường xuyên có một số biến thể và phương pháp gom
nhóm có thể dùng để nhận ra những nhóm con khác nhau này. Phép gom nhóm có
thể dùng để nhận dạng những mẫu trong sự phân bố không gian hay thời gian của
một bệnh.

Phục hồi thông tin: World Wide Web chứa hàng tỉ trang web và kết quả của
một lệnh truy vấn trong search engine có thể trả về hàng ngàn trong web. Phép
gom nhóm có thể dùng để nhóm những kết quả tìm kiếm này vào những nhóm,
mỗi nhóm đề cập một khía cạnh riêng biệt của lệnh truy vấn. Chẳng hạn, tìm kiếm
từ khóa “movie” có thể trả về những trong web được nhóm thành các loại như
reviews, trailers và stars. Mỗi nhóm có thể chia thành các nhóm con sinh ra một
cấu trúc thứ bậc giúp cho người dùng dễ dảng hơn trong chọn lọc kết quả.

• Các phương pháp gom nhóm chủ yếu

Phương pháp dựa trên phân hoạch: tạo một phân hoạch của cơ sở dữ liệu
chứa n đối tượng thành tập gồm k nhóm sao cho: mỗi nhóm chứa ít nhất là một đối
tượng và mỗi đối tượng thuộc về đúng một nhóm. Nghĩa là cho trước một số
nguyên dương k, tìm một phân hoạch có k nhóm nhằm tối ưu tiểu chuẩn phân
hoạch được chọn (tiêu chuẩn phân hoạch ở đây thường dùng là độ đo bình phương
sai SSE, sẽ được nói rõ trong phần sau). Các thuật toán tiêu biểu trong phương
pháp phân hoạch là: thuật toán k-means (MacQueen-1967) biểu diễn mỗi nhóm
bằng trọng tâm của các dữ liệu trong nhóm đó và thuật toán k-medoids (Kaufman
và Rousseeuw-1987) biểu diễn mỗi nhóm bằng một đối tượng nằm gần trung tâm
của nhóm, hình 2.11.

Phương pháp dựa trên phân cấp: xây dựng các nhóm và tổ chức như cây
phân cấp. Phân cấp nhóm thường tạo cây các nhóm hay còn được gọi là
dendrogram để lưu lại quá trình phân chia nhóm. Các lá của cây biểu diễn các đối
tượng riêng lẻ. Các nút trong của cây biểu diễn các nhóm. Phương pháp này ta
không cần biết trước số nhóm k và xác định số nhóm cần thiết bằng việc cắt
ngang sơ đồ hình cây tại mức thích hợp. Có hai loại kỹ thuật gom nhóm phân cấp

55
chính là: tích tụ - Agglomerative (từ dưới lên – mỗi đối tượng là một nhóm) và
phân chia - Divisive (từ trên xuống - tất cả đối tượng là một nhóm), hình 2.12.

Hình 2.11 – Minh họa thuật toán gom nhóm k-means.

Hình 2.12 – Minh họa gom nhóm dựa trên phương pháp phân cấp.

• Tích tụ: Đưa từng đối tượng vào nhóm riêng của nó. Ở mỗi bước
trộn hai nhóm tương tự nhất cho đến khi chỉ còn một nhóm hay
thỏa điều kiện kết thúc.

56
• Phân chia: Bắt đầu bằng một nhóm lớn chứa tất cả đối tượng.
Phân chia nhóm phân biệt nhất thành các nhóm nhỏ hơn và xử lý
cho đến khi có n nhóm hay thỏa điều kiện kết thúc, hình 2.13.

Hình 2.13 – Hai loại phương pháp tạo kiến trúc phân cấp nhóm.

Các thuật toán phổ biến trong phương pháp này là: thuật toán AGNES
(Agglomerative Nesting), thuật toán DIANA (Divisive Analysis), thuật toán
BIRCH (Balance Iterative Reducing & Clustering using Hierachies), thuật toán
CURE (Clustering Using Representative),… [15, 22].

Phương pháp dựa trên mật độ: mở rộng các nhóm cho đến khi mật độ của
đối tượng dữ liệu trong vùng lân cận vượt qua ngưỡng. DBSCAN là thuật toán
gom nhóm tiêu biểu cho phương pháp này.

Ngoài ra còn có các phương pháp để gom nhóm dữ liệu như là phương
pháp dựa trên lưới và phương pháp dựa trên mô hình.

2.3.3 Thuật toán k-means


Hai thuật toán tiêu biểu nhất trong phương pháp phân hoạch là thuật toán k-
means và k-medoids. k-means định nghĩa một nguyên mẫu là một trọng tâm (hay
còn gọi là centroid), thường là trung tâm của một nhóm và được ứng dụng cho

57
những đối tượng trong một không gian n chiều liên tục. k-medoids định nghĩa một
nguyên mẫu là một medoid, là đối tượng đại diện nhất cho một nhóm và có thể áp
dụng cho một phạm vi dữ liệu rộng vì nó chỉ đòi hỏi một phép đo lân cận cho một
cặp đối tượng. Trong khi centroid không bao giờ tương ứng với một đối tượng dữ
liệu thật sự thì một medoid phải là một đối tượng dữ liệu thật sự. Trong phần này,
chúng tôi chỉ tập trung đến thuật toán k-means, một trong những phương pháp
được sử dụng phổ biến nhất. Chúng tôi sử dụng thuật toán này trong việc gom
nhóm các ảnh khuôn mặt trong tập dữ liệu dữ liệu.
• Mô tả thuật toán k-means

Chúng ta bắt đầu mô tả thuật toán k-means như sau: đầu tiên ta chọn k
trọng tâm, với k là số nguyên dương được chọn bởi người dùng, gọi là số nhóm.
Sau đó, mỗi đối tượng được gán với một trọng tâm gần nhất và mỗi tập đối tượng
được gán với một trọng tâm là một nhóm. Ta lặp lại việc gán và cập nhật các bước
cho đến khi không còn đối tượng nào thay đổi nhóm nữa.

Thuật toán k-means: Cho số k nguyên dương, mỗi nhóm được biểu diễn
bằng giá trị trung bình của dữ liệu trong nhóm .

B1: Chọn ngẫu nhiên k đối tượng làm các trọng tâm ban đầu của các nhóm.

B2: Tạo k nhóm bằng cách gán mỗi đối tượng đến trọng tâm gần nhất của nó.

B3: Tính lại giá trị trọng tâm của từng nhóm.

B4: Nếu các trọng tâm nhóm không có gì thay đổi thì dừng. Ngược lại quay
về B2.

Bảng 2 : Thuật toán k-means

Thuật toán được minh họa cụ thể trong hình 2.14.

Kết hợp thêm một số hàm lân cận (hàm tính độ đo khoảng cách giữa trọng
tâm và các đối tượng khác) và các loại trọng tâm, k-means luôn luôn hội tụ về kết
quả cuối cùng, nghĩa là k-means đạt đến một trạng thái trong đó không có đối

58
tượng nào dịch chuyển từ nhóm này sang nhóm khác và do đó, các trọng tâm
không thay đổi. Tuy nhiên, điều kiện của vòng lặp trong B4 của thuật toán bên trên
thường được thay bởi một điều kiện yếu hơn, chẳng hạn, lặp cho đến khi chỉ có
1% các điểm thay đổi nhóm. Ta xét mỗi bước trong thuật toán k-means một cách
chi tiết hơn.

Chọn 3 trọng tâm


của nhóm bất kỳ
k1, k2, k3

Gán từng điểm vào


nhóm có trọng tâm
nhóm gần nhất

Di chuyển trọng
tâm từng nhóm về
điểm trung bình
mới của nhóm

59
Gán lại các điểm cho
gần với các trọng
tâm nhóm mới

Ba điểm được gán lại

Tính lại trọng tâm nhóm

60
Di chuyển trọng tâm
nhóm về giá trị trung
bình nhóm mới,…

Hình 2.14 – Gom tập dữ liệu thành 3 nhóm dùng thuật toán k-means.

• Gán các đối tượng đến trọng tâm gần nhất

Để gán một đối tượng đến trọng tầm gần nhất, ta cần một phép đo độ lân
cân để xác định khái niệm “gần nhất”. Một nhóm các phép đo lân cận phổ biến
như độ đo khoảng cách cho biến tỉ lệ theo khoảng dùng để xác định sự tương đồng
(giống nhau hay khác nhau) giữa hai đối tượng là khoảng cách Minkowski:

q q q
d (i, j ) = q (| x − x | + | x − x | +...+ | x − x | ) (2.22)
i1 j1 i2 j2 ip jp

với i = (xi1, xi2, …, xip) và j = (xj1, xj2, …, xjp) là các đối tượng dữ liệu p-chiều và q
là số nguyên dương.

Nếu q = 1, độ đo khoảng cách là Manhattan:

d (i, j ) =| x − x | + | x − x | +...+ | x − x | (2.23)


i1 j1 i2 j2 ip jp

Nếu q = 2, độ đo khoảng cách là khoảng cách Euclide:

61
d (i, j ) = (| x − x |2 + | x − x |2 +...+ | x − x |2 ) (2.24)
i1 j1 i2 j2 ip jp

Khoảng cách Euclide (L2) thường được dùng cho những đối tượng trong
không gian Euclide. Tuy nhiên, có thể có nhiều phép đo độ lân cận thích hợp cho
một nhóm dữ liệu được cho. Chẳng hạn, khoảng cách Manhattan (L 1) có thể dùng
cho dữ liệu Euclide, trong khi phép đo Jaccard thường dùng cho những tài liệu hay
các biến nhị phân. Các kiểu dữ liệu khác nhau, yêu cầu độ đo sự khác nhau cũng
khác nhau, các biến tỷ lệ theo khoảng thì dùng khoảng cách Euclide, các biến nhị
phân thì dùng hệ số so khớp hay hệ số Jaccard, các biến tên, thứ tự, tỷ lệ thì dùng
khoảng cách Minkowski, các dạng hỗn hợp thì dùng công thức trọng lượng.

Thông thường, những phép đo lân cận dùng cho k-means thường đơn giản
vì thuật toán tính toán lặp đi lặp lại sự lân cận của mỗi điểm với trọng tâm. Tuy
nhiên, trong một số trường hợp, khi dữ liệu nằm trong không gian Euclide có số
chiều nhỏ, có thể tránh được việc tính toán nhiều sự lân cận, do đó tăng đáng kể
tốc độ của thuật toán k-means. Bisecting k-means [15, 22] là một cách tiếp cận
khác làm tăng tốc độ của k-means bằng cách giảm số lượng tính toán lân cận.

Ký hiệu Mô tả

x Một đối tượng.

Ci Nhóm thứ i

ci Trọng tâm của nhóm Ci.

c Trọng tâm của tất cả các điểm.

mi Số đối tượng trong nhóm thứ i.

m Số đối tượng trong tập dữ liệu.

k Số nhóm.

Bảng 3: Bảng ký hiệu 1.

62
• Những trọng tâm và hàm mục tiêu

Trong bước 3 của thuật toán k-means, vì trọng tâm có thể thay đổi, tùy
thuộc trên phép đo lân cận cho dữ liệu và mục đích của việc gom nhóm. Mục đích
của việc gom nhóm được biểu diễn bởi một hàm mục tiêu - hàm dùng để đo chất
lượng của phép gom nhóm - tùy thuộc trên độ lân cận của các đối tượng với nhau
hay với trọng tâm của nhóm. Chẳng hạn, cực tiểu hóa khoảng cách bình phương
của mỗi với trọng tâm gần nhất của nó. Tuy nhiên, điểm quan trọng là một khi ta
đã chỉ rõ phép đo lân cận và một hàm mục tiêu, trọng tâm có thể được tính toán.

• Dữ liệu trong không gian Euclide

Xét dữ liệu với phép đo lân cận là khoảng cách Euclide. Với ta dùng hàm
mục tiêu với độ đo là tổng sai số bình phương (sum of the squared error-SSE). Nói
cách khác, ta tính toán sai số của mỗi đối tượng dữ liệu, nghĩa là, khoảng cách
Euclide của nó đến trọng tâm gần nhất và sau đó tính toán tổng các sai số bình
phương. Cho hai tập hợp nhóm khác nhau được tạo bởi hai lần chạy thuật toán k-
means khác nhau, ta chọn tập hợp có sai số bình phương nhỏ nhất vì điều này có
nghĩa là những trọng tâm của phép gom nhóm này la biểu diễn tốt cho các điểm
trong nhóm của chúng. Dùng ký hiệu trong bảng 3, SSE được định nghĩa như sau:
K
SSE =   dist (ci , x) 2 (2.25)
i =1 xCi

với dist là khoảng cách Euclide (L2) giữa hai đối tượng trong không gian Euclide.

Có thể nói rằng, trọng tâm tối thiểu hóa SSE của nhóm là trung bình. Dùng
ký hiệu trong bảng 3, trọng tâm của nhóm thứ i được định nghĩa như sau:

1
ci =
mi
x
xCi
(2.26)

Ví dụ 2.4: trọng tâm của một nhóm chứa ba điểm hai chiều (1, 1), (2, 3), và
(6, 2), là: ((1 + 2 + 6)/3, (1 + 3 + 2)/3) = (3, 2).

63
Bước 2 và bước 3 của thuật toán k-means cố gắng tối thiểu hóa SSE (tổng
quát hơn là hàm mục tiêu). Bước 2 tạo ra các nhóm bằng cách gán các đối tượng
đến trọng tâm gần nhất của chúng, mà tối thiểu SSE với tập hợp trọng tâm được
cho. Bước 3, tính toán lại các trọng tâm để tối thiểu hóa SSE hơn nữa. Tuy nhiên,
hoạt động của k-means trong bước 2 và 3 chỉ được đảm bảo để tìm cực tiểu địa
phương đối với SSE vì chúng dựa trên việc tối ưu hóa SSE cho những lựa chọn cụ
thể của trọng tâm và nhóm hơn là cho tất cả những lựa chọn có thể.

• Chọn các trọng tâm ban đầu

Khi khởi tạo các trọng tâm ngẫu nhiên, các lần chạy khác nhau của k-means
sinh ra các tổng SSE khác nhau. Ta minh họa điều này với tập hợp các điểm hai
chiều trong hình 2.15 với ba nhóm điểm. Hình 2.15(a) biễu diễn một cách gom
nhóm với cực tiểu toàn cục của SSE cho ba nhóm, trong khi hình 2.15(b) biễu diễn
một cách gom nhóm không tối ưu với chỉ một cực tiểu địa phương.

Hình 2.15 – Gom nhóm tối ưu và không tối ưu.

Chọn những trọng tâm ban đầu chính xác là bước quan trọng của thuật toán
k-means. Một cách tiếp cận thông thường là chọn những trọng tâm ban đầu một
cách ngẫu nhiên, nhưng những kết quả thường xấu.

Ví dụ 2.5: Những trọng tâm ban đầu xấu. Những trọng tâm ban đầu được
chọn ngẫu nhiên có thể xấu. Ta có một ví dụ minh họa điều này dùng cùng bộ dữ
liệu như trong hình 2.15 và hình 2.16. Hình 2.16 và hình 2.17 biểu diễn các nhóm
dẫn đến hai lựa chọn đặc biệt những trọng tâm ban đầu. (Ở cả hai hình, vị trí của

64
những trọng tâm nhóm trong những vòng lặp khác nhau được biểu diễn bởi dấu
gạch chéo).

Ví dụ 2.6: Việc khởi tạo ngẫu nhiên có những giới hạn nhất định. Một kỹ
thuật được dùng thông thường để giải quyết vấn đề chọn những trọng tâm ban đầu
là thực hiện nhiều lần chạy, mỗi lần với một bộ khác nhau các trọng tâm ban đầu
được chọn ngẫu nhiên, và sau đó chọn ra tập hợp các nhóm với SSE nhỏ nhất.
Cách này có thể không thực hiện tốt, tùy thuộc vào tập dữ liệu và số nhóm được
tìm kiếm. Chúng ta có thể biểu diễn điều này với bộ dữ liệu mẫu cho trong hình
2.18(a). Dữ liệu bao gồm hai cặp nhóm. Với các nhóm trong mỗi cặp (trên-dưới)
gần nhau hơn các nhóm trong cặp khác. Hình 2.18(b-d) chỉ ra rằng nếu ta bắt đầu
với hai trọng tâm ban đầu đối với mỗi cặp nhóm, thì thậm chí khi tất cả trọng tâm
ở trong một nhóm duy nhất, những trọng tâm sẽ được phân phối lại để tìm được
các nhóm đúng. Tuy nhiên hình 2.19 chỉ ra rằng nếu một cặp nhóm chỉ có một
trọng tâm ban đầu và cặp khác có ba thì hai trong các nhóm đúng sẽ kết hợp và
một nhóm đúng sẽ được chia ra.

Hình 2.16 – Chọn trọng tâm ban đầu tốt.

65
Hình 2.17 – Chọn trọng tâm ban đầu không tốt.

Lưu ý rằng một phép gom nhóm tối ưu sẽ đạt được cho đến khi hai trọng
tâm ban đầu rơi vào trong một cặp nhóm, vì các trọng tâm sẽ được phân phối lại
đến mỗi nhóm.

Vì những vấn đề với việc dùng những trọng tâm ban đầu được chọn ngẫu
nhiên, mà những lần chạy lặp lại có thể không vượt qua. Một cách tiếp cận hiệu
quả là lấy một mẫu các đối tượng và gom nhóm chúng dùng kỹ thuật gom nhóm
hierarchical. k nhóm rút ra từ phép gom nhóm hierarchical và những trọng tâm của
những nhóm đó được dùng như những trọng tâm ban đầu. Cách này thường hoạt
động tốt, nhưng thực hiện được nếu (1): bộ mẫu tương đối nhỏ (vài trăm đến vài
ngàn) và (2): k tương đối nhỏ so với kích thước mẫu.

Sau đây là một cách khác để chọn những trọng tâm ban đầu. Chọn ngẫu
nhiên đầu tiên hay lấy trọng tâm của tất cả các điểm. Sau đó, chọn điểm xa nhất
đối với các trọng tâm ban đầu đã chọn. Theo cách này, ta có được một tập các
trọng tâm ban đầu được đảm bảo không chỉ được chọn ngẫu nhiên mà còn tách rời
nhau. Không may là cách như vậy có thể có chọn những giá trị ngoại lệ hơn là các
điểm trong nhóm. Nó cũng tốn kém để tính toán điểm xa nhất từ tập các trọng tâm
ban đầu hiện tại. Để khắc phục vấn đề này, cách này thường dùng cho một bộ mẫu
các điểm. Vì những giá trị ngoại lệ hiếm khi xảy ra, chúng có khuynh hướng
không xuất hiện trong một mẫu ngẫu nhiên. Ngược lai, các điểm từ mỗi nhóm có
thể được bao gồm trừ phi kích thước mẫu rất nhỏ. Việc tính toán liên quan đến

66
việc tìm những trọng tâm ban đầu cũng được giảm đáng kể vì kích thước mẫu nhỏ
hơn nhiều so với số điểm.

Hình 2.18 – Hai cặp nhóm vói mỗi cặp trọng tâm ban đầu thuộc một nhóm.

Hình 2.19 – Hai cặp nhóm, mỗi cặp có ít hơn hoặc

nhiều hơn hai trọng tâm ban đầu.

67
• Ưu và khuyết điểm của thuật toán k-means

Thuật toán k-means đơn giản, dễ hiểu, tương đối hiệu quả và có thể dùng
cho rất nhiều loại dữ liệu. Nó thật sự hiệu quả thậm chí thực hiện nhiều lần chạy.
Một số biến thể bao gồm bisecting k-means thậm chí hiệu quả hơn và ít bị ảnh
hưởng hơn trong vấn đề khởi tạo trọng tâm ban đầu. Các đối tượng tự động gán
vào các nhóm. Yêu cầu về thời gian thực hiện k-means tương đối - tuyến tính với
số đối tượng dữ liệu. Cụ thể thời gian đòi hỏi là O(tkn), với n là số đối tượng, k là
số cụm, và t là số lần lặp. Thông thường k, t << n. Thường kết thúc ở điểm tối ưu
cục bộ; có thể tìm được tối ưu toàn cục dùng các kỹ thuật như thuật toán di truyền.
Bên cạnh đó, k-means cũng có một số khuyết điểm sau: k-means có thể áp dụng
chỉ khi xác định được trị trung bình của các đối tượng, cần chỉ định trước số k (số
các nhóm), tất cả các đối tượng phải gán vào các nhóm, phụ thuộc vào việc chọn
các nhóm đầu tiên, không phù hợp với tất cả các loại dữ liệu, không thể xử lý dữ
liệu chuỗi và outliers - các đối tương bất tương tự với phần dữ liệu còn lại, không
phù hợp để khám phá các nhóm với dạng không lồi, nhóm có kích thước và mật
độ khác nhau.

68
Chương 3
Xây dựng thuật giải

Trong chương 2, chúng tôi đã trình bày các kiến thức nền tảng về Gabor
wavelet, AdaBoost và phương pháp gom nhóm. Sau đây, chúng tôi sẽ áp dụng các
kiến thức đó để giải quyết bài toán nhận dạng mặt người. Như đã trình bày ban
đầu, hướng tiếp cận để giải quyết bài toán nhận dạng của chúng tôi là dựa trên việc
so khớp đặc trưng. Từ ảnh khuôn mặt người, chúng tôi dùng Gabor wavelet để đại
diện cho ảnh khuôn mặt và rút trích các đặc trưng trên ảnh khuôn mặt để tạo thành
vectơ đặc trưng, những đặc trưng này bất biến đối với sự biến dạng của ảnh chẳng
hạn như ảng chụp bị chói và sự biểu cảm của khuôn mặt, chúng tôi gọi các vectơ
đặc trưng này là các vectơ đặc trưng Gabor. Bởi vì vectơ đặc trưng được rút trích
từ Gabor wavelet có số chiều lớn, do đó chúng tôi sẽ áp dụng phương pháp
AdaBoost để lựa chọn ra các đặc trưng quan trọng để xây dựng nên vectơ đặc
trưng mới có số chiều ít hơn. Đồng thời, AdaBoost còn tìm ra được một bộ phân
loại mạnh đóng vai trò quan trọng trong việc phân lớp ảnh khuôn mặt. Trong đó,
chúng tôi đưa ra cách xây dựng các bộ phân loại yếu dựa trên một hàm ngưỡng có
thể áp dụng trên các đặc trưng Gabor và từ các bộ phân loại yếu này sẽ tìm ra được
một bộ phân loại mạnh.Bên cạnh đó, để cho được kiểm tra đạt hiệu quả về mặt
thời gian, chúng tôi sử dụng thuật toán k-means để gom nhóm tập dữ liệu thành
các nhóm riêng biệt nhau.

3.1 Vectơ đặc trưng Gabor


Ở chương 2, chúng tôi đã trình bày các kiến thức nền tảng về Gabor
wavelet. Trong phần này, chúng tôi xin nhắc lại định nghĩa về Gabor wavelet cũng
như các thông số mà Gabor wavelet sử dụng. Sau đó, chúng tôi sẽ dùng Gabor

69
wavelet để biểu diễn một bức ảnh khuôn mặt, cũng như rút trích ra được các vectơ
đặc trưng Gabor.

3.1.1 Gabor wavelet

Các Gabor wavelet   , được xác định như sau:

2 2 2
k , z
k , −
  , ( z ) = eik , z − e− 
2
2 2 2
e (3.1)
 2  

trong đó: z = (x,y) là một điểm trong không gian hai chiều. Các tham số  và 
được định nghĩa lần lượt là hướng và tỉ lệ của nhân Gabor, σ là độ lệch chuẩn của
phân phối Gauss, ||.|| là toán tử tính chuẩn.

Một vectơ sóng k , được xác định như sau :

i
k  ,v = kv e (3.2)

kmax 
trong đó: k = 
là tần số của sóng,  = là hướng của sóng, với kmax là tần số
f 8

tối đa của sóng, f  là hệ số khoảng cách giữa các nhân trong miền tần số. Các
Gabor wavelet được tạo ra từ một bộ lọc bằng cách thay đổi các hướng và tỉ lệ của
vectơ k , .

Chúng tôi sử dụng 8 hướng khác nhau và 5 tỉ lệ khác nhau để tạo thành 40
bộ lọc Gabor, cụ thể  {0,...,7} và  {0,..., 4} . Ngoài ra, các thông số σ, kmax và
f  thường được chọn để xây dựng một Gabor wavelet như sau:  = 2 ,


k max = , f = 2 . Với sự lựa chọn hướng và tỉ lệ như vậy, chúng ta có được tất
2

cả 40 bộ lọc Gabor để biểu diễn cho ảnh khuôn mặt.

3.1.2 Đại diện cho ảnh khuôn mặt dùng Gabor wavelet

Đại diện Gabor wavelet cho một bức ảnh chính là tích chập của ảnh với
một tập hợp các bộ lọc Gabor. Cụ thể, gọi I(z) là giá trị mức xám tại điểm ảnh z =

70
(x,y), các đặc trưng của ảnh tại các vị trí, hướng và tỉ lệ khác được rút trích bằng
cách tính tích chập của I(z) với một bộ lọc Gabor   , ( z ) được xác định như

sau:

O , ( z ) = I ( z ) *  , ( z ) (3.3)

Đại lượng O , ( z ) là một hàm phức với phần thực là R{O , ( z )} và phần ảo

là I {O , ( z )} . Khi đó, với 8 hướng và 5 tỉ lệ khác nhau, tập hợp

D = O , ( z ) :  {0,.., 4},  {0,...7} chính là đại diện Gabor wavelet cho một điểm

ảnh I(z).

Giá trị về độ lớn của O , ( z ) được xác định như sau :

O , ( z ) = R 2{O , ( z )} + I 2{O , ( z )} (3.4)

Đại lượng O , ( z ) chính là đặc trưng của ảnh tại vị trí z với hướng và tỉ lệ

là  và  . Ta gọi O , ( z ) là một đặc trưng Gabor của điểm ảnh I(z). Tập hợp tất

cả các đặc trưng Gabor của điểm ảnh I(z) với 40 bộ lọc Gabor là:

 
S = O , ( z ) :  {0,.., 4},   {0,...7} . Một vectơ đặc trưng Gabor đại diện cho toàn

bộ bức ảnh I có được bằng cách ghép nối theo dòng tất cả các giá trị
O , ( z ) , z  I ,  {0,.., 4},   {0,...7} .

Ta gọi G(I) là vectơ đặc trưng Gabor của ảnh I .

G ( I ) = ( O0,0 , O0,1 ,..., O0,7 , O1,0 ,...., O4,7 ) (3.5)

Như vậy, với một bức ảnh khuôn mặt bất kỳ, dùng 40 bộ lọc Gabor, ta có
thể tìm ra được vectơ đặc trưng Gabor đại diện cho bức ảnh đó, hình 3.1. Vấn đề
ta cần quan tâm ở đây chính là số chiều của vectơ đặc trưng này. Với một bức ảnh
khuôn mặt có kích thước là M×N thì số chiều của vectơ đặc trưng Gabor là
M×N×40. Nghĩa là vectơ đặc trưng Gabor này co số chiều gấp 40 số chiều của ảnh
gốc. Chẳng hạn, một bức ảnh khuôn mặt người có kích thước 64×64 thì vectơ đặc

71
trưng Gabor có số chiều là 64×64×40=163840. Ta thấy rằng, số lượng đặc trưng
như thế lá quá lớn, đồng thời số lượng toán tử tính tích chập cũng lớn dẫn tới chi
phí tính toán rất cao. Câu hỏi đặt ra là: Làm thế nào để giảm được số chiều của
vectơ đặc trưng Gabor nhưng vẫn đảm bảo biểu diễn đầy đủ thông tin cho ảnh
khuôn mặt? Nghĩa là ta cần tìm các đặc trưng thật sự quan trọng trong số lượng
các đặc trưng lớn như vậy để đại diện cho bức ảnh và đóng vai trò vào việc phân
lớp với độ chính xác cao. Do đó, cần có một phương pháp để chọn lựa các đặc
trưng quan trọng trong vectơ đặc trưng Gabor có số chiều lớn để hình thành nên
một vectơ đặc trưng mới có số chiều nhỏ hơn. Quá trình chọn lựa như vậy nảy
sinh hai vấn đề:

• Thứ nhất: Gabor wavelet nào sẽ được chọn trong tất cả 40 Gabor
wavelet được dùng?
• Thứ hai: tại điểm ảnh nào sẽ dùng Gabor wavelet nào tương ứng?

Để giải quyết hai vấn đề trên, chúng tôi là sử dụng phương pháp học
AdaBoost. Tương tự như công việc của Viola và Jones trong việc sử dụng
AdaBoost và đặc trưng Haar-like để giải quyết bài toán xác định khuôn mặt người
[20], hai tác giả dùng AdaBoost để chọn lựa các đặc trưng Haar-like quan trọng để
tiến hành xác định khuôn mặt. Chúng tôi là sử dụng phương pháp học AdaBoost
để chọn ra một tập hợp nhỏ các đặc trưng quan trọng từ vectơ đặc trưng Gabor có
số chiều lớn ban đầu để hình thành nên vectơ đặc trưng mới có số chiều nhỏ hơn
nhưng đảm bảo vẫn đại diện tốt cho bức ảnh khuôn mặt vì các đặc trưng được
chọn lựa theo AdaBoost là các đặc trưng quan trọng nhất và có lỗi nhận dạng thấp
nhất. Ngoài ra, AdaBoost còn có một lợi thế là quá trình chọn lựa đặc trưng và xây
dựng nên một phân loại mạnh được thực hiện cùng lúc.

Chúng ta biết rằng, bài toán nhận dạng mặt người là bài toán đa lớp. Tuy
nhiên, phương pháp AdaBoost mà chúng tôi đã trình bày ở chương 2 lại chỉ áp
dụng cho các bài toán hai lớp. Do đó, một cách tự nhiên là chúng tôi sẽ chuyển đổi
bài toán đa lớp như trên thành bài toán hai lớp. Một phương pháp chuyển đổi là

72
dùng hai không gian intra-personal và không gian extra-personal được đưa ra bởi
Moghaddam, Wahid và Pentland [7, 10, 12, 19, 23].

Hình 3.1 – Đại diện Gabor wavelet cho một bức ảnh khuôn mặt. (a) Phần thực
của Gabor wavelet đại diện. (b) Độ lớn của Gabor wavelet đại diện.

73
3.2 Không gian intra-personal và không gian extra-personal
Moghaddam, Wahid và Pentland đã sử dụng cách tiếp cận về thống kê để
định nghĩa hai không gian intra-personal và extra-personal như sau: không gian
intra-personal (IS) bao gồm sự khác biệt trong các bức ảnh khác nhau của cùng
một đối tượng, không gian extra-personal (ES) bao gồm sự khác biệt trong các bức
ảnh khác nhau của các đối tượng khác nhau. Ước lượng các phân phối của hai
không gian này dựa trên giả định rằng phân phối của không gian intra-personal là
phân phối Gauss [23].

Bằng việc sử dụng các vectơ đặc trưng Gabor, hai không gian này được xác
định như sau:


IS = G ( I p ) − G ( I q ) , p = q (3.6)


ES = G ( I p ) − G ( I q ) , p  q  (3.7)

trong đó Ip và Iq là ảnh khuôn mặt của đối tượng p và q ; G(I) là vector đặc trưng
Gabor của ảnh I.

Hai không gian IS và ES này hoàn toàn rời nhau, do đó từ bài toán đa lớp ta
đã chuyển được về bài toán hai lớp. Các vectơ (hay còn gọi là các mẫu) trong
không gian IS được gán nhãn là +1 (mẫu dương tính) và các mẫu trong không gian
ES được gán nhãn là -1 (mẫu âm tính), hình 3.2, hình 3.3.

Sau khi chuyển từ bài toán đa lớp (bài toán nhận dạng mặt người) về bài
toán hai lớp. Chúng tôi sẽ dùng phương pháp AdaBoost để chọn lựa đặc trưng và
xây dựng nên phân loại mạnh dựa trên các mẫu được lấy từ hai không gian IS và
ES. Tập mẫu huấn luyện sẽ được chọn trong không gian: IE = IS ES .

Ví dụ 3.1: Giả sử cơ sở dữ liệu của chúng ta gồm 600 bức ảnh khuôn mặt
của 200 người, như vậy mỗi người sẽ có 3 ảnh lưu trong cơ sở dữ liệu. Khi đó, số
3
lượng mẫu trong không gian IS là: 200    = 600 , số lượng mẫu trong không gian
 2

74
 200  3  3
ES là:   − 200    = 179100 . Ta thấy rằng số lượng mẫu trong không gian
2   2
ES lớn hơn rất nhiều so với số lượng mẫu trong không gian IS. Vậy số lượng mẫu
trong không gian IE là 179700.

Hình 3.2 – Một mẫu trong không gian IS

Hình 3.3 – Một mẫu trong không gian ES.

75
3.3 Chọn lựa đặc trưng và phân lớp bằng AdaBoost
Trong chương 2, chúng tôi đã trình bày rất chi tiết về phương pháp
AdaBoost. Trong phần này, chúng tôi sẽ dùng AdaBoost để chọn lựa các đặc trưng
Gabor quan trọng để xây dựng nên vectơ đặc trưng mới có số chiều nhỏ hơn vectơ
đặc trưng Gabor ban đầu. Chúng tôi sẽ dựa vào các mẫu trong hai không gian IS
và ES cũng như các đặc trưng Gabor để xây dựng nên các bộ phân loại yếu và từ
đó hình thành nên bộ phân loại mạnh đóng vai trò trong việc phân lớp ảnh khuôn
mặt.

Một tập huấn luyện gồm N mẫu được chọn từ không gian IE = IS ES
được biểu diễn như sau: ( x1 , y1 ),..., ( xN , yN ) , xi = ( xi1 ,..., xiM ), yi {−1, +1} . Trong

đó: xi là các mẫu hay là các vectơ đặc trưng Gabor, xik = G ( I p ) − G ( I q ) k
là đặc

trưng Gabor tại thành phần thứ k của vector xi.

Trong phần này, chúng tôi có một số hiệu chỉnh về thuật toán AdaBoost.
Chúng tôi có một vài thay đổi về việc khởi tạo trọng số ban đầu cho các mẫu, cũng
như chỉ rõ cách tìm ra các bộ phân loại yếu để hình thành nên bộ phân loại mạnh.

Một bộ phân loại yếu xác định lớp của vectơ đặc trưng Gabor dựa vào một
thành phần trong vectơ đặc trưng đó. Chọn lựa các bộ phân loại yếu để hình thành
nên phân loại mạnh tương ứng với việc ta chọn lựa các đặc trưng Gabor quan
trọng trong vectơ đặc trưng có số chiều lớn. Do đó, dùng AdaBoost với các bộ
phân loại yếu này chúng ta tìm ra được một tập hợp nhỏ các đặc trưng Gabor quan
trong từ vecto đặc trưng có số chiều lớn để hình thành nên vectơ đặc trưng mới có
số chiều nhỏ hơn đáng kể. Số lượng đặc trưng mà ta cần chọn chính là số vòng lặp
T trong thuật toán AdaBoost.

Để xây dựng nên các bộ phân loại yếu và phân lớp chúng, chúng tôi sử
dụng các đặc trưng Gabor và hàm ngưỡng đơn giản k . Một bộ phân loại yếu được
xác định bởi một Gabor wavelet và hàm ngưỡng k như sau:

76
1, f k ( I )  k
hk =  (3.8)
−1, f k ( I )  k

Trong đó: f k ( I ) = xik = G ( I p ) − G ( I q ) k và ngưỡng k được tính như sau:

1 1 m 1 l 
k =  
2  m p =1
( x pk | y p = 1) +  ( xqk | yq = −1)  (3.9)
l q =1 

với m là số lượng các mẫu trong không gian IS, l là số lượng các mẫu trong không
gian ES.

Sau đây, chúng tôi sẽ mô tả lại thuật toán AdaBoost

Thuật toán AdaBoost:

Đầu vào:

1. Cho một tập huấn luyện gồm N mẫu có đánh dấu (x1, y1), (x2, y2),...,
(xN,yN) với xi thuộc không gian IE và yi thuộc Y={-1, 1}.

2. Một phân phối D trên N mẫu.

3. Số nguyên T – số vòng lặp.

Khởi tạo:

Khởi tạo trọng số ban đầu cho tất cả các mẫu: với i = 1,…,N.

 1
 2m , xi  IS
w1,i = 
 1 , x  ES
 2l i

Xây dựng T bộ phân loại yếu:

For t =1, ..., T

77
wt ,i
{ 0. Chuẩn hóa lại các trọng số wt ,i = N , với i = 1,…,N
w
i =1
t ,i

1. Huấn luyện các học viên yếu dùng phân phối wt.

Với mỗi đặc trưng j trong mỗi vectơ đặc trưng Gabor (xét trên từng mẫu),
ta xây dựng một bộ phân loại yếu hj với ngưỡng  j và lỗi  j . Tính sai số của mỗi
N
bộ phân loại yếu  j =  wt ,i (h j ( xi ) − yi ) / 2 .
i

2. Chọn ra hj với  j nhỏ nhất, nghĩa là ta chọn được đặc trưng tại vị trí j và

các đặc trưng nào đã được chọn thì ta không chọn lại. Khi đó, ta được ht tương
ứng với  t .

ht: X → {-1,1}

e− t , h ( x ) = y
= wt ,i   với i = 1,…,N
t i i
3. Cập nhật lại trọng số: wt +1,i
e t , ht ( xi )  yi

1  1− t 
trong đó :  t = ln  
2  t 

Đầu ra:

 T 
Một bộ phân loại mạnh H: H( x ) = dâu    t ht ( x ) 
 t =1 

Bảng 4 : Thuật toán AdaBoost dùng để chọn lựa đặc trưng

Mô hình quá trình huấn luyện được mô tả như hình 3.4 .

Sau quá trình huấn luyện, ta tìm được T bộ phân loại yếu, tương ứng với T
đặc trưng quan trọng (nghĩa là ta biết được vị trí của T thành phần trong vectơ đặc
trưng Gabor ban đầu mà ta cần chọn), dựa vào T đặc trưng này ta xây dựng nên

78
các vectơ đặc trưng mới có số chiều là T để đại diện lại cho các ảnh khuôn mặt
trong tập dữ dữ liệu và tìm được bộ phân loại mạnh H dùng để phân lớp khuôn
mặt trong quá trình kiểm tra .

Dùng Gabor Dựa vào vector AdaBoost


AdaBoost
wavelet để tìm đặc trưng và
Tập ảnh
ra các vector không gian IS, ES
huấn luyện đặc trưng G(I) chuyển về bài
(số chiều lớn). toán 2 lớp.

Chọn được T
đặc trưng và xây
dựng nên phân
loại mạnh H.

Hình 3.4 – Mô hình quá trình huận luyện dùng AdaBoost.

Ví dụ 3.2: Giả sử ta có hai vectơ đặc trưng Gabor có số chiều là 10 lần lượt
đại diện cho ảnh I và J như sau:

x = (10,30,40,10,15,30,90,30,25,55);

y = (15,10,30,20,75,80,95,33,22,52).

Sau khi huấn luyện bằng AdaBoost, giả sử chọn T = 5, ta tìm ra được 5 bộ phân
loại yếu tương ứng ta chọn được 5 đặc trưng quan trọng tại các vị trí 1,3,5,7,9 để
tạo ra vectơ đặc trưng mới có số chiều là 5 đại diện lại cho ảnh I và J, cụ thể:

x’= (10,40,15,90,25);

y’ = (15,30,75,95,22).

Trong quá trình kiểm tra, ứng với mỗi ảnh đầu vào cần kiểm tra J thay vì
dùng tất cả 40 Gabor wavelet để tìm ra vectơ đặc trưng Gabor đại diện cho ảnh J

79
đó, ta chỉ cần dựa vào T vị trí tìm được được sau qua trình huấn luyện để xây dựng
nên vectơ đặc trưng Gabor biểu diễn cho ảnh J và vectơ này thật sự chỉ có số chiều
là T, nghĩa là ta chỉ cần chọn một vài Gabor wavelet trong tổng số 40 Gabor
wavelet được dùng, và số lượng điểm ảnh chọn được sẽ nhỏ hơn hoặc bằng T, bởi
vì: giả sử tại điểm ảnh z1, có thể có hai Gabor wavlet khác nhau được chọn để tạo
ra hai đặc trưng Gabor khác nhau. Do đó, điều này đã xác minh được rằng sử dụng
AdaBoost ta đã giải quyết được câu hỏi đặt ra ở trên. Bên cạnh đó, giảm được chi
phí đối với phép tính tích chập rất đáng kể.

Ngoài ra, trong quá trình kiểm tra, thông thường thì ta phải duyệt qua hết
tất cả các ảnh trong cơ sở dữ liệu để so khớp với ảnh cần kiểm tra dựa trên bộ
phân loại mạnh H tìm được sau quá trình huấn luyện, quá trình duyệt như vậy sẽ
hao tốn nhiều chi phí tính toán vì ta so khớp trên toàn bộ cơ sở dữ liệu. Thay vì
thực hiện cách như trên, chúng tôi sử dụng một phương pháp khác là ban đầu
chúng tôi sẽ tiến hành gom nhóm các ảnh trong cơ sở dữ liệu thành các nhóm
riêng biệt nhau, mỗi nhóm sẽ bao gồm một hoặc nhiều ảnh, tương ứng sẽ bao gồm
một hoặc nhiều vectơ đặc trưng Gabor. Và mỗi nhóm sẽ được đại diện bởi một
vectơ, vectơ đại diện cho từng nhóm như vậy đóng vai trò quan trọng trong việc
giảm thiểu số lượng lần so khớp giữa ảnh cần kiểm tra với tất cả các ảnh trong tập
dữ liệu, bằng cách dùng thuật toán gom nhóm k-means vectơ đại diện cho từng
nhóm chính là trọng tâm của từng nhóm đó. Với mỗi ảnh cần kiểm tra, ta xét xem
ảnh đó “gần” với nhóm nào nhất, sau khi tìm được nhóm “gần nhất” với ảnh đó, ta
chỉ cần duyệt hết tất cả các ảnh trong nhóm đó để so khớp với ảnh cần kiểm tra.
Như thế số lần so khớp chỉ là số lượng các ảnh trong nhóm đó mà thôi! Vì mỗi ảnh
sẽ được đại diện bởi một vectơ đặc trưng Gabor có số chiều là T, do đó ta có thể
phát biểu ý trên lại như sau: với mỗi vectơ đặc trưng cần kiểm tra, ta xem xét sự
tương đồng của vectơ đó với tất cả các vectơ đại diện cho các nhóm, sau đó sẽ tìm
ra được nhóm có vectơ đại diện “gần giống” nhất đối với vectơ cần kiểm tra. Ứng

80
với nhóm được chọn, ta sẽ duyệt qua hết tất cả các vectơ trong nhóm đó để so
khớp với vectơ cần kiểm tra, quá trình so khớp được thực hiện như sau :

• Đầu tiên, ta tính độ lệch giữa vectơ cần kiểm tra và các vectơ trong
mỗi nhóm , x = G ( I ) − G ( J ) .

 T 
• Tiếp theo, ta lần lượt tính các giá trị H( x ) = dâ u    t ht ( x )  .
 t =1 

• Ảnh trong tập dữ liệu được chọn sẽ có giá trị H(x) = 1 và giá trị
T

 h ( x ) là lớn nhất.
t =1
t t

Sau đây chúng tôi sẽ trình bày chi tiết qua trình gom nhóm tập dữ liệu ảnh
khuôn mặt để tạo thành các nhóm tách biệt nhau. Trong phần này, chúng tôi sẽ chỉ
rõ hàm độ đo lân cận được dùng trong việc tính khoảng các giữa hai vectơ đặc
trưng Gabor, cũng như chỉ rõ các trọng tâm được tính như thế nào khi sử dụng
thuật toán gom nhóm k-means và trọng tâm của từng nhóm chính là vectơ đại diện
cho từng nhóm đó.

3.4 Gom nhóm tập dữ liệu


Gọi M là số lượng các ảnh khuôn mặt người trong tập dữ liệu, ứng với mỗi
ảnh sẽ được đại diện bởi một vectơ đặc trưng Gabor có số chiều là T. Như vậy, ta
có được M vectơ đặc trưng dùng làm tập mẫu huấn luyện để gom nhóm. Giả sử,
ti , i = 1,..., M , là M vectơ đặc trưng đại diện cho tập ảnh trong cơ sở dữ liệu, mỗi

vectơ ti sẽ có số chiều là T. Chúng tôi sẽ áp dụng thuật toán k-means như đã trình
bày trong chương 2 để tiến hành gom nhóm tập vectơ đặc trưng này. Mỗi vectơ
đặc trưng như vậy được xem như một đối tượng mà thuật toán k-means sẽ được áp
dụng trên chúng. Để sử dụng được k-means, thì ta cần phải chỉ rõ k - số nhóm là
bao nhiêu, trọng tâm xác định thế nào, sử dụng hàm độ đo lân cận thế nào để gán

81
mỗi vectơ với trọng tâm của từng nhóm. Sau đây, chúng tôi sẽ đưa ra cách giải
quyết làm rõ các câu hỏi trên.

Giá trị k mà chúng tôi chọn chính là số lượng người mà ảnh khuôn mặt của
họ được lưu trong cơ sở dữ liệu. Chẳng hạn, tập dữ liệu bao gồm các ảnh của 40
người, ta chọn k = 40. Bởi vì mỗi thành phần trong các vectơ đặc trưng này đều là
số thực, nghĩa là ti  IRT , i = 1,..., M , do đó, hàm độ đo lân cận mà chúng tôi sử

dụng chính là khoảng Euclide bình phương ( L22 ), trọng tâm của mỗi nhóm được
xác định là trung bình cộng của tất cả các đối tượng trong nhóm đó.

Ký hiệu Mô tả

t Một đối tượng.

Ci Nhóm thứ i

ci Trọng tâm của nhóm Ci.

c Trọng tâm của tất cả các đối tượng.

mi Số đối tượng trong nhóm thứ i.

M Số đối tượng trong tập dữ liệu.

k Số nhóm.

Bảng 5: Bảng ký hiệu 2.

Khoảng cách Euclide bình phương giữa hai đối tượng được xác định như
sau :

d (ti ,t j )2 = (ti1 − t j1 ) 2 + (ti 2 − t j 2 ) 2 + ... + (tiT − t jT ) 2 (3.10)

Trọng tâm của mỗi nhóm được xác định như sau :

1
ci =
mi
 t , i = 1,..., k
tCi
(3.11)

82
Khoảng cách Euclide bình phương giữa một đối tượng và một trọng tâm
được xác định như sau:

d (t, ci )2 = (t − c )
1 i1
2
+ (t2 − ci 2 ) 2 + ... + (tT − ciT ) 2 (3.12)

Trong tập dữ liệu ảnh khuôn mặt người của chúng tôi, mỗi người có thể có
nhiều bức ảnh để lưu trữ. Ứng với mỗi người, chúng tôi chọn ngẫu nhiên một
vectơ đặc trưng trong các vectơ đặc trưng đại diện cho ảnh của người đó. Như vậy,
chúng tôi chọn được k vectơ đặc trưng làm trọng tâm ban đầu cho các nhóm. Khi
đó, chúng tôi sẽ áp dụng thuật toán k-means để chia cơ sở dữ liệu ảnh thành k
nhóm và vectơ đại diện cho từng nhóm cũng chính là trọng tâm của nhóm đó.

Mô hình minh họa cho quá trình gom nhóm và quá trình kiểm tra lần lượt
được mô tả như hình 3.5 và hình 3.6.
Nhóm 1,
trọng tâm c1.

Tập ảnh Tập các vector


đặc trưng Gabor Thuật toán Nhóm 2,
trong cơ sở
có số chiều T đại k-means trọng tâm c2.
dữ liệu.
diện cho tập ảnh.

…………

Nhóm k,
trọng tâm ck.

Hình 3.5 – Mô hình quá trình huấn luyện gom nhóm dùng k-means.

83
Nhóm thứ 1, Nhóm thứ 2, Nhóm thứ k,
trọng tâm c1. trọng tâm c2. …………… trọng tâm ck.

Vectơ đặc trưng Gabor có Chọn nhóm thứ i , với


Ảnh cần kiểm số chiều là T , G(I) + d(G(I),ci) bé nhất
tra, I

Chọn một vectơ

x = G(I ) − G( J ) đặc trưng trong


nhóm i ,G(J).

Bộ phân loại mạnh H


 H ( x) = −1
được huấn luyện từ

 H ( x) = 1
AdaBoost

Ảnh J với
T

 h ( x )
t =1
t t

Hình 3.6 – Mô hình quá trình kiểm tra. lớn nhất

84
Chương 4
Cài đặt chương trình thực nghiệm,
kết quả và đánh giá
Trong chương này chúng tôi sẽ trình bày phương pháp cài đặt thực nghiệm,
bao gồm cách xây dựng bộ dữ liệu huấn luyện, bộ dữ liệu kiểm tra, chương trình
ứng dụng và các kết quả đạt được.

4.1 Thu thập và chuẩn hóa tập dữ liệu


Trong luận văn này, hệ thống nhận dạng của chúng tôi là hệ thống nhận
dạng tĩnh – tĩnh. Tập dữ liệu ảnh khuôn mặt người mà chúng tôi sử dụng là một
phần được lấy từ nguồn ORL của T&T. Các ảnh trong nguồn dữ liệu này có định
dạng là “PGM“ và kích thước là 92 x 112 pixel. Chúng tôi chọn ra 200 ảnh khuôn
mặt của 40 người, như vậy mỗi người sẽ có 5 ảnh được lưu trong tập dữ liệu.

Nhận xét về tập dữ liệu: các ảnh này chỉ chứa phần đầu của người được
chụp, khuôn mặt người được chụp chính diện và ở khoảng giữa của ảnh, mỗi
khuôn mặt đều có đầy đủ các thông tin đặc trưng như mũi, miệng, cằm, gò má, hai
mắt, hai chân mày,... Các ảnh này bao gồm cả hai đối tượng nam và nữ. Một số
khuôn mặt hơi nghiêng với góc quay không đáng kể và có biểu cảm trên khuôn
mặt khác nhau như: bình thường, vui, buồn, cười,… Một vài đối tượng có đeo
kính hoặc có râu. Các ảnh được chụp trong các điều kiện ánh sáng khác nhau.
Điều này cho thấy tập dữ liệu mà chúng tôi chọn khá đa dạng….

Để huấn luyện cũng như kiểm tra, chúng tôi tiến hành chuẩn hóa các ảnh
trong tập dữ liệu thu thập trên để xây dựng nên tập dữ liệu được sử dụng để tiến
hành thử nghiệm trong luận văn này. Quá trình chuẩn hóa bao gồm các thao tác
sau:

85
• Chuyển tất cả ảnh về cùng định dạng “JPG” .

• Chuyển tất cả ảnh về thành ảnh xám với giá trị mức xám từ 0-
255.

• Loại bỏ những thành phần dư thừa (chẳng hạn như phần nền sau
đối tượng được chụp ), chỉ giữ lại những thông tin quan trọng
trên khuôn mặt, nghĩa là ảnh chỉ chứa các đặc trưng quan trọng
trên khuôn mặt người như: mắt, mũi, chân mày, miệng, gò má,
cầm.

• Vị trí mũi nằm ở trung tâm của ảnh.

• Chuẩn hóa các ảnh về cùng một kích thước là 32x32 pixel.

Như vậy, sau khi chuẩn hóa xong, chúng tôi có được một bộ cơ sở dữ liệu
gồm 200 ảnh của 40 người, mỗi người có 5 ảnh, các ảnh có kích thước bằng nhau
và chỉ chứa những thành phần đặc trưng trên khuôn mặt. Trong 5 ảnh của một
người, chúng tôi chọn ra 3 ảnh để huấn luyện và 2 ảnh để kiểm tra. Vậy tập huấn
luyện của chúng tôi sẽ có 120 ảnh và tập kiểm tra sẽ có 80 ảnh.

Hình 4.1 sau đây là một phần của tập dữ liệu của chúng tôi, ba cột ảnh đầu
là ảnh đem huấn luyện, hai cột ảnh cuối là ảnh đem kiểm tra.

Hình 4.1 – Tập dữ liệu thực nghiệm.

86
4.2 Cài đặt chương trình thực nghiệm
Chúng tôi cài đặt chương trình ứng dụng bằng Matlab, version 7.0.1.24704
(R14) Service Pack 1. Chúng tôi sử dụng Matlab vì Matlab có những thư viện và
các hàm hỗ trợ rất tốt cho việc xử lý ảnh. Chương trình ứng dụng này nhằm kiểm
tra xem người cần nhận dạng có trong tập dữ liệu hay không? Nếu có sẽ xuất ra
ảnh và tên của người đó trong tập dữ liệu, ngược lại sẽ thông báo người đó không
có trong tập dữ liệu.

Đối với các ảnh đem huấn luyện, chúng tôi sử dụng 40 bộ lọc Gabor để rút
trích đặc trưng cho các ảnh đó. Mỗi vector đặc trưng Gabor của một ảnh có số
chiều là 32.32.40 = 40960 (chiều). Mỗi vector như vậy, chúng tôi sẽ ghi chúng ra
thành file text để tiện cho việc sử dụng lại sau này, bởi vì sau khi dùng AdaBoost
để chọn lựa các đặc trưng quan trọng để biểu diễn lại cho ảnh, ta không cần tính
toán lại mà chỉ duyệt tìm vị trí các đặc trưng đó trong các vector đặc trưng Gabor
có số chiều là 40960.

Như vậy, chúng tôi có tất cả 120 vector đặc trưng Gabor có số chiều 40960
để đại diện tạm thời cho 120 ảnh đem huấn luyện. Để có thể tiến hành chọn lựa
đặc trưng và tìm phân loại mạnh bằng cách dùng AdaBoost chúng ta cần xây dựng
nên tập mẫu hai lớp đem huấn luyện.

Số lượng mẫu trong không gian IS (mẫu dương tính) mà chúng tôi chọn là
3
40    = 120 mẫu . Ta biết rằng số lượng mẫu trong không gian ES (mẫu âm tính)
 2
 40  3  3
rất lớn so với số lượng mẫu IS cụ thể là   − 40    = 7020 mẫu. Do đó, để
2   2
xây dựng nên tập mẫu huấn luyện bằng AdaBoost, chúng tôi tiến hành chọn ngẫu
nhiên 1600 mẫu từ 7020 mẫu âm tính trong không gian ES. Như vậy, tập mẫu
huấn luyện bằng AdaBoost bao gồm 1720 mẫu, trong đó có 120 mẫu dương tính
và còn lại 1600 mẫu âm tính.

87
Ta biết rằng số lượng đặc trưng quan trọng cần chọn sau khi huấn luyện
bằng AdaBoost cũng chính là số vòng lặp T trong quá trình huấn luyện. Ở đây,
chúng tôi chọn T = 200, nghĩa là ta chỉ cần 200 đặc trưng Gabor để đại diện cho
các ảnh trong tập dữ liệu đem huấn luyện và tập dữ liệu đem kiểm tra.

4.3 Giao diện chương trình


Chương trình ứng dụng của chúng tôi có giao diện đơn giản, hình 4.2.

Hình 4.2 – Giao diện chương trình thực nghiệm.

Chương trình bao gồm các nút cơ bản :

• Nút “Load” – nhấp vào nút này để tìm ảnh mà chúng ta cần
nhận dạng.

• Nút “Gabor Wavelet” – nhấn vào nút này sẽ hiện ra phần


thực của 40 bộ lọc Gabor được sử dụng để rút trích đặc trưng.

• Nút “Gaborface” – nhấn vào nút này sẽ hiện ra đại diện


Gabor cho ảnh (hay là các vector đặc trưng Gabor có số chiều
40960).

88
• Nút “Recognize” – nhấn vào nút để kiểm tra ảnh cần nhận
dạng có nằm trong tập dữ liệu hay không? Nếu có sẽ xuất ra
ảnh và tên của người đó bên dưới, ngược lại thông báo người
đó không có trong tập dữ liệu.

• Nút “Exit” – nhấn vào nút này sẽ đóng lại chương trình.

Nhấn nút “Gabor Wavelet”, hình 4.3.

Nhấn nút “Gaborface”, hình 4.4.

Nhấn nút “Recognize”, hình 4.5.

Hình 4.3 – Phần thực của 40 bộ lọc Gabor.

89
Hình 4.4 – Đại diện Gabor cho ảnh.

Hình 4.5 – Kết quả nhận dạng.

90
4.4 Kết quả
Với số lượng tập mẫu đem huấn luyện là 1720 (gồm 120 mẫu dương tính
và 1600 mẫu âm tính) và số đặc trưng đã lựa chọn là T = 200 thì thời gian huấn
luyện là 10.741giây với lỗi huấn luyện là 6,686% , tương ứng 93,313% mẫu huấn
luyện được phân loại đúng lớp. Trong đó, tất cả các mẫu dương tính đều được
phân đúng lớp và có 115 mẫu âm tính bị phân loại sai lớp, bảng 6.

Việc chọn lựa được 200 đặc trưng quan trọng để đại diện lại cho các ảnh
chính lại việc ta lựa chọn vị trí nào trên ảnh và lựa chọn bộ lọc Gabor nào trong
số 40 bộ lọc Gabor được sử dụng. Qua kết quả huấn luyện chọn ra được 200 đặc
trưng Gabor, ta thấy rằng các vị trí được chọn trên ảnh phần lớn tập trung ở vùng
mắt, chân mày, mũi, miệng,… các vị trí trên điều là những vị trí đặc biệt quan
trọng để phân biệt các khuôn mặt với nhau, hình 4.6, hình 4.7.

Hình 4.6 – Các vị trí trên ảnh được lựa chọn

Hình 4.7 – Năm bộ lọc Gabor được chọn.

Sử dụng k-means để gom nhóm tập ảnh huấn luyện gồm 120 ảnh với k = 40
, kết quả là có 11 ảnh bị gom sai nhóm. Quá trình nhận dạng có 80 ảnh cần kiểm
tra thì kết quả cho thấy là có 69 ảnh được nhận dạng chính xác và có 11 ảnh được
nhận dạng không chính xác. Do đó, tỉ lệ nhận dạng chính xác đến 86,25%.

Nếu không sử dụng k-means để gom nhóm tập huấn luyện thì quá trình
kiểm tra 80 ảnh có kết quả là 72 ảnh được nhận dạng chính xác và có 8 ảnh được

91
nhận dạng không chính xác. Do đó, tỉ lệ nhận dạng chính xác đến 90%. Tuy nhiên,
thực thi chương trình lâu hơn. Ta có bảng thống kê kết quả của cả hai trường hợp,
bảng 7.

Số đặc Mẫu bị phân sai lớp


Mẫu huấn Thời gian Lỗi huấn
Mẫu IS Mẫu ES trưng được
luyện huấn luyện luyện
chọn (T) Mẫu IS Mẫu ES

120 1600 1720 200 10.741 giây 0 115 6,686%

Bảng 6: Kết quả huấn luyện

Số ảnh Số ảnh Số ảnh Thời gian


Tỉ lệ chính xác
cần nhận nhận dạng nhận dạng trung bình
(%)
dạng đúng sai

AdaBoost kết 0.1 giây


80 69 11 86,25
hợp k-means

AdaBoost 80 72 8 90 1 giây

Bảng 7: Kết quả của AdaBoost và AdaBoost kết hợp k-means

4.5 Đánh giá


4.5.1 Ưu điểm

Trong đề tài này, trên cơ sở tìm hiểu phương pháp học AdaBoost, Gabor
wavelet và phương pháp gom nhóm, chúng tôi đã kết hợp các phương pháp trên lại
với nhau và áp dụng để giải quyết bài toán nhận dạng khuôn mặt người.

Khi tìm hiểu về bài toán nhận dạng khuôn mặt người, chúng tôi đã tiếp cận
với phương pháp nhận dạng như AdaBoost cũng như phương pháp chọn đặc trưng
cho AdaBoost là Gabor wavelet.

92
Đối với con người, việc nhận dạng khuôn mặt là việc không khó. Tuy
nhiên, với máy tính việc nhận dạng tự động đôi khi không dễ thực hiện được. Việc
chọn phương pháp để biểu diễn thông tin ảnh cho máy lưu trữ để nhận dạng đã
được nghiên cứu từ lâu. Trong đề tài này, chúng tôi chọn Gabor wavelet để rút
trích các đặc trưng trong ảnh bởi vì mỗi thành phần trong họ Gabor wavelet mô
hình một cấu trúc không gian vùng tiếp thu của một tế bào đơn trong vỏ não
nguyên thủy ở động vật có vú . Phân tích Gabor có thể xem như một chiếc kính
hiển vi nhạy cảm với hướng và tỷ lệ [5, 6]. Do đó, việc chọn Gabor wavelet là hợp
lý cho vấn đề này. Đồng thời, việc sử dụng Gabor wavelet để rút trích vectơ đặc
trưng Gabor cho ảnh thực hiện khá nhanh.

Từ khi AdaBoost ra đời, nó đã được sử dụng phổ biến trong nhiều lĩnh vực,
đặc biệt là lĩnh vực phân loại mẫu và nhận dạng mẫu. Với những thành công lớn
trong hai lĩnh vực trên chúng tôi đã lựa chọn AdaBoost là công cụ chính để giải
quyết bài toán nhận dạng mặt người. Ngoài việc xây dựng nên bộ phân loại mạnh
dùng trong quá trình phân lớp, AdaBoost còn hữu ích trong việc chọn lựa các đặc
trưng quan trọng để xây dựng nên các vectơ đặc trưng có số chiều nhỏ đại diện
cho ảnh.

Bên cạnh đó, chúng tôi đã áp dụng phương pháp gom nhóm dùng thuật toán
k-means để giúp cho quá trình kiểm tra có thời gian xử lý nhanh hơn thay vì phải
duyệt hết tất cả các ảnh trong cơ sở dữ liệu, đồng thời k-means còn giúp hạn chế
việc phân loại sai lớp.
Tập dữ liệu được chọn tương đối đa dạng, các khuôn mặt trong ảnh có sự
biến đổi phong phú (chẳng hạn, có đeo kính, có râu, có các cảm xúc khác
nhau,…). Chương trình ứng dụng nhận dạng khá tốt với tỉ lệ nhận dạng chính xác
là 86.25% và việc chọn lựa các đặc trưng Gabor tại các vị trí rất phù hợp với các
đặc trưng trên khuôn mặt người (chẳng hạn vùng mắt , mũi ,…).
4.5.2 Khuyết điểm

93
Hệ thống nhận dạng với cách tiếp cận về so khớp đặc trưng và từ các
phương pháp học thì rất mạnh nhưng tích chặt chẽ về mặt toán học chưa cao,
nhiều trường hợp tối ưu hóa đòi hỏi chúng ta phải thử nghiệm nhiều lần với nhiều
bộ tham số khác nhau.

Khi sử dụng Gabor wavelet, chúng ta phải đối diện với một vấn đề là sự lựa
chọn các thông số của nhân Gabor, chẳng hạn như hướng, tỉ lệ, tần số sóng,
khoảng cách giữa các nhân Gabor trong miền tần số,… Việc lựa chọn các thông số
trên không thể thực hiện tổng quát. Tùy vào từng ứng dụng cụ thể và tập cở sở dữ
liệu mẫu dùng trong từng bài toán khác nhau mà ta có cách lựa chọn khác nhau.
Thông qua một quá trình thực nghiệm lâu dài, các nhà nghiên cứu đã lựa chọn các
thông số như đã trình bày ở trên áp dụng cho Gabor wavelet và thấy rằng việc
chọn các thông số như vậy sẽ có kết quả tốt nhất.

Khi sử dụng AdaBoost, một số khó khăn đặt ra về việc lựa chọn số lượng
mẫu và thời gian khi huấn luyện. AdaBoost đòi hỏi phải có số lượng mẫu lớn để
huấn luyện được bộ phân loại đạt hiệu quả. Viola và Jones [20] cần đến 4916 ảnh
mặt người để huấn luyện cho hệ thống xác định khuôn mặt người dùng AdaBoost.

Khi sử dụng hai không gian IS và ES, chúng ta phải đối diện với một vấn
đề về sự mất cân đối giữa số lượng mẫu trong hai không gian này. Số lượng mẫu
trong không gian IS lại rất nhỏ so với số lượng mẫu trong không gian ES, do đó
việc chọn số lượng mẫu trong không gian ES kết hợp với các mẫu trong không
gian IS để xây dựng nên tập mẫu đem huấn luyện cho AdaBoost là vấn đề chưa
được giải quyết triệt để. Nếu chúng ta lựa chọn tất cả các mẫu trong không gian
ES để kết hợp với tất cả các mẫu trong không gian IS để đem huấn luyện thì tập
mẫu huấn luyện có kích thước quá lớn, bên cạnh đó số lượng các vectơ đặc trưng
trong mẫu lại có số chiều rất lớn, điều này đòi hỏi thời gian huấn luyện rất lâu.
Một cách khắc phục, là chúng ta chọn ngẫu nhiên một số lượng mẫu trong không
gian ES (có thể chọn lớn gấp 10 lần số lượng mẫu trong không gian IS) để kết hợp
với các mẫu trong không gian IS làm tập mẫu huấn luyện. Tuy nhiên điều này đôi

94
khi là ảnh hưởng xấu đến kết quả của bộ phân loại được huấn luyện bởi vì lượng
mẫu được chọn ngẫu nhiên một lần trong không gian ES đôi khi không bao quát
đầy đủ thông tin của tất cả sự khác biệt giữa các ảnh và quá trình huấn luyện chỉ
được thực hiện đúng một lần để tìm ra bộ phân loại mạnh, đều này dẫn đến việc
các mẫu bị phân loại sai lớp sẽ không được huấn luyện lại. Do đó, cần phải có một
phương pháp tốt hơn để khắc phục hạn chế này và chúng tôi quyết định chọn
phương pháp sử dụng cấu trúc phân tầng. Đây cũng là một hướng phát triển của
chúng tôi cho đề tài này.

Trong quá trình sử dụng thuật toán k-means để tiến hành phân nhóm cơ sở
dữ liệu ảnh phục vụ trong quá trình kiểm tra. Việc chọn số nhóm k để phân nhóm,
cũng như chọn ngẫu nhiên các trọng tâm ban đầu của mỗi nhóm thì phụ thuộc một
cách chủ quan về người giám sát. Như đã trình bày về cách chọn hai thông số ở
trên, đó thật sự là ý tưởng do chúng tôi đưa ra lúc đầu. Do đó, để có thể đạt được
kết quả tối ưu nhất thì phải trải qua thực nghiệm với nhiều bộ hệ số khác nhau, ta
mới có thể tìm ra được một phương án hợp lý và chính xác nhất.
Độ lớn của tập cơ sở dữ liệu còn rất hạn chế, chỉ mới thử nghiệm trên 200
ảnh của 40 người. Số lượng ảnh của mỗi người tuy có nhiều biến đổi nhưng không
quá nhiều (chưa có trường hợp nghiêng hơn 45o trở lên), điều này có thể làm giảm
chất lượng của hệ thống nhận dạng khi áp dụng trong thế giới thực mà trong đó
khuôn mặt và môi trường thay đổi liên tục.
4.5.3 Hướng phát triển

Ta biết rằng bài toán nhận dạng khuôn mặt người vốn được nghiên cứu từ
những năm 1970, và cho đến nay, rất nhiều nghiên cứu lẫn ứng dụng cho bài toán
này đã ra đời. Tuy nhiên, bài toán nhận dạng khuôn mặt người vẫn còn nhiều khó
khăn , thử thách bởi những biến đổi rất đa dạng, phong phú trên khuôn mặt. Do
đó, có rất nhiều phương pháp khác nhau để giải quyết bài toán này. Với cách giải
quyết dùng Gabor Wavelet và AdaBoost mà chúng tôi đã áp dụng cũng chỉ được
các chuyên gia tiến hành nghiên cứu trong khoảng chục năm trở lại đây. Với

95
những hạn chế về mặt kiến thức, trình độ cũng như thời gian thực hiện, chúng tôi
kết thúc đề tài này với nghiên cứu một phần nhỏ về bài toán nhận dạng mẫu trong
thị giác máy tính cũng như khoa học máy tính nói chung. Những định hướng đưa
ra dưới đây, chúng tôi hy vọng sẽ có thể thực hiện được để ngày càng hoàn thiện
khả năng tương tác giữa người và máy tính thông qua hệ thống nhận dạng khuôn
mặt.

Để có thể tìm ra bộ phân loại tốt và đạt hiệu quả cao nhất, đồng thời cố
gắng tận dụng tối đa số lượng mẫu trong không gian ES để kết hợp với các mẫu
trong không gian IS tạo thành một tập huấn luyện cho AdaBoost. Chúng tôi sẽ sử
dụng cấu trúc phân tầng để tìm ra bộ phân loại mạnh dùng cho quá trình phân lớp.
Cấu trúc phân tầng đã được áp dụng rất thành công vào các ứng dụng khác nhau.
Hệ thống của Rowley [9] để giải quyết bài toán xác định vị trí khuôn mặt người là
môt cấu trúc phân tầng với hai mạng nơron nhân tạo: mạng nơron nhân tạo thứ
nhất khá đơn giản nhằm mục đích chính là loại bỏ các hình nền có độ khó thấp,
mạng nơron nhân tạo thứ hai phức tạp hơn, đảm nhiệm việc nhận dạng các mẫu đi
qua mạng nơron nhân tạo thứ nhất. Điều này chứng tỏ cách tổ chức phân tầng
nhằm loại nhanh các mẫu có độ phức tạp thấp thực sự đẩy nhanh tốc độ của hệ
thống, ngoài ra còn có mô hình Cascade of Boosted Classifiers do Viola và Jones
đưa ra để giải quyết bài toán xác định vị trí khuôn mặt người, Cascade of Boosted
Classifiers là mô hình Cascade of Classifers với mỗi bộ phân loại được xây dựng
bằng AdaBoost sử dụng Haar Feature [8, 20].

Chúng tôi sẽ sử dụng cấu trúc phân tầng bao gồm nhiều tầng, mỗi tầng sẽ
được huấn luyện bằng AdaBoost, trên mỗi tầng tập mẫu huấn luyện sẽ được chọn
lại, ta gọi đây là quá trình tái lấy mẫu, các mẫu trong không gian IS sẽ được cố
định và không đổi, trong khi đó các mẫu trong không gian ES sẽ được tái lấy mẫu.
Trên mỗi tầng sẽ xây dựng được một bộ phân loại mạnh Hi và một phân loại mạnh
thu được sau quá trình huấn luyện đa tầng là sự kết hợp tuyến tính từ các bộ phân
loại mạnh trên mỗi tầng:

96
c
H =  Hi (4.1)
i =1

trong đó c là số tầng.

Mô hình phân tầng để huấn luyện được mô tả trong bảng 8.

1. Tạo ngẫu nhiên một tập S làm tập mẫu huấn luyện. Trong S bao
gồm tất cả các mẫu dương tính trong không gian IS và chọn ngẫu nhiên các
mẫu trong không gian ES làm mẫu âm tính có số lượng gấp 12 lần số lượng
mẫu dương tính. Gọi N là kích thước của tập mẫu này.

2. For i = 1 : c

2.1. Dùng AdaBoost huấn luyện một bộ phân loại mạnh Hi dựa
trên tập mẫu S.

2.2. Tái lấy mẫu, cập nhật lại S. Tập S lúc này bao gồm các mẫu
dương tính giống như ở tầng trước, các mẫu âm tính được chọn ngẫu nhiên
trong không gian ES thỏa điều kiện các mẫu này bị phân loại sai lớp bởi bộ
phân loại mạnh ở tầng trước. Tập S cũng có kích thước là N.

3. Bộ phân loại mạnh H :

c
H =  Hi
i =1

hay :

 c  T 
H ( x) = sign     t h t ( x)  
 i =1  t =1 i 
Bảng 8: Mô hình phân tầng AdaBoost

97
Trong nhiều trường hợp, huấn luyện một phân lớp mạnh mà không sử dụng
cấu trúc phân tầng thì hiếm khi đạt kết quả tốt. Tuy nhiên, khi sử dụng cấu trúc
phân tầng, bộ phân loại mạnh cuối cùng sẽ đạt được hiệu quả tốt hơn hẳn đồng
thời các bộ phân loại yếu sẽ học được nhiều đặc trưng Gabor hơn. Do đó, ta cũng
có thể chọn lựa được nhiều đặc trưng Gabor hơn so với việc không dùng cấu trúc
phân tầng để xây dựng nên vectơ đặc trưng mới đại diện cho ảnh. Có một hạn chế
nhỏ khi dùng cấu trúc phân tầng là các bộ phân loại yếu ở tầng sau phải được tính
lại hoàn toàn mà không được kế thừa từ các tầng trước.

Ngoài ra, để cho quá trình gom nhóm cơ sở dữ liệu đạt hiệu quả và độ
chính xác cao hơn. Chúng tôi đề ra một hướng phát triển là sử dụng một biến thể
của thuật toán k-means là bisecting k-means [22]. Bisecting k-means là một dạng
mở rộng của k-means, bisecting k-means ít bị ảnh hưởng về vấn đề khởi tạo trọng
tâm ban đầu và đạt hiệu quả cao hơn so với k-means, đồng thời làm tăng tốc độ
của k-means bằng cách giảm số lượng tính toán lân cận giữa trọng tâm và các đối
tượng khác.

Tìm hiểu thêm các phương pháp chọn đặc trưng khác để biểu diễn cho ảnh,
cũng như các phương pháp học khác để tìm ra bộ phân loại dùng để phân lớp.
Chẳng hạn như dùng phép biến đổi Haar-like để rút trích ra các đặc trưng Haar đại
diện cho ảnh, dùng phương pháp học SVM để phân lớp ảnh khuôn mặt. Đánh giá
các phương pháp này với phương pháp đã đề xuất trong đề tài để thấy được các ưu
điểm và hạn chế mà sau đó có thể đề xuất ra phương pháp tốt hơn.

Sử dụng tập dữ liệu lớn hơn, tăng số người và số ảnh lên nhiều hơn, tăng
dần số mẫu học và đặc biệt các biến đổi trên khuôn mặt càng phong phú đa dạng
thì khi đó ta có thể đánh giá chính xác hệ thống nhận dạng hơn và có thể nâng cao
được khả năng nhận dạng tổng quát cho hệ thống, cũng như đáp ứng được nhu cầu
thực tế từ thế giới thực khi mà số người cần phân loại lên đến hàng nghìn, hàng
triệu và hàng tỉ người.

Phát triển thành một sản phẩm có thể được ứng dụng trong đời sống xã hội.

98
Tài liệu tham khảo
[1] W. Zhao, R. Chellappa, P. J. Phillips and A. Rosenfeld, “Face Recognition: A
Literature Survey”, In ACM Computing Surveys, Vol.35, No.4, pages 399-458,
2003.

[2] Phạm Thế Bảo, Nguyễn Thành Nhựt, Cao Minh Thịnh, Trần Anh Tuấn và
Phan Phúc Doãn, “Tổng quan các phương pháp xác định khuôn mặt người”, Tạp
chí Công nghệ thông tin & Truyền thông, http://www.tapchibcvt.gov.vn.

[3] Julien Meynet, “Fast Face Detection Using AdaBoost”,


http://infoscience.epfl.ch/record/86954/files/Meynet2003_923.pdf, 95 pages, 16th
July 2003.

[4] Yoav Freund and Robert E. Schapire, “A decision-theoritic generalization of


online learning and an application to boosting”, In Journal of Computer and
System Sciences, 55(1): 119-139, 1997.

[5] Burcu Kepenekci, “Face Recognition Using Gabor Wavelet Transform”, A


Thesis Submitted To The Graduate School Of Natural Sciences Of The Middle
East Technical University, September 2001.

[6] Javier R. Movellan, “Tutorial on Gabor Filters”, Technical Report, MPLab


Tutorials, Univ. of California, San Diego, 2005.

[7] Ulas, Bagci and Li Bai, “Parallel AdaBoost Algorithm For Gabor Wavelet
Selection In Face Recognition”, Computer Research Repository (CoRR), July
2009.

[8] Lu Boun Vinh và Hoàng Phương Anh, “Nghiên cứu và xây dựng hệ thống
nhận dạng mặt người dựa trên FSVM và AdaBoost”, Đề tài luận văn tốt nghiệp cử
nhân tin học, Khoa công nghệ thông tin, Trường Đại Học Khoa Học Tự Nhiên
TP.HCM, 2004.

99
[9] Đinh Bá Thắng và Đặng Bác Văn, “Tìm hiểu các kỹ thuật áp dụng cho bài toán
nhận dạng ký hiệu người câm”, Đề tài luận văn tốt nghiệp cử nhân tin học, Khoa
công nghệ thông tin , Trường Đại Học Khoa Học Tự Nhiên TP.HCM, 2005.

[10] Peng Yang, Shiguang Shan, Wen Gao, Stan Z. Li and Dong Zhang, “Face
Recognition Using Ada-Boosted Gabor Features”, Proceeding of the 6th IEEE
International Conference on Automatic Face and Gesture Recognition, pp. 356-
361, Korea, May 2004.

[11] M. Zhou and H. Wei, “Face verification using Gabor Wavelets and
AdaBoost”, 18th International Conference on Pattern Recognition, pp. 404-407,
2006.

[12] Boris Ruf, “Face recognition using boosting”, M.S. thesis, Ecole
Polytechnique F´ed´erale de Lausanne, Lausanne, Switzerland, 2007.

[13] Yoav Freund and Robert E. Schapire, “A Short Introduction to Boosting”,


Journal of Japanese Society for Artificial Intelligence, 14(5):771-780, September
1999.

[14] LE DINH DUY, “ Human Face Processing Techniques With Application To


Large Scale Video Indexing”, Ph.D. Thesis, Department of Informatics, School of
Multidisciplinary Sciences, The Graduate University for Advanced Studies
(SOKENDAI), September 2006.

[15] A.K.Jain and R.C.Dubes, “Algorithms for Clustering Data”, Prentice Hall
Advanced Reference Series, Prentice Hall, March 1988.

[16] Marios Kyperountas, Anastasios Tefas and Ioannis Pitas, “Face Recognition
via Adaptive Discriminant Clustering”, 15th IEEE International Conference on
Image Processing, 2008.

[17] Youngjin Lee and Seungjin Choi, “Minimum entropy, k-means, spectral
cluster-ing”, Proceedings of the International Joint Conference on Neural
Networks (IJCNN), pp. 117-122, Budapest, Hungary, July 25-29, 2004.

100
[18] M. Zhou, H. Wei and S. J. Maybank, “Gabor Wavelets and AdaBoost in
Feature Selection for Face Verification”, Applications of Computer Vision 2006
workshop in conjuction with ECCV 2006, pp. 101-109 Graz, Austria, 12 May
2006.

[19] Linlin Shen, Li Bai and Daniel Bardsley, Yangsheng Wang, “Gabor Feature
Selection for Face Recognition using Improved AdaBoost Learning”, Proceedings
of International Workshop on Biometric Recognition System, in conjunction with
ICCV’05, 2005.

[20] P. Viola and M. J. Jones, “Robust real-time face detection”, International


Journal of Computer Vision, 57(2):137--154, May 2004.

[21] Lei Zhang, Stan Z. Li, Zhi Yi Qu and Xiangsheng Huang, “Boosting Local
Feature Based Classifiers for Face Recognition”, In Proc. of CVPR Workshop on
Face Processing in Video, Washington DC, pp. 87-93, 2004.

[22] Pang-Ning Tan, Michael Steinbach and Vipin Kumar, “Introduction to Data
Mining”, Chapter 8 - Cluster Analysis: Basic Concepts and Algorithms, Pearson
Addison-Wesley, pp. 488-568, 2006.

[23] Baback Moghaddam, Wasiuddin Wahid and Alex Pentland, “Beyond


Eigenfaces: Probabilistic Matching for Face Recognition”, the 3rd IEEE Int’l
Conference on Automatic Face & Gesture Recognition, Nara, Japan, April , 1998.

[24] Graps A.L., “An Introduction to Wavelets”, IEEE Computational Sciences


and Engineering, Volume 2, Number 2, pp 50-61, Summer 1995.

101

You might also like