1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Nêu cơ sở lý thuyết của phân tích thành phầnchính (pca)ứng dụng của phân tích pca vào nhận dạngkhuôn mặt

29 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề 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 Khuôn Mặt
Tác giả Trần Tuấn Khôi, Hồ Tấn Đạt, Nguyễn Văn Trí Dũng, Lê Nhựt Phúc, Trần Quốc Thịnh, Lê Minh Quân, Nguyễn Văn Tài
Người hướng dẫn Nguyễn Trọng
Trường học Đại Học Bách Khoa
Thể loại báo cáo
Năm xuất bản 2023
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 29
Dung lượng 2,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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

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 4

LỜ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 5

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ấ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 6

NHẬN XÉT CỦA GIẢNG VIÊN

Trang 7

MỤ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 8

2.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 10

Mô 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 13

1.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 14

o  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 15

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,

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 17

o 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 19

PHỤ LỤC

Trang 26

Cá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 27

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).

  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' ,

Ngày đăng: 12/12/2023, 15:11

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w