Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

1 Principal Component Analysis – PCA

ĐẠI HỌC BÁCH KHOA THÀNH PHỐ HỒ CHÍ MINH

KHOA KHOA HỌC ỨNG DỤNG

NĂM HỌC 2020-2021


-----------------------------------------------

BÁO CÁO BÀI TẬP LỚN


MÔN: ĐẠI SỐ TUYẾN TÍNH

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


ỨNG DỤNG PCA TRONG NHẬN DIỆN KHUÔN MẶT

Nhóm thực hiện: L10_Nhóm 13

Giáo viên hướng dẫn: Nguyễn Xuân Mỹ


2 Principal Component Analysis – PCA

DANH SÁCH SINH VIÊN NHÓM 13 LỚP L10

Tên sinh viên MSSV


Bùi Đình Trường 2213731
Lâm Phước Trung 2012305
Đinh Huy Toàn 2213522
Trần Thị Thanh Trúc 2213729
Lê Thiên Trường 2115146
Nguyễn Thanh Trúc 2213720
Phan Minh Trọng 2213676
Hoàng Đình Anh Trung 2213683
Lê Minh Toàn 2213527
3 Principal Component Analysis – PCA

LỜI CẢM ƠN

Lời đầu tiên nhóm xin gửi lời cảm ơn chân thành đến tập thể sư phạm
trường Đại học Bách khoa đã tạo điều kiện hết mức để nhóm có thể học
tập, trao đổi kinh nghiệm cùng thầy cô và bè bạn trong suốt thời gian qua.
Bên cạnh đó, thông qua những bài tập lớn được giao, các thành viên trong
nhóm đã trở nên trường thành hơn, trau dồi thêm nhiều kĩ năng, khám phá
được nhiều điều mới mẻ, tạo tiền đề cho việc nghiên cứu khoa học trong
tương lai.
Trong suốt quá trình thực hiện bài tập lớn môn Đại số tuyến tính, nhóm đã
phải trăn trở trước nhiều vấn đề. Nhưng nhờ những sự chỉ dẫn kịp thời từ
cô Nguyễn Xuân Mỹ cùng các sinh viên trong trường, nhóm đã hoàn thành
bài tập một cách hiệu quả, đúng tiến độ và giải quyết hiệu quả những vướng
mắc gặp phải. Sự hướng dẫn của cô đã là kim chỉ nam cho mọi hành động
của nhóm và phát huy tối đa được mối quan hệ hỗ trợ giữa cô và trò trong
môi trường giáo dục.
Lời cuối, xin một lần nữa gửi lời biết ơn sâu sắc đến các cá nhân, các thầy
cô đã dành thời gian chỉ dẫn cho nhóm. Đây chính là niềm tin, nguồn động
lực to lớn để nhóm có thể đạt được kết quả này
4 Principal Component Analysis – PCA

Mục Lục
I. Khái quát về phương pháp PCA ......................................................................... 6
1. Định nghĩa.......................................................................................................... 6
2. Cách thức hoạt động ......................................................................................... 6
II. Cơ sở lý thuyết ................................................................................................... 8
1. Một số khái niệm trog toán thống kê: ................................................................ 8
2. Cơ sở lí thuyết..................................................................................................... 10
3.Các bước phân tích PCA .................................................................................... 11
III .Giải thuật, mô phỏng .......................................................................................... 16
1. Khái quát về nhận diện khuôn mặt: .......................................................... 16
2. Ứng dụng của phân tích PCA vào nhận dạng khuôn mặt. ...................... 16
Tài liệu tham khảo ..................................................................................................... 26
5 Principal Component Analysis – PCA
6 Principal Component Analysis – PCA

I. Khái quát về phương pháp PCA


1. Định nghĩa
Phân tích thành phần chính (Principal Component Analysis – PCA) là
một trong những phương pháp phân tích dữ liệu nhiều biến đơn giản nhất.
2. Cách thức hoạt động
Nói một cách ngắn gọn, mục tiêu của PCA là tìm một không gian mới
(với số chiều nhỏ hơn không gian cũ). Các trục tọa độ trong không gian
mới được xây dựng sao cho trên mỗi trục, độ biến thiên của dữ liệu trên đó
là lớn nhất có thể
⚫ Thay vì giữ lại các trục tọa độ của không gian cũ, PCA xây dựng
một không gian mới ít chiều hơn, nhưng lại có khả năng biểu diễn
dữ liệu tốt tương đương không gian cũ, nghĩa là đảm bảo sự biến
thiên của dữ liệu trên mỗi chiều mới.

