Phân loại sử dụng kỹ thuật Boosting và mô hình Cascade

Một phần của tài liệu Phát triển khuôn mặt nghiêng trên ảnh và video (Trang 39)

2.2.1.1 Tiếp cận Boosting

Boosting [19,22] là kỹ thuật dùng để tăng độ chính xác cho các thuật toán học máy (learning algorithm). Nguyên lý cơ bản của nó là kết hợp các bộ phân loại yếu 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%. Bằng cách này, chúng ta nói bộ phân loại đã đƣợc “boost”.

Xét một bài toán phân loại 2 lớp (mẫu cần phát hiện sẽ đƣợc phân vào 1 trong 2 lớp) với D là tập huấn luyện gồm có n mẫu. Trƣớc tiên, chúng ta sẽ chọn ngẫu nhiên ra n1 mẫu từ tập D (n1<n) để tạo tập 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. Sau đó, 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.

Kết quả chúng ta đã có một bộ phân loại mạnh: sự kết hợp C1, C2 và C3. Khi tiến hành phát hiện một mẫu X, kết quả sẽ đƣợc quyết định bởi sự thỏa thuận của 3 bộ C1,

38

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.

Hinh 11 Minh họa Boosting

2.2.1.2 Adaboost

Adaboost[20] (Adaptive Boost) là một tiếp cận boosting [19,22] đƣợ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 bộ phân loại yếu để có một bộ phân loại mạnh.

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ó phát hiện. 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ị phát hiện sai và giảm trọng số của các mẫu đƣợc phát hiện đú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 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

39

mức độ “tốt” của chúng để tạo dựng nên bộ phân loại mạnh. Quá trình đƣợc minh họa nhƣ hình vẽ dƣới :

Hình 12 Minh họa thuật toán AdaBoost

Có thể hình dung một cách trực quan nhƣ sau: để biết một ảnh có phải là khuôn mặt hay không, ta hỏi T ngƣời (tƣơng đƣơng với T bộ phân loại yếu 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 bộ phân loại yếu) 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ó).

40

Hình 13 Bộ phân loại mạnh H(x) xây dựng bằng AdaBoost

Các bộ phân loại yếu Hk(x) đƣợc biểu diễn nhƣ sau:

Trong đó:

x = (x1, x2,..., xn): véc-tơ đặc trƣng của mẫu. θ: ngƣỡng

fk: hàm lƣợng giá véc-tơ đặc trƣng của mẫu pk: hệ số quyết định chiều của bất phƣơng trình

Công thức trên có thể đƣợc diễn giải nhƣ sau: nếu giá trị véc-tơ đặc trƣng của mẫu cho bởi hàm lƣợng giá của bộ phân loại vƣợt qua một ngƣỡng cho trƣớc thì mẫu là đối tƣợng, ngƣợc lại thì mẫu không phải đối tƣợng.

41

Thuật toán AdaBoost:

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 xk ∈ X = (xk1, xk2, ... , xkm) là véc-tơ đặc trƣng và yk ∈ {-1, 1} là nhãn của mẫu (1 ứng với object, -1 ứng với background).

 Khởi tạo trọng số ban đầu cho tất cả các mẫu:

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

Lặp t = 1, ..., T

o Với mỗi đặc trƣng trong véc-tơ đặc trƣng, xây dựng một bộ phân loại yếu hj với ngƣỡng θj và lỗi

o Chọn ra hj với εj nhỏ nhất, ta đƣợc ht. h : X → {1,−1} o Cập nhật lại trọng số Trong đó: Zt: hệ số dùng để đƣa wt+1,k về đoạn [0,1]  Bộ phân mạnh xây dựng đƣợc

42

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 bộ phân loại yếu ht 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 bộ phân loại mạnh. Mỗi khi chọn đƣợc 1 bộ phân loại ht, Adaboost sẽ tính giá trị αt theo công thức ở trên, αt cũng đƣợc chọn trên nguyên tắc làm giảm thiểu giá trị lỗi εt.

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

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ó vài trò quan trọng trong H(x).

