Nghiên cứu Khoa học

Phân tích thành phần chính PCA để nhận dạng khuôn mặt

  • 16/12/2021
  • Nghiên cứu Khoa học

Ý tưởng chính của thuật toán phân tích thành phần chính là giảm số chiều của tập dữ liệu có sự tương quan lớn giữa các biến. Mặc dù giảm số chiều của biến nhưng vẫn duy trì sự biến đổi nhiều nhất có thể của tập dữ liệu ban đầu. Nếu một tập dữ liệu đa biến được xem xét như tập các tọa độ trong một không gian dữ liệu nhiều chiều  (mỗi trục biểu diễn một biến)  thì phương pháp PCA cung cấp cho chúng ta một bức ảnh ít chiều, một cái bóng của vật thể khi quan sát từ chính những đặc trưng cơ bản nhất của vật thể đó. Thực chất của PCA là giải quyết bài toán tìm trị riêng và vector riêng cho ma trận. Phương pháp PCA sẽ giữ lại K thuộc tính “mới” từ M các thuộc tính ban đầu (K<M).

* Tính toán các Eigenfaces

Bước 1:

Sử dụng các ảnh khuôn mặt I1, I2, … In(tập các khuôn mặt huấn luyện) với khuôn mặt phải chính diện & tất cả ảnh phải cùng kích thước.

Giả sử có M ảnh, khi đó i = 1...M.

Bước 2:

Sau đó ta tương ứng mỗi ảnh Ii với một vector Γi

Ii (ảnh N×N) → Γi (vector N2 ×1)                                                  

Bước 3:

Tính vector khuôn mặt trung bình  theo công thức:

=                                                                                    

Trong đó :

M là số ảnh trong tập luyện

Γi là vector 1 chiều (N2×1) đại diện cho mỗi ảnh.

Ψ là  vector trung bình (kích thước N2×1) của tập tất cả các  Γi trên; còn được gọi là vector trung bình mặt của tập luyện

Bước 4:

Sai số của các ảnh so với giá trị vector mặt trung bình được tính toán theo công thức sau:

Φi = Γi –  Ψ                                                                                         

Trong  đó:  

Φi là vector sai số ứng với mỗi ảnh

Ψ là vector trung bình mặt.

Bước 5:

Tính ma trận hiệp phương sai (covariance) C:

C =  = A.AT                                                                         

Khi đó, C sẽ có kích thước N2xN2, và A = [Φ1 Φ2 ... ΦM ]

Trong đó:    

A sẽ có kích thước là N2xM

𝚽n là giá trị sai số

Cụ thể ta có:

Bước 6:

   Tính các Eigenvector ui(“vector riêng”) của ma trận vuông A.AT (C có kích thước N2xN2). Rõ ràng ma trận này có kích thước quá lớn nên việc tính toán rất khó khăn. Vì vậy ta thực hiện bằng phương pháp tính nhanh dựa trên vecto riêng của ma trận AT.A có kích thước M x M. Gọi vi và λi là các vecto riêng và trị riêng của ma trận AT.A. Như vậy :

AT.A . vi = λi. vi

   Nhân 2 vế với A được:  A AT.A.vi = λi.A. vi. Như vậy Avi chính là vecto riêng của ma trận hiệp phương sai C ứng với trị riêng λi

Bước 6.1:

   Xét ma trận AT.A

Bước 6.2:

   Tính các vector riêng vi (eigenvectors) của ma trận vuông AT.A này.

   Ở đây ta sẽ tìm được 4 trị riêng của ma trận AT.A, tuy nhiên ta sẽ sắp xếp lại theo thứ tự giảm dần, và chỉ lấy các trị riêng “non-zero”. Kết quả ta được 3 trị riêng (từ đó tính ra 3 vector riêng tương ứng):

Sau khi đã tính được các vector vi (có kích thước là Mx1), ta sẽ dễ dàng suy ra được các vector riêng ui (kích thước N2x1) mong muốn cần tìm, theo công thức:

ui = Avi                                                                                              

Chuẩn hóa các vector ui

   M trị riêng của ma trận AT.A (kèm với các vector riêng tương ứng), sẽ ứng với M trị riêng lớn nhất của A.AT, đây là các kết quả cho biết các hướng biến thiên quan trọng nhất. Các vecto cơ sở này trực giao từng đôi một, được gọi là các eigenface. Tập hợp các vecto ban đầu được biểu diễn trong không gian tạo bởi các vecto u là:

Φi = Γi –  Ψ = w1u+ w2u2 + w3u3 ..... + wMuM =

Bước 7:

   Chỉ giữ lại K vector riêng trong số các vector nói trên ứng với K trị riêng lớn nhất. Khi đó mỗi khuôn mặt trong tập huấn luyện có thể được biểu diễn lại là 1 tổ hợp tuyến tính của K vector riêng lớn nhất:

Φi = Γi –  Ψ = w1u+ w2u2 + w3u3 ..... + wKuK =                              

Trong đó : wi = Φi

Vecto với các hệ số khai triển [w1, w2, w3,... wK] chính là biểu diễn mới của ảnh được tạo ra trong không gian PCA, và vẫn mang các đặc tính của ảnh cũ

   Có 2 cách để xác định K.

-  Cách 1:

+ Sắp xếp theo thứ tự dãy giảm dần các eigenvalues tìm được.

+ Theo dõi sự biến thiên của dãy trên, khi không còn biến thiên (hoặc xấp xỉ bằng không) thì lúc đó ta đã chọn đủ K.

-  Cách 2:

Chọn K theo công thức sau:

undefined

Các tin khác