Professional Documents
Culture Documents
ĐSTT
ĐSTT
HỒ CHÍ MINH
ĐỀ TÀI 13
ĐỀ TÀI 13
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
ii
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
iii
LỜI CẢM ƠN
Trên con đường dẫn tới sự thành công chắc chắn sẽ có những khó khăn nhất
thời, những vấp ngã và đó cũng chính là những thách thức mà chúng em cũng nên
nhìn vào nó và tiếp tục bước đi trên con đường ấy, và để vượt qua nó chúng em
cũng phải nhờ một phần trợ giúp to lớn của các thầy cô bộ môn trên môi trường đại
học nói chung và Trường Đại Học Bách Khoa nói riêng và đặc biệt nhất là thầy
Nguyễn Trọng (người thầy môn đại số tuyến tính lớp L04) người đã nhiệt tình giúp
đỡ chúng em hoàn thành được bài tiểu luận này. Nếu không có sự trợ giúp nhiệt
tình của các thầy cô thì bài tiểu luận này của chúng em cũng khó có thể hoàn thành
một cách trọn vẹn được. Chính vì thế em thay mặt các bạn trong nhóm gửi đến thầy
cô lời tri ân sâu sắc nhất và cũng như lời cảm ơn chân thành nhất!
Khi bước vào môi trường đại học mới mẻ, chúng em còn rất bỡ ngỡ và cũng
ngạc nhiên trước góc độ, quy mô của môi trường mới này, và cũng vì thế trong quá
trình học hỏi và tìm tòi số liệu thu hoạch cho bài tiểu luận này có thể chúng e sẽ
không tránh khỏi những sai sót, lỗi chẳng qua chúng em không nên có do kinh
nghiệm vốn ít ỏi của mình, chúng em rất mong quý thầy cô sẽ bỏ qua cũng như
góp ý để chúng em có thể từ đó làm cơ sở cho các bài tiểu luận sau ngày càng
hoàn thiện hơn. Nhóm chúng em xin chân thành tiếp thu các ý kiến thầy cô đưa ra
để hoàn thành bài tiểu luận một cách tốt nhất, nhóm e cảm ơn các lời góp ý của
quý thầy cô!
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
iv
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
v
MỤC LỤC
TRANG LÓT........................................................................................................i
MỤC LỤC............................................................................................................v
CHƯƠNG II: ỨNG DỤNG PCA VÀO NHẬN DIỆN KHUÔN MẶT..........- 7 -
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
vi
2.4.1. Ưu điểm:........................................................................................- 8 -
PHỤ LỤC......................................................................................................- 11 -
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
1
PCA (Principal Component Analysis) hay Phân Tích Thành Phần Chính là một
thuật toán ngành máy học (Machine Learning) được sử dụng rộng rãi trong phân tích
dữ liệu khám phá và để tạo mô hình dự đoán. Nó là thuật toán chuyển đổi những tập
dữ liệu có chiều cao hơn thành những tập dữ liệu có chiều thấp hơn trong khi vẫn giữ
lại những thông tin quan trọng của dữ liệu gốc. Những tập dữ liệu chiều thấp hơn được
gọi là thành phần chính, và là sự kết hợp tuyến tính giữa những điểm dữ liệu gốc.
Thuật toán PCA dựa trên một ý tưởng đơn giản nhưng mạnh mẽ: tìm ra các thành phần
chính (principal components) của dữ liệu, tức là các vector độc lập tuyến tính mà khi
chiếu dữ liệu lên chúng thì dữ liệu có sự biến thiên (variance) lớn nhất. Các thành phần
chính này sẽ tạo nên một không gian mới, trong đó mỗi chiều của không gian mới là
một thành phần chính của dữ liệu gốc. Các thành phần chính được sắp xếp theo thứ tự
giảm dần của mức độ biến thiên của dữ liệu trên chúng, tức là thành phần chính đầu
tiên là vector mà khi chiếu dữ liệu lên nó thì dữ liệu có variance lớn nhất, thành phần
chính thứ hai là vector mà khi chiếu dữ liệu lên nó thì dữ liệu có variance lớn thứ hai,
và cứ thế. Do đó, để giảm chiều dữ liệu, ta chỉ cần chọn ra một số lượng nhỏ các thành
phần chính đầu tiên, sao cho tổng variance của dữ liệu trên chúng đạt được một
ngưỡng nào đó (ví dụ 95% hoặc 99%). Sau đó, ta chiếu dữ liệu gốc lên các thành phần
chính này để được dữ liệu mới có số chiều nhỏ hơn.
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
2
Giúp giảm chiều dữ liệu nhưng vẫn giữ lại được những đặc trưng chính.
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ũ, đảm bảo độ biến thiên của dữ liệu trên mỗi chiều mới.
Trong không gian mới, các liên kết tiềm ẩn của dữ liệu có thể được
khám phá, mà nếu đặt trong không gian cũ thì sẽ khó phát hiện hơn.
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
3
Đảm bảo các trục tọa độ trong không gian mới luôn trực giao đôi một
với nhau, mặc dù trong không gian ban đầu các trục có thể không trực
giao.
Là giá trị trung bình “mong muốn”, biển diễn giá trị trung bình của một biến.
Tính chất:
E { aX + bY }=aE { X } +bE { Y }
Đo mức độ phân tán của mẫu số liệu thống kê có cùng đơn vị đo, nó cho thấy
sự biến thiên của giá trị trong một thời điểm phản ánh xu thế của sự thay đổi.
Biểu thức toán học:
Tính chất:
σ ( c ) =0
σ ( X + c )=σ ( X )
σ ( cX )=|c|σ ( X )
Đặc trưng cho độ phân tán của các số liệu trong tập dữ liệu so với giá trị
trung bình, nó hàm ý các giá trị của biến đó thường ở cách giá trị kỳ vọng
bao xa.
Biểu thức toán học:
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
4
Tính chất:
var ( X )=E { X 2 }−( E { X } )
2
Đo lường mối sự biến thiên cùng nhau của hai biến ngẫu nhiên. Hiệp phương
sai dương có nghĩa là chúng di chuyển cùng nhau trong khi hiệp phương sai
âm có nghĩa là chúng di chuyển ngược lại.
Biểu thức toán học:
cov ( X , Y )=E {( X ( t )−m x ( t ))(Y ( t )−m y ( t ) ) }
Tính chất:
cov ( X , Y )=var ( X )
cov ( X , Y )=cov ( Y , X )
cov ( aX , bY )=abcov ( X ,Y )
1
Trường hợp đặc biệt: p1= p2=…= p n=
n
n
1
μ=g=X = ∑x
n i=1 i
√
n
∑ ( x i−X )2
i=1
s=σ=
n−1
n
∑ ( xi −X )2
σ 2= i =1
n−1
n
∑ ( xi −μ x )( y i−μ y )
cov ( X , Y )= i=1
n−1
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
5
Ma trận hiệp phương sai của tập hợp m biến ngẫu nhiên là một ma trận vuông
hạng (m x m), có kích thước bằng số đặc trưng của dữ liệu, trong đó các phần
tử nằm trên đường chéo (từ trái sang phải, từ trên xuống dưới) lần lượt là
phương sai tương ứng của các biến này. Hiệp phương sai là một đại lượng thể
hiện mối quan hệ tuyến tính giữa hai đặc trưng, nếu hai đặc trưng càng có mối
quan hệ tuyến tính mạnh thì hiệp phương sai càng lớn về trị tuyệt đối, và ngược
lại. Ma trận hiệp phương sai có thể được tính bằng công thức sau:
1 T
Σ= X X
n−1
o Trong đó, X là ma trận dữ liệu đã được chuẩn hóa, có kích thước là n×d,
với n là số điểm dữ liệu và d là số đặc trưng, và XT là ma trận chuyển vị
của X.
X là vector cột, mỗi thành phần X i là biến ngẫu nhiên có phương sai xác định
và E { X i }=μi.
Xây dựng ma trận hiệp phương sai với si , j là hiệp phương sai:
si , j=cov ( X i , X j )=E {(X i−μi)( X j −μ j ) }
Tính chất:
o Trị riêng là nghiệm của phương trình đặc trưng:
det ( A−λI ) =0
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
6
Chuẩn hóa dữ liệu: PCA giả định rằng dữ liệu tập trung xung quanh dữ liệu
gốc, vì vậy ta cần phải chuẩn hóa dữ liệu bằng cách trừ đi giá trị trung bình
từ mỗi điểm dữ liệu và chia cho độ lệch chuẩn. Kết quả là dữ liệu có giá trị
trung bình bằng 0 và độ lệch chuẩn bằng 1 cho mỗi đặc trưng.
Tính toán ma trận hiệp phương sai: Ta tính toán ma trận hiệp phương sai của
dữ liệu đã được chuẩn hóa.
Tính các trị riêng (eigenvalues) và vector riêng (eigenvectors) của ma trận
hiệp phương sai. Đây là bước quan trọng nhất của thuật toán PCA, vì các
vector riêng chính là các thành phần chính của dữ liệu, và các trị riêng thể
hiện mức độ biến thiên của dữ liệu trên các vector riêng đó. Kết quả là ta sẽ
có d cặp trị riêng và vector riêng, mỗi cặp tương ứng với một chiều của
không gian mới.
Chọn các thành phần chính: Ta tính tỷ lệ giữa trị riêng của mỗi vector riêng
và tổng trị riêng, và chọn ra các vector riêng có tỷ lệ lớn nhất. Tổng lũy thừa
của các tỷ lệ này sẽ là tỷ lệ giải thích của thuật toán PCA, thể hiện phần trăm
thông tin của dữ liệu gốc được giữ lại bởi các thành phần chính
Chuyển hóa dữ liệu: Đây là bước cuối cùng của thuật toán PCA, bao gồm
việc chiếu dữ liệu gốc lên k thành phần chính để nhận được dữ liệu chiều
thấp hơn, và trực quan hóa dữ liệu mới này bằng các biểu đồ hoặc hình ảnh.
Việc trực quan hóa dữ liệu mới sẽ giúp ta nhận ra các mẫu (patterns), các
nhóm (clusters), hoặc các ngoại lệ (outliers) của dữ liệu.
Thuật toán PCA là một kỹ thuật thống kê hiệu quả để giảm chiều dữ liệu,
trong khi vẫn giữ lại được phần lớn thông tin quan trọng của dữ liệu gốc.
Thuật toán PCA dựa trên việc tìm ra các thành phần chính của dữ liệu, tức là
các vector độc lập tuyến tính mà khi chiếu dữ liệu lên chúng thì dữ liệu có sự
biến thiên lớn nhất. Thuật toán PCA có nhiều ứng dụng trong các lĩnh vực
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
7
như máy học, khai phá dữ liệu, phân tích dữ liệu, hình ảnh, thị giác máy tính,
và nhiều lĩnh vực khác.
Như đã được nhắc đến, PCA là một phương pháp giảm chiều dữ liệu để thu
được dữ liệu có chiều thấp hơn trong khi vẫn giữ được những đặc điểm chính, những
biến thể của dữ liệu gốc. Nên khi PCA được áp dụng vào nhận diện khuôn mặt, mục
tiêu chính sẽ là tìm ra những đặc điểm chính khuôn mặt của một người, kể cả khi giảm
số lượng pixel trong ảnh thì hệ thống vẫn sẽ nhận diện ra được khuôn mặt nhờ vào
những đặc điểm đó.
Cụ thể hơn:
1. Khi nhận được một bức ảnh, hệ thống sẽ xử lí xác định khuôn mặt cần để
nhận diện.
2. Hệ thống sẽ phân tích và trích xuất những đặc trưng chính trong khuôn
mặt người đó như nốt ruồi, chân mày, đôi mắt,…
3. Hệ thống sẽ so sánh độ tương tự của ảnh mặt cần xác minh và ảnh mặt
trong cơ sở dữ liệu để đưa ra kết quả.
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
8
Bảo mật các thiết bị điện tử cá nhân bằng khuôn mặt (smartphone).
Thẻ căn cước công dân, tài khoản định danh (Face Indentification).
Bảo mật các giao dịch rút tiền ở cây ATM.
Giảm bớt tai nạn giao thông nhờ phát hiện và phát đi cảnh báo khi người
lái có dấu hiệu ngủ gật, mất tập trung.
Giảm thời gian tìm kiếm các dữ liệu liên quan tới khuôn mặt con người
trên không gian dữ liệu lớn (internet).
Phát triển robot trong các lĩnh vực y tế, quân sự....
2.4.1. Ưu điểm:
Trong các trường hợp sau, PCA có khả năng nhận dạng sai do:
o PCA có thể bỏ qua một số thông tin quan trọng của khuôn mặt khi
giảm số chiều của dữ liệu, từ đó làm giảm độ chính xác của việc
nhận dạng.
o Khác nhau về điều kiện ánh sáng (khuôn mặt quá tối hoặc quá
sáng).
o Sự thay đổi hướng khuôn mặt (nghiêng đầu, ngước đầu…).
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
9
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
10
[3] Casey Cheng, Principal Component Analysis (PCA) Explained Visually with
Zero Math, Towards Data Science.
[5] Principal Component Analysis (PCA) - tuyệt chiêu giảm chiều dữ liệu, Mì
AI (miai.vn).
[11] Hiệp phương sai (Covariance) là gì? Công thức tính hiệp phương sai,
vietnambiz.vn.
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
11
PHỤ LỤC
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
12
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
13
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
14
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
15
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
16
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
17
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
18
Thư mục
Thư mục test: chứa các video (.mp4) dùng để chạy chuẩn đoán khuôn mặt.
Thư mục HaarCascade: chứa cái file giúp trích xuất đặc điểm trên khuôn mặt.
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
19
File model-FaceTraining.h5: Khuôn mẫu được tạo ra từ Train.py dùng đối chiếu và
chọn ra đối tượng xuất hiện trong video (.mp4).
File Face.py:
#Thêm các thư viện
import cv2
import os
face_detector =
cv2.CascadeClassifier('haarcascades/haarcascade_frontalface_alt.xml')
#định thức tách khuôn mặt các ảnh lấy từ đường dẫn image_path và lưu ảnh
vào thư mục images_face
def getFaces(image_path):
img = cv2.imread(image_path)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_detector.detectMultiScale(img_gray, 1.1, 6)
for (x, y, w, h) in faces:
img_face = cv2.resize( img_gray[y: y + h, x: x + w],(64,64))
cv2.imwrite(img_path.replace('images', 'images_face').split('.jpg')
[0] +'.jpg', img_face)
cv2.destroyAllWindows()
File Train.py:
#Thêm các thư viện
import numpy as np
import os
from PIL import Image
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
20
#định thức lấy dữ liệu từ đường dẫn dirData lưu vào lstData
def getData(dirtData, lstData):
for whatever in os.listdir(dirtData):
whatever_path = os.path.join(dirtData, whatever)
lst_filename_path = []
for filename in os.listdir(whatever_path):
filename_path = os.path.join(whatever_path, filename)
label = filename_path.split("\\")[1]
img = np.array(Image.open(filename_path))
lst_filename_path.append((img, dict[label]))
lstData.extend(lst_filename_path)
return lstData
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt
21
File DetectFace.py:
#thêm thư viện
import random
import cv2
import keras
import numpy as np
# gán các đại lượng liên quan với các các đối tượng
lstResult_NAME = ['KHOI', 'PHUC', 'TAI', 'QUAN', 'DAT']
lstResult_MSSV = ['2311705', '2312684', '2313009', '2312824', '2310638']
Tên đề tài: Nêu cơ sở lý thuyết của PCA và ứng dụng PCA vào nhận diện khuôn mặt