Professional Documents
Culture Documents
Bao Cao 1
Bao Cao 1
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
⚫ 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
- 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
∑𝑁 ̅ ̅
𝑖=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:
𝐴𝑥 = λ𝑥
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
• 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
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
- 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
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
“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.
+ 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.
- 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 .
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.
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 .
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 .
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 .
- 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ậ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
Nguồn: https://github.com/HelloYaoZhang/Face-Recognition-Using-PCA
• Ví dụ 2