Nhiều kỹ thuật trong tương tác người máy (HCI), như xác định khuôn mặt, nhận dạng biểu thức và nhận dạng tư thế vận động của con người..., yêu cầu những đặc trưng khởi tạo ban đầu. Ví dụ, với những kỹ thuật nhận dạng khuôn mặt thì chú ý nhiều đến các liên kết trên khuôn mặt…. Việc xác định chỉ có khuôn mặt thường không đủ để thực hiện những kết quả nhận dạng mong muốn cuối cùng. Những thông tin như góc quay khuôn mặt, tỉ lệ và vị trí chính xác có thể bao gồm việc định dạng vị trí của mắt trong các khuôn mặt đã xác định lúc đầu.
Việc xác định vị trí mắt chính xác cho phép những liên kết chính xác, chỉ cần thiết kế ban đầu một phương thức xác định vị trí của mắt và vùng khuôn mặt phù hợp có thể phát hiện tự động và phát triển thêm trong quá trình nhận dạng khuôn mặt.
Mục tiêu của quá trình nhận dạng là nhận dạng ảnh nhận được dựa trên các giá trị của các đặc trưng đơn giản. Có nhiều lý do để đưa đến việc dùng các đặc trưng thay cho việc phân tích trên các điểm ảnh, lý do chính là các đặc trưng có thể được dùng để mã hóa thành các dạng kiến thức học mà nếu thực hiện trên các điểm ảnh sẽ chậm hơn rất nhiều.
Hiện tại, lớp nhận dạng Haar (Haar Cascade Classifier - HCC) ngày càng được chú ý hơn. Tỉ lệ xác định cao với các kỹ thuật xác định hiệu quả thực thi tốt, có thể sử dụng chúng trong trong các hệ thống tương tác người máy thời gian thực. Bởi vậy, mục đích của chúng ta đầu tiên phải đào tạo (train) các thành phần phát hiện mắt và khuôn mặt để mang lại lợi ích (HCC) và sau đó kết hợp chúng trong một hệ thống phân tầng. Ngoài ra, chúng ta
cũng muốn cải thiện tỉ lệ xác định của HCC bằng việc đưa thêm các kiến thức dựa trên các tiêu chí đề ra.
Haar Cascade Classifier (HCC) nổi lên như là một cách kết hợp hiệu quả của cả ba yếu tố. Thứ nhất nó làm việc trực tiếp với các giá trị xử lý ảnh, việc phát hiện của người sử dụng bao gồm một tập các điểm đặc biệt có thể mang lại lợi ích trong việc tính toán sau này. Việc tiếp cận dựa trên các điểm đặc biệt này sẽ giúp cho việc giảm các biến đổi trong một hàm và tăng sự biến đổi giữa các lớp với nhau. Thứ hai, nó sử dụng thuật toán Boost cho phép lựa chọn một lúc các đặc điểm vừa đủ và cho việc đào tạo các nhận dạng này. Cuối cùng, việc tạo một cấu trúc lớp của việc kết quả nhận dạng ngày càng phức tạp hơn trong một chương trình phát hiện nhanh và hiệu quả.
2.2.1.2. Đặc trƣng Haar (Haar Like Feature)
Mục tiêu của quá trình nhận dạng là nhận dạng ảnh nhận được dựa trên các giá trị đặc trưng đơn giản. Có nhiều lý do để đưa đến việc dùng các đặc trưng thay cho việc phân tích các điểm ảnh, lý do chính là các đặc trưng có thể được dùng để mã hóa thành các dạng kiến thức học mà nếu thực hiện trên các điểm ảnh sẽ chậm hơn rất nhiều. Các hệ thống dựa trên các đặc tính sẽ nhanh hơn dựa trên các điểm ảnh.
Viola và Jones dùng bốn đặc trưng cơ bản để xác định khuôn mặt người. Mỗi đặc trưng Haar–Like là sự kết hợp của hai hay ba hình chữ nhật "trắng" hay "đen" như trong hình sau:
Để áp dụng các đặt trưng này vào việc bài toán xác định mặt người, bốn đặc trưng Haar-Like cơ bản được mở rộng ra và được chia làm ba tập đặc trưng như sau:
- Đặc trưng cạnh (Edge Features):
- Đặc trưng đường (Line Features):
- Đặc trưng xung quanh tâm (Center - Surround Features):
Lợi ích của 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 của đối tượng), điều mà bản thân từng điểm ảnh không diễn đạt được. Để tính giá trị các đặc trưng Haar-Like, ta tính sự chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như trong công thức sau:
f(x) = Tổngvùng đen(pixel) - Tổngvùng trắng(pixel)
Hình 2.6: Các đặc trưng mở rộng của các đặc trưng Haar-Like cơ sở
Như vậy ta có thể thấy rằng, để tính giá trị của đặc trưng Haar-Like, ta phải tính tổng của các vùng pixel trên ảnh. Nhưng để tính toán các giá trị của các đặc trưng Haar-Like cho tất cả các vị trí trên ảnh đòi hỏi chi phí tính toán khá lớn, không đáp ứng được cho các ứng dụng đòi hỏi tính Run-Time. Do đó Viola và Jones đưa ra một khái niệm gọi là Integral Image để tính 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 dùng để tính toán nhanh cho các đặc trưng xoay một góc 45o
. Integral Image là một mảng hai chiều với kích thước bằng với kích của ảnh cần tính các đặc trưng Haar-Like, với mỗi phần tử của mảng này được tính bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó. Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, phải của ảnh, việc tính toán này đơn thuần chỉ dựa trên phép cộng số nguyên đơn giản, do đó tốc độ thực hiện rất nhanh. x xy yi x y y x P( , ) ' , ' ( ', ')
Hình 2.7: Cách tính Integral Image của ảnh
Sau khi đã tính được Integral Image, việc tính tổng điểm ảnh của một vùng 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 tính tổng điểm ảnh của vùng D như trong hình 2.8)
D = A + B + C + D – (A+B) – (A+C) + A
Với A + B + C + D chính là giá trị tại điểm P4 trên Integral Image, tương tự như vậy A+B là giá trị tại điểm P2, A+C là giá trị tại điểm P3 và A là giá trị tại điểm P1. Vậy ta có thể viết lại biểu thức tính D ở trên như sau:
) , ( ) , ( ) , ( ) , (x4 y4 x2 y2 x3 y3 x1 y1 D P(x,y)
Hình 2.8: Cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh
Hình 2.9: Cách tính tổng điểm ảnh của vùng D với đặc trưng xoay 45o
Với các đặc trưng Haar-Like xoay 45o
Integral Image tại một điểm (x, y) được tính theo công thức:
( ', ') ) , (x y I x y P
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 A C B D P1 P2 P3 P4 RSAT(x,y) B A C 2 4 1 3 D (a) (b)
Ví dụ với phát hiện vị trí mắt. Lớp nhận dạng được training dựa trên các đặc trưng như các hình chữ nhật đen và trắng ở hình vẽ sau:
Hình 2.10: Một vài nguyên mẫu được sử dụng trong xác định vùng mắt
Với RecSum(x, y, w, h, ø) là tổng giá trị cường độ trên các hình chữ nhật thẳng đứng hay xoay một góc ø trong đó x, y, w, h, ø lần lượt là tọa độ, các hướng và góc quay của hình chữ nhật.
Hình 2.11: Dựng thẳng, xoay các hình chữ nhật trong cửa sổ phát hiện
Để tính toán giá trị RecSum ta xây dựng một số tham số để tính toán. Đối với các hình chữ nhật theo phương thẳng đứng, SAT(x,y) được sử dụng để tính toán đứng. Mỗi mục trong bảng được định nghĩa như là tổng cường độ ở các điểm ảnh trong hình chữ nhật thẳng đứng từ vị trí (0,0) đến vị trí (x,y) theo công thức sau:
y y x x y x I y x SAT ' , ' ) ' , ' ( ) , (
Sau khi đã tính toán trên các điểm ảnh của hình chữ nhật, SAT cho phép tính toán tổng điểm ảnh trên hình chữ nhật thẳng đứng với công thức:
RecSum(x,y,w,h,0) = SAT(x-1,y-1)+SAT(x+w-1,y+h-1)-SAT(x+w- 1,y-1)-SAT(x-1,y+h-1)
Đối với các hình chữ nhật quay một góc ø, ta sử dụng giá trị RSAT(x,y) tại một điểm ảnh trong hình chữ nhật để tính toán RecSum(x,y,w,h,ø)
y y y y x x y x i y x RSAT ' , ' |' | ) ' , ' ( ) , (
Sau đó việc tính toán cho các điểm ảnh trong hình chữ nhật quay một góc ø độ được tính toán theo biểu thức sau:
RecSum(x,y,w,h,ø)=RSAT(x-h+w,y+w+h-tanø)+RSAT(x,y-tanø)- RSAT(h-x,y+h-tanø) - RSAT(x+w-1,y+w- tanø)
2.2.1.3. Huấn luyện các bộ nhận dạng Haar
Việc xác định các đặc điểm trên khuôn mặt như miệng, mắt, mũi yêu cầu các bộ nhận dạng Haar tương ứng phải được training. Trong quá trình huấn luyện các nhận dạng, thuật toán AdaBoost và thuật toán Haar Feature sẽ được thực hiện. Intel đã phát triển một thư viện mã nguồn mở cho việc này dễ dàng thực hiện trên máy tính với các chương trình liên quan có tên là Open Computer Vision Library (OpenCV). OpenCV được sử dụng trong việc kết nối các ứng dụng và được sử dụng trong một số lĩnh vực như tương tác người máy, tự động, sinh trắc học, xử lý ảnh và một số lĩnh vực khác.
Để training các bộ nhận dạng này, tập hợp các ảnh ban đầu sẽ được nhận dạng. Tập ảnh đó bao gồm các ảnh chứa hoặc không chứa đối tượng cần phát hiện, ở đây là các đặc điểm trên khuôn mặt sẽ được xác định. Tập hợp ảnh này bao gồm các mẫu âm (Negative Sample) không chứa đối tượng cần xác định và mẫu dương (Positive Sample) bao gồm các thể hiện của đối tượng cần xác định.
Hình 2.12: Một số mẫu dương dùng trong việc xác định khuôn mặt
Hình 2.13: Một số mẫu âm dùng trong việc xác định khuôn mặt
Vị trí của đối tượng trong một mẫu dương được xác định bởi: tên ảnh, điểm ảnh bên trái và chiều cao, chiều rộng của đối tượng. Khoảng 5000 mẫu âm với độ phân giải ít nhất được sử dụng để training.
Để tạo ra các đặc điểm thiết thực nhất cho việc xác định các đặc điểm trên khuôn mặt, tập các mẫu dương ban đầu phải đại diện cho sự khác nhau bao gồm: chủng tộc, giới tính, tuổi tác. Một trong những nguồn mẫu dương tốt trong thực tế là cơ sở dữ liệu về công nghệ nhận dạng khuôn mặt của viện tiêu chuẩn công nghệ (NIST). Cơ sở này chứa đựng khoảng 10.000 ảnh với khoảng 1000 ảnh người dưới các điều kiện ánh sáng, tư thế, góc quay khác
nhau. Ba lớp nhận dạng được đào tạo cho mắt, mũi và miệng. Sau khi các lớp nhận dạng này đã được đào tạo sau đó áp dụng với tập các ảnh khác nhau trong cơ sở dữ liệu FERET ta sẽ có tỉ lệ xác định các đặc điểm đó như bảng dưới đây.
Bảng 2.1: Độ chính xác của bộ nhận dạng
Facial Feature Positive Hit Rate Negative Hit Rate
Eyes 93% 23%
Nose 100% 29%
Mouth 67% 28%
2.2.1.4. Chuỗi các bộ nhận dạng Haar
Quá trình huấn luyện một chuỗi phát hiện liên quan đến việc kết hợp của hai vấn đề. Chuỗi phát hiện với nhiều đặc trưng hơn sẽ nhận dạng chính xác hơn, tỉ lệ nhận dạng nhầm mẫu âm sẽ thấp hơn. Tuy nhiên chuỗi phát hiện với nhiều đặc trưng đòi hỏi thời gian tính toán nhiều hơn. Về nguyên tắc ta có thể định nghĩa một cấu trúc tối ưu mà trong đó số tầng, số đặc trưng mỗi tầng và ngưỡng của mỗi tầng phải được dung hòa để tối thiểu hóa số đặc trưng. Việc tìm ra cấu trúc tối ưu này là rất khó khăn.
Trên thực tế, một cấu trúc đơn giản để tạo ra một nhận dạng hiệu suất cao. Mục tiêu được chọn là giảm tối thiểu việc nhận dạng nhầm là dương và tối đa hiệu suất phát hiện đúng. Mỗi tầng được thêm các đặc trưng để cho đến khi tỉ lệ nhận dạng nhầm là dương và tỉ lệ tìm kiếm đúng đạt được, được kiểm tra bằng tập mẫu kiểm chứng.
Trong hầu hết các trường hợp xác định các đối tượng chúng ta chỉ sử dụng một phần nhỏ của bức ảnh. Theo đó để loại bỏ các vùng không phải là đối tượng được xác định nhanh chóng và chỉ tập trung vào những vùng liên quan, để kiểm tra tất cả các cửa sổ một cách triệt để. Cấu trúc lớp cho phép
cách tiếp cận như vậy. Toàn bộ quá trình phát hiện có thể mô tả bằng một cây quyết định suy giảm dần. Nó bao gồm N giai đoạn trong một loạt các lớp nhận dạng được kết nối dùng để phân biệt các đối tượng được xác định và nền ảnh. Mỗi kết quả dương của bộ nhận dạng trước sẽ kích hoạt việc đánh giá của các nhận dạng sau và kết quả dương của bộ nhận dạng này lại kích hoạt cho bộ nhận dạng sau nữa. Mỗi giai đoạn được training để đạt được tỉ lệ TP (True Positive) gần một và tỉ lệ FP (False Positive) giữ ở tầm 0,5. Các cửa sổ nhận dạng xác thực được thông qua các giai đoạn kế tiếp nhau. Bất cứ kết quả âm của tầng nhận dạng nào cũng sẽ loại bỏ khung hình đó.
Cấu trúc chuỗi phát hiện phản ảnh một điều là trong một ảnh đơn bất kỳ, một lượng lớn các khung hình phụ sẽ là âm. Do đó chuỗi phát hiện cố gắng loại bỏ càng nhiều khung hình âm trong những tầng đầu tiên càng tốt.
Do có dạng cây quyết định, các bộ phận sau sẽ được huấn luyện trên các mẫu thông qua ở tất cả các tầng trước. Kết quả là công việc của tầng sau sẽ khó hơn ở tầng trước do các mẫu đưa đến tầng sau thường khó nhận dạng hơn nên tỉ lệ nhận dạng nhầm ở các tầng này cao hơn so với tầng ban đầu.
1 T 2 T 3 T 4 T F F F F Further Processing
Reject Sub - Window All Sub - Window
Do tính chất nối tiếp, tỷ lệ phát hiện tổng thể là hàm mũ của các giai đoạn hiệu quả đơn lẻ.
i N i N i cas p p TP 1 i N i N i cas f f FP 1 2.2.1.5. Bộ nhận dạng Haar riêng lẻ
Trong quá trình nhận dạng có nhiều tính năng mở rộng, vì thế cần phải tìm cách để lựa chọn được một tập con nhỏ nhất các đặc trưng để đạt được tỉ lệ phát hiện mong muốn. Boosting là một khái niệm học máy kết hợp giữa việc thực thi trên nhiều “bộ nhận dạng yếu” (Weak Classifier). “Yếu” ở đây nghĩa là chỉ nhỉnh hơn một chút so với lựa chọn ngẫu nhiên vào trong một bộ nhận dạng tổng thể duy nhất là “bộ nhận dạng mạnh”(Strong Classifier).
Trong các bộ nhận dạng Haar (Haar Cascade Classifier - HCC) thì các cây hồi quy và nhận dạng (Classification And Regression Tree - CART) được sử dụng như là các bộ nhận dạng yếu. Kích cỡ của chúng chỉ giới hạn trong một vài tầng chia tách. Trong trường hợp đơn giản nhất (Single-Split CARTs) chỉ bao gồm có nguyên gốc của cây. Chúng chỉ là một đặc trưng duy nhất.
Sử dụng các bộ nhận dạng yếu phức tạp hơn một chút (ví dụ 4-Splits CARTs) thì chậm hơn trong việc training nhưng cho phép bảo vệ một số quan hệ giữa các đặc tính trong một bộ nhận dạng yếu. Ngay cả những nhận dạng phức tạp hơn cũng có thể không đạt được tỉ lệ phát hiện mong muốn. Để kết hợp các bộ nhận dạng yếu thành một bộ nhận dạng mạnh chúng ta sử dụng thuật toán AdaBoost. Theo Lienhart và các đồng nghiệp đã chứng minh phiên bản Gentle AdaBoost mang lại tỉ lệ phát hiện bị lỗi thấp hơn so với các phiên bản AdaBoost khác.
Thuật toán Gentle AdaBoost được thực hiện qua các bước sau: 1. Cho N mẫu (x1,y1)…(xN,yN) với xi € Rk, yi € (-1,1)
2. Bắt đầu với weight wi=1/N, i=1,…….,N
3. Lặp lại các bước sau cho đến khi đạt được p và f mong muốn, cho m