Ví dụ: Ta có mô hình mẫu sử dụng PCA:


7 Principal Component Analysis – PCA

⚫ Giảm chiều dữ liệu trong ví dụ sau đây thì ban đầu từ dữ liệu 3
chiều chuyển sang 2 chiều

⚫ Do PCA giúp tạo 1 hệ trục tọa độ mới nên về mặt ý nghĩa toán học,
PCA giúp chúng ta xây dựng những biến msới là tổ hợp tuyến tính
của những biến ban đầu.
⚫ Trong không gian mới, có thẻ giúp chúng ta khám phá thêm những
thông tin quý giá mới khi mà tại chiều thông tin cũ những thông tin
quý giá này bị che mất (Điển hình cho ví dụ về chú lạc đà phía
dưới).
8 Principal Component Analysis – PCA

Ví dụ: Nén hình ảnh sử dụng thuật toán PCA

- Tái tạo lại hình ảnh bằng thuật toán PCA với các thành phần chính là
10,50,100,150 và 256. Ta thấy khi càng sử dụng nhiều thành phần chính,
thì các có nhiều phương sai ( thông tin) được mô tả. Từ đó ta có thể lựa
chọn các mức nén ảnh phù hợp với yêu cầu mà không khiến ảnh bị “xấu”
đi quá nhiều.

II. Cơ sở lý thuyết
1. Một số khái niệm trong cơ sở trong toán học:
• Giá trị kỳ vọng, hay trung bình (mean):
- Giá trị mong đợi, biểu diễn trung bình của một biến
- Nếu X là một ma trận m*n, giá trị kỳ vọng của X là một
ma trận của các giá trị kỳ vọng.
𝑥 +𝑥 +⋯+𝑥𝑁
- Công thức: 𝑥̅ = 1 2
𝑛
• Phương sai (variance):
- Đặc trưng cho độ phân tán số liệu so với giá trị trung bình
của nó. Từ đó chúng ta dễ dàng “hình dung” được dữ liệu
đang xét.
Công thức:
1 𝑁
2
σ = ∑ (𝑥𝑖 − 𝑥)2
𝑁−1 𝑖=1
9 Principal Component Analysis – PCA

• Độ lệch chuẩn (Standard Deviation):


- Là một đại lượng thống kê mô tả dùng để đo mức độ phân
tán của một tập dữ liệu đã được lập thành bảng tần số. Có thể
tính ra độ lệch chuẩn bằng cách lấy căn bậc hai của phương
sai.
-Ý nghĩa: Độ lệch chuẩn đo tính biến động của giá trị mang
tính thống kê. Nó cho thấy sự chênh lệch về giá trị của từng
thời điểm đánh giá so với giá trị trung bình.
-Công thức: s=√ 𝝈 ̂𝟐
̂=𝒙−𝒙
𝒙 ̂

• Hiệp phương sai (covariance):


- Là độ đo sự biến thiên cùng nhau của hai biến ngẫu nhiên
Ký hiệu:

∑𝑁 ̅ ̅
𝑖=1(𝑋𝑖 − 𝑋 )(𝑌𝑖 − 𝑌 )
𝐶𝑂𝑉 (𝑋, 𝑌) =
𝑁

• Ma trận hiệp phương sai:


-Cho N điểm dữ liệu được biểu diễn bởi các vector cột x1, x2,…, xn, khi
đó, vector kỳ vọng và ma trận hiệp phương sai của toàn bộ dữ liệu được
định nghĩa là:
1 𝑁
𝑋̅ = ∑ 𝑥𝑖
𝑁 𝑖=1

1 𝑁 1
𝑆= ∑ (𝑥𝑖 −𝑋̅ )𝑇 (𝑥𝑖 − 𝑋̅ ) = 𝑋̂ 𝑇 𝑋̂
𝑁−1 𝑖=1 𝑁 − 1
- Ma trận hiệp phương sai là một ma trận đối xứng, hơn nữa, nó là một ma
trận nửa xác định dương.
- Mọi phần tử trên đường chéo của ma trận hiệp phương sai là các số không
âm. Chúng cũng chính là phương sai của từng chiều của dữ liệu.
- Các phần tử ngoài đường chéo thể hiện sự tương quan giữa thành phần
thứ i và thứ j của dữ liệu, còn được gọi là hiệp phương sai. Giá trị này có
thể dương, âm hoặc bằng 0. Khi nó bằng 0, ta nói rằng hai thành phần i, j
trong dữ liệu là không tương quan (uncorrelated).
10 Principal Component Analysis – PCA

