Thuật toán PCA và ứng dụng trong nhận dạng khuôn mặt người

Một phần của tài liệu DÒ TÌM VÀ CẮT ẢNH MẶT NGƯỜI DÙNG PCA (Trang 59)

3.3 Ứng dụng Eigenfaces trong việc nhận dạng mặt người

Chương 3

PHÂN TÍCH THÀNH PHN CHÍNH PCA

3.1 Sơ lược về phân tích thành phần chính PCA

Phân tích thành phần chính (Principal Component Analysis - PCA) được trình bày theo nhiều quan điểm khác nhau. Với các nhà thống kê cổđiển thì PCA là tìm các trục chính của ellipsoid nhiều chiều bao hàm đám mây số liệu phân phối chuẩn nhiều chiều, các trục đó được ước lượng từ một mẫu n cá thể, trên mỗi cá thể người ta đo p

chỉ tiêu. Người đầu tiên đưa ra kỹ thuật này là H.Hotelling (1933), sau đó là T.W.Anderson (1958) và A.M.Kshirsagar (1972).

Với các nhà nhân tố học cổ điển thì kỹ thật này là phương pháp phân tích nhân tố trong trường hợp đặc biệt, khi các phương sai này bằng không hoặc xấp xỉ bằng không. Phương pháp này thường được sử dụng trong phân tích tâm lý, do Horst (1965) và Harman (1966) đề xuất.

Sau cùng, theo quan điểm phổ biến hơn cả của các nhà phân tích số liệu thì PCA là một kỹ thuật biểu diễn các số liệu một cách tối ưu theo một tiêu chuẩn đại số và hình học đặc biệt. khi sử dụng kỹ thuật này người ta không đòi hỏi một giả thuyết thống kê hoặc một mô hình đặc biệt nào. Quan điểm này trở nên phổ biến từ khi có máy tính

điện tử, và là quan điểm mới nhất. Những tư tưởng của phương pháp này do K.Pearson (1901) đề xuất. Trong công trình của C.R Rao (1964) nội dung lý thuyết của phương pháp PCA được trình bày khá đơn giản và rõ ràng.

Lĩnh vực ứng dụng của phương pháp PCA rất rộng trong công nghiệp, nông nghiệp, kinh tế, khoa học cơ bản… với bảng số liệu mà các cột là các biến và các dòng là các cá thể, trên đó đo giá trị của biến.

3.2 Thuật toán PCA và ứng dụng trong nhận dạng khuôn mặt người 3.2.1 Thuật toán

Khuôn mặt con người có rất nhiều nét để nhận biết, nếu như ta gặp lại một người bạn sau một thời gian dài, ta có thể nhận ra ngay người đó dù những chi tiết cụ

thể trên mặt có thể thay đổi như da, mái tóc. Ta nhận ra không phải vì nhớ đôi mắt, hay mũi hay môi hay tóc, lông mày người đó mà ta nhận ra vì nhớ diện mạo của người đó. Tức là trên khuôn mặt tồn tại một nét tổng thể nào đó để có thể nhận diện, thuật toán của ta bắt đầu từ ý tưởng này .

Phân tích thành phần chính (Principal Component Analysis ) gọi tắt là PCA là thuật toán nhận dạng ảnh dựa trên những nét tổng thể của khuôn mặt, ta sẽ áp dụng thuật toán này để thực hiện hai công việc sau :

• Thứ nhất là xác định vị trí những khuôn mặt người trong một bức ảnh. • Thứ hai là tìm một khuôn mặt giống với khuôn mặt cho trước.

Ban đầu ta có một tập ảnh khuôn mặt gọi là tập ảnh huấn luyện (training set). Giả sử mỗi ảnh có kích thước M*N, ta coi mỗi bức ảnh này là một vector trong không gian M*N chiều. Bây giờ mỗi khuôn mặt là một vector, ta thấy những vector này không phân bố ngẫu nhiên trong không gian ảnh mà phân bố theo một quy luật tương đối nào

đó, ta có thể nói những vector này nằm trong một không gian con gọi là không gian khuôn mặt. Từ những vector trong tập huấn luyện, ta sẽ tìm một cơ sở trực chuẩn cho không gian khuôn mặt. Những vector thuộc cơ sở này có thể coi là những vector mang những nét tổng thểđặc trưng về khuôn mặt.

3.2.2 Phân tích thành phần chính PCA

Giả sử tập huấn luyện có Pảnh, khi đó ta sẽ có P vector: T1, T2, …, TP.

Tính vector ảnh trung bình : 1 1 p i i m T p = = ∑

Sự khác biệt giữa những khuôn mặt với ảnh trung bình là những vector:

i i