Trong công thức tính αt:

Dễ thấy giá trị αt tỉ lệ nghịch với εj. Bởi vì Ht đƣợc chọn với tiêu chí đạt εj nhỏ nhất, do đó nó sẽ đảm bảo giá trị αt lớn nhất. Công thức này do Freund và Schapire đƣa ra [9].

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ó phát hiện 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.

Vòng lặp xây dựng bộ phân mạnh sẽ dừng lại sau T lần lặp. Trong thực tế cài đặt (thƣ viện OpenCV của Intel), ngƣời ta ít sử dụng giá trị T vì không có công thức nào đảm bảo tính đƣợc giá trị T tối ƣu cho quá trình huấn luyện. Thay vào đó, ngƣời ta

43

sử dụng giá trị min detection rate (tỉ lệ phát hiện đúng tối thiểu) hay max false alarm (tỉ lệ phát hiện nhầm tối đa). Khi đó, qua các lần lặp, false alarm của bộ phân mạnh 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.2.1.3 Mô hình Cascade Bộ phân Bộ phân lớp 1 Bộ phân lớp 2 Bộ phân lớp 3 Bộ phân lớp n

Các vùng ảnh không phải khuôn mặt

Tất cả các vùng ảnh Các vùng ảnh không phải khuôn mặt Các vùng ảnh Khuôn mặt T T T T F F F F Hình 14 Mô hình Cascade

Các bộ phân loại tốt thƣờng tốn rất nhiều thời gian để cho ra kết quả phân loại bởi vì nó phải xét rất nhiều đặc trƣng của mẫu. 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ó phát hiện, có những mẫu không phải đối tƣợng rất dễ nhận ra. Đối với những mẫu này, ta chỉ cần xét một hay vài đặc trƣng đơn giản là có thể nhận diện đƣợc mà không cần xét 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 dù mẫu cần phát hiện là dễ hay khó thì thuật toán vẫn sẽ xét tất cả các đặc trƣng đã trích rút ra đƣợc trong quá trình học. Do đó, các thuật toán này tốn thời gian xử lý một cách không cần thiết. Cascade of Classifiers [3] đƣợc xây dựng chính là nhằm rút ngắn thời gian xử lý, giảm thiểu tỉ lệ phát hiện sai cho bộ

44

phân loại. Cascade tree gồm nhiều tầng (stage), mỗi tầng của cây sẽ là một bộ phân loại. 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 tầng của cây. Các bộ phân loại ở tầng sau đƣợc huấn luyện bằng những mẫu không chứa khuôn mặt mà bộ phân loại ở tầng trƣớc phát hiện sai, tức là nó sẽ tập trung học từ các mẫu không phải đối tƣợng khó hơn, do đó sự kết hợp các bộ phân loại ở các tầng khác nhau sẽ giúp bộ phân loại giảm thiểu đƣợc có tỉ lệ phát hiện sai. Với cấu trúc này, những mẫu không phải đối tƣợng dễ phát hiện sẽ bị loại ngay từ những tầng đầu tiên, giúp đáp ứng tốt nhất đối với độ phức tạp gia tăng của các mẫu đƣa vào, đồng thời giúp rút ngắn thời gian xử lý.

2.2.1.4 Áp dụng mô hình cascade cho các bộ phân loại AdaBoost