- Nếu ma trận hiệp phương sai là ma trận đường chéo, ta có dữ liệu hoàn
toàn không tương quan giữa các chiều.
- Minh hoạ ma trận hiệp phương sai:

𝑆 = [𝑣𝑎𝑟(𝑥) 𝑐𝑜𝑣 (𝑥, 𝑦) 𝑐𝑜𝑣 (𝑦, 𝑥) 𝑣𝑎𝑟 (𝑦)]


• Trị riêng (eigenvalue), vector riêng (eigenvector) của ma trận hiệp
phương sai
- Cho một ma trận vuông A, nếu số vô hướng và vector thoả mãn:

𝐴𝑥 = λ𝑥
thì được gọi là một trị riêng của ma trận A và vector riêng tương ứng với
trị riêng đó.
- Trị riêng là nghiệm của phương trình đặc trưng:

det(𝐴 −λI)=0
- Một trị riêng có thể có nhiều vector riêng.
- Mỗi vector riêng chỉ ứng với một trị riêng duy nhất.
- Mọi ma trận vuông bậc n đều có n trị riêng (kể cả lặp) và có thể là các số
phức.
- Với ma trận đối xứng, tất cả các trị riêng đều là các số thực.
- Với ma trận xác định dương, tất cả các trị riêng của nó đều là các số thực
dương.
- Phương pháp giải tìm trị riêng, vector riêng:
+ Bước 1: Giải phương trình đặc trưng để tìm trị riêng:

det(𝐴 −λI)=0
+ Bước 2: Giải hệ phương trình tìm vector riêng tương ứng với trị riêng :

(𝐴 −λI)x=0
11 Principal Component Analysis – PCA

2.Các bước phân tích PCA

• Bước 1: Tính giá trị trung bình 𝑋 của X


* Chú thích: Chuẩn hóa dữ liệu, tìm tọa độ mới của dữ liệu.
• Bước 2: Tính vectơ 𝑋̂ = 𝑋 − 𝑋.
1
Tính ma trận hiệp phương sai 𝑆 = 𝑋̂ 𝑇 𝑋̂.
𝑁−1
* Chú thích: Khi biểu diễn ma trận X trong không gian Rm, ta nhận
thấy rằng các điểm dữ liệu sẽ phân tán xung quanh điểm giá trị
trung bình. Để thuận tiện cho việc tính toán, ta tiến hành chuẩn hóa
ma trận ban đầu về quanh gốc tọa độ. Việc thay đổi này không ảnh
hưởng đến bản chất của hệ dữ liệu ban đầu. Khi này độ phân tán
của hệ dữ liệu mới biểu diễn bởi 𝑋̂ quanh quanh gốc tọa độ O
hoàn toàn giống với độ phân tán của hệ dữ liệu ban đầu X quanh
điểm giá trị trung bình.
• Bước 3: Tìm trị riêng của S và sắp xếp theo giá trị giảm dần 𝜆1 >
𝜆2 > .... > 𝜆m và tìm các vecto riêng đơn vị ứng với các trị riêng.
* Chú thích: Theo điểm dừng của hàm Lagrange, phương sai lớn
nhất theo một chiều u1 nào đó chính là trị riêng. Việc sắp xếp các trị
riêng theo giá trị giảm dần giúp ta hiệu quả trong việc so sánh và
chọn ra các vecto có phương sai đáng kể (mức độ quan trọng đáng
kể).
• Bước 4: Chọn K trị riêng ban đầu và K vecto riêng đơn vị ứng với
các trị riêng này. Lập ma trận A có các cột là các vecto riêng đã
chọn. Ma trận A là phép biến đổi cần tìm.
* Chú thích: Chọn ra K trị riêng có giá trị đáng kể để tạo ra không
gian mới có K chiều thể hiện tốt nhất độ phân tán của dữ liệu X trên
không gian mới.
• Bước 5: Tính ảnh 𝐴𝑇 𝑋̂ 𝑇 của vecto 𝑋̂.
Dữ liệu X ban đầu được xấp xỉ bởi 𝑋 ≈ 𝐴𝑋̂ + 𝑋.
Mỗi cột của A𝑋̂ 𝑇 chứa tọa độ của các hàng của ma trận 𝑋̂ trong
cơ sở từ các cột của ma trận P (P là ma trận trực giao).
* Chú thích: Diễn đạt dữ liệu X trên chiều không gian mới, dấu xấp
xỉ là do chúng ta đã lược bớt các chiều có phương sai không đáng
kể nên dữ liệu X vẫn được thể hiện tốt nhất nhưng trên chiều dữ
liệu nhỏ hơn.
12 Principal Component Analysis – PCA

