nhan dang khuon mat
DESCRIPTION
Nhan Dang Khuon MatTRANSCRIPT
Bao cao môn Ly Thuy t Nh n D ngê â a
BỘ CÔNG THƯƠNG
TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
- Khoa Công Nghệ Thông Tin -
Báo cáo bài tập lớn môn
Ly thuyêt nhân dang
GV hướng dẫn: Th.s Trân Hung Cương
Sinh viên thực hiện: Nhóm 5 - Lớp KHMT2 - K3
Thành viên trong nhóm:1. Nguyên Thành Trung
2. Nguyên Tuân Dương
3. Nguyên Huy Thiện
4. Nguyên Văn Tin
5. Trương Thi Phương
Nhom 9 Page 1
Bao cao môn Ly Thuy t Nh n D ngê â a
Hà nôi ngày ...thang 6 năm 2011
Nhận xet cua giáo viên
........................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
................................................................................................................
...........
Hà Nội, ngày tháng năm 2011
Giáo viên
Ths. Trân Hung Cương
Nhom 9 Page 2
Bao cao môn Ly Thuy t Nh n D ngê â a
Mục lục
Nhân xet cua giao viên 2
Mục lục 3
Lơi noi đâu 5
Chương I: Tông quan vê xac đinh măt ngươi 6
Giới thiệu chung 6
1. Định nghĩa bài toan xac định mặt người 6
2. Ứng dụng của phương phap xac đinh mặt người 6
3. Việc xac định khuôn mặt người có những khó khăn nhất định như: 7
4. Phạm vi đề tài 8
5. Cac phương phap 9
Chương II. Thuât giải Adaboost 10
1. Thuật giải Adaboost 12
a) Định nghĩa...............................................................................................12
b) Tư tưởng..................................................................................................12
c) Thuật toan Adaboost...............................................................................15
2. Haar-Like 18
Nhom 9 Page 3
Bao cao môn Ly Thuy t Nh n D ngê â a
a. Đặc trưng Haar-Like...............................................................................18
b. Lợi ích.....................................................................................................19
3. Cascade of Classifiers 21
4. Cascade of boosting classifiers 23
Chương III: Xây dưng chương trinh 25
1. Tông quan về OpenCV 25
2. Hệ thông phat hiện mặt người 26
3. Phân tích và thiêt kê hệ thông phat hiện mặt người 27
a. Nhiệm vụ..................................................................................................27
b. Thiêt kê hệ thông.....................................................................................28
4. Thiêt kê giao diện 30
Kêt luât 32
Tài liệu tham khảo 33
Nhom 9 Page 4
Bao cao môn Ly Thuy t Nh n D ngê â a
Lơi nói đâu
Trong nhiều năm qua, có rât nhiều công trình nghiên cứu về bài toán nhận
dạng mặt ngươi. Các nghiên cứu đi từ bài toán đơn giản, từ việc nhận dạng một mặt
ngươi trong ảnh đen trắng cho đến mở rộng cho ảnh mâu và có nhiều mặt ngươi
trong ảnh. Đến nay các bài toán xác đinh mặt ngươi đã mở rộng với nhiều miền
nghiên cứu như nhận dạng khuôn mặt, đinh vi khuôn mặt, theo dõi mặt ngươi hay
nhận dạng cảm xúc mặt ngươi…
Phát hiện mặt ngươi trong ảnh là phân đâu tiên cua một hệ thống nhận dạng
mặt ngươi. Các hệ thống nhận dạng khuôn mặt đươc bắt đâu xây dựng từ những năm
1970, tuy nhiên do còn hạn chế về các luật xác đinh mặt ngươi nên chỉ đươc áp
dụng trong một số ứng dụng như nhận dạng thẻ căn cước. Nó chỉ đươc phát triển
mạnh mẽ từ những năm 1990 khi có những tiến bộ trong công nghệ video và ngày
nay thì các ứng dụng cua xác đinh mặt ngươi đã trở nên phổ biến trong cuộc sống.
Bài toán xác đinh khuôn mặt ngươi (Face detection) là một kỹ thuật máy tinh
để xác đinh các vi tri và các kich thước cua khuôn mặt trong ảnh bât kỳ (ảnh kỹ
thuật số). Kỹ thuật này nhận biết các đặc trưng khuôn mặt và bỏ qua những thứ khác
như: toà nhà, cây cối cơ thể.
Chương trình xác đinh vi tri khuôn mặt ngươi trong bài viết này sử dụng
hướng tiếp cận dựa trên mạo, sử dụng bộ phân loại mạnh AdaBoost là sự kết hơp
Nhom 9 Page 5
Bao cao môn Ly Thuy t Nh n D ngê â a
cua các bộ phân loại yếu dựa trên các đặt trưng Haar-like để xác đinh khuôn mặt.
Mã nguồn đươc dựa trên thư viện mã nguồn mở OpenCV cua Intel để cài đặt.
Chương I: Tổng quan về xác đinh mặt ngươi
Giới thiệu chung
Hơn một thập kỷ qua có rât nhiều công trình nghiên cứu về bài toán xác đinh
khuôn mặt ngươi từ ảnh đen trắng, xám đến ảnh màu như ngày hôm nay.Các nghiên
cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt ngươi nhìn thẳng vào
thiết bi thu hình và đâu ở tư thế thẳng đứng trong ảnh đen trắng.Cho đế ngày hôm
nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cung một ảnh, có
nhiều tư thế thay đổi trong ảnh. Không những vậy mà còn mở rộng cả phạm vi từ
môi trương xung quanh khá đơn giản (trong phòng thi nghiệm) cho đến môi trương
xung quanh rât phức tạp (như trong tự nhiên) nhằm đáp ứng nhu câu thật sự và rât
nhiều cua con ngươi.
1. Định nghĩa bài toan xac định mặt người
Xác đinh khuôn mặt(Face Detection) là một kỹ thuật máy tinh để
xác đinh các vi tri và các kich thước cua các khuôn mặt ngươi trong các
ảnh bât kỳ ( ảnh kỹ thuật số). Kỹ thuật này nhận biết các đặc trưng cua
khuôn mặt và bỏ qua những thứ khác như : tòa nhà, cây cối, cơ thể , ...
2. Ứng dụng của phương phap xac đinh mặt người
Có nhiều ứng dụng đã đươc và đang thiết kế như:
Nhom 9 Page 6
Bao cao môn Ly Thuy t Nh n D ngê â a
Hệ thống tương tác giữa ngươi máy giúp ngươi bi tật hoặc khiếm khuyết
có thể trao đổi. Những ngươi dung ngôn ngữ tay có thể giao tiếp với những
ngươi bình thương ,...
Fan phân đoạn ảnh màu để tìm cạnh thông qua thuật toán tăng vung để xác
đinh các ứng viên. Dung đặc tinh hình ellipse cua khuôn mặt ngươi để xác
đinh ứng viên nào khuôn mặt ngươi ...
Jin xây dựng một bộ lọc để xác đinh ứng viên khuôn mựt ngươi theo màu
da ngươi . Từ ứng viên này tác giả xác đinh khuôn mặt ngươi theo hình
dáng khuôn mặt và các quan hệ đặc trưng về thành phân khuôn mặt , với
mắt phải đươc chọn làm gốc tọa độ để xet quan hệ. Tỷ lệ chinh xác cho
khuôn mặt chụp thẳng trên 80%
Tương lai sẽ phát triển các loại thẻ thông minh có tich hơp sẵn đặc trưng
cua ngươi dung trên đó, khi bât cứ ngươi dung khác dung để truy cập hay
xử lý tại các hệ thống sẽ đươc yêu câu kiểm tra các đặc trưng khuôn mặt
so với thẻ để biết nay có phải là chu thẻ hay không.
Hãng máy chụp hình Canon đã ứng dụng bài toán xác đinh khuôn mặt
ngươi vào máy chụp hình thế hệ mới để cho kết quả hình ảnh đẹp hơn, nhât
là khuôn mặt ngươi.
Khuôn mặt cua con ngươi có những kết câu riêng biệt mà có thể dung để phân
lơi so với các đối tương khác. Dựa vào mức độ cân xứng cua khuôn mặt ngươi để
xác đinh khuôn mặt ngươi. Tuy theo mỗi phương pháp mỗi thuật toán mà có cách
xác đinh khác nhau.
3. Việc xac định khuôn mặt người có những khó khăn nhất định như:
Mặc du có rât nhiều cách để xác đinh mặt ngươi tuy nhiên quá trình thực hiện
lại gặp phải những khó khăn sau :
Nhom 9 Page 7
Bao cao môn Ly Thuy t Nh n D ngê â a
Hướng (pose) cua khuôn mặt đối với máy ảnh, như: nhìn thẳng, nhìn
nghiêng hay nhìn từ trên xuống. Cung trong một ảnh có thể có nhiều
khuôn mặt ở những tư thế khác nhau.
Sự có mặt cua các chi tiết không phải là đặc trưng riêng cua khuôn mặt
ngươi, như: râu quai nón, mắt kinh, ….
Các net mặt (facial expression) khác nhau trên khuôn mặt, như: vui,
buồn, ngạc nhiên, ….
Mặt ngươi bi che khuât bởi các đối tương khác có trong ảnh.
Sự biểu cảm cua khuôn mặt : sự biểu cảm có thể làm thay đổi đáng kể
các đặc trưng và thông số cua khuôn mặt, vi dụ như khuôn mặt cua
cung một ngươi sẽ rât khác khi ngươi đây cươi, tức giận hay sơ hãi …
4. Phạm vi đề tài
Tập trung xác đinh khuôn mặt ngươi và lưu vào CSDL. Do có nhiều khó khăn
khi xác đinh khuôn mặt nên để bài toán đươc chinh xác và giảm độ phức tạp thì cân
những phạm vi yêu câu sau
Các khuôn mặt đươc chụp thẳng hoặc góc nghiêng không đáng kể (be
hơn 10o)
Phông nền cua ảnh không quá phức tạp
Ảnh đươc chụp trong điều kiện ánh sáng bình thương.
Đối với video hoặc webcam, do có thể tách thành các xử lý trên ảnh nên
với những video phức tạp hay webcam quá kem, chương trình sẽ không
thực hiện đươc tốt nhât có thể.
Nhom 9 Page 8
Bao cao môn Ly Thuy t Nh n D ngê â a
5. Cac phương phap
Có nhiều nghiên cứu tìm phương pháp xác đinh khuôn mặt ngươi, từ ảnh xám
đến ngày nay là ảnh màu.
Dựa vào các tinh chât cua các phương pháp xác đinh mặt ngươi trên ảnh, có
thể chia thành bốn loại chinh, tương ứng với các hướng tiếp cận khác nhau. Một
phương pháp có thể sử dụng nhiều hướng tiếp cận, tuy mỗi hoàn cảnh.
Hướng tiếp cận dựa trên tri thức: Hướng tiếp cận top-down, dựa trên
các thuật toán, mã hóa các đặc trưng và quan hệ giữa các đặc trưng cua
khuôn mặt thành các luật.
Hướng tiếp cận dựa trên đặc trưng không thay đổi: Xây dựng các thuật
toán tìm các đặc trưng mô tả câu trúc khuôn mặt mà các đặc trưng này
không thay đổi khi tư thế khuôn mặt , vi tri đặt camera thay đổi hoặc
điều kiện ánh sáng thay đổi.
Hướng tiếp cận dựa trên so sánh khớp mâu: Dung các mâu chuân cua
khuôn mặt ngươi (các mâu này đươc chọn lựa và lưu trữ ) để mô tả các
khuôn mặt hay các đặc trưng cua khuôn mặt ( các mâu này đươc chọn
tách biệt theo tiêu chuân đã đươc các tác giả đề ra để so sánh ). Phương
pháp này có thể dung để xác đinh vi tri hay dò tìm khuôn mặt trên ảnh.
Các mối tương quan giữa dữ liệu ảnh đưa vào và các mâu dung để xác
đinh khuôn mặt ngươi.
Hướng tiếp cận dựa trên diện mạo: Trái ngươc hẳn với hướng tiếp cận
dựa trên khuôn mâu , các mô hình ( hay các mâu) sẽ đươc học từ một
tập ảnh huân luyện mà thể hiện tinh chât tiêu biểu cua sự xuât hiện cua
mặt ngươi trong ảnh. Sau đó hệ thống (mô hình) sẽ xác đinh mặt ngươi.
Nhom 9 Page 9
Bao cao môn Ly Thuy t Nh n D ngê â a
Phương pháp này còn đươc biết đến với tên gọi tiếp cận theo các
phương pháp học máy.
Chương II. Thuật giải Adaboost
A. Tông quan
Học theo Adaboost là một hướng tiếp cận dựa trên diện mạo, Viola và Jones
dung Adaboost kết hơp cascade of classifiers để để tăng tốc độ phát hiện khuôn mặt
trong ảnh với các đặc trưng dạng Haar wavelet-like . Tốc độ xử lý khá nhanh và tỷ lệ
chinh xác hơn 80% trên ảnh xám. Ngoài ra Schneiderman và Kanade dung wavelet
để trich đặc trưng, sau đây cũng xây dựng hệ thống học với Adaboost, dựa trên xác
suât để xác đinh khuôn mặt ngươi. Tỷ lệ chinh xác trên cua phương pháp này lên
đến 90%.
Hướng tiếp cận diện mạo
Hướng tiếp cận dựa trên diện mạo áp dụng các kỹ thuật theo hướng xác suât
thống kê và học máy để tìm những đặc tinh liên quan cua khuôn mặt và không phải
là khuôn mặt. Các đặc tinh đã đươc học ở trong hình thái các mô hình phân bố hay
các tham số cua một hàm số nên có thể dung các đặc tinh này để xác đinh khuôn mặt
ngươi. Đồng thơi, bài toán giảm số chiều thương đươc quan tâm để tăng hiệu quả
tinh toán cũng như hiệu quả xác đinh.
Thuật toán học máy Adaboost đươc phát triển thuật toán Boosting
Thuật toán Boosting
Về lich sử, boosting bắt nguồn từ câu hỏi nổi tiếng đươc đưa ra bơi Kearns
vào năm 1989 : “Liệu có thể tạo ra môt strong classifier từ môt tập cac bô phân loại
yêu?”. Năm 1990, Robert Schapire đưa ra thuật toán boosting đâu tiên, tiếp đến năm
Nhom 9 Page 10
Bao cao môn Ly Thuy t Nh n D ngê â a
1993 thì nó đươc Drucker, Schapire và Simard kiểm nghiệm trong trong các chương
trình nhận dạng ( OCR application ). Freund đã tiếp tục các nghiên cứu cua
Schaprire, và đến năm 1995 thì ông cung với Schapire phát triển boosting thành
adaboost.
Như vậy, nguyên lý cơ bản cua boosting là sự kết hơp các weak classifiers
thành một strong classifier. Trong đó, weak classifier là các bộ phân loại đơn giản
chỉ cân có độ chinh xác trên 50%. Bằng cách này, chúng ta nói bộ phân loại đã đươc
“boost”.
Để hiểu cách hoạt động cua thuật toán boosting, ta xet một bài toán phân loại
2 lớp (mâu cân nhận dạng chỉ thuộc một trong 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 weak classifier đâ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 cua nó đươc phân loại đúng bởi C1 và nửa còn lại bi
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 cung, 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 strong classifier: 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 đinh bởi sự thỏa thuận cua 3
bộ C1, C2 và C3: Nếu cả C1 và C2 đều phân X vào cung một lớp thì lớp này chinh là
kết quả phân loại cua 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 đinh X thuộc về lớp nào
Nhom 9 Page 11
Bao cao môn Ly Thuy t Nh n D ngê â a
Hình: Boosting
1. Thuật giải Adaboost
a) Định nghĩa
Adaboost (Adaptive Boost ) là một bộ phân loại mạnh phi tuyến phức dựa trên
hướng tiếp cận Boosting đươc Freund và Schapire đưa ra vào năm 1995. Adaboost
hoạt động dựa trên nguyên tắc kết kết hơp tuyến tinh các Weak Classifier dựa trên
đặc trưng Haar-Like để hình thành một Classifier.
b) Tư tưởng
Tư tưởng cua thuật toán Adaboost đây là kết hơp các bộ phân loại yếu thành
một bộ phân loại mạnh. Trong quá trình xây dựng, bộ phân loại yếu tiếp theo sẽ
đươc xây dựng dựa trên các đánh giá về các bộ phân loại yếu trước, cuối cung các
bộ phân loại yếu sẽ đươc kết hơp để trở thành bộ phân loại mạnh.
Nhom 9 Page 12
Bao cao môn Ly Thuy t Nh n D ngê â a
Để có thể kết hơp các bộ phân loại yếu, Adaboost sử dụng một trọng số
(weight) để đánh dâu các mâu khó nhận dạng. Trong quá trình huân luyện, cứ mỗi
weak classifier đươc xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để chuân
bi cho việc xây dựng weak classifier tiếp theo: tăng trọng số cua các mâu bi nhận
dạng sai và giảm trọng số cua các mâu đươc nhận dạng đúng bởi weak classifier vừa
xây dựng. Bằng cách này, các weak classifier sau có thể tập trung vào các mâu mà
các weak classifier trước đó chưa thực hiện tốt. Sau cung các weak classifier sẽ đươc
kết hơp tuy theo mức độ ‘tốt’ cua chúng để tạo nên một strong classifier.
Viola và Jones dung AdaBoost kết hơp các bộ phân loại yếu sử dụng các đặc
trưng Haar-like theo mô hình phân tâng (cascade) như sau:
Hình: Mô hình phân tân kết hơp các bộ phân loại yếu để xác đinh khuôn mặt
Nhom 9 Page 13
Bao cao môn Ly Thuy t Nh n D ngê â a
Các Weak Classifiers hk(x) là các bộ phận loại yếu, đươc biểu diên như sau:
Trong đó:
X : mâu hay cửa sổ con cân xet (X=(x1,x2,.....,xn) là vecto đặc trưng cua
mâu )
k : ngưỡng
: giá tri cua đặc trưng Harr-like
k : hệ số quyết đinh chiều cua bât phương trình
Y nghia cua công thức:
Nếu giá tri đặc trưng cua mâu cho bởi hàm đánh giá cua bộ phân loại vươt qua
một ngưỡng cho trước thì mâu đây là khuôn mặt ( gọi là object : đối tương cân nhận
dạng ), ngươc lại thì mâu là background ( không phải là đối tương ).
Adaboost sẽ kết hơp các bộ phận loại yếu thành bộ phận loại mạnh như sau:
Nhom 9 Page 14
H(x) = sign(α1h1(x) +α2h2(x) + ... + αnhn(x))
Với: αt >= 0 là hệ số chuân hóa cho các bộ phận loại
Bao cao môn Ly Thuy t Nh n D ngê â a
Hình: Kết hơp các bộ phận loại yếu thành bộ phận loại mạnh.
c) Thuật toan Adaboost
Bước1. Cho một tập gồm n mâu có đánh dâu (x1,y1), (x2,y2),… (xn,yn) với xk ∈ (xk1, xk2, … , xkm) là vector đặc trưng và yk ∈ (-1, 1) là nhãn cua mâu (1 ứng
với object, -1 ứng với background).
Bước2. Khởi tạo trọng số ban đâu cho tât cả các mâu: với m là số mâu đúng
(ứng với object và y = 1) và l là số mâu sai (ứng với background và y = -1).
Bước 3. Xây dựng T weak classifiers
Lặp t = 1, …, T
o Với mỗi đặc trưng trong vector đặc trưng, xây dựng một weak
classifier hj với ngưỡng θj và lỗi εj.
o Chọn ra hj với εj nhỏ nhât, ta đươc ht:
Nhom 9 Page 15
Bao cao môn Ly Thuy t Nh n D ngê â a
o Cập nhật lại trọng số:
o Trong đó:
: Hệ số dung để đưa về đoạn [0,1] (normalization
factor)
Bước 4. Strong classifier đươc xây dựng:
Sơ đồ khối
Nhom 9 Page 16
Bao cao môn Ly Thuy t Nh n D ngê â a
Hoạt động:
Quá trình huân luyện bộ phân loại đươc thực hiện bằng một vòng lặp mà ở
mỗi bước lặp, thuật toán sẽ chọn ra weak classifier h t thực hiện việc phân loại với lỗi
εt nhỏ nhât (do đó sẽ là bộ phân loại tốt nhât) để bổ sung vào strong classifier. Mỗi
khi chọn đươc 1 bộ phân loại ht, Adaboost sẽ tinh giá tri αt theo công thức ở trên. αt
cũng đươc chọn trên nguyên tắc làm giảm thiểu giá tri lỗi εt.
Hệ số αt nói lên mức độ quan trọng cua ht:
o Trong công thức cua bộ phân loại H(x):
Nhom 9 Page 17
Bắt đâu
huân luyện
Khởi tạo tập
đặc trưng ban đâu
Xác đinh các đặc trưng trong từng mâu, xây dựng các bộ phân loại yếu tương ứng
Đặc trưng
haar-like
Tinh toán giá tri lỗi
cho mỗi đặc trưng
(false alarm)
Chọn weak
classifier có giá tri
lỗi be nhât
Lưu
weak
classifier
đươc chọn
False alarm ≤
max false alarm
Tập các mâu
và trọng số
Tập các
mâuMâu
sai
Mâu
đúng
Cập nhật lại trọng số
Sai
Kết thúc, strong classifier đuơc xây dựng
Đúng
Xác đinh ngưỡng
Bao cao môn Ly Thuy t Nh n D ngê â a
Ta thây tât cả các bộ phân loại ht đều có đóng góp vào kết quả cua bộ phân
loại H(x), và mức độ đóng góp cua chúng phụ thuộc vào giá tri αt tương ứng: ht với
αt càng lớn thì nó càng có vài trò quan trọng trong H(x).
o Trong công thức tinh αt:
Dê thây giá tri αt tỉ lệ nghich với εj. Bởi vì ht đươc chọn với tiêu chi đạt εj
nhỏ nhât, do đó nó sẽ đảm bảo giá tri αt lớn nhât.
Sau khi tinh đươc giá tri αt, Adaboost tiến hành cập nhật lại trọng số cua 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ố cua mâu phản ánh đươc mức độ khó nhận dạng
cua mâu đó và ht+1 sẽ ưu tiên học cách phân loại những mâu này.
Vòng lặp xây dựng strong classifier sẽ dừng lại sau T lân lặp. Trong thực tế cài
đặt (thư viện OpenCV cua Intel), ngươi ta it sử dụng giá tri T vì không có công thức
nào đảm bảo tinh đươc giá tri T tối ưu cho quá trình huân luyện. Thay vào đó, ngươi
ta sử dụng giá tri max false positive hay max false alarm (tỉ lệ nhận dạng sai tối đa
các mâu background). Tỉ lệ này cua bộ phân loại cân xây dựng không đươc phep
vươt quá giá tri này. Khi đó, qua các lân lặp, false alarm cua strong classifier Ht(x)
xây dựng đươc (tại lân lặp thứ t) sẽ giảm dân, và vòng lặp kết thúc khi tỉ lệ này thâp
hơn max false alarm.
2. Haar-Like
a. Đặc trưng Haar-Like
Nhom 9 Page 18
Bao cao môn Ly Thuy t Nh n D ngê â a
Do Viola và Jones công bố , gồm 4 đặc trưng cơ bản để xác đinh khuôn mặt
ngươi. Mỗi đặng trưng Haar-Like là sự kết hơp cua hai hay ba hình chữ nhật “trắng
” hay “đen” như sau:
Hình : 4 đặc trưng Haar-Like
Để áp dụng các đặc trưng này vào việc bài toán xác đinh mặt ngươi , 4 đặc
trưng Haar-Like cơ bản đươc mở rộng ra , và đươc chia làm 3 tập đặc trưng như sau:
1. Đặc trưng cạnh (edge features)
2. Đặc trưng đương ( line features)
3. Đặc trưng xung quanh tâm (center-surround features)
b. Lợi ích
Lơi ich cua các đặc trưng Haar-like 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 cua đối tương),
điều mà bản thân từng điểm ảnh không diên đạt đươc. Để tinh giá tri các đặc trưng
Nhom 9 Page 19
Bao cao môn Ly Thuy t Nh n D ngê â a
haar-like, ta tinh sự chênh lệch giữa tổng cua các pixel cua các vung đen và các vung
trắng như trong công thức sau:
f(x) = Tôngvùng đen(pixel) - Tôngvùng trắng(pixel)
Như vậy ta có thể thây rằng, để tinh các giá tri cua đặc trưng Haar-like, ta phải
tinh tổng cua các vung pixel trên ảnh. Nhưng để tinh toán các giá tri cua các đặc
trưng Haar-like cho tât cả các vi tri trên ảnh đòi hỏi chi phi tinh toán khá lớn, không
đáp ứng đươc cho các ứng dụng đòi hỏi tinh run-time. Do đó Viola và Jones đưa ra
một khái niệm gọi là Integral Image để tinh toán nhanh cho khác feature cơ bản. Sau
này, Lienhart kế thừa gọi Integral Image là SAT – Summed Area Table và đưa ra
thêm khái niệm RSAT – Rotated Summed Area Table dung để tinh toán nhanh cho
các đặc trưng xoay 1 góc 45o. Integral Image là một mảng 2 chiều với kich thước
bằng với kich cua ảnh cân tinh các đặc trưng Haar-like, với mỗi phân tử cua mảng
này đươc tinh bằng cách tinh tổng cua điểm ảnh phia trên (dòng-1) và bên trái (cột-
1) cua nó. Bắt đâu từ vi tri trên, bên trái đến vi tri dưới, phải cua ảnh, việc tinh toán
này đơn thuân chỉ đựa trên phep cộng số nguyên đơn giản, do đó tốc độ thực hiện rât
nhanh. Cách tính Integral Image của ảnh
Nhom 9 Page 20
P(x,y)
Bao cao môn Ly Thuy t Nh n D ngê â a
Sau khi đã tinh đươc Integral Image, việc tinh tổng điểm ảnh cua một vung
bât kỳ nào đó trên ảnh thực hiện rât đơn giản theo cách sau: (Giả sử ta cân tinh tổng
điểm ảnh cua vung D như trong hình sau):
D = A + B + C + D – (A+B) – (A+C) + A
Với A + B + C + D chinh là giá tri tại điểm P4 trên Integral Image, tương tự
như vậy A+B là giá tri tại điểm P2, A+C là giá tri tại điểm P3, và A là giá tri tại
điểm P1. Vậy ta có thể viết lại biểu thức tinh D ở trên như sau:
Hình: Vi dụ cách tinh nhanh tổng các điểm ảnh cua vung D trên ảnh
Hình: Vi dụ cách tinh nhanh tổng điểm ảnh cua vung D trên ảnh với các đặc
trưng xoay 450
Nhom 9 Page 21
A
C
B
D
P
1
P
2
P
3
P
4
D
Bao cao môn Ly Thuy t Nh n D ngê â a
Với các đặc trưng Haar-like xoay 45o Integral Image tại một điểm (x, y) đươc
tinh theo công thức:
Tổng pixel cua một vung bât kỳ trên ảnh vân đươc tinh theo cách sau:
D = A + B + C + D – (A+B) – (A+C) + A
Như vậy tổng các điểm ảnh trong một hình chữ nhật (kể cả trương hơp xoay
45º) bât kì đều có thể đươc tinh nhanh dựa trên integral image tại 4 đỉnh cua nó :
Sum ( D ) = 4 - 2 – 3 + 1
3. Cascade of Classifiers
Ta thây quá trình huân luyện, bộ phân loại phải duyệt qua tât cả các đặc trưng
cua các mâu trong tập training. Việc này tốn rât nhiều thơi gian. Tuy nhiên, trong
các mâu đưa vào, không phải mâu nào cũng thuộc loại khó nhận dạng, có những
mâu background rât dê nhận ra (ta gọi đây là những mâu background đơn giản). Đối
với những mâu này, ta chỉ cân xet một hay vài đặc trưng đơn giản là có thể nhận
diện đươc chứ không cân xet tât cả các đặc trưng. Nhưng đối với các bộ phân loại
thông thương thì cho du mâu cân nhận dạng là dê hay khó thì nó vân sẽ xet tât cả các
đặc trưng mà nó rút ra đươc trong quá trình học. Do đó, chúng tốn thơi gian xử lý
một cách không cân thiết.
Cascade of Classifiers đươc xây dựng chinh là nhằm rút ngắn thơi gian xử lý,
giảm thiểu false alarm cho bộ phân loại. Cascade tree gồm nhiều stage (hay còn gọi
là layer), mỗi stage cua cây sẽ là một stage classifier. Một mâu để đươc phân loại là
đối tương thì nó cân phải đi qua hết tât cả các stages cua cây. Các stage classifiers ở
stage sau đươc huân luyện bằng những mâu negative mà stage classifier trước nó
Nhom 9 Page 22
Bao cao môn Ly Thuy t Nh n D ngê â a
nhận dạng sai, tức là nó sẽ tập trung học từ các mâu background khó hơn, do đó sự
kết hơp các stage classifiers này lại sẽ giúp bộ phân loại có false alarm thâp. Với
câu trúc này, những mâu background dê nhận diện sẽ bi loại ngay từ những stages
đâu tiên, giúp đáp ứng tốt nhât đối với độ phức tạp gia tăng cua các mâu đưa vào,
đồng thơi giúp rút ngắn thơi gian xử lý.
Thuật toan Cascade training:
Bước. Gọi:
F là giá tri false alarm và d là độ chinh xác cua weak classifier ở mỗi
stage
Ftarget: Giá tri max false alarm.
P, N: là số lương mâu positive và negative.
Pi, Ni: là tập positive và negative cho bộ phân lớp ở tâng thứ i.
Fi, Di: Giá tri false alarm và độ chinh xác cua cascade trước khi đến
tâng thứ i.
Bươc2. Khởi tạo i=0; F0=1.0; D0 = 1.0
Bước3. Lặp: while Fi>Ftarget
o i = i+1;
o Huân luyện bộ phân loại hi từ tập Pi và Ni với detection rate d và max
false alarm f. Thêm hi vào cây phân lớp.
o Dung cây phân lớp hiện có để tinh Fi: Duyệt qua N mâu negative cho
đến khi nào tìm đu n mâu mà cây phân lớp hiện có phân loại sai. (
Nhom 9 Page 23
Bao cao môn Ly Thuy t Nh n D ngê â a
o N :=
o Nếu Fi >Ftarget
N = { số mâu sai ở stage hiện tại phân loại sai }.
P = { số mâu positive mà stage hiện tại phân loại dúng }
Minh họa thuât toan Cascade training:
Hình : cascade of classifiers
Hình trên minh họa sự huân luyện cua một cascade gồm N stages. Ở mỗi
stage, weak classifier tương ứng sẽ đươc huân luyện sao cho độ chinh xác cua nó là
h và false alarm bằng f
4. Cascade of boosting classifiers
Cascade of boosting classifiers là mô hình cascade of classifiers với mỗi
classifier đươc xây dựng bằng Adaboost sử dụng haar-like.
Nhom 9 Page 24
h h h
1-f 1-f 1-f 1-f
stage
1
2 N
-1
N…
… hitrate = hN
falsealarms = fN
Input pattern classified as a non-object
Bao cao môn Ly Thuy t Nh n D ngê â a
Hình 14: Cascade of boosting classifiers
Viola và Jones đã sử dụng rât thành công cascade of boosting classifiers cho
bài toán nhận dạng mặt ngươi. Với tập huân luyện gồm 4196 hình mặt ngươi đươc
đưa về ảnh grayscale kich thước 24x24 và 9500 hình background, hai ôngđã xây
dựng câu trúc cascade tree gồm 38 stage với tổng cộng 6060 đặc trưng haar-like.
Thực nghiệm đã cho thây classifier ở stage đâu tiên sử dụng 2 đặc trưng và loại
đươc khoảng 50% mâu background (không phải mặt ngươi) và có độ chinh xác là d
= 100%. Classifier ở stage thứ 2 sử dụng 10 đặc trưng loại đươc 80% mâu
background với độ chinh xác vân là 100%. Hệ thống này đươc so sánh với hệ thống
cua Rowley-Baluja-Kanade (sử dụng mạng neural), Schneiderman-Kanade (sử dụng
phương pháp thống kê), và cho thây tỉ lệ nhận dạng là ngang nhau, trong khi hệ
thống cua Viola và Jones chạy nhanh hơn đến 15 lân so với hệ thống cua Rowley-
Baluja-Kanade và nhanh hơn 600 lân hệ thống cua Schneiderman-Kanade.
Lý do mà câu trúc cascade đạt tốc độ nhận dạng nhanh chinh là nhơ nó sớm
loại bỏ đươc các mâu background đơn giản (thương có số lương lớn hơn nhiều so
với các mâu chứa object – các mâu chưa khuôn mặt cân tiến hành nhận dạng). Bên
cạnh đó, hệ thống cua Viola và Jones cũng đạt đươc độ chinh xác khá cao nhơ vào
thuật toán cascade training, các bộ nhận dạng đươc huân luyện bằng AdaBoost với
đặc trưng Haar-like mô tả tốt thông tin đối tương, cung với cách Integral Image tinh
nhanh các đặc trưng, không làm giảm tốc độ nhận dạng cua hệ thống. Như vậy, mô
Nhom 9 Page 25
I Y Y Y
N N N N
CLASS
NON-CLASS
Bao cao môn Ly Thuy t Nh n D ngê â a
hình Cascade of Boosted Classifiers thật sự là một cách tiếp cận tốt cả về tốc độ lân
khả năng nhận dạng, rât phu hơp với bài nhận dạng mặt ngươi.
Nhom 9 Page 26
Bao cao môn Ly Thuy t Nh n D ngê â a
Chương III: Xây dựng chương trình
Tông quan
Trong linh vực nào cũng vậy, hâu như chúng ta phải dựa vào những kết quả
có trước để làm nền tảng cho những nghiên cứu hiện tại để rồi kết quả trong hiện tại
này đươc sử dụng cho tương lai. Xử lý ảnh cũng vậy, có vô số những thao tác đã
đươc nghiên cứu chi tiết và trở thành kinh điển như việc đọc ảnh, việc lây các điểm
ảnh, lọc Gaussian… Tuy nhiên để làm lại những công việc đó đòi hỏi rât nhiều thơi
gian và công sức, cả trong nghiên cứu lân lập trình. Vì vậy, nhu câu cân có một bộ
thư viện làm sẵn là hết sức cân thiết.
OpenCV là lựa chọn thich hơp cho các công việc liên quan đến Computer
Vision, và may mắn thay OpenCV là một bộ thư viện rât tốt và cực mạnh, hỗ trơ hâu
hết tât cả những thao các cơ bản trong các vân đề cua Computer Vision.
1. Tông quan về OpenCV
Câu trúc tổng quan cua OpenCV bao gồm 5 phân chinh. 4 trong 5 phân đó
đươc chỉ ra trong hình vẽ dưới.
Nhom 9 Page 27
CV
Các hàm về xử lý
ảnh và giải thuật về
thi giác máy tinh
CXCORE
Các câu trúc dữ liệu cơ bản, câu trúc XML, các hàm về
đồ họa …
MLL
Các thuật toán
học máy, bao gồm
các bộ phân cụm,
phân loại thống kê
HighGUI
Các hàm và thu
tục làm việc với file
ảnh và file video
Bao cao môn Ly Thuy t Nh n D ngê â a
OpenCV Error: Reference source not found] là sản phâm cua Intel, viết tắt cua
cụm từ Open Source Computer Vision Library. Đây là một bộ thư viện tổng quát
trên tât cả các thao tác câp thâp lên ảnh. Nó có thể xem là một phát triển từ Intel
Imaging Processing Library (IPL) và hoàn toàn tương thich với IPL.
OpenCV, như đã nói là một thư viện rât đồ sộ và đươc tập thể các tác giả chia
làm 4 phân chinh:
CxCore: Chứa các câu trúc cơ bản như điểm, đương, dãy, mặt, ma
trận… và các thao tác câp thâp liên quan.
CV: Chứa hâu hết các thao tác liên quan đến việc xử lý ảnh ở câp thâp
như lọc ảnh, trich biên, phân vung, tìm contour, biến đổi Fourier…
HighGUI: Các thao tác lên những file ảnh và file Video như đọc ảnh,
hiển thi ảnh, chuyển đổi đinh dạng…
MLL: Các thuật toán học máy, bao gồm các bộ phân cụm, phân loại
thống kê
CvCam: Làm việc với Camera. Vì lý do phạm vi cua luận văn này chỉ
làm việc với ảnh nên chúng tôi không trình bày CvCam ở đây.
2. Hệ thông phat hiện mặt người
Nhom 9 Page 28
Bao cao môn Ly Thuy t Nh n D ngê â a
Hình: Tổng quan về hệ thống phát hiện mặt ngươi
Về cơ bản, từ ảnh gốc ban đâu, hệ thống sẽ chia ảnh thành vô số vung nhỏ để
tinh các đặc trưng, sau đây đưa các đặc trưng. Tiếp theo chương trình sẽ xác đinh
các vung khả quan (các ứng viên) có thể là khuôn mặt, cuối cung các ứng viên này
sẽ đươc đưa vào một bộ phân loại để tiến hành xác đinh ứng viên nào là mặt ngươi.
3. Phân tích và thiêt kê hệ thông phat hiện mặt người
a. Nhiệm vụ
Nhiệm vụ chinh cua chương trình là dò tìm khuôn mặt từ một bức ảnh, sau đó
lưu khuôn mặt vào CSDL.
Nhom 9 Page 29
Bao cao môn Ly Thuy t Nh n D ngê â a
Hình: Biểu đồ ngữ cảnh cua hệ thống
Các chức năng chinh:
Đọc các file ảnh
Phát hiện các khuôn mặt có trong bức ảnh
Lưu ảnh đã đươc phát hiện mặt vào CSDL
b. Thiêt kê hệ thông
Mô hình thiết kế
Nhom 9 Page 30
Bao cao môn Ly Thuy t Nh n D ngê â a
Xư ly đâu vao:
Chương trình nhận vào là 1 file ảnh sau đó chuyển sang giai đoạn phát hiện
khuôn mặt
Phat hiện khuôn măt
Sau khi có ảnh truyền vào, hệ thống sẽ thực hiện chức năng phát hiện khuôn
mặt có trong anh.
Phát hiện khuôn mặt trong ảnh đươc thực hiện nhanh bằng thuật toán
Adaboost thông qua các hàm CfaceDetectionDlg cua OpenCV. Hàm này thực hiện
việc phát hiện đối tương dựa trên các đặc trưng Haar-Like, cụ thể là nhơ vào một
bộ Cascade đươc truyền vào cho hàm. Bộ Cascade đươc xây dựng theo dạng cây và
đã đươc huân luyện từ trước
Việc huân luyện bộ Cascade có thể thực hiện từ những dữ liệu thu thập đươc
để phục vụ cho quá trình nhận dạng. Vi dụ, muốn nhận dạng một ngươi A, ta thu
Nhom 9 Page 31
Bao cao môn Ly Thuy t Nh n D ngê â a
thập các ảnh khuôn mặt cua ngươi A với nhiều tư thế, góc chụp và điều kiện chụp
khác nhau, sau đây cho bộ nhận dạng học theo thuật toán Cascade training. Tuy
nhiên việc nhận dạng khuôn mặt là một công việc khó và tốn nhiều thơi gian, do đó,
tôi không thực hiện nó trong khóa luận cua mình.
Xư ly đâu ra.
Khuôn mặt sau khi đươc phát hiện sẽ đươc tách ra khỏi bức ảnh và lưu dưới
dạng ảnh bitmap với phân mở rộng là *.jpg.
Đối với đâu vào là các file ảnh, dữ liệu đâu ra cũng là file ảnh đây nhưng có
lưu vi tri khuôn mặt đã đươc phát hiện trên bức ảnh, đồng thơi tách các riêng khuôn
mặt và lưu vào cơ sở dữ liệu.
Hình: Biểu đồ phân giã chức năng
4. Thiêt kê giao diện
Giao diện cua chương trình đươc thiết kế đơn giản thân thiệt với ngươi dung.
Tập trung vào chức năng chinh phát hiện khuôn mặt trong ảnh.
Gồm 3 phân chinh:
Nhom 9 Page 32
Bao cao môn Ly Thuy t Nh n D ngê â a
o Load Image: Dành cho ngươi dung chọn đâu vào file ảnh.Các ảnh video
đươc lưu vào Sourse cua chương trình với các đinh dạng đã quy đinh.
o Help: Hiện hộp thoại báo cho ngươi dung chọn ảnh.
o State: Ready: Trạng thái sẵn sàng làm việc sau khi ảnh đươc truyền vào
và hiện kết quả.
Ví dụ một kêt quả tim được la:
Nhom 9 Page 33
Bao cao môn Ly Thuy t Nh n D ngê â a
Kết luận
Trên cơ sở nghiên cứu về bài toán phát hiện mặt ngươi trong ảnh. Đặc biệt là
thuật toán Adaboost, các đặc trưng haar-like và mô hình Cascade of Classifier.
Thuật giải Adaboost đã tạo lên thành công trong quá trình phát hiện mặt ngươi. Bên
cạnh đó là thư viện mã nguồn mở OpenCV, hệ quản tri cơ sở dữ liệu cũng góp phân
không nhỏ taok lên kết quả hoàn thiên. Tuy kết quả chưa cao, nhưng đây cũng là
một bước phát triển bài toán nhận dạng mặt ( face recognition) ngươi sau này.
Nhom 9 Page 34
Bao cao môn Ly Thuy t Nh n D ngê â a
Tài liệu tham khảo
1. A. Lanitis, C.J. Taylor, and T.F. Cootes, “An Automatic Face
Identification System Using lexible Appearance Models”, Image and Vision
Computing, vol. 13, no. 5, pp. 393-401, 1995.
2. Andrew King, “A Survey of Methods for Face Detection”, 2003
3. A. Yuille, P. Hallinan, and D. Cohen, “Feature Extraction from Faces
Using eformable Templates”, Int’l J. Computer Vision, vol. 8, no. 2, pp. 99-
111, 1992.
4. D.G. Kendall, “Shape Manifolds, Procrustean Metrics, and Complex
Projective Shapes”, Bull. London Math. Soc., vol. 16, pp. 81-121, 1984.
5. G. Yang and T. S. Huang, “Human Face Detection in Complex
Background”, Pattern Recognition, vol. 27, no. 1, pp. 53-63, 1994.
6. K. Lam and H. Yan, “Fast Algorithm for Locating Head Boundaries,”
J.Electronic Imaging, vol. 3, no. 4, pp. 351-359, 1994.
7. P. Viola and M. J. Jones, “Robust Real-Time Face Detection”,
International Journal of Computer Vision 57(2), 137-154, Kluwer
Academic Publishers, Netherlands, 2004.
8. T.F. Cootes and C.J. Taylor, “Locating Faces Using Statistical Feature
Detectors”, Proc. Second Int’l Conf. Automatic Face and Gesture
Recognition, pp. 204-209, 1996.
9. T.K. Leung, M.C. Burl, and P. Perona, “Finding Faces in Cluttered
Scenes Using Random Labeled Graph Matching”, Proc. Fifth IEEE Int’l
Conf. Computer Vision, pp. 637-644, 1995.
10.T. Sakai, M. Nagao, and S. Fujibayashi, “Line Extraction and Pattern
etection in a Photograph”, Pattern Recognition, vol. 1, pp. 233-248, 1969.
Nhom 9 Page 35
Bao cao môn Ly Thuy t Nh n D ngê â a
11. Robin Hewitt, “Seeing with OpenCV: A Five-Part Series”, 2007
Nhom 9 Page 36