Do bài toán của chúng ta là trên cơ sở dữ liệu mặt người, nên các vector riêng của ma trận C cũng đc gọi là eigenfaces.
Bước 1: Chuẩn bị các ảnh dữ liệu
Sử dụng các ảnh khuôn mặt Γ1, Γ2, …Γn (Tập các khuôn mặt huấn luyện) với khuôn mặt phải chính diện và tất cả ảnh phải cùng kích thước.
66 Bước 2: Biểu diễn ảnh dữ liệu
Biểu diễn mọi ảnh Γi thành vector:
Ví dụ: Để đơn giản ta giả sử chỉ có 4 ảnh trong tập huấn luyện (Kích thước 3x3). Ta tính toán được:
Bước 3: Tìm ảnh trung bình
Tính vector khuôn mặt trung bình theo công thức: Ψ = 1
M∑Mi=1Γi Cụ thể ta có:
Hình 4.5. Ảnh trung bình Bước 4: Tính phương sai của mỗi ảnh so với ảnh trung bình Trừ vector khuôn mặt trung bình:
67 Φi = Γi - Ψ
Cụ thể ta có:
Bước 5:Tính ma trận hiệp phương sai (Covariance matrix) C Ta có công thức:
C = 1
M∑Mi = 1(𝑥𝑘 − M)(𝑥𝑘 − M)T Hay cụ thể trong trường hợp này là:
C = 1 M∑M ΦiΦiT = AAT i = 1 Trong đó: A = [Φ1|Φ2|…|ΦM] Cụ thể ta có:
68 Bước 6: Tính các Eigenvector ui (“vector riêng”) của ma trận vuông AAT (C có kích thước N2xN2).
Từ ma trận A, ta dễ dàng tính được C như sau:
Do kích thước của ma trận này quá lớn, ta xem xét:
Nếu ui là vector riêng thứ i và divà trị riêng thứ i của C Ta có: Cui = diui → AATui = diui
Xét ma trận ATA có kích thước MxM:
Nếu vi là vector riêng thứ i và eivà trị riêng thứ i của ATA Ta có: ATAvi = eivi
Nhân bên trái 2 vế cho A,ta có: AATA vi = Aeivi Gom nhóm: AAT(Avi) = ei(Avi)
→ Vector riêng ui của C mà ta cần tính có thể được tính bằng: ui = Avi
69 Ví dụ trên là ma trận 4 × 4, ta có thể dùng phương pháp đa thức đặc trưng để tính các vector riêng và trị riêng. Tuy nhiên trong thực tế, số chiều của ta là rất lớn, nếu ta dùng ảnh mẫu học kích thước 20 × 20 thì ta có 400 chiều, như vậy ma trận AAT của ta có cỡ 400x400, như vậy ta không thể tính được vector riêng và trị riêng theo cách đa thức đặc trưng được vì số mũ quá lớn.
[22]Năm 1824, Abel đã chứng minh được định lí sau:
“Với m>5 bất kì, tồn tại đa thức p(z) bậc m với hệ số hữu tỉ có một nghiệm thực p(r) = 0 mà r không thể biểu diễn bằng cách sử dụng số hữu tỉ, phép cộng, trừ, nhân, chia và căn bậc k”.
Như vậy, để tính vector riêng của một ma trận có số dòng lớn hơn 5 ta không thể dùng cách đa thức đặc trưng để tính, mà ta phải dùng các phương pháp khác. Thuật toán QR là một trong những phương pháp kinh điển và “hay” nhất, vì vậy đồ án này sẽ tìm hiểu thuật toán QR.