LỜI CẢM ƠNTrên con đường dẫn tới sự thành công chắc chắn sẽ có những khó khăn nhấtthờ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ênnhìn vào nó và tiếp tục bướ
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA _
ĐỀ TÀI 13 NÊU CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH THÀNH PHẦN
CHÍNH (PCA) ỨNG DỤNG CỦA PHÂN TÍCH PCA VÀO NHẬN DẠNG
BÁO CÁO ĐỀ TÀI
Trang 3ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
ĐỀ TÀI 13 NÊU CƠ SỞ LÝ THUYẾT CỦA PHÂN TÍCH THÀNH PHẦN
CHÍNH (PCA) ỨNG DỤNG CỦA PHÂN TÍCH PCA VÀO NHẬN DẠNG
BÁO CÁO ĐỀ TÀI
TP HỒ CHÍ MINH – THÁNG 12/2023
Trang 4LỜI NÓI ĐẦU
Principal Component Analysis (PCA) hay Phân Tích Thành Phần Chính có rấtnhiều ứng dụng trong trong các lĩnh vực: y học, viễn thám, xử lý dữ liệu hình ảnh,
âm thanh, dữ liệu văn bản,…, và nhận diện khuôn mặt cũng không phải là mộtngoại lệ Trong một thế giới không ngừng phát triển qua từng ngày, lĩnh vực côngnghệ thông tin ngày càng hiện đại, tân tiến hơn, mang lại vô số lợi ích, sự tiện lợicho con người, nhưng bên cạnh những lợi ích đó thì nó cũng tiềm ẩn nhiều rủi ro,
lỗ hổng tiếp tay cho những hành vi xấu, phạm tội Điển hình là những đường link độc hại khơi gợi sự tò mò những người dùng trên Facebook, một khi đã bấm vàothì những “hacker” sẽ lợi dụng những lỗ hổng trên nền tảng Facebook để có đượcmật khẩu và xâm nhập vào tài khoản của họ, thế nên ngày nay những thông tin cánhân mang tính dữ liệu như mật khẩu, mã số căn cước công dân có thể bị lộ, đánhcắp dễ dàng nếu người dùng bất cẩn Trong quá trình nghiên cứu thực hiện đề tài,nhóm thấy được ý tưởng về việc nhận diện khuôn mặt trong khâu điểm danh chốnggian lận (vấn đề hiện nay có một số sinh viên nhờ người thi hộ, điểm danh giúp, nhằm những mục đích cá nhân nhất thời) và điều đó cũng phần nào ảnh hưởng đếnchất lượng học tập của cá nhân mở rộng ra ảnh hưởng đến cả chất lượng đào tạocủa nhà trường Chỉ qua một số những minh chứng trên nhóm chúng em cũngkhông nhìn việc đó diễn ra mà lại để nó trở thành thói quen của một số bạn hiệnnay và đặc biệt muốn các bạn ấy có ý thức hơn với tương lai của mình Đó là lý do
mà nhóm chúng em quyết định chọn đề tài này và phát triển nó lên một nấc thangmới
Trang 5LỜ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ấtthờ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ênnhìn vào nó và tiếp tục bước đi trên con đường ấy, và để vượt qua nó chúng emcũ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 đạihọ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ệttì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ànhmộ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ũngngạ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 kinhnghiệ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ànghoà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ủaquý thầy cô!
Trang 6NHẬN XÉT CỦA GIẢNG VIÊN
Trang 7MỤC LỤC
TRANG LÓT i
LỜI NÓI ĐẦU ii
LỜI CẢM ƠN iii
NHẬN XÉT CỦA GIẢNG VIÊN iv
MỤC LỤC v
CHƯƠNG I: THUẬT TOÁN PCA 1
1.1 GIỚI THIỆU VỀ PCA: 1
1.2 ĐẶC TÍNH: 2
1.3 CÁC CƠ SỞ TOÁN HỌC SỬ DỤNG TRONG PCA: 3
1.3.1 Kỳ Vọng (Mean, Expected Value): 3
1.3.2 Độ lệch chuẩn (Standard Deviation): 3
1.3.3 Phương sai (Variance): 3
1.3.4 Hiệp phương sai (Covariance): 4
1.3.5 Ma trận hiệp phương sai (covariance matrix): 4
1.3.6 Trị riêng, vector riêng: 5
1.4 CÁC BƯỚC PHÂN TÍCH THÀNH PHẦN CHÍNH: 5
1.5 KẾT LUẬN: 6
CHƯƠNG II: ỨNG DỤNG PCA VÀO NHẬN DIỆN KHUÔN MẶT 7
2.1 MỤC TIÊU CHÍNH: 7
-2.2 SƠ ĐỒ KHỐI HOẠT ĐỘNG CỦA CHƯƠNG TRÌNH NHẬN DIỆN KHUÔN MẶT: 7
2.3 ỨNG DỤNG: 7
2.4 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM: 8
Trang 82.4.1 Ưu điểm: 8
2.4.2 Nhược điểm: 8
CHƯƠNG III: KẾT LUẬN 9
Danh mục tài liệu tham khảo 9
PHỤ LỤC 11
Trang 9-CHƯƠNG I: THUẬT TOÁN PCA
1.1 GIỚI THIỆU VỀ PCA:
PCA (Principal Component Analysis) hay Phân Tích Thành Phần Chính là mộtthuậ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 đượcgọ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ầnchính (principal components) của dữ liệu, tức là các vector độc lập tuyến tính mà khichiế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ầnchí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 đầutiê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ầnchí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ộtngưỡ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ầnchính này để được dữ liệu mới có số chiều nhỏ hơn
Trang 10Mô Phỏng Thuật toán PCA ( Nguồn:Giới thiệu Principal Component
Analysis (viblo.asia))
1.2 ĐẶC TÍNH:
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ônggian 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ể đượckhám phá, mà nếu đặt trong không gian cũ thì sẽ khó phát hiện hơn
Trang 11Đảm bảo các trục tọa độ trong không gian mới luôn trực giao đôi mộtvới nhau, mặc dù trong không gian ban đầu các trục có thể không trựcgiao.
1.3 CÁC CƠ SỞ TOÁN HỌC SỬ DỤNG TRONG PCA:
1.3.1 Kỳ Vọng (Mean, Expected Value):
Là giá trị trung bình “mong muốn”, biển diễn giá trị trung bình của một biến
E{aX + bY }= aE { X }+ bE{Y }
1.3.2 Độ lệch chuẩn (Standard Deviation):
Đ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
σ ( X + Y )= √ var( X )+ var(Y )+ 2 cov ( X , Y )
1.3.3 Phương sai (Variance):
Đặ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:
Trang 12 var( X )= σ 2= s2= E ( X (t )− m x(t )) 2
Tính chất:
var( X )= E{ X 2}−( E{ X }) 2
var(aX +b)=a2var( X )
var(aX +bY )=a2var( X )+b2var( X )+2 abcov( X , Y )
1.3.4 Hiệp phương sai (Covariance):
Đ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ươngsai 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 )
n − 1
Trang 131.3.5 Ma trận hiệp phương sai (covariance matrix):
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ônghạ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ốiquan hệ tuyến tính mạnh thì hiệp phương sai càng lớn về trị tuyệt đối, và ngượclại Ma trận hiệp phương sai có thể được tính bằng công thức sau:
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:
s i , j=cov( X i , X j)= E {( X i− μ i)( X j− μ j)}1.3.6 Trị riêng, vector riêng:
Cho A ∈ C mxm là ma trận vuông
Vectoru ∈ C m gọi là vector riêng ứng với trị riêng λ ϵ C nếu:
A [ u ]= λ [ u ]
Tính chất:
o Trị riêng là nghiệm của phương trình đặc trưng:
det ( A − λI )= 0
o Một trị riêng có thể có nhiều vector riêng
o Mỗi vector chỉ ứng với một trị riêng duy nhất
o Mọi trị riêng của A ≠ 0 thì A khả nghịch
Trang 14o Nếu λ là trị riêng của A thì λk là trị riêng của Ak .
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ậnhiệp phương sai Đây là bước quan trọng nhất của thuật toán PCA, vì cácvector 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ủakhô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ừacủ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ămthô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ồmviệc chiếu dữ liệu gốc lên k thành phần chính để nhận được dữ liệu chiềuthấ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ácnhóm (clusters), hoặc các ngoại lệ (outliers) của dữ liệu
1.5 KẾT LUẬN:
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
Trang 15như 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,
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àonhững đặc điểm đó
2.2 SƠ ĐỒ KHỐI HOẠT ĐỘNG CỦA CHƯƠNG TRÌNH NHẬNDIỆN KHUÔN MẶT:
Chấm công trong công việc
Nhận dạng, phát hiện tội phạm nhanh chóng
Ảnh khuôn mặtPhát hiện Trích xuấtđặc trưng Nhận diệnkhuôn mặt Xác minh/Đối chiếu
Trang 16 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ườilá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ườitrê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 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM:
2.4.1 Ưu điểm:
Được ứng dụng rộng rãi trong nhiều lĩnh vực
Dễ thực hiện trên dữ liệu lớn
Đơn giản hóa dữ liệu: Bằng cách chuyển sang một không gian đặc trưng
có chiều thấp hơn Giúp giảm số chiều ảnh khuôn mặt nhằm tiết kiệmthời gian và chi phí tính toán
Giúp tăng khả năng phân biệt giữa các khuôn mặt khác nhau bằng cáchtối đa hóa sự khác biệt giữa các vector đặc trưng PCA cũng có thể loại
bỏ các thành phần không liên quan hoặc nhiễu trong dữ liệu ảnh
Có thể kết hợp các phương pháp với PCA nhằm tối đa hiệu quả mang lại:Support Vector machine, SVD (phân tích suy biến), …
2.4.2 Nhược đ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 khigiảm số chiều của dữ liệu, từ đó làm giảm độ chính xác của việcnhậ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…)
Trang 17o Biểu cảm (cười to, nheo mắt, há miệng…).
o Khó phân biệt các khuôn mặt có sự tương đồng cao về hình dạng,kích thước và màu sắc, hoặc các khuôn mặt có sự khác biệt nhỏ
về đặc điểm như cặp song sinh,…
o Do các yếu tố khác (tóc, kính, râu, quá trình lão hóa, nhiễu, chấtlượng hình ảnh thấp,…) cũng gây cản trở cho việc nhận dạng
CHƯƠNG III: KẾT LUẬN
Vì biết được khả năng, ưu điểm và nhược điểm của từng thành viên nênchúng em có thể bàn luận, sắp xếp công việc phù hợp cho các thành viên
để hoàn thành đề tài một cách tốt nhất
Qua việc thực hiện đề tài đã giúp chúng em có thêm kinh nghiệm về giảitoán trên phần mềm Python, phát triển những kĩ năng mềm như kĩ năngquản lý, làm việc nhóm
Đề tài cũng giúp chúng em có tinh thần học tập, cản thiện tư duy, mởrộng hiểu biết
Về phần ứng dụng của thuật toán trong Python:
o Ưu điểm: được ứng dụng rộng rãi, đảm bảo tính bảo mật, tiếtkiệm được thời gian, chi phí, nguồn nhân lực
o Nhược điểm: Việc thiết kế đoạn code mất khá nhiều thời gian,công sức, và đặc biệt khó khăn cho những người chưa có mộtlượng kiến thức nhất định về lập trình Việc thiết kế đoạn codecũng yêu cầu người thiết kế phải tỉ mỉ, chính xác Ngoài ra, vẫn
có những nhược điểm đã nhắc ở trên và sai sót của phần mềm mà
ta không thể tránh khỏi
Danh mục tài liệu tham khảo
[1] Phép phân tích thành phần chính, Wikipedia tiếng Việt
[2] Principal Component Analysis (PCA) in Python Tutorial , DataCamp
Trang 18[3] Casey Cheng, Principal Component Analysis (PCA) Explained Visually with Zero Math, Towards Data Science.
[4] StatQuest, Principal Component Analysis (PCA), Step-by-Step , YouTube.[5] Principal Component Analysis (PCA) - tuyệt chiêu giảm chiều dữ liệu , Mì
AI (miai.vn)
[6] Công thức tính kỳ vọng và phương sai, limosa.vn
[7] Nguyễn Thành, Phương sai là gì, lamchutaichinh.vn
[8] Bài 27: Principal Component Analysis, machinelearningcoban.com
[9] Tuan Remy, Thuat toan pca full 24-5-2017, slideshare.net
[10] Phan Ngoc, Giới thiệu Principal Component Analysis, viblo.asia
[11] Hiệp phương sai (Covariance) là gì? Công thức tính hiệp phương sai ,vietnambiz.vn
[12] Standard deviation of population and sample, khanacademy.org
Trang 19PHỤ LỤC
Trang 26Các file trong chương trình và tác dụng
Thư mục images: chứa các thư mục là mã số sinh viên trong đó chứa ảnh của sinhviên đó:
Thư mục
trong đó chứa khuôn mặt được cắt ra từ images thông qua file Face.py
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
Trang 27File 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).
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 + h x x + w ],( 64 , 64 ))
cv2.imwrite(img_path.replace( 'images' , 'images_face' ).split( '.jpg' ) [ ] + '.jpg' , img_face )
#tạo thư mục images_face
if not os.path.exists( 'images_face' ):
os.makedirs( 'images_face' )
#gọi định thức GetFace
image_path = 'images'
for whatelse in os.listdir(image_path):
whatelse_path = os.path.join(image_path, whatelse)
for sub_whatelse in os.listdir(whatelse_path):
img_path = os.path.join(whatelse_path, sub_whatelse)
if not os.path.isdir(whatelse_path.replace( 'images' ,