2.2.1 Adaboost
Boosting là kỹ thuật dùng để tăng độ chính xác cho các thuật toán học (Learning algorithm). Nguyên lý cơ bản của nó là kết hợp các 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ó độ chính xác trên 50%. Bằng cách này, chúng ta nói bộ phân loại đã đƣợc “boost”.
Adaboost là một tiếp cận boosting đƣợc Freund và Schapire đƣa ra vào năm 1995. Adaboost cũng hoạt động trên nguyên tắc kết hợp tuyến tính các weak classifiers để có một strong classifier.
29
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ố (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 bị cho việc xây dựng weak classifier kế tiếp: Tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu đƣợc nhận dạng đúng bởi weak classifier vừa 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 classifiers trƣớc nó chƣa làm tốt. Sau cùng, các weak classifiers sẽ đƣợc kết hợp tuỳ theo mức độ “tốt” của chúng để tạo dựng nên strong classifier.
Có thể hình dung một cách trực quan nhƣ sau: Để biết một ảnh có phải là bàn tay hay không, ta hỏi T ngƣời (tƣơng đƣơng với T weak classifiers xây dựng từ T vòng lặp của boosting), đánh giá của mỗi ngƣời (tƣơng đƣơng với một weak classifier) chỉ cần tốt hơn ngẫu nhiên một chút (tỉ lệ sai dƣới 50%). Sau đó, ta sẽ đánh trọng số cho đánh giá của từng ngƣời (thể hiện qua hệ số α), ngƣời nào có khả năng đánh giá tốt các mẫu khó thì mức độ quan trọng của ngƣời đó trong kết luận cuối cùng sẽ cao hơn những ngƣời chỉ đánh giá tốt đƣợc các mẫu dễ. Việc cập nhật lại trọng số của các mẫu sau mỗi vòng boosting chính là để đánh giá độ khó của các mẫu (mẫu càng có nhiều ngƣời đánh giá sai là mẫu càng khó).
Các weak classifiers hk(x) đƣợc biểu diễn nhƣ sau:
𝑘 𝑥 = 1, 𝑝𝑘𝑓𝑘 𝑥 < 𝑝𝑘𝜃𝑘 0, 𝑜𝑡𝑒𝑟𝑤𝑖𝑠𝑒
Trong đó:
• x = (x1, x2,..., Xn): vector đặc trƣng của mẫu. • θ: ngƣỡng
• fk: hàm lƣợng giá vector đặc trƣng của mẫu • pk: hệ số quyết định chiều của bất phƣơng trình
30
Thuật toán Adaboost:
1. 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 của mẫu (1 ứng với object, -1 ứng với background).
2. Khởi tạo trọng số ban đầu cho tất cả các mẫu: 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).
3. Xây dựng T weak classifiers Lặp t = 1,…, T
Với mỗi đặc trƣng trong vector đặc trƣng, xây dựng một weak classifier hj với ngƣỡng θj và lỗi εj.
Chọn ra hj với εj nhỏ nhất, ta đƣợc ht: Cập nhật lại trọng số:
Trong đó:
: Hệ số dùng để đƣa về đoạn [0,1] (normalization factor) 4. Strong classifier đƣợc xây dựng:
31
2.2.2 Đặc trƣng Haar
Đặc trƣng Haar là một loại đặc trƣng thƣờng đƣợc dùng cho bài toán nhận dạng trên ảnh. Đặc trƣng Haar đƣợc xây dựng từ các hình chữ nhật nhằm mục đích tính độ chênh lệch giữa giá trị các điểm ảnh trong các vùng kề nhau.
Giá trị của đặc trƣng đƣợc tính bằng tổng giá trị các điểm ảnh trong vùng màu trắng trừ đi tổng các điểm ảnh trong các vùng màu đen.
Hình 2.8: Vài đặc trƣng Haar cơ bản
Một điểm mạnh của đặc trƣng Haar là có thể biểu diễn đƣợc các thông tin về mối liên hệ giữa các vùng trong một bức ảnh. Ví dụ:
Hình 2.9: Áp dụng đặc trƣng Haar vào ảnh
Viola và Jones đã đƣa ra khái niệm ảnh tích phân ( Integral Image ) để tính nhanh các đặc trƣng Haar.
32
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 để tính toán nhanh cho các đặc trƣng xoay 1 góc 45º.
Một vài đặc trƣng:
Hình 2.10: Đặc trƣng cạnh (edge features):
Hình 2.11: Đặc trƣng đƣờng (line features):
Hình 2.12: Đặc trƣng xung quanh tâm (center-surround features):
Với SAT:
Hình 2.13: Mô tả về SAT
Ảnh tích phân tại các điểm (x, y):
𝑆𝐴𝑇 𝑥, 𝑦 = 𝑖(𝑥′, 𝑦′)
𝑥′≤𝑥,𝑦′≤𝑦
Cách tính nhanh các phần tử của bảng SAT:
SAT(x, y) = SAT (x, y-1) + SAT(x-1, y) + I(x, y) – SAT(x-1, y-1) Với SAT(-1, y) = SAT(x, -1) = SAT(-1, -1) = 0;
33
SUM( D ) = 4 + 1 – 2 – 3 Với RSAT:
Hình 2.14: Mô tả về RSAT
Ảnh tích phân tại các điểm (x, y):
𝑅𝑆𝐴𝑇 𝑥, 𝑦 = 𝐼(𝑥′, 𝑦′)
𝑦′≤𝑦,𝑦′≤𝑦−|𝑥−𝑥′|
Cách tính nhanh các phần tử của bảng RSAT: RSAT(x, y) = RSAT (x-1, y-1) + SAT(x+1, y-1)
- RSAT(x, y-2)+I(x, y) + I(x, y-1)
RSAT(x,y) B A C 2 4 1 3 D (a) (b)
34
Tổng pixel của một vùng bất kỳ trên ảnh vẫn đƣợc tính 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 tính nhanh dựa trên integral image tại 4 đỉnh của nó:
Sum (D ) = 4 - 2 – 3 + 1
2.2.3 Hệ thống xác định vị trí khuôn mặt trong ảnh
Hình 2.15: Mô hình hệ thống xác định vị trí khuôn mặt trong ảnh
Nhƣ trong hình 2.16 từ ảnh gốc ban đầu, ta sẽ đƣợc tính Integral Image, là mảng 2 chiều với phần tử (x, y) sẽ đƣợc tính bằng tổng của các phần tử (x', y') với x' < x và y' < y, mục đích là để tính nhanh tổng của các giá trị mức xám của một vùng hình chữ nhật bất kỳ trên ảnh gốc. Các vùng ảnh con này sẽ đƣợc đƣa qua các hàm Haar cơ bản để ƣớc lƣợng đặc trƣng, kết quả ƣớc lƣợng sẽ đƣợc đƣa qua bộ điều chỉnh AdaBoost để loại bỏ nhanh các đặc trƣng không có khả năng là đặc trƣng của khuôn mặt ngƣời. Chỉ có một tập nhỏ các đặc trƣng mà bộ điều chỉnh AdaBoost cho là có khả năng là đặc trƣng của khuôn mặt ngƣời mới đƣợc chuyển sang cho bộ quyết định kết quả. Bộ quyết định sẽ tổng hợp kết quả là khuôn mặt ngƣời nếu kết quả của các bộ phân loại yếu trả về là khuôn mặt ngƣời.
35
Mỗi bộ phân loại yếu sẽ quyết định kết quả cho một đặc trƣng Haar- like, đƣợc xác định ngƣỡng đủ nhỏ sao cho có thể vƣợt đƣợc tất cả các bộ dữ liệu mẫu trong tập dữ liệu huấn luyện (số lƣợng ảnh khuôn mặt trong tập huấn luyện có thể rất lớn). Trong quá trình xác định khuôn mặt ngƣời, mỗi vùng ảnh con sẽ đƣợc kiểm tra với các đặc trƣng trong chuỗi các đặc trƣng Haar-like, nếu có một đặc trƣng Haar-like nào cho ra kết quả là khuôn mặt ngƣời thì các đặc trƣng khác không cần xét nữa. Thứ tự xét các đặc trƣng trong chuỗi các đặc trƣng Haar-like sẽ đƣợc dựa vào trọng số (weight) của đặc trƣng đó do AdaBoost quyết định dựa vào số lần và thứ tự xuất hiện của các đặc trƣng Haar-like [33].
2.3 Dựa trên đặc trƣng không thay đổi
Đây là hƣớng tiếp cận theo kiểu bottom-up. Các tác giả cố gắng tìm các đặc trƣng không thay đổi của khuôn mặt để phát hiện mặt ngƣời. Dựa trên nhận xét thực tế, con ngƣời dễ dàng nhận biết các khuôn mặt và các đối tƣợng trong các tƣ thế khác nhau và điều kiện ánh sáng khác nhau, thì phải tồn tại các thuộc tính hay đặc trƣng không thay đổi.
Có nhiều nghiên cứu đầu tiên xác định các đặc trƣng khuôn mặt rồi chỉ ra có khuôn mặt trong ảnh hay không. Các đặc trƣng nhƣ: Lông mày, mắt, mũi, miệng, và đƣờng viền của tóc đƣợc trích bằng phƣơng pháp xác định cạnh. Trên cơ sở các đặc trƣng này, xây dựng một mô hình thống kê để mô tả quan hệ của các đặc trƣng này và xác định sự tồn tại của khuôn mặt trong ảnh. Một vấn đề của các thuật toán theo hƣớng tiếp cận đặc trƣng cần phải điều chỉnh cho phù hợp điều kiện ánh sáng, nhiễu, và bị che khuất. Đôi khi bóng của khuôn mặt sẽ tạo thêm cạnh mới, mà cạnh này lại rõ hơn cạnh thật sự của khuôn mặt, vì thế nếu dùng cạnh để xác định sẽ gặp khó khăn.
2.3.1 Các đặc trƣng khuôn mặt
Sirohey đƣa một phƣơng pháp phát hiện mặt từ một ảnh có hình nền phức tạp [28]. Phƣơng pháp dựa trên cạnh, dùng phƣơng pháp Candy [14] và heuristics để loại bỏ các cạnh để còn lại duy nhất một đƣờng bao xung quanh khuôn mặt. Một hình ellipse dùng để bao khuôn mặt, tách biệt vùng đầu và hình nền. Tỷ lệ chính xác của thuật toán là 80%.
Cũng dùng phƣơng pháp cạnh nhƣ Sirohey, Chetverikov và Lerch dùng một phƣơng pháp dựa trên blob và streak (hình dạng giọt nƣớc và sọc
36
xen kẽ), để xác định theo hƣớng các cạnh. Hai ông dùng hai blob tối và ba blob sáng để mô tả hai mắt, hai bên gò má, và mũi. Mô hình này dùng các treak để mô tả hình dáng ngoài của khuôn mặt, lông mày, và môi. Dùng ảnh có độ phân giải thấp theo biến đổi Laplace để phát hiện mặt thông qua blob. Graf đƣa ra một phƣơng pháp xác định đặc trƣng rồi phát hiện mặt trong ảnh xám [11]. Dùng bộ lọc để làm nổi các biên, các phép toán hình thái học (morphology) đƣợc dùng để làm nổi bật các vùng có cƣờng độ cao và hình dáng chắc chắn (nhƣ mắt). Thông qua histogram để tìm các đỉnh nổi bật để xác định các ngƣỡng chuyển ảnh xám thành hai ảnh nhị phân. Các thành phần dính nhau đều xuất hiện trong hai ảnh nhị phân thì đƣợc xem là vùng của ứng cử viên khuôn mặt rồi phân loại xem có phải là khuôn mặt không. Phƣơng pháp đƣợc kiểm tra trên các ảnh chỉ có đầu và vai của ngƣời. Tuy nhiên còn vấn đề, làm sao sử dụng các phép toán morphology và làm sao phát hiện mặt trên các vùng ứng viên.
Leung trình bày một mô hình xác suất để phát hiện mặt ở trong ảnh có hình nền phức tạp trên cơ sở một bộ xác định đặc trƣng cục bộ và so khớp đồ thị ngẫu nhiên [32]. Ý chính là xem bài toán phát hiện mặt nhƣ là bài toán tìm kiếm với mục tiêu là tìm thứ tự các đặc trƣng chắc chắn của khuôn mặt để tạo thành giống nhất một mẫu khuôn mặt. Dùng năm đặc trƣng (hai mắt, hai lỗ mũi, phần nối giữa mũi và miệng) để mô tả một khuôn mặt. Luôn tính quan hệ khoảng cách với các đặc trƣng cặp (nhƣ mắt trái, mắt phải), dùng phân bố Gauss để mô hình hoá. Một mẫu khuôn mặt đƣợc đƣa ra thông qua trung bình tƣơng ứng cho một tập đa hƣớng, đa tỷ lệ của bộ lọc đạo hàm Gauss. Từ một ảnh, các đặc trƣng ứng viên đƣợc xác định bằng cách so khớp từng điểm ảnh khi lọc tƣơng ứng với vector mẫu (tƣơng tự mối tƣơng quan), chọn hai ứng viên đặc trƣng đứng đầu để tìm kiếm cho các đặc trƣng khác của khuôn mặt. Giống nhƣ xây dựng một đồ thị quan hệ mỗi node của đồ thị tƣơng ứng nhƣ các đặc trƣng của một khuôn mặt, đƣa xác suất vào để xác định. Tỷ lệ xác định chính xác là 86%.
Bên cạnh tính khoảng cách liên quan để mô tả quan hệ giữa các đặc trƣng nhƣ Leung [32]. Kendall [6] dùng lý thuyết xác suất thống kê về hình dáng. Dùng hàm mật độ xác suất (Probility Density Function - PDF) qua N điểm đặc trƣng, tƣơng ứng (xi, yi) là đặc trƣng thứ i với giả sử dựa vào phân bố Gauss có 2N-chiều. Các tác giả áp dụng phƣơng thức cực đại khả năng (Maximum- Likelihood - ML) để xác định vị trí khuôn mặt. Một thuận lợi của phƣơng pháp này là các khuôn mặt bị che khuất vẫn có thể
37
xác định đƣợc. Nhƣng phƣơng pháp không xác định đƣợc đa khuôn mặt trong ảnh.
Yow và Cipolla [17] trình bày một phƣơng thức dựa vào đặc trƣng, dùng số lƣợng lớn các dấu hiệu từ ảnh và cả dấu hiệu về ngữ cảnh. Đầu tiên dùng bộ lọc đạo hàm Gauss thứ hai, xác định các điểm mấu chốt ở tại cực đại địa phƣơng trong bộ lọc, rồi chỉ ra nơi có thể là đặc trƣng. Giai đoạn hai, kiểm tra các cạnh xung quanh điểm mấu chốt và nhóm chúng lại thành các vùng. Tiêu chuẩn để nhóm các cạnh là gần và tƣơng tự hƣớng và cƣờng độ. Đo lƣờng các đặc tính vùng nhƣ: chiều dài cạnh, cƣờng độ cạnh, và biến thiên cƣờng độ đƣợc lƣu trong một vector đặc trƣng. Từ dữ liệu đặc trƣng khuôn mặt đã đƣợc huấn luyện, sẽ tính đƣợc giá trị trung bình và ma trận hiệp phƣơng sai của mỗi đặc trƣng khuôn mặt. Một vùng là ứng viên khuôn mặt khi khoảng cách Mahalanobis giữa các vector đặc trƣng đều dƣới một ngƣỡng. Rồi thông qua mạng Bayes để xác định ứng viên có phải là khuôn mặt không. Tỷ lệ chính xác là 85%, tuy nhiên mức độ sai là 28%, và chỉ hiệu quả với hình khuôn mặt có kích thƣớc 60x60 điểm ảnh. Phƣơng pháp này đƣợc dùng thêm với mô hình đƣờng viền linh hoạt.
Takacs và Wechsler trình bày một phƣơng pháp dựa trên tích đặc trƣng võng mạc và cử động theo dao động nhỏ của mắt. Thuật toán hoạt động trên bản đồ hay vùng của các mấu chốt, mô hình hoá lƣới võng mạc. Đầu tiên tính toán ƣớc lƣợng thô vùng khuôn mặt trên cơ sở bộ lọc. Giai đoạn thứ hai tinh chế trên độ phân giải mịn hơn. Tỷ lệ sai là 4.69%.
Han phát triển một kỹ thuật trên cơ sở morphology để trích các đoạn giống mắt (eyeanalogue) để phát hiện mặt ngƣời. Ông nói rằng mắt và lông mày là đặc trƣng nổi bật nhất và ổn định nhất của khuôn mặt con ngƣời, và nó rất hữu dụng để phát hiện mặt ngƣời. Ông định nghĩa các đoạn giống mắt nhƣ là các cạnh trên đƣờng viền của mắt. Đầu tiên, các phép toán morphology nhƣ đóng, cắt bỏ sai khác, và phân ngƣỡng để trích các điểm ảnh có giá trị cƣờng độ thay đổi đáng kể. Các điểm ảnh này sẽ trở thành các điểm ảnh giống mắt. Sau đó một tiến trình gán nhãn để sinh các đoạn giống mắt. Các đoạn này đƣợc dùng để chỉ dẫn tìm kiếm các vùng tiềm năng có thể là khuôn mặt qua kết hợp các đặc tính hình học của mắt, mũi, lông mày, và miệng. Các vùng này sẽ đƣợc một mạng neural xem xét có phải là khuôn mặt không, giống [9]. Theo tác giả tỷ lệ chính xác là 94%.
38
Amit đƣa ra phƣơng thức phát hiện mặt dựa trên hình dáng và áp dụng cho các khuôn mặt chụp thẳng. Có hai giai đoạn để phát hiện mặt ngƣời: tập trung và phân loại chi tiết. Làm có thứ tự các mảnh cạnh, các mảnh này đƣợc trích từ bộ xác định cạnh đơn giản thông qua sự khác biệt cƣờng độ là quá trình tập trung. Khi có các ứng viên từ quá trình trên, dùng thuật toán CART để xây dựng một cây phân loại từ các ảnh để huấn luyện, để xem xét ứng viên nào là khuôn mặt ngƣời.
Jin dùng cấu trúc hình học của khuôn mặt ngƣời để tìm ứng viên khuôn mặt trong ảnh xám và hình nền không phức tạp. Mỗi ảnh chỉ có một khuôn mặt ngƣời, nhƣng tƣ thế điều kiện ánh sáng, không cố định. Tỷ lệ chính xác khoảng 94.25% và thời gian khá nhanh.
Chan và Lewis [30] dùng kỹ thuật lọc để loại bớt tác động của ánh sáng, sau đó phân đoạn để tìm vị trí các ứng viên là con mắt. Từ các ứng viên này xây dựng mạng neural nhƣ Rowley [10] để phát hiện mặt ngƣời. Phƣơng pháp này có thể xác định nhiều khuôn mặt trong một ảnh, các khuôn mặt này có thể có các tƣ thế, vị trí, tỷ lệ khác nhau. Tỷ lệ chính xác là 53%.
Kruppa [12] dùng sắc màu của da ngƣời để tìm ứng viên, nhƣng ông không xử lý cho từng điểm ảnh theo cách thông thƣờng, mà ông dùng mô hình màu da ngƣời trên từng phần nhỏ rồi xử lý phân đoạn trên đó. Sau khi có ứng viên khuôn mặt, ông dùng một số đặc tính về hình dáng để phát hiện mặt ngƣời. Tỷ lệ chính xác là 85%.
Park dùng Gaze để tìm ứng viên góc mắt, miệng và tâm mắt [19]. Ông xây dựng SVM đã đƣợc học trƣớc đó để xác định các vị trí ứng viên có phải là góc mắt, miệng, và tâm mắt hay không để theo vết con mắt ngƣời.
Sato [13] dùng quan hệ đƣờng viền ở cằm của khuôn mặt. Tác giả chia làm hai trƣờng hợp: thon dài và tròn để xem xét. Tác giả dùng GA để xem xét mối tƣơng quan của đƣờng cong, hình dáng khuôn mặt để phát hiện mặt.
Chai và Ngan xây dựng phƣơng pháp phát hiện mặt ngƣời dựa trên