6.LẬP TRÌNH NHẬN DẠNG KHUÔN MẶT MATLAB

Một phần của tài liệu Ứng dụng DSP trong nhận dạng khuôn mặt và dấu vân tay (Trang 26 - 34)

Trong các bước ứng dụng xử lý toán học để nhận dạng mặt, một phương thức mô tả cơ sở dữ liệu của mặt như một ma trận là rất cần thiết. MATLAB có thể được sử dụng để đưa ảnh từ một chuỗi file văn bản của tên file và chuyển mỗi graysale image vào một ma trận h x w, trong đó w là chiều rộng (tính theo pixels) của ảnh và h là chiều cao. Mỗi lần, một hình ảnh được đưa vào, chuyển thành định dạng MATLAB hợp thức, và sau đó phục hồi lại hình dạng vào một vector (w*h) x 1, đơn giản, ta đặt cột đầu tiên trên phía đầu, và mỗi cột kế tiếp phía dưới. Mỗi vecto bây h, tương ứng với một picture, và những vector này trở thành các cột của ma trận A, gồm (w*h) x p, trong đó p là tổng số các ảnh đã sử dụng.

Sau đó, MATLAB được sử dụng để tính toán vector trung bình của các cột của A và trừ (subtract) vecto trung bình M này từ mỗi cột trong A, để tạo ra ma trận trừ trung bình (mean-subtracted) L. Để giải thích chi tiết xử lý này, bao gồm mã MATLAB mà chúng ta sử dụng, xem phụ lục A.

Bây giờ, bạn có thể thực hiện một phiên bản đơn giản của các tính toán SVD. Trước tiên, là tính toán ma trận covariance G=A^T A. Tại thời điểm này, các eigenvalue và các eigenvector tương ứng của nó được tính toán và sắp xếp. Chúng được sắp xếp giảm dần theo kích thước của eigenvalues và eigenvenctor tương ứng được sắp xếp với cùng thứ tự như vậy. Những eigenvectirs trở thành những cột của ma trận V(pxp). Trong thứ tự tạo ra một tập các vector cơ bản cho không gian cột của L, ma trận U được tạo ra như sau: U=L*V. Span của cột đầu tiên của U cung cấp một kích thước xấp xỉ tốt nhất của không gian cột của L. Giống như vậy, span xủa 2 cột đầu tiên cung cấp hai kích thước xấp xỉ tốt nhất, và theo logic, có thể nó được tiếp tục chứa j kích thước xấp xỉ. Nó có thể tính toán được bao nhiêu % của variance được sử dụng bởi j-dimensional approximation. Phần trăm(Per) này được tính toán sử dụng các eigenvalues được sắp xếp của ma trận covariance {ld1…ldn} qua biểu thức (equation ).

Per=TongXichMa(ld1->ldj) / TongXichMa(ld1->ldn) *100%.

Trong thứ tự kiểm tra một image từ cơ sở dữ liệu (CSDL) ngoài, MATLAB import và phục hồi lại image trong cùng cách mà được sử dụng cho các images của

CSDL. Vector trung bình (mean vector) M được trừ từ vecto kiểm tra image (T) và hệ số j đầu tiên được tính toán bằng luật sau:

Ct=Ut.T/Ut.Ut

Trong đó Ct là hệ số thứ t của T và Ut là cột thứ t của U. Từ đây, MATLAB đơn giản tính toán khoảng cách O-clit (Euclidean) giữa hệ số j đầu tiên của T và hệ số j đầu tiên của tất cả các picture trong CSDL. Một lần, những khoảng cách này được sắp xếp (theo thứ tự tăng dần), nó cho phép chúng ta xác định được image nào là có xấp xỉ nhỏ nhất của test image. Từ đây, nó làm sáng tỏ lên

(interpretation) bởi mắt người để xác định xem có tồn tại hay không. Mã MATLAB cho phép kiểm tra một image từ CSDL bên ngoài

6.1 CSDL đầu tiên

