Thuật toán AdaBoost đã được trình bày ở trên không được xây dựng riêng cho bài toán dũ tỡm khuôn mặt. Phần này sẽ trình bày cách thức để xây dựng thuật toán có thể thích hợp với vấn đề dũ tỡm khuôn mặt, một minh họa cho vấn đề phân lớp không đối xứng.
AdaBoost là thuật toán tối thiểu hóa lỗi phân lớp nhưng không phải tối thiểu hóa số lỗi mẫu âm. Mục tiêu cao nhất của thuật toán này là tìm được nhiều nhất số khuôn mặt có trong ảnh và chấp nhận lỗi có những đối tượng không phải khuôn mặt cũng được phân vào lớp khuôn mặt.
Có nhiều phương pháp để cải tiến thuật toán AdaBoost để có được một thuật toán không đối xứng. Điều đó có nghĩa chúng ta muốn tăng cường ảnh hưởng của các mẫu dương bị phân lớp sai ban đâu nhằm mục đích tối thiểu hóa tỷ lệ khuôn mặt bị bỏ qua. Chúng ta muốn tối thiểu hóa mẫu âm, chúng ta có thể tăng trọng số cho các mẫu dương do đó tối thiểu hóa tiêu chuẩn lỗi và thu được lỗi mẫu âm rất thấp.
exp( ( )) (2.22) t t i t i i t y h x Z ∏ =∑ − ∑
Mỗi giới hạn trong tổng có cận trên cho bởi hàm mất mát ( y f x, ( )) I[y ( )f x ] λ = ≠ : ( ) [ ] i exp - y t( )i , ( ) y ( ) (2.23) t h x λ y f x I f x ≥ = ≠ ÷ ∑
với λ là hàm mất mát. Điều đó chỉ ra rằng, làm giảm đến mức tối thiểu ∏tZt thì cũng làm tối thiểu giới hạn trên của sự mất mát.
Có thể biểu diễn mất mát không đối xứng bởi:
1 ( ) 1 1 1 ( ) 1 (2.24) 0 i i i i i k y f x A y f x k λ = = − = = − = nÕu vµ nÕu vµ nÕu kh¸c ®i
Trong đó số lần mắc lỗi k của các mẫu âm nhiều hơn các mẫu dương. Với exp( log )
i i i
xứng bằng cách kết hợp công thức (2.22) và (2.23) . Lấy (2.21) và đem nhân hai vế với exp( logyi k) ta có:
exp( i i( ) ) . exp(i ilog ) i (2.25)
t
y ∑h x y k ≥Aλ
Để tối thiểu hóa giới hạn này, chúng ta sử dụng trọng số được khởi tạo không đồng nhất:
Cải tiến thứ hai của thuật toán AdaBoost cho vấn đề dũ tỡm khuôn mặt:
(1) exp( log( )) / (2.26)
n i
d = y k N
Khi đó quá trình cập nhật trọng số trở thành:
exp( ( )) . exp( log( ))
( ) (2.27) i t i i t t t y h x y k D i Z − = ∏ ∑
Với cách xử lý trọng số mới này sẽ cho phép giảm đáng kể tỷ lệ lỗi mẫu âm. Tuy nhiên, ảnh hưởng của cách khởi tạo trọng số không đối xứng này sẽ giảm sau vòng lặp đầu tiên. Trên thực tế, thuật toán AdaBoost như một thuật toán tham lam, bộ phân lớp đầu tiên giành hầu hết ảnh hưởng của cách cập nhật trọng số không đối xứng.
Thuật toán AdaBoost lựa chọn một tập con các đặc trưng để huấn luyện, nhưng chỉ với khoảng 200 đặc trưng đã cho kết quả tốt. Đặc trưng đầu tiên được lựa chọn trong quá trình xử lý phải dễ biểu diễn, chúng có khả năng làm nổi bật các đặc trưng riêng của khuôn mặt. Vùng mắt thường tối hơn các vùng lân cận và sống mũi thường sáng hơn mắt. Tuy nhiên như vậy cũng chưa đủ để đảm bào mục tiêu về mặt thời gian, cần có những cải tiến về cấu trúc bộ phân lớp để đạt được mục tiêu. [9]
2.4 SỰ PHÂN LOẠI VÀO CÁC TẦNG
Chúng ta đã có phương pháp lựa chọn các đặc trưng tiêu biểu nhất và kết hợp chúng trong bộ phân lớp mạnh. Tuy nhiên, chúng ta cần những giải pháp cải tiến hệ thống dũ tỡm khuôn mặt nhằm làm giảm đáng kể thời gian tính toán. Đó là việc hướng tới xây dựng các tầng có thể góp phần làm cho hệ thống dũ tỡm hiệu quả hơn.
2.4.1 Hiệu quả của việc phân tầng
Với một bộ dũ tìm c do phương pháp AdaBoost huấn luyện được, ta có thể dò
lệ dũ tỡm cao thì bộ dũ tỡm phải gồm nhiều đặc trưng, điều đó kéo theo tốc độ dũ tỡm sẽ giảm.
Nếu sử dụng bộ dũ tỡm kết hợp với nhiều bộ dũ tỡm cơ bản khác nhau cũng xảy ra điều tương tự. Để có được độ chính xác cao, hoặc cần phải có số lượng lớn các bộ dũ tỡm, hoặc mỗi bộ dũ tỡm cần phải có nhiều đặc trưng, hoặc cả hai. Và tất nhiên tốc độ dũ tỡm sẽ giảm.
Một hướng khắc phục những nhược điểm này là xây dựng bộ dũ tỡm phân tầng { }i
T = t . Bộ dũ tỡm phân tầng bao gồm nhiều tầng, mỗi tầng ti ={ }cj là một bộ dũ tỡm kết hợp với số lượng các bộ dũ tỡm khác nhau nên tốc độ và tỷ lệ dũ tỡm khác nhau. Khi dũ tỡm tất cả các khuôn mặt trong ảnh, tất cả các cửa sổ con W0 ={wi, j, s}
với các kích thước s khác nhau.
Nguyên tắc cải tiến bộ phân lớp đó là khả năng loại bỏ nhanh chóng các cửa sổ chắc chắn cho mẫu âm trong khi vẫn giữ lại được hầu hết các mẫu dương và sau đó tập trung vào các cửa sổ con với các bộ phân lớp hoàn chỉnh hơn. Để làm được điều đó, những tầng đầu tiên sẽ chỉ chứa ít đặc trưng, sao cho có thể đạt được tỷ lệ dũ tỡm rất cao (xấp xỉ 100%) nhưng có thể có tới 40% mẫu bị nhận nhầm là mẫu dương (khuôn mặt). Đây rõ ràng là điều không thể chấp nhận được với bài toán dũ tỡm khuôn mặt, nhưng nếu kết hợp nhiều tầng dũ tỡm sẽ cho phép đạt được mục đích dũ tỡm khuôn mặt nhanh với tỷ lệ dũ tỡm cao.
Chúng ta có thể so sánh cấu trúc tầng này với cây quyết định. Nếu một cửa sổ con được phân lớp ở một tầng, chúng có thể tiếp tục xử lý ở các tầng dưới và sẽ được ước lượng ở tầng tiếp theo. Quá trình đối với cửa sổ con này sẽ được lặp lại cho đến khi có một tầng đánh giá nó là mẫu âm hoặc nếu tất cả các tầng của bộ phân lớp mạnh đều đánh giá nó là mẫu dương. Với trường hợp thứ hai, nó sẽ được bộ dũ tỡm thừa nhận là mẫu dương (khuôn mặt). Hình vẽ dưới đây mô tả quá trình xử lý của các tầng. [9, 10, 13]
Hình 2.15: Lược đồ mô tả quá trình dũ tỡm phân tầng
Hình 2.16: Cấu trúc phân tầng chi tiết
Một quá trình phân lớp được áp dụng cho mọi cửa sổ con. Khởi đầu quá trình, bộ phân lớp loại ra phần lớn các mẫu âm với các xử lý đơn giản. Ở các tầng con tiếp theo
n 1 2 Các cửa sổ ảnh F F F T T T T
Các cửa sổ mẫu âm
Các cửa sổ mẫu dương
Mẫu không phải khuôn mặt Tầng Bộ phân lớp yếu F T F T F T Xử lý tiếp theo Cửa sổ ảnh vào Tầng trước đóng vai trò như một bộ phân lớp yếu ở tầng sau
tiếp tục loại ra các mẫu âm nhưng tất nhiên là sẽ cần nhiều thời gian hơn. Sau quá trình xử lý ở một loạt các tầng, các cửa sổ con không phải khuôn mặt được loại bỏ một cách triệt để. Các mẫu được phân lớp dương với độ chính xác cao.
Như đã trình bày trong những phần trước, mục tiêu của đề tài là dũ tỡm khuôn mặt trong những ảnh có chứa một vài khuôn mặt. Chú ý rằng chúng ta phải làm việc trên khoảng 20 triệu cửa sổ trong ảnh 100 100× pixel chỉ để dũ tỡm một vài cửa sổ là khuôn mặt, đa số trong những cửa sổ này là mẫu âm. Sẽ là rất hữu ích nếu có thể loại bỏ nhanh chóng những cửa sổ này. Nếu tầng cuối cùng thực hiện việc đánh giá các cửa sổ với hàng nghìn đặc trưng thì cũng chỉ phải làm việc trên một số ít những cửa sổ có khả năng cao là khuôn mặt còn lại, do đó vẫn đảm bảo về mặt thời gian.
2.4.2 Cải tiến bộ phân lớp
Chúng ta đã định nghĩa tầng là sự nối tiếp nhau của các bộ phân lớp. Bước đầu là khá đơn giản nhưng chúng ta có thể làm cho những bộ phân lớp trở lên thích hợp hơn. Phần này sẽ mô tả cách thức xây dựng những bộ phân lớp thích hợp hơn tại mỗi trạng thái.
Trước tiên, những trạng thái cuối cùng của tầng phải xem xét nhiều đặc trưng hơn các trạng thái ban đầu. Thuật toán AdaBoost có thể làm cho lỗi huấn luyện giảm đi theo hàm mũ theo số vòng lặp. Nếu như có nhiều đặc trưng (tức là AdaBoost sẽ phải chạy nhiều vòng lặp hơn) sẽ có sự phân biệt tốt hơn giữa. Nghĩa là bộ phân lớp lúc đó sẽ mạnh hơn một bộ phân lớp với số đặc trưng ít hơn (ớt vũng lặp hơn).
Thứ hai, một lý do không kém phần quan trọng cho việc sử dụng sự phân loại theo tầng là cách thức lựa chọn tập huấn luyện. Tại mỗi bước học, bộ phân lớp hay trạng thái thứ i được kiểm tra trờn cỏc tập mẫu âm. Tất cả các mẫu bị phân lớp sai được giữ cho bộ phân lớp thứ i+1, do vậy bộ phân lớp thứ i+1 sẽ phải xử lý trên những mẫu khó phân loại hơn so các bộ phân lớp trước. Nghĩa là chúng ta sẽ thúc đẩy những bộ phân lớp sau có tỷ lệ lỗi mẫu dương khả quan hơn.
2.4.3 Huấn luyện các tầng cho bộ phân lớp
Mục tiêu của dũ tỡm phân tầng là cải thiện tỷ lệ lỗi dương và tỷ lệ dũ tỡm. Những hệ thống đã được xây dựng cho tỷ lệ dũ tỡm trong khoảng 85% đến 95% và tỷ lệ lỗi dương khoảng 10−5. Số lượng các đặc trưng tại mỗi trạng thái và tổng số trạng thái sẽ ảnh hưởng tới những tỷ lệ này.
Gọi F là tỷ lệ lỗi dương của bộ phân lớp được phân tầng, K là số bộ phân lớp của tầng tk và fi là tỷ lệ lỗi mẫu dương của bộ phân lớp thứ i trong tổng số các mẫu được kiểm tra qua bộ phân lớp này. Xét mỗi tầng tk ={ }ci ta có tỷ lệ lỗi mẫu dương của tk được tính như sau:
1 (2.28) k i i F f = =∏ Sau đó, tỷ lệ dò tìm được xác định: 1 (2.29) K i i D d = =∏
với di là tỷ lệ dũ tỡm của bộ phân lớp thứ i trên các mẫu được kiểm tra trên bộ phân lớp đó.
Với cỏch tớnh này, ta có thể tính được tỷ lệ dũ tỡm của toàn bộ các tầng T ={ }ti là:
1 1 1 (2.30) i T T t i i j i i j G D c = = = = ∏ = ∏∏
Nếu chúng ta muốn nâng tỷ lệ dũ tỡm lờn 90%, chúng ta có thể xây dựng một bộ phân lớp nhiều tầng và mỗi tầng có tỷ lệ dũ tỡm trong khoảng 99%, khi đó
10
0.99 ≈ 0.9. Nếu mỗi tầng có thể loại bỏ được 70% số mẫu âm trong tổng số mẫu âm được đưa vào kiểm tra trên tầng đó tức là tỷ lệ lỗi mẫu dương trên mỗi tầng là khoảng 30% thì sau khi qua 10 tầng tỷ lệ lỗi mẫu dương cuối cùng thu được là
10 6 0.3 ≈ 6.10−
Số lượng các đặc trưng được ước lượng khi quét ảnh cần phải được tính toán theo xác suất. Mọi cửa sổ sẽ được kiểm tra trên mọi tầng của bộ phân lớp để có thể khẳng định đó là mẫu âm hay khi vượt qua tất cả các cửa sổ kiểm tra để được kết luận là mẫu dương. Hoạt động của bộ xử lý được chỉ ra bởi thuộc tính của ảnh trong tập kiểm tra. Một công cụ chính có thể được dùng để đo lường hiệu quả thực thi của bộ phân lớp là tỷ lệ mẫu dương. Cho số lượng các trạng thái tại tầng K, tỷ lệ mẫu dương pi của bộ
phân lớp thứ i. Đặt nilà số lượng các đặc trưng của trạng thái thứ i. Số lượng các đặc trưng được chờ đợi được ước lượng bởi:
0 1 ( ) (2.31) K i i i j i N n n p = < = +∑ ∏
Chúng ta chú ý rằng chỉ có một vài mẫu là đối tượng mong muốn (khuôn mặt), điều đó lý giải tại sao tỷ lệ mẫu dương gần như bằng với tỷ lệ lỗi mẫu dương.
Thuật toán AdaBoos nguyên thuỷ đã được sửa đổi để đảm bảo chắc chắn rằng tỷ lệ lỗi mẫu âm được tối thiểu hoá thay vì lỗi huấn luyện. Một cách đơn giản để thực hiện việc đó là điều chỉnh ngưỡng cuối cùng. Vấn đề chính là chúng ta không bao giờ chứng minh được rằng điều chỉnh lý thuyết AdaBoost huấn luyện ngưỡng sẽ đảm bảo chắc chắn giới hạn lỗi tổng thể.
Cấu trúc phân tầng có 3 tham số chính cần được quan tâm: • Số lượng các bộ phân lớp
• Số lượng các đặc trưng ni của tầng thứ i
• Ngưỡng θi cho mỗi tầng i
Để có thể tối ưu hoá cả 3 tham số này là một vấn đề phức tạp nếu chúng ta muốn đảm bảo mục tiêu tối thiểu hoá thời gian tính toán của cả bộ phân loại. Nguyên tắc chung là tăng số lượng tầng và số đặc trưng tại mỗi tầng cho đến khi đạt được mục tiêu.
Cho tỷ lệ lỗi mẫu dương tại tầng thứ i nhỏ nhất chấp nhận được là f i và tỷ lệ
dũ tỡm tại tầng thứ i là di. Tỷ lệ dũ tìm di mong muốn sẽ đạt được khi giảm ngưỡng
i
θ và điều này cũng ảnh hưởng trực tiếp đến f i. Chúng ta sẽ tăng số lượng các đặc
trưng ni cho đến khi đạt được mục tiêu f i. Nguyên tắc chung của việc học phân tầng
được chỉ ra trong thuật toán 2. Dưới đây là thuật toán huấn luyện một tầng với tỷ lệ loại sai f và độ chính xác d cho trước:[5, 9, 11, 14]
Hình 2.17: Thuật toán huấn luyện bộ dũ tỡm phân tầng
Thuật toán 2: Huấn luyện bộ dò tìm phân tầng Đầu vào: Định nghĩa các mục tiêu huấn luyện
+ : Tỷ lệ nhận sai mẫu dương tối đa chấp nhận được + : Tỷ lệ nhận đúng tối thiểu trong lớp
+ : Tỷ lệ lỗi mẫu dương + P: Tập mẫu dương + N: Tập mẫu âm Khởi tạo +; + (số tầng hiện thời) Lặp Trong khi * * * Trong khi +
+Sử dụng P và N để huấn luyện một phân loại H với đặc trưng, dùng Adaboost
+Thêm bộ phân loại hiện thời vào C
+ Tính và cho bộ phân loại C hiện thời trên tập hợp lệ
+ Giảm ngưỡng cho lớp thứ i đến khi bộ phân loại C hiện thời đạt tỷ lệ dò tìm tối thiểu là (điều này cũng ảnh hưởng tới )
*
*Nếu thì ước lượng bộ dò tìm C hiện thời trên tập mẫu âm và đưa các mẫu dò tìm bị lỗi vào tập N
Đầu ra
Nhân tố chính ảnh hưởng đến hiệu quả của việc học phân tầng là sự quản lý các tập huấn luyện trong suốt quá trình huấn luyện. Tập huấn luyện thường được sử dụng cho tầng đầu tiên, sau đó tại mỗi vòng lặp bộ phân lớp hiện thời sẽ ước lượng tập phù hợp để tối thiểu hoá mối liên hệ của tỷ lệ lỗi mẫu dương và tỷ lệ lỗi mẫu âm. Sẽ là rất không phù hợp nếu ước lượng Fi và Di bằng cách sử dụng chính tập mẫu đã được sử
dụng để xây dựng mô hình. Những đại lượng này sẽ được ước lượng tốt hơn nếu sử dụng một tập kiểm tra được xây dựng hoàn toàn mới và độc lập với tập huấn luyện.
Một khi các mục tiêu Fi và Di đã đạt được ở tầng thứ i, mô hình hiện thời sẽ
được kiểm tra trên tập mẫu âm lớn được lựa chọn một cách ngẫu nhiên và nhiều mẫu dương lỗi được đưa vào tập mẫu huấn luyện õm.Tập mẫu huấn luyện mới được xây dựng với các mẫu bị phân lớp sai ở tầng i, tầng thứ i+1 sẽ được xây dựng với các mẫu được đánh giá là “mẫu khú phõn loại”.Vỡ vậy, càng đi xuống các tầng sau chúng ta càng hoàn thiện mô hình học tăng cường có khả năng phân tách tốt cỏc mõu dương và mẫu âm hơn là những tầng đầu tiên. Phần lớn các cửa sổ chứa mẫu âm sẽ sớm bị loại bỏ ngay từ những tầng đầu tiên. Nếu các tầng sau cần thêm nhiều thời gian tính toán để phân loại các cửa sổ cũng không ảnh hưởng nhiều đến tổng thời gian của toàn