• Bài toán minh họa (sách ĐSTT- Đặng Văn Vinh tr.269)
Ví dụ 6.6.7. Xét ma trận X cỡ 216 x 2 ( trích từ file ovariancancer
trong thư viện matlab)
Tính giá tị tủng bình của X, ta được mean(X) = (0.0355: 0,0340)
Tính vector 𝑋̂ = B = X - 1/216 * ones(216, 216) * X và vẽ cả hai
bảng dữ liệu X và B bởi các lệnh
Scatter(X(:,1), X(:2),’k.’,’ LineWidth’, 2)
Scatter(B(:, 1), B(:,2),’k.’,’ LineWidth’,2)
Hình 6.3 của bảng dữ liệu X(Giáo trình Đại số Tuyến tính). Hình 6.4
của 𝑋̂(Giáo trình Đại số Tuyến tính). Chỉ cần dời gốc tọa độ của hình
bên trên về điểm mean(X) = (0.0355: 0,0340) ta được hình bên dưới.
Giá trị trung bình của bảng dữ liệu 𝑋̂ là (0;0).
Từ hình vẽ ta thấy các điểm dữ liệu phân tán dọc theo một đường
thẳng. Tính ma trận phương sai:
1
S= 𝑋̂ 𝑇 𝑋̂
216 − 1
Lưu ý: Nếu dùng lệnh matlab cov(X) ta cũng có ma trận S.
Chéo hóa trực giao S bởi lệnh [P D] = ejg(S), ta được
0.6437 −0.7652 0.8511 0
P= ( ), D = 1.0e - 03 ( )
0.7652 0.6437 0 0.1513
Cột 1 của ma trận P là hướng của đường thẳng dọc theo chiều phát tán
lớn nhất của dữ liệu và cột 2 của P là hướng của đường thẳng vuông
góc với đường thứ nhất. Cả hai đường thẳng này đi qua điểm mean(X).
13 Principal Component Analysis – PCA

Ta có thể vẽ trục tọa độ MUV, với M = mean(X), 𝑀𝑈 ⃗⃗⃗⃗⃗⃗ , 𝑀𝑈


⃗⃗⃗⃗⃗⃗ là hai
hướng của cột 1 và cột 2 của P tương tứng. Hệ trục mới này thu được
từ hệ trục tọa độ của hình thứ hai qua phép quay quanh điểm M. Tìm
ảnh của vector 𝑋̂ trong hệ tục mới bởi phép toán 𝑃𝑇 𝑋̂ 𝑇

• Mô phỏng đơn giản bằng Matlab


Đoạn code Malab sau mô phỏng công cụ điểm không gian chiều
và tìm thành phần chính của một dữ liệu được tạo ngẫu nhiên
%Tao ma tran W ngau nhiên kich thuoc 500x2
W = randn(500,2);
%Mo phong ma tran W
scatter(W(:,1),W(:,2));
var(W(:,1))
%Tao ma tran A ngau nhiên kích thac 2x2
A = rand(2,2)
%Nhan 2 ma tran ngau nhien
X=W*A;
%Mo phong du lieu vua tao duoc
scatter(X(:,1), X(:,2))
%Tim ma tran dong bien
C = cov(X);
C = cov(X)
eig(C)
[V, E] = eig(C)
u = V(:,2)
z = X*u;
var(z)
var(X(:,1))
var(X(:,2))
Y = z*u';
%Mo Phong ket qua can tim
figure;
scatter(X(:,1), X(:,2));
hold on;
scatter(Y(:,1), Y(:,2));
14 Principal Component Analysis – PCA

Kết quả cho ra màn hình với vệt màu cam là thành phần chính của dữ liệu
được tạo ngẫu nhiên khi nhân ma trận W ngẫu nhiên với kích thước 500x2
với ma trận A ngẫu nhiên kích thước 2x2.
Link code:
https://drive.google.com/drive/folders/1GplRjp1zIWP15Myi7fatISB-
P85oEg57?usp=sharing