Ý tưởng của việc phân tích thành phần chính là tìm một tập những vector trực chuẩn uk sao cho những vector này mô tả tốt nhất sự phân bố những vector khuôn mặt trong không gian. Những vector ukđược chọn sao cho:

1 , / 0 , i j ui uj i j = ⎧ − = ⎨ ≠ ⎩ 2 1 / p k k i i u A λ = − =∑ lớn nhất .

Những vector uk và giá trị vô hướng λk chính là những vector riêng và trị riêng tương ứng của ma trận AAT.

/

u v là tích vô hướng giữa hai vector u, v.

1 2... p

A= ⎣⎡A A A ⎤⎦

Ta thấy ma trận A có kích thước M*N × P, còn ma trận AAT có kích thước

M*N×M*N, do kích thước ma trận này quá lớn nên ta không thể tìm được những vector riêng và những trị riêng trực tiếp được, thay vào đó ta sẽ tìm những vector riêng của ma trận ATA có kích thước P×P . (adsbygoogle = window.adsbygoogle || []).push({});

Nếu v là một vector riêng của ATA λ là trị riêng tương ứng, khi đó ta có:

ATA v = λv Ù ATA Av = λAv

tức là Av là một trị riêng của ma trận AAT.

Thông thường ta chỉ lấy một sốQ vector riêng ứng với Q trị riêng có giá trị lớn nhất.

Sau khi có các vector riêng của ma trận AAT, ta sẽ chuẩn hóa chúng để thu được một cơ sở trực chuẩn của không gian khuôn mặt .

Đặt L= ATA , tìm V là tập hợp các vector riêng của L, D là tập hợp các trị riêng tương ứng .

V bao gồm Q vector riêng ứng với những trị riêng lớn hơn một giá trị nào đó hoặc ứng với Q trị riêng lớn nhất trong D.

E = AV là tập các vector riêng của AAT. Do đây là những vector riêng, mà nó lại có dạng khuôn mặt nên còn đuợc gọi là Eigenfaces. E là ma trận M*N×Q, mỗi cột là một vector riêng.

Chuẩn hóa các vector cột trong E (chia mỗi vector cho độ dài của vector đó). Bây giờ, ta có thể coi E là một cơ sở trực chuẩn của không gian khuôn mặt. Với H là bức ảnh có cùng kích thước với những bức ảnh trong tập huấn luyện. Ta sẽ xét nó có phải là bức ảnh khuôn mặt hay không, cũng như tìm bức ảnh giống với nó nhất trong tập huấn luyện .

Hđược xem là một vector trong không gian M*N chiều.

Đặt K= H - m với m là vector ảnh trung bình.

Cho V là một không gian có tích vô hướng hữu hạn chiều và W là một không gian con của V. Giả sử W có một cơ sở trực chuần là {u1, …, uQ}. Khi đó hình chiếu trực giao của vector u bất kỳ lên Wđược xác định như sau:

0 1 / Q w i i i pr u u u u u = = =∑

Độ dài u u− 0 được gọi là khoảng cách từuđến W .

Tập hợp ci = u u/ i , i=1,…, Qđược gọi là tọa độ của u0 trong không gian W. Tìm C=ETK là tọa độ của hình chiếu Kf của K lên không gian khuôn mặt. C là vector cột Q×1 1 Q f i i i K c e = =∑ với ci = C( i , 1) ; ei= E( : , i) .

Với Ai là một cột trong ma trận A (tương ứng với bức ảnh Ti trong tập huấn luyện). Ta tính T

i i

C =E A là tọa độ của hình chiếu Ai f của Ai lên không gian khuôn mặt. Ta tính hai đại lượng sau:

ƒ S = K Kf xem như khoảng cách từ bức ảnh Hđến không gian mặt.

ƒ Si = C Ci xem như khoảng cách từHđến bức ảnh Ti trong tập huấn luyện. Xét αβ là hai ngưỡng nào đó.

ƒsi < β thì Ti là bức ảnh của cùng một người với H ( Hđủ gần với Ti).

Vậy là ta đã có thể tìm bức ảnh trong tập huấn luyện giống với bức ảnh H hay xác

định đó có phải là bức ảnh khuôn mặt hay không. Tuy nhiên ảnh H phải có cùng kích thước với những bức ảnh trong tập huấn luyện. Bây giờ trong một bức ảnh lớn H có nhiều khuôn mặt, ta sẽ xác định vị trí những khuôn mặt trong bức ảnh.

Tại mỗi vị trí (x,y) trong H, đặt H(x,y) là một vùng trong ảnh H có kích thước M×N

tại (x,y), ta xem ảnh con H(x,y) là một vector M*N chiều.

K(x,y) = H(x,y) – m

Tìm Kf(x,y) là hình chiếu của K(x,y) lên không gian khuôn mặt . Tính s x y( , )= K x y( , )−K x yf( , )