“Bộ phân tầng của các lớp” là mô hình phân tầng của các bộ phân loại, với mỗi bộ phân loại đƣợc xây dựng bằng thuật toán AdaBoost sử dụng đặc trƣng Haar-like. Mô hình này đã đƣợc Viola và Jones sử dụng rất thành công trong bài toán phát hiện khuôn mặt thẳng và chính diện[23]. Với tập huấn luyện gồm 4196 hình mặt ngƣời đƣợc đƣa về ảnh xám kích thƣớc 24x24 và 9500 ảnh không phải đối tƣợng không chứa khuôn mặt ngƣời, Viola và Jones đã xây dựng cấu trúc cascade gồm 38 tầng với tổng cộng 6060 đặc trƣng Haar-like. Thực nghiệm đã cho thấy bộ phân loại ở tầng đầu tiên sử dụng 2 đặc trƣng và loại đƣợc khoảng 50% mẫu không phải đối tƣợng không chứa khuôn mặt và có tỉ lệ phát hiện là 100%. Bộ phân loại ở tầng thứ 2 sử dụng 10 đặc trƣng loại đƣợc 80% mẫu không phải đối tƣợng vẫn với tỉ lệ phát hiện đúng đối tƣợng 100%. Hệ thống này đƣợc so sánh với hệ thống của Rowley-Baluja-Kanade [16,17] (sử dụng mạng nơron) và Schneiderman-Kanade [1] (sử dụng phƣơng pháp thống kê), qua so sánh cho thấy tỉ lệ phát hiện là ngang nhau, trong khi hệ thống của Viola và Jones chạy nhanh hơn đến 15 lần so với hệ thống của Rowley-Baluja-Kanade và nhanh hơn 600 lần hệ thống của Schneiderman-Kanade.

Bên cạnh đó, mô hình này cũng đƣợc Eng-Jon Ong và Richard Bowden áp dụng thành công trong bài toán nhận dạng bàn tay. Do bàn tay có nhiều biến động, Ong và Bowden đã sử dụng phƣơng pháp học không giám sát: tiến hành phân cụm cho tất cả

45

các mẫu trong tập huấn luyện chứa 2504 hình bàn tay chụp ở nhiều tƣ thế khác nhau bằng thuật toán phân cụm K-mediod. Cấu trúc bộ phát hiện của Ong và Bowden gồm 2 lớp: lớp trên là một cấu trúc “Bộ phân tầng của các lớp” để phát hiện sơ bộ bàn tay, lớp bên dƣới là từng “Bộ phân tầng của các lớp” ứng với từng cụm đƣợc chia bằng thuật toán phân cụm K-mediod. Kết quả thu đƣợc rất khả quan, cấu trúc phân tầng của bộ phát hiện ở lớp trên gồm 11 tầng với tổng cộng 634 bộ phân loại yếu đã đạt tỉ lệ phát hiện là 99.8% trên tập thử nghiệm, còn các bộ phân tầng ở lớp dƣới có tỉ lệ phát hiện trung bình là 97.4%. Bài toán phát hiện khuôn mặt tƣơng tự nhƣ bài toán nhận dạng tay của Ong và Bowden nhƣng phức tạp hơn. Trong bài toán của họ, một mẫu chỉ cần thỏa mãn một trong các bộ nhận dạng ứng với các cụm đƣợc xây dựng bằng thuật toán phân cụm K-mediod thì đƣợc xem là bàn tay. Trong thực tế, có những mẫu vốn thuộc về cụm 1, nhƣng bộ nhận dạng cụm 1 cho kết quả nó không thuộc cụm 1, trong khi bộ nhận dạng cụm 2 lại cho rằng nó thuộc về cụm 2. Khi đó, rõ ràng cả 2 bộ nhận dạng đều cho kết quả sai nhƣng mẫu này vẫn đƣợc xem là một phân loại thành công của bộ nhận dạng bàn tay, vì mẫu đƣợc đƣa vào vẫn đƣợc đánh giá là bàn tay.

2.2.2. Đặc trưng Haar-like

2.2.2.1 Định nghĩa

Đặc trƣng Haar-like[23] là một loại đặc trƣng thƣờng đƣợc dùng cho bài toán phát hiện đối tƣợng trên ảnh. Haar-like đƣợc xây dựng từ các hình chữ nhật có kích thƣớc bằng nhau, dùng để tính độ chênh lệch giữa các giá trị điểm ảnh trong các vùng kề nhau. Trong hình 15a và 15b, giá trị của đặc trƣng cho bởi một ảnh bằng hiệu số giữa tổng các điểm ảnh thuộc hai vùng hình chữ nhật sáng và tối. Trong hình 15c thì giá trị đặc trƣng bằng tổng các điểm ảnh trong hai vùng hình chữ nhật bên ngoài trừ cho tổng các điểm ảnh trong hình chữ nhật ở giữa. Trong hình 15d, giá trị đặc trƣng bằng tổng các điểm ảnh nằm trong vùng hai hình chữ nhật màu tối trừ cho tổng các điểm ảnh nằm trong hai hình chữ nhật màu sáng.