• Ứng dụng thực tế của PCA để giảm chiều dữ liệu

- Nhận diện khuôn mặt: Là một bài toán khó vì các đặc điểm cơ bản
trên khuôn mặt của mỗi người là giống nhau ví dụ như 2 đôi mắt, 1 cái
mũi,…
Ngoài ra dữ liệu khuôn mặt còn phụ thuộc vào các yếu tố bên ngoài khác
như ánh sáng, khẩu trang,đeo kính. Điển hình như khuôn mặt theo các
góc nhìn khác nhau là khác nhau nên số chiều tạo ra rất lớn. PCA sẽ giúp
ta giảm bớt những chiều có cùng đặc điểm, từ đó tạo thành bộ nhận diện
khuôn mặt.
Một số ứng dụng khác
• Nén hình ảnh
• hồi quy tuyến tính

• Các nhược điểm của phân tích PCA:


-Việc giảm chiều dữ liệu đánh mất thông tin: Mặc dù Thành phần
chính cố gắng bao hàm sự khác biệt tối đa giữa các tính năng trong
tập dữ liệu, nếu chúng ta không chọn số Thành phần chính một cách
cẩn thận, nó có thể bỏ sót một số thông tin so với danh sách các tính
năng ban đầu.
-Các biến độc lập trở nên khó hiểu hơn:
Sau khi triển khai PCA trên tập dữ liệu, các tính năng ban đầu của bạn
sẽ chuyển thành Thành phần chính. Thành phần chính là sự kết hợp
tuyến tính của các tính năng ban đầu của bạn. Các thành phần chính
không thể đọc và hiểu được như các tính năng gốc.
-Phải chuẩn hóa dữ liệu trước PCA:
Bạn phải chuẩn hóa dữ liệu của mình trước khi triển khai PCA, nếu
không PCA sẽ không thể tìm thấy các Thành phần Chính tối ưu.
Ví dụ: nếu một tập hợp đối tượng có dữ liệu được biểu thị bằng đơn vị
Kilôgam, Năm ánh sáng hoặc Hàng triệu, thì thang phương sai trong
tập huấn luyện là rất lớn. Nếu PCA được áp dụng trên một tập hợp tính
15 Principal Component Analysis – PCA

năng như vậy, kết quả tải cho các tính năng có phương sai cao cũng sẽ
lớn. Do đó, các thành phần chính sẽ thiên về các tính năng có phương
sai cao, dẫn đến kết quả sai.
-PCA rất nhạy cảm với nhiễu:

Vẫn do giả thiết là phương sai của dữ liệu ảnh hưởng đến việc chọn ra
chiều mới. Khi nhiễu xuất hiện, do độ lệch của điểm nhiễu này mà chiều
có phương sai của dữ liệu lớn cũng bị ảnh hưởng rất đáng kể.
16 Principal Component Analysis – PCA

III .Giải thuật, mô phỏng

• Ứng dụng PCA vào nhận diện khuôn mặt

1. Khái quát về nhận diện khuôn mặt:

“Nhận diện khuôn mặt” là một trong những phát minh xuất sắc của
ngành máy tính học với những giá trị to lớn mà nó mang lại.

Ứng dụng nhận diện khuôn mặt người đã phát triển ngày một rộng
rãi và phát triển không ngừng. Ngày nay chúng ta dễ dàng thấy được
chúng trên những chiếc điện thoại smartphone để khóa mở màn hình,
ngoài ra còn có các ứng dụng như sau:

+ Hệ thống tương tác giữa người và máy: giúp những người khuyết tật
hoặc khiếm khuyết có thể trao đổi.

+ Hệ thống quan sát theo dõi và bảo vệ.

+ Thẻ căn cước chứng minh nhân dân (Face indentification).

+ Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua
gương mặt người trên nhiều hệ dữ liệu lớn như internet hay các hãng
truyền hình….

2. Ứng dụng của phân tích PCA vào nhận dạng khuôn mặt.

Chúng ta nhận biết nhau chủ yếu qua khuôn mặt mà cụ thể là
những đặc trưng trên khuôn mặt người đó, nếu như ta gặp lại một người
thân sau một thời gian dài, ta có thể nhận ra người đó dù gương mặt họ
mập lên hay ốm đi. Tức là trên khuôn mặt tồn tại một đường nét nào đó
có thể nhận diện, và thuật toán của ta rất phù hợp cho việc 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 :
17 Principal Component Analysis – PCA