Tập hợp các giá trị s(x,y) tạo thành một bản đồ khuôn mặt (face map) của H, từđó ta có thể xác định vị trí những khuôn mặt trong ảnh.

3.2.3 Hình ảnh minh họa

Trong ví dụ này ta có một tập huấn luyện gồm những bức ảnh khuôn mặt kích thước 180x200 pixel, dưới đây là một số hình ảnh của những eigenfaces thu được (lưu ý là (adsbygoogle = window.adsbygoogle || []).push({});

đây chỉ là các vector trực giao, những eigenfaces thực sự chính là những vector này

được chuẩn hóa).

Hình 3.1 Eigenfaces

Hình 3.2 Bức ảnh kiểm tra và hình chiếu của nó

Như ta thấy nếu bức ảnh là khuôn mặt người thì hình chiếu sẽ khá giống với ảnh gốc, còn khi bức ảnh không phải là khuôn mặt thì hình chiếu sẽ khác ảnh gốc rất nhiều, do đó khoảng cách từ bức ảnh mặt người tới không gian mặt sẽ nhỏ hơn rất nhiều so với khoảng cách từ bức ảnh không phải mặt người tới không gian mặt.

Dưới đây là một ví dụ khác, ta có một tập huấn luyện gồm những bức ảnh kích thước 18x27 pixel, ta cũng tìm các Eigenface và sau đó tìm face map của một bức ảnh kiểm tra. Trong ví dụ này thì ảnh con H(x,y) vùng hình chữ nhật có tâm tại (x,y) trên bức ảnh và có kích thước 18x27 pixel.

Hình 3.3 Ảnh ban đầu

Hình 3.4 Face map của bức ảnh ban đầu.

Ta thấy vị trí của mỗi khuôn mặt chính là những vùng cực tiểu địa phương trên bức ảnh (là những đốm đen trong những vùng trắng hình chữ nhật).

Bây giờ nếu ta có một cơ sở dữ liệu những ảnh không phải khuôn mặt (ta thường tập trung vào những hình ảnh xung quanh khuôn mặt như cổ áo, một phần của khuôn mặt …). Tìm face map của bức ảnh ban đầu với không gian không phải khuôn mặt này, ta thu được kết quả sau:

Hình 3.5 Face map ảnh ban đầu với không gian không phải là khuôn mặt

Hình trên cũng khá giống với face map ứng với không gian khuôn mặt nhưng tại mỗi vùng sáng hình chữ nhật thì không hề có tâm ở giữa.

Thực ra từ face map ứng với không gian khuôn mặt, nếu ta có một thuật toán tốt

để tìm những vị trí cực tiểu địa phương thì đã có thể xác định vị trí các khuôn mặt. Face map ứng với không gian không phải khuôn mặt chỉ là một cách đơn giản để giúp ta tìm chính xác hơn thôi.

Tất cả những điều thu được ở trên chỉ là kết quả hoàn toàn dựa trên lý thuyết, trong thực tế những thuật toán nhận dạng mặt người đã phát triển lên rất nhiều từ ý tưởng của PCA mới có được độ chính xác yêu cầu.

3.3 Ứng dụng Eigenfaces trong việc nhận dạng mặt người

Hầu hết việc làm trước đây trong hệ thống tự nhận dạng gương mặt đều cho rằng việc nhận ra các góc cạnh của gương mặt trong các trạng thái khác nhau là rất quan trọng trong việc nhận dạng, thừa nhận rằng việc xác nhận trước các khoảng cách là rất quan trọng và cần thiết. Điều đó đề xuất chúng tôi đưa ra phương pháp lý thuyết thông tin cho việc mã hóa và giải mã những ảnh mặt người, đưa ra bản chất nội dung thông tin của những ảnh mặt người, nhấn mạnh những đặc trưng “cục bộ” và “toàn cục”. Những đặc trưng có hoặc không có liên quan trực tiếp đến cách quan sát bằng trực giác của chúng ta về các đặc trưng của gương mặt như cặp mắt, mũi, môi hoặc mái tóc.

Trong ngôn ngữ của lý thuyết thông tin, chúng ta muốn trích xuất các thông tin quan trọng của ảnh mặt người, mã hóa một cách hiệu quả trong phạm vi có thể, và so sánh gương mặt mã hóa với kho dữ liệu của các mẫu được mã hóa một cách tương tự. Một cách dễ dàng để trích xuất thông tin chứa đựng trong bức ảnh mặt người là bằng cách nào đó chỉ ra sự khác biệt trong tập hợp ảnh mặt người, độc lập trong phân tích các nét mặt, và sử dụng những thông tin này mã hóa và so sánh các ảnh gương mặt cá thể.

Về mặt toán học, chúng ta tìm ra các thành phần chính trong sự phân bố của mặt người, hoặc các vectơ riêng (eigenvectors) từ ma trận tương quan của dãy ảnh mặt người. Những vectơ riêng này có thể được xem như là dãy những điểm đặc trưng, chúng liên kết nhau để mô tả sự khác nhau giữa các ảnh mặt người. Mỗi vị trí của ảnh góp phần tạo ra mỗi vectơ riêng, vì vậy ta có thể trình bày vectơ riêng bằng một loại mặt ma “ghostly face” mà ta còn gọi là eigenface. Một số mặt loại này được trình bày trong hình 3.7.

Hình 3.7 Bảy Eigenfaces được tính toán từ dãy huấn luyện của hình 4.6, phông nền đã

được loại bỏ

Mỗi ảnh mặt người trong dãy huấn luyện có thể được tái hiện chính xác thông qua eigenfaces. Số lượng eigenfaces tương đương với sốảnh mặt người được đưa vào huấn luyện. Tuy nhiên các gương mặt có thể xấp xỉ bằng cách chỉ sử dụng “best eigenfaces”, được tạo ra từ các giá trị riêng lớn nhất và từ đó có thể tính toán độ sai biệt lớn nhất với chuỗi ảnh mặt người. Lý do chính cho việc sử dụng ít eigenfaces là nhờ sự hiệu qủa trong quá trình tính toán. M’ eigenfaces sẽ mở rộng ra không gian con M’ chiều - “không gian mặt người”- của tất cảảnh có thể. Đường hình sin biểu thị các pha và tần số khác nhau là hàm cơ bản của phân bố Fourier (là hàm riêng của hệ thống tuyến tính).

Ý tưởng sử dụng eigenfaces được thúc đẩy bởi sự phát triển kỹ thuật của Sirvokick và Kirby - những bức hình miêu tả hiệu qủa các gương mặt sử dụng phương pháp phân tích các thành phần chính (principal component analysis - PCA). Họ chứng minh rằng các bộ sưu tập ảnh mặt người có thể được tạo lại một cách gần đúng bằng việc lưu trữ bộ trọng số cho mỗi gương mặt và một chuỗi nhỏ bức hình chuẩn (có thể

nhỏ hơn rất nhều so với bộ sưu tập ban đầu).

Quá trình nhận dạng có thể tóm tắt như sau:

• Chuẩn bị: Thu thập dãy huấn luyện của ảnh mặt người và tính toán các eigenfaces, xác định không gian mặt người.

• Khi nhận được bức ảnh mới, tính toán dãy trọng số dựa vào ảnh đầu vào và M eigenfaces bằng cách chiếu ảnh đầu vào với từng eigenface.

• Có thể xác định ảnh đầu vào có phải là gương mặt hay không dưa vào việc kiểm tra ảnh đó có gần không gian mặt người hay không.

• Nếu đã là gương mặt thi phân loại các trọng số xem đó có phải người đã biết trước hay chưa.

• (không bắt buộc) Nếu gương mặt chưa biết xuất hiện vài lần thì tính toán các trọng số thành phần và sát nhập vào những gương mặt đã biết (học nhận dạng). (adsbygoogle = window.adsbygoogle || []).push({});

3.3.1 Tính toán Eigenfaces

Lấy bức ảnh mặt người I(x,y) là ma trận 2 chiều N×N (các giá trị trong ma trận thể hiện mức xám tại từng điểm ảnh), hoặc là vectơ N2. Bức ảnh chuẩn có kích thước 256x256 mô tả vectơ có 65536 chiều, hoặc có thể xem mỗi bức ảnh là một điểm trong không gian 65536 chiều. Với một chuỗi ảnh thì ta sẽ có một bản đồ mô tả tập hợp các

điểm (mỗi điểm đặc trưng cho 1 ảnh) trong không gian rộng lớn này.

Ảnh của các gương mặt, có thể xem như tương tự nhau trong dạng tổng quát, chứ không phải sự phân bố ngẫu nhiên trong không gian ảnh rộng lớn do đó ta có thể

mô tả chúng trong không gian con ít chiều hơn. Ý tưởng chính của phương pháp phân tích các thành phần chính (PCA) là tìm kiếm các vectơ tính toán sự phân bố ảnh mặt người theo hướng tốt nhất đối với vùng ảnh đầu vào cho trước. Những vectơ này xác

định không gian con của ảnh mặt người, chúng còn được gọi là không gian mặt (face space).

Những vectơ này có chiều dài là N2, mô tả bức ảnh N×N, và nó là sự kết hợp tuyến tính từ các ảnh gốc đầu vào. Bởi vì các vectơ là các eigenvectơ của ma trận

Một phần của tài liệu DÒ TÌM VÀ CẮT ẢNH MẶT NGƯỜI DÙNG PCA (Trang 59)