CSDL đầu tiên chúng ta kiểm tra có 130 hình ảnh của 65 người khác nhau. Mỗi ảnh có kích thước 400x500 pixel và không có ảnh chứa người đeo kính. Chúng tôi chọn ra để sử dụng hình ảnh của những người không đeo kính để hạn chế một biến “glasses”, cái mà có thể sẽ gây ra giới hạn độ chính xác trong hệ thống. Chúng tôi sử dụng 15 của 130 véc tơ cơ bản trong tính

toán, cái mà nhớ được (retained ) 81.229% của sự khác biệt (variance). Máy tính mất 90 phút (với 2.8GHz processor và 512MB RAM) để tải 130 ảnh vào bộ nhớ của nó để phục vụ cho yêu cầu tính toán. Đầu ra rất cuốn hút là xem một mặt trung bình (average face). Đây là vecto trung bình đơn giản của các cột của A, khôi phục lại vào ảnh cỡ 400 x 500 ( Hay kích thước gốc của ảnh) . Hình dưới đây là vecto cơ sở (first eigenface) cho CSDL.

Mỗi ảnh trong CSDL, có một trạng thái, có một hệ số (coefficient) tương ứng với vector cơ sở này.

Đồ thị hệ số của vecto cơ sở trong cùng một loại (term of gender) là có khả năng phát hiện (revealing) vecto nổi bật (vector accentuates) đặc trưng của mặt (facial feature).

Hầu hết phụ nữ có các hệ số âm, và phần lớn đàn ông có các hệ số dương. Hơn nữa, khi chúng ta kiểm tra các bức ảnh của phụ nữ với hệ số âm, chúng ta chú ý rằng họ có tóc dài. Cũng vậy, khi những bức ảnh của phụ nữ được kiểm tra với các hệ số âm của họ, thì có tóc dài, trong khi những bức hình với hệ số dương, có chiều dài của tóc ngắn hơn. Thực tế này sinh ra một số khó khăn ( slightly troublesome) bởi vì, nó cho thấy rằng, diện mạo (aspect) quan trọng nhất của một mặt người là độ dài của tóc, nó cũng là tính năng quan trọng nhất của mặt người để thay đổi. Với thực tế này có thể có khả năng là một nhược điểm (weakness) cho hệ thống. từ bất kỳ sự thay đổi nào lien quan đến chiều dài của tóc, hay hình dạng có thể (likely) sẽ gây ra đổ bể (failure) trong hệ thống.

Khi kiểm tra eigenface thứ hai, nó sẽ kém clear hơn, những tính năng của nó, hệ thống được nhận định identify là quan trọng. Chúng tôi hypoyhesized rằng, một trong những tính năng the eigenface có thể được nhận ra là khác nhau, giữa màu tóc của người và độ tối sáng của da người skin tone. Chúng ta đến phần cuối conclusion này, bằng việc phân tích sự giống nhau với cái được sử dụng cho eigenface trước. Dễ hiểu, chương trình mà khác nhau giữa một vài tính năng…

Bước tiếp theo, lấy 15 hệ số đầu tiên của mỗi mặt và đặt chúng trong một vector. The công thức (formula) cho chiều dài O-clit (Euclidean) của một vector được sử dụng để xác định chiều dài của vector. Điều này cho phép chúng ta khám phá xem khuôn mặt có độ lớn toàn thể lớn nhất overall

largest magnitude. Tuy nhiên, vector với dộ lớn cao nhất highest magnitude, tương ứng với khuôn mặt có thể là xấp xỉ tốt nhất. Hình 6, biểu diễn khuôn mặt gốc mà có thể là best approximated xấp xỉ tốt nhất (có chiều dài vector hệ số lớn nhất) và 15 vector xấp xỉ của khuôn mặt. Ảnh xấp xỉ này được obtained bởi việc lấy 15 vector đầu tiên

Multiplying nhân với các hệ số tương ứng của chúng, rồi cộng adding kết quả các vector lại với nhau. Thật dễ hiểu, từ hai bức hình của họ, sử dụng chỉ 15 vector trong số 130 vector cơ sở để xây dựng lên một readily khả năng nhận dạng các xấp xỉ một cách dễ dàng. Ngược lại, khuôn mặt với xấp xỉ tồi nhất cũng được bd trên hình 6.