- Thứ nhất là tìm một khuôn mặt giống với khuôn mặt cho trước

- Thứ hai là xác định vị trí những khuôn mặt người trong một bức ảnh .

Đầu tiên 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 .

Giả sử tập huấn luyện có P ảnh , khi đó ta sẽ có P vector: 𝑇1 , 𝑇2 , … , 𝑇𝑝


𝑝 1
Tính vector ảnh trung bình : 𝑚 = ∑𝑖=1 𝑇𝑖
𝑝
18 Principal Component Analysis – PCA

Sự khác biệt giữa những khuôn mặt với ảnh trung bình là những vector :
𝐴𝑖 = 𝑇𝑖 − 𝑚, 𝐼 = 1 … 𝑃

Ý 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 𝑢𝑘 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 𝑛ế𝑢 𝑖 ≠ 𝑗
𝑝 2
- 𝜆𝜅 = ∑𝑖=1⟨𝑢𝑘 |𝐴𝑗 ⟩ lớn nhất.

Những vector uk và giá trị vô hướng λκ chính là những vector


riêng và trị riêng tương ứng của ma trận AAT .

( 𝑢 ∣ v )là tích vô hướng giữa hai vector u , v . 𝐴 = [𝐴1 𝐴2 𝐴3 … 𝐴𝑃 ]

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 AAT có kích thước
P×P .

Nếu v là một vector riêng của AAT và λ là trị riêng tương


ứng , khi đó ta có :

𝐴𝑇 𝐴𝑣 = 𝜆𝑣 𝐴𝐴𝑇 𝐴𝑣 = 𝜆𝐴𝑣, tức là 𝐴𝑣 là một trị riêng của ma trận


𝐴𝐴𝑇 .

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 𝐴𝐴𝑇 , 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 .
19 Principal Component Analysis – PCA

Đặt 𝐿 = 𝐴𝐴𝑇 , 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à
{𝑢1 , 𝑢2 , . . . , 𝑢𝑄 }. 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⟨𝑢|𝑢𝑖 ⟩𝑢𝑖

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

Tập hợp 𝑐𝑖 = ⟨𝑢|𝑢𝑖 ⟩, 𝑖 = 1, . . . , 𝑄 được gọi là tọa độ của u0 trong


không gian W .
20 Principal Component Analysis – PCA

Tìm 𝐶 = 𝐸 𝑇 𝐾 𝑙à tọa độ của hình chiếu K f của K lên không gian khuôn
mặt . C là vector cột Q×1
𝑄
𝐾𝑓 = ∑𝑖=1 𝑐𝑖 𝑒𝑖 với 𝑐𝑖 = 𝐶(𝑖, 1); 𝑒𝑖 = (1, 𝑖)

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

𝐶𝑖 = 𝐸 𝑇 𝐴𝑖 là tọa độ của hình chiếu Aif của Ai lên không gian khuôn
mặt .

Ta tính hai đại lượng sau :

- 𝑠 = ‖𝐾 − 𝐾𝑓 ‖ xem như khoảng cách từ bức ảnh H đến không gian


mặt

- 𝑠𝑖 = ‖𝐶 − 𝐶𝑖 ‖ xem như khoảng cách từ H đến bức ảnh Ti trong tập


huấn luyện

Xét α và β là hai ngưỡng nào đó .

- s < α thì H là bức ảnh khuôn mặt (do H đủ gần với không gian
mặt )

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

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 ;
21 Principal Component Analysis – PCA

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

Tính 𝑠(𝑥, 𝑦) = ‖𝐾(𝑥, 𝑦) − 𝐾𝑓 (𝑥, 𝑦)‖

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ừ đấy ta dễ dàng xác định vị trí những khuôn mặt trong ảnh .

3. Sơ đồ khối

4. Sử dụng Malab để nhận diện khuôn mặt


• Ví dụ 1
Code được lưu trong thư mục PCA_Mathlab_Code_1
Link drive lưu thư mục:
https://drive.google.com/drive/folders/1GplRjp1zIWP15Myi7fatIS
B-P85oEg57?usp=sharing
22 Principal Component Analysis – PCA

Nguồn: https://github.com/HelloYaoZhang/Face-Recognition-Using-PCA

o Kết quả đoạn code

Ảnh kiểm tra

Ảnh thu được