46

Hình 15a Các đặc trưng cạnh

Hình 15b Các đặc trưng đường

Hình 15c Các đặc trưng bao quanh tâm

47

Ƣu điểm của đặ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 của đối tƣợng, điều mà bản thân từng điểm ảnh không diễn đạt đƣợc.

Sau này các đặc trƣng này còn đƣợc mở rộng ra rất nhiều [21]:

48

Hình 16b Các đặc trưng haar-like mở rộng mới

2.2.2.2.Ảnh tích phân (Integral Image)

Xét về bản chất, ma trận tích phân của ảnh là một ma trận có kích thƣớc bằng ma trận ảnh, nhƣng giá trị tại mỗi điểm bằng tổng mức xám của các điểm nằm trong vùng chữ nhật chiếm bởi vị trí đó của ảnh nhƣ hình dƣới đây

Hình 17 Ảnh tích phân

Cụ thể hơn, giả sử ma trận ảnh (đa mức xám) có kích thƣớc m x n, ma trận tích phân của nó cũng là một ma trận có kích thƣớc m x n và giá trị tại mỗi vị trí (x, y) đƣợc tính toán nhƣ sau:

InteralImage(x, y) =

49

2.2.2.3 Tính toán nhanh các đặc trưng Haar-like

Trong quá trình huấn luyện, số lƣợng xử lý trên các đặc trƣng Haar-like là rất lớn, việc tính tổng các điểm ảnh cho bởi từng đặc trƣng làm cho thời gian xử lý tăng đáng kể. Để khắc phục điều này, Viola và Jones đã đƣa ra khái niệm Integral Image [23,24] để tính toán nhanh cho khác đặc trƣng cơ bản.

Hình 18 Cách tính tổng các điểm ảnh trong một hình chữ nhật bất kì

Với định nghĩa ảnh tích phân tại điểm P(x,y) là:

Tổng các giá trị điểm trong vùng “D” đƣợc tính nhƣ sau: P1 = A ; P2 = A+B; P3 = A+C;

P4 = A + B+ C+ D

D = P4 – A – B – C = P4 + A – (A+B) – (A+C) = P4 + P1 – P2 – P3.

Khi đó, tổng các điểm ảnh trong môt hình chữ nhật bất kì có thể tính nhanh dựa trên ảnh tích phân tại 4 đỉnh của nó Sum(D) = P4 + P1 – P2 – P3.

2.2.2.4 Lựa chọn đặc trưng

Hệ thống phát hiện khuôn mặt của tôi đƣợc xây dựng dựa trên thuật toán phân tầng Adaboost và 8 đặc trƣng Haar-like sau đây:

1. Đặc trưng loại 1: Gồm 2 hình chữ nhật: 1 trắng, 1 đen có cùng kích thƣớc đặt kề nhau nhƣ hình dƣới đây:

50

2. Đặc trưng loại 2: Cũng gồm 2 hình chữ nhật: 1 trắng, 1 đen có kích thƣớc bằng nhau nhƣng lại đƣợc bố trí tƣơng tự nhƣ hình dƣới đây:

3. Đặc trưng loại 3: Gồm 3 hình chữ nhật :2 trắng, 1 đen có cùng kích thƣớc đặt cạnh nhau tƣơng tự nhƣ hình dƣới đây:

4. Đặc trưng loại 4: Gồm 4 hình chữ nhật : 2 trắng, 2 đen tuy nhiên lại đƣợc bố trí tƣơng tự nhƣ sau:

51

5. Đặc trưng loại 5: Gồm 3 hình chữ nhật : 2 trắng, 1 đen đƣợc bố trí tƣơng tự

Một phần của tài liệu Phát triển khuôn mặt nghiêng trên ảnh và video (Trang 39)