Hai mặt phía trên là mặt gốc và 15vector xấp xỉ của khuôn mặt, có thể là xấp xỉ tốt nhất. Giống như vậy, ở đáy là hai ảnh gốc, và 15 vector xấp xỉ của khuôn mặt, có thể là inaccurately xấp xỉ có sai số lớn nhất.

Bây giờ, ta có thể nhìn thấy khuôn mặt thật actual bởi ứng dụng nhận dạng. Chúng ta đã sẵn sang, bj đưa khoảng cách o-clit giữa các hệ số của hình chiếu trực giao orthogonal projection của ảnh bên ngoài với hệ số của mỗi ảnh trong CSDL.

Hình có khoảng cách nhỏ nhất với ảnh kiểm tra được nhận dạng bởi chương trình closest match là khớp nhất, và tất cả các hình còn lại remaining được xếp loại rank từ con đường gần nhất hoặc xa nhất ( trong thuật ngữ của khoảng cách o-clit) với ảnh kiểm tra. Kết quả của chuỗi kiểm tra này rất positive xác thực và indicate chỉ ra rằng trên toàn hệ thống làm việc tốt. Rõ rang rằng, hướng của mặt là cần thiết cho sự nhận dạng được hợp thức có thể xảy ra occur. Khi tất cả các khuôn mặt được facing forward, với độ nghiêng của đầu là nhỏ nhất minimal head tilt, hệ thống chỉ ra người chính xác với độ khớp là 83,78%. Hơn nữa, 93.30% của các phép thử trial đã chỉ ra có ít nhất một hình khớp trong số 3 hình khớp nhất. Một chú ý quan trọng là nhiều ảnh kiểm tra được sử dụng có người đeo kính. Chúng ta đã xác định determined rằng presence sự hiện diện của kính có một chút không influence ảnh hưởng ở đầu ra của kết quả. Trái lại, biểu hiện của mặt tạo ra một tác động đến kết quả. Điều này được chỉ ra bởi một vài phép thử nơi mà người có significantly contorted biểu hiện méo mó của khuôn mặt, được so sánh với biểu hiện trong CSDL. Trong những trường hợp này, hệ thống khó khăn hơn để xác định khuôn mặt khớp một cách hợp thức. Chúng tôi cũng chú ý rằng, một vài phép thử lỗi failed hầu hết giống kết quả với độ nghiêng của đầu người. Tuy vậy, độ nghiêng và hướng của mặt người là hai nhân tố quan trọng significant factor mà có tác động điều hướng negatively afected đến kết quả ra.

Từ đó, chúng ta chú ý rằng eigenface đầu tiên, xác định tóc dài như một trong số hầu hết những nhân tố quan trọng trong việc tạo ra một sự match so khớp chính xác, chúng ta đã kiểm tra how well khi so khớp một người khi có những thay đổi quan trọng với tóc của họ xảy ra. Đầu tiên chúng ta sử dụng Photoshop để đưa một đối tượng phụ nữ với tóc màu đen và thay đổi sang màu hoe blonde. Kể cả màu thay đổi, hệ thống vẫn có thể xác định chính xác cố ta trong CSDL. Tiếp đó, chúng ta lấy một vài hình với tóc dài ( người có một giá trị rất lớn cho eigenface đầu tiên) và sử dụng Photoshop để bỏ đi một phần của tóc. Chúng ta nhận thấy rằng, hệ thống không thể nhận dạng chính xác người như trong sự so khớp tốt nhất khi có sự thay đổi tóc.

Một sự khảo sát thú vị khác, mà chúng tôi đã bố trí, bao gồm đặt

conducted involved placing một tập các cặp twins trong CSDL. Chúng tôi đã kiểm tra hai hình của mỗi người và trong mỗi trường hợp hệ thống lấy ra cả hai hình trong CSDL như là một trong 3 sự so khớp match. Người anh em trai khác không bao h xuất hiện trong top 3 sự so khớp đúng nhất. Điều này

rất quan trọng. bởi vì thậm chí cả mắt người, thật đặc biệt, particularly rất khó phân biệt differentiate giữa hai anh em. Xem hình 7.

6.2 CSDL thứ hai

Bây giờ, chúng ta sẽ xem một CSDL khác sẽ làm việc thế nào, với việc sử dụng các tệp ảnh có kích thước nhỏ hơn. Sử dụng các tệp ảnh nhỏ hơn là rất hiệu quả (desirable),vì thời gian xử lý của máy tính giảm đáng kể. Vì thế, chúng ta sử dụng với cùng các ảnh như nhau, nhưng giảm kích thước khoảng 350x438 pixel. Thời gian xử lý được giảm xuống khoảng 9 phút, tức là lượng thời gian đứng thứ 10 so với time xử lý của CSDL trước. Chúng ta vẫn sử dụng 15 véc tơ cơ sở, mà giữ lại (retain) 70.90% sự khác biệt(variance). Như trong CSDL trước, không có đối

tượng nào đeo kính (glasses). Tuy nhiên, chúng ta đã sử dụng Photoshop để tháo bỏ tóc xung quanh cổ (neck) và các phần thấp hơn (lower) của khuôn mặt, chúng ta cho rằng (hypothesized) sẽ giảm sự ảnh hưởng (influence) của tóc có trong hệ thống. Bởi vậy (Consequently), khuôn mặt trung bình cho CSDL về cơ bản

(essentially) rất giống nhau, nhưng đường bao (outline) của tóc xung quanh nửa thấp hơn của mặt được tháo bỏ. Việc không có tóc có ảnh hưởng rất lớn đến eigenface đầu tiên. Xem hình:

Đây là 2 ảnh của khuôn mặt gốc và 15 véc tơ xấp xỉ (approximation) của một người anh em trai. Cuối là 2 mặt gốc và 15 véc tơ xấp xỉ của anh em trai khác. Trong eigenface này, có sự xuất hiện của sự tương phản (CONTRAST) giữa màu mặt (facial color) của người và màu của tóc, trái với (as opposed to) eigenface đầu tiên từ CSDL đầu tiên, điều đó nhấn mạnh một người có tóc hay không. Tiếp theo (subsequent ) các eigenface có phần (somewhat) khó để xác định sự khác biệt (differentiated). Yet, eigenface thứ 2 dường như phát hiện (detected) ra sự khác nhau trong tín hiệu da (skin tone), và eigenface thứ 3 dường như xem xét có bao nhiêu tóc tại đỉnh của đầu người.

Chúng tôi chú ý rằng, lại một lần nữa, hệ thống rất nhạy cảm với độ nghiêng của đầu người. Tiếp theo, chúng tôi quyết định kiểm tra xem có bao nhiêu độ nghiêng (tilt) sẽ được mô tả trước khi hệ thống bắt đầu lỗi. Chúng ta bắt đầu với các bức hình khác nhau của một người đã có sẵn trong CSDL và xoay quanh 25 độ. Khi việc xoay này được sử dụng hiệu chỉnh khuôn mặt , tỏ ra khớp (closest match) thứ 51. Chúng ta sau đó tạo ra tiến trình quay gần hơn đến trung tâm, với bước quay là 5 độ. Khi khuôn mặt ở vị trí nghiêng 20 độ, so với trung tâm, khuôn mặt khớp nhất là số 34. ..

Khi chúng ta kiểm tra các ảnh từ bên ngoài CSDL, chúng ta cũng tháo bỏ tóc, sử dụng cùng một phương thức tạo CSDL. Kết quả thí nghiệm tỉ lệ thành công là 70%. Có một vài nhân tố mà đóng góp vào việc giảm thành công. Hầu hết giải pháp là dỡ bỏ tóc bằng Photoshop.

Một phần của tài liệu Ứng dụng DSP trong nhận dạng khuôn mặt và dấu vân tay (Trang 26 - 34)

Tải bản đầy đủ (PDF)

(34 trang)