23 Principal Component Analysis – PCA

• Ví dụ 2

Code được lưu trong thư mục PCA_Mathlab_Code_2


Link drive lưu thư mục:
https://drive.google.com/drive/folders/1GplRjp1zIWP15Myi7fatIS
B-P85oEg57?usp=sharing

o Kết quả đoạn code


Chú ý khi sử dụng code
• Ảnh có kích thước và dung lượng lớn có thể cho ra kết quả
sai. Ví dụ file ảnh có tên anhthe cho ra kết quả chưa được
chính xác.
• I = imread(xxx);
xxx : Là đường dẫn chính xác đến vị trí của file ảnh cần
nhận diện khuôn mặt bên trong ổ cứng của máy tính.
Ví dụ ảnh được đưa vào trong ví dụ có đường dẫn là
C:\Users\PC\Pictures\Camera Roll\chup-hinh-gia-
dinh-2-3.jpg

Hình ảnh đưa vào


24 Principal Component Analysis – PCA

Kết quả thu được


25 Principal Component Analysis – PCA

IV. Kết luận


a. Kết quả: Với những hướng dẫn và tài liệu tham khảo được giao, nhóm đã
phân công và hoàn thành được hết các yêu cầu và các vấn đề mà cô đã
giao.Hiểu thêm bản chất toán học và các ứng dụng trong đề tài được giao, qua
đó hiểu rõ và củng cố niềm say mê trong môn học đại số tuyến tính này.
b. Nhận xét:
❖ Ưu điểm:
• Trình bày rõ ràng, đảm bảo về bố cục và nội dung tổng
thể.
• Đã biết ứng dụng Matlab vào giải quyết một số vấn đề tính
toán và mô phỏng.
• Ví dụ trực quan, tương đối đơn giản và dễ hiểu.
• Hình ảnh minh họa trực quan, làm nổi bật được ý tưởng
được trình bày.
❖ Khuyết điểm:
• Nội dung được thu thập và tham khảo từ nhiều nguồn, một
số phần trong báo cáo còn chưa thông nhất, liên kết chặt
chẽ.
• Vì hạn chế về kĩ năng và thiết bị, nhóm chưa thể mô
phỏng các ví dụ bằng Matlab một cách tối ưu.
• Một số phần trên báo cáo trình bày chưa bắt mắt về hình
thức.
c. Kết luận: Với sự phân công chuẩn bị kỹ lưỡng và cố gắng hết mình, nhóm
đã hoàn thành đề tài được giao và cho ra kết quả như mong muốn. Qua phần
bài tập lớn này nhóm đã:
❖ Biết được thao tác giải toán và mô phỏng trên Matlab
❖ Nâng cao được sự hứng thú đối với môn học.
❖ Trau dồi kỹ năng học tập và làm việc nhóm.
❖ Nâng cao tinh thần trách nhiệm và thắt chặt tình đoàn kết của các
thành viên trong nhóm.
❖ Rèn luyện khả năng tự nghiên cứu.
26 Principal Component Analysis – PCA

Tài liệu tham khảo


• giá trị kỳ vọng – wikipedia tiếng việt.
• độ lệch chuẩn – wikipedia tiếng việt.
• phương sai – wikipedia tiếng việt.
• hiệp phương sai – wikipedia tiếng việt
• ma trận hiệp phương sai – wikipedia tiếng việt
• principal component analysis - wikipedia
• image compression using pca
• thầy Đặng Văn Vinh – giáo trình đại số tuyến tính
• TuanRemy - slideshare.net/tuanremy/thuat-toan-pca-full-2452017
• Nguyễn Chiến Thắng (#mìai) - miai.vn/2021/04/22/principal-
component-analysis-pca-tuyet-chieu-giam-chieu-du-lieu/
• Đặng Tuấn Vũ (vudt1993) - rpubs.com/vudt1993/257891
• Nhóm 27 – khmt2k5 – đại học công nghiệp hà nội -
text.123docz.net/document/2448534-tim-hieu-phep-bien-doi-phuong-
phap-pca-nhan-dang-khuon-mat.htm
• HelloYaoZhang - github.com/helloyaozhang/face-recognition-using-
pca
• Amir Hossein Omidvarnia(2007)
mathworks.com/matlabcentral/fileexchange/17032-pca-based-face-
recognition-system
• Adrian Tam - machinelearningmastery.com/face-recognition-using-
principal-component-analysis/

You might also like