1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo bài tập lớn môn Đại số tuyến tính Đề tài số 03 phân tích pca Để nhận diện khuôn mặt

46 0 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 đề Phân Tích PCA Để Nhận Diện Khuôn Mặt
Người hướng dẫn GVHD: Phan Thị Khánh Vân
Trường học Trường Đại Học Bách Khoa
Chuyên ngành Đại Số Tuyến Tính
Thể loại báo cáo
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 46
Dung lượng 4,86 MB

Cấu trúc

  • PHẦN I (6)
    • 1. Hệ thống Sinh trắc học (6)
      • 1.1 Định nghĩa (6)
      • 1.2. Tổng quan lịch sử và vai trò (6)
        • 1.2.1. Lịch sử (6)
        • 1.2.2. Vai trò (7)
    • 2. Hệ thống nhận diện khuôn mặt (8)
      • 2.1. Các pha trong Hệ thống nhận diện khuôn mặt (8)
      • 2.2. Phương pháp nhận diện khuôn mặt (8)
      • 2.3. Ưu điểm và Nhược điểm (15)
  • PHẦN II (17)
    • 1. Thuật toán PCA (17)
      • 1.1. Lịch sử ra đời (17)
      • 1.2. Tổng quan về phương pháp PCA (18)
      • 1.3. Ứng dụng (19)
      • 1.4. Cơ sở lí thuyết (20)
    • 2. Thuật toán PCA trong Nhận diện khuôn mặt (22)
      • 2.1. Các bước dùng PCA để Nhận diện khuôn mặt (24)
      • 2.2. Ưu điểm và Nhược điểm (27)
  • PHẦN III (29)
    • 1. Tổng quan về Phần mềm MatLab (29)
    • 2. Sơ đồ khối hoạt động của chương trình Nhận diện khuôn mặt (30)
    • 3. Chương trình Nhận diện khuôn mặt bằng Phần mềm MatLab (31)
  • PHẦN IV (45)
  • TÀI LIỆU THAM KHẢO (45)

Nội dung

Phương phápnày sử dụng kỹ thuật giảm chiều để biến đổi các ảnh khuôn mặt thành một không gianmới, trong đó các thành phần chính là những vector riêng của ma trận hiệp phương saicủa tập d

Hệ thống Sinh trắc học

Sinh trắc học, từ tiếng Hy Lạp, kết hợp "Bio" (sự sống) và "metricos" (đo lường), là lĩnh vực nghiên cứu và ứng dụng các phương pháp đo lường đặc điểm sinh học và hành vi con người Lĩnh vực này áp dụng công nghệ tiên tiến như cảm biến sinh học và hình ảnh y học để thu thập dữ liệu về các chỉ số sinh học như nhịp tim, hoạt động não, và nhiệt độ cơ thể Sinh trắc học không chỉ giúp hiểu rõ hơn về cơ thể con người mà còn có nhiều ứng dụng trong y học, thể thao, và công nghiệp.

1.2 Tổng quan lịch sử và vai trò

Trong bối cảnh công nghệ phát triển nhanh chóng trong những thập kỷ gần đây, nhu cầu về giải pháp bảo mật thông tin và xác định danh tính ngày càng trở nên cấp thiết Sinh trắc học nổi lên như một giải pháp tiềm năng, cung cấp độ tin cậy cao trong việc bảo vệ dữ liệu và xác minh danh tính của người dùng.

Hnh 1: Dấu vân tay in trên phiến đất sét ở Babylon

Sinh trắc học là một ngành khoa học có lịch sử lâu đời, được W Whewell sử dụng lần đầu vào năm 1831 để nghiên cứu tuổi thọ của con người Đến khoảng năm 1901, F Galton đã định nghĩa và phát triển sinh trắc học thành Biometrika, đánh dấu sự hình thành của lĩnh vực này.

Việc sử dụng sinh trắc học như một phương tiện xác thực có nguồn gốc từ Babylon, nơi dấu vân tay đã được áp dụng trên các viên đất sét trong giao dịch kinh doanh từ năm 500 trước Công nguyên Hơn nữa, vào thế kỷ XIV, các thương gia Trung Quốc đã sử dụng lòng bàn tay và dấu chân của trẻ em để nhận dạng, cho thấy sự phát triển lâu dài của phương pháp xác thực này.

- Vào năm 1880, dấu vân tay đã được coi là một sinh trắc học đáng tin cậy và quan trọng.

Henry Faulds đã nhấn mạnh trong tạp chí Nature rằng dấu vết máu hoặc ấn tượng trên các bề mặt như đất sét và kính có thể giúp xác định tội phạm một cách khoa học Ông chia sẻ kinh nghiệm của mình trong hai vụ án, cho thấy sự tiến bộ rõ rệt khi có bản sao tự nhiên của những rãnh vân tay không thay đổi của tội phạm, bên cạnh hình ảnh của họ.

Sự tiến bộ của công nghệ đã chuyển đổi từ việc lăn tay và lưu trữ trên giấy sang việc quét và lưu trữ kỹ thuật số, đồng thời cho phép xử lý nhận dạng tự động Điều này không chỉ cải thiện hiệu quả mà còn mở rộng khả năng tiếp cận các hình thức sinh trắc học đa dạng, trong đó nhận diện khuôn mặt nổi bật như một giải pháp hiện đại và tiện ích.

Sinh trắc học là một phương pháp xác thực danh tính an toàn và đáng tin cậy, vượt trội hơn so với các phương pháp truyền thống như mật khẩu hay mã pin Các đặc điểm sinh học của mỗi người là duy nhất và không thể thay đổi, giúp sinh trắc học ngăn chặn gian lận và truy cập trái phép hiệu quả.

Quản lý truy cập hiệu quả có thể được cải thiện bằng cách sử dụng công nghệ sinh trắc học, cho phép mở khóa điện thoại, máy tính và cửa văn phòng một cách an toàn và tiện lợi.

Sinh trắc học đóng vai trò quan trọng trong việc phát hiện và ngăn chặn tội phạm, giúp xác định danh tính tội phạm và hỗ trợ truy tìm người mất tích.

- Chăm sóc sức khỏe: Sinh trắc học có thể được sử dụng để theo dõi sức khỏe và bệnh tật.

Sinh trắc học có thể giúp phát hiện sớm các bệnh, theo dõi hiệu quả điều trị và nhận diện cá nhân mắc chứng mất trí nhớ.

Hệ thống nhận diện khuôn mặt

2.1 Các pha trong Hệ thống nhận diện khuôn mặt

2.2 Phương pháp nhận diện khuôn mặt

Phương pháp nhận diện khuôn mặt đã phát triển từ những năm 1960, với Woodrow Wilson Bledsoe là người tiên phong trong lĩnh vực này Ông đã tạo ra một hệ thống phân loại ảnh khuôn mặt bằng cách sử dụng thiết bị nhập liệu máy tính đồ họa, ghi lại thủ công tọa độ của các đặc điểm như miệng, mũi, và mắt Dựa vào cơ sở dữ liệu các khuôn mặt đã được ghi lại, hệ thống so sánh ảnh mới với cơ sở dữ liệu để xác định những người có sự giống nhau gần nhất.

Hnh 2: Quy trnh nhận diện khuôn mặt (Techniques and Challenges of Face Recognition: A Critical Review by Shilpi Singh & a,S.V.A.V.Prasad )

Phương pháp nhận diện khuôn mặt đã trải qua nhiều hạn chế do công nghệ hạn chế trong những năm 1970, chủ yếu dựa vào tính toán thủ công Tuy nhiên, đến cuối thập kỷ 80 và đầu thập kỷ 90, những cải tiến quan trọng đã xuất hiện, đặc biệt là ứng dụng đại số tuyến tính trong nhận diện khuôn mặt Phương pháp Eigenface, do Sirovich và Kirby phát triển, sử dụng biểu diễn hình ảnh khuôn mặt trong không gian chiều thấp, đánh dấu bước tiến mới trong lĩnh vực này.

Các phương pháp kỹ thuật công nghệ nhận diện khuôn mặt hiện nay được nghiên cứu và phát triển dựa trên các cách tiếp cận và xử lý thông tin dữ liệu đa dạng.

A Template/Statistical/Neural Networks based (Cách tiếp cận dựa trên mẫu/thống kê/mạng thần kinh) Đây là hướng tiếp cận phổ biến nhất với nhiều công cụ và phương pháp khác nhau như:

Template matching (Đối sánh mẫu)

Đối sánh mẫu là một kỹ thuật trong xử lý ảnh kỹ thuật số, nhằm tìm kiếm các phần nhỏ của ảnh phù hợp với một ảnh mẫu Trong quá trình này, các đặc trưng được thể hiện thông qua mẫu, mô hình, pixel hoặc kết cấu Chức năng nhận dạng thường được thực hiện bằng các phép tính tương quan hoặc khoảng cách.

Nhược điểm của phương pháp này là sự phụ thuộc vào nhiều yếu tố ngoại cảnh, bao gồm sự thay đổi ánh sáng, góc chụp, tương phản màu sắc, tư thế chụp và khả năng bị che khuất một phần.

Statistical Approach (Phương pháp tiếp cận thống kê)

Trong tiếp cận thống kê, các mẫu được thể hiện qua các đặc trưng, với mỗi hình ảnh đại diện cho một đặc trưng cụ thể Mục tiêu chính là lựa chọn và áp dụng công cụ thống kê phù hợp để khai thác và phân tích dữ liệu Hiện nay, có nhiều công cụ thống kê được sử dụng để nhận diện khuôn mặt hiệu quả.

 PCA (Principal Component Analysis – Phân tích thành phần chính)

PCA (Phân tích thành phần chính) là một thuật toán thống kê sử dụng phép biến đổi trực giao để chuyển đổi một tập hợp dữ liệu từ không gian nhiều chiều sang không gian ít chiều hơn, thường là 2 hoặc 3 chiều Điều này giúp giảm thiểu độ phức tạp của dữ liệu trong khi vẫn giữ lại những thông tin quan trọng, từ đó hỗ trợ trong việc phân tích và trực quan hóa dữ liệu hiệu quả hơn.

3 chiều) nhằm tối ưu hóa việc thể hiện sự biến thiên của dữ liệu

 LDA (Linear discriminant analysis – Phân tích phân biệt tuyến tính)

LDA là một phương pháp phổ biến để xác định sự kết hợp tuyến tính của các đặc trưng, đồng thời duy trì khả năng phân tách giữa các lớp Khác với PCA, LDA tập trung vào việc mô hình hóa sự khác biệt giữa các cấp độ Đối với mỗi cấp độ, LDA phân tích và thu được sự khác biệt trong vectơ chiếu.

Trong nhận dạng khuôn mặt trên máy tính, mỗi khuôn mặt được biểu diễn bằng nhiều giá trị pixel Phân tích phân biệt tuyến tính (LDA) được sử dụng để giảm số lượng đặc điểm xuống mức dễ quản lý trước khi tiến hành phân loại Mỗi chiều mới là sự kết hợp tuyến tính của các giá trị pixel, tạo thành một mẫu nhận diện.

 DCT (Discrete cosine transform – Biến đổi cosin rời rạc)

Phương pháp này thể hiện một tập hợp các điểm dữ liệu liên quan đến tổng các hàm cosin và các tần số dao động khác nhau DCT, dựa trên biến đổi rời rạc Fourier, cho phép nén các biến thể, từ đó có khả năng biến đổi hình ảnh và giảm chiều hiệu quả.

Bộ lọc Gabor có khả năng phân tích hình ảnh tương tự như hệ thống thị giác của con người, nhờ vào việc kiểm soát hướng của cạnh để trích xuất đặc trưng Các tế bào đơn giản trong vỏ não thị giác có thể được coi là một tập hợp các wavelets 2D Gabor tự giống nhau.

 ICA (Independent Component Analysis – Phân tích thành phần độc lập)

Khác với PCA, ICA là phương pháp tìm kiếm các kết hợp tuyến tính của dữ liệu độc lập về mặt thống kê, nhằm mục đích tạo ra một biểu diễn hình ảnh độc lập Trong khi PCA tối đa hóa phương sai để tái cấu trúc dữ liệu dựa trên các mối tương quan, ICA tập trung vào việc phân tách các thành phần độc lập, mang lại một cách tiếp cận mới cho việc phân tích dữ liệu.

Phân tích thành phần chính phi tuyến (Kernel PCA) là một mở rộng của PCA truyền thống, sử dụng phương pháp hạt nhân để thực hiện phân tích phi tuyến Phương pháp này áp dụng ánh xạ phi tuyến cho dữ liệu đầu vào, sau đó tiến hành PCA tuyến tính trong không gian con đặc trưng đã được tạo ra.

Neural Networks (Mạng thần kinh)

Mạng nơ-ron tiếp tục được áp dụng trong việc nhận dạng và phân loại mẫu, đặc biệt là trong nhận dạng khuôn mặt đã được căn chỉnh và chuẩn hóa Có nhiều phương pháp khác nhau hỗ trợ trích xuất đặc trưng bằng mạng nơ-ron, và khi kết hợp với các công cụ như PCA hoặc LCA, chúng tạo ra một bộ phân loại kết hợp hiệu quả cho việc nhận dạng khuôn mặt.

 Mạng thần kinh với bộ lọc Gabor

 Mạng thần kinh với mô hình Markov ẩn

B Geometric Based/ Template Based (Cách tiếp cận dựa trên hình học/ khuôn mẫu)

Các phương pháp dựa trên khuôn mẫu có thể được xây dựng bằng cách sử dụng các công cụ như:

 PCA (Principal Component Analysis – Phân tích thành phần chính)

 LDA (Linear Discriminant Analysis – Phân tích phân biệt tuyến tính)

Thuật toán PCA

Phân tích thành phần chính (PCA) được hiểu qua nhiều góc độ khác nhau Đối với các nhà thống kê cổ điển, PCA là quá trình xác định các trục chính của ellipsoid nhiều chiều, bao gồm đám mây dữ liệu phân phối chuẩn đa chiều Các trục này được ước lượng từ một mẫu n cá thể, với mỗi cá thể được đo p chỉ tiêu Kỹ thuật này lần đầu tiên được giới thiệu bởi H Hotelling vào năm 1933, sau đó được phát triển thêm bởi T W Anderson vào năm 1958 và A M Kshirsagar vào năm 1972.

Kỹ thuật phân tích nhân tố cổ điển được áp dụng trong trường hợp đặc biệt khi phương sai gần như bằng không Phương pháp này, được đề xuất bởi Horst (1965) và Harman (1966), thường được sử dụng trong lĩnh vực phân tích tâm lý.

PCA, hay Phân tích thành phần chính, được xem là một kỹ thuật tối ưu trong việc biểu diễn dữ liệu theo tiêu chuẩn đại số và hình học, mà không yêu cầu giả thuyết thống kê hay mô hình đặc biệt nào Quan điểm này đã trở nên phổ biến từ khi máy tính điện tử ra đời, và được K Pearson đề xuất vào năm 1901 C.R Rao đã trình bày nội dung lý thuyết của phương pháp PCA một cách đơn giản và rõ ràng trong công trình của ông năm 1964.

Phương pháp PCA (Phân tích thành phần chính) có ứng dụng rộng rãi trong nhiều lĩnh vực như công nghiệp, nông nghiệp, kinh tế và khoa học cơ bản Phương pháp này sử dụng bảng số liệu với các cột đại diện cho các biến và các dòng là các cá thể, từ đó đo lường giá trị của từng biến.

1.2 Tổng quan về phương pháp PCA

Phân tích thành phần chính (PCA) là một ứng dụng nổi bật của đại số tuyến tính, đóng vai trò quan trọng trong việc phân tích dữ liệu Phương pháp này không cần tham số, giúp đơn giản hóa quá trình trích xuất thông tin từ các tập dữ liệu phức tạp PCA cho phép giảm số chiều của tập dữ liệu, từ đó làm lộ rõ thông tin ẩn trong các dữ liệu không rõ ràng.

Để phân tích một hiện tượng, chúng ta thường đo lường một số đại lượng trong hệ thống Tuy nhiên, dữ liệu đo được có thể mờ mịt và khó hiểu, với nhiều biến và thời điểm khác nhau dễ gây nhầm lẫn Thuật toán PCA là một công cụ hữu ích trong trường hợp này, giúp biến đổi tập dữ liệu dư thừa và nhiễu thành một tập dữ liệu mới, dễ quan sát và phân biệt hơn Trong một hệ thống liên tục và tuyến tính, các đo lường được đưa vào không gian vector, nơi mỗi thể hiện của hệ thống là một vector Chúng ta sẽ áp dụng phép biến đổi tuyến tính để ánh xạ dữ liệu gốc sang dữ liệu mới, giảm thiểu sự dư thừa và nhiễu.

- Tổng quan về phương pháp PCA PCA là phương pháp:

 Loại bỏ thành phần phụ

 Không ảnh hưởng nhiều dữ liệu so với dữ liệu gốc

- Lợi ích của phương pháp PCA:

 Giảm chiều dữ liệu nhưng vẫn giữ được độ chính xác nhất định so với dữ liệu ban đầu

 Dễ quan sát, nắm bắt thông tin, nhận biết sự tương quan

 Giúp ta tính toán nhanh hơn với độ chính xác cao

Phương pháp Phân tích Thành phần Chính (PCA) là kỹ thuật thống kê giúp giảm số chiều của dữ liệu mà vẫn bảo tồn các đặc trưng quan trọng PCA được ứng dụng rộng rãi trong nhiều lĩnh vực, bao gồm Công nghệ thông tin, Sinh học và đặc biệt là trong Tài chính.

1 Trong tài chính: Phân tích rủi ro, PCA có thể giúp xác định các yếu tố chính ảnh hưởng đến biến động của giá cổ phiếu, trái phiếu, hoặc các sản phẩm tài chính khác Bằng cách sử dụng các thành phần chính, ta có thể đo lường rủi ro của danh mục đầu tư và tối ưu hóa lợi nhuận Ngoài ra còn có thể phân tích hành vi người tiêu dùng, phân tích dữ liệu tài chính, phân tích thị trường, …

2 Trong sinh học: Phân tích di truyền, PCA có thể giúp phân loại các mẫu di truyền dựa trên các đặc điểm di truyền của chúng, như số lượng, tần số, hoặc đa dạng của các đoạn DNA Bằng cách sử dụng các thành phần chính, ta có thể nhận biết được các mối quan hệ di truyền giữa các mẫu và các nhóm di truyền Ngoài ra còn phân tích biểu hiện gen, phân tích hình ảnh sinh học, …

3 Trong giáo dục nhà trường: Phân tích dữ liệu học sinh, PCA có thể giúp phân tích các dữ liệu về điểm số, năng lực, sở thích, hoặc hành vi học tập của học sinh Bằng cách sử dụng các thành phần chính, ta có thể nhóm các học sinh có đặc điểm tương đồng và đưa ra các phương pháp giảng dạy, đánh giá, hoặc tư vấn phù hợp Ngoài ra còn phân tích: phân tích dữ liệu giáo viên, phân tích dữ liệu giáo dục.

- PCA có nhiều ứng dụng trong công nghệ dữ liệu, ví dụ như:

1 Nhận dạng khuôn mặt: PCA có thể giúp trích xuất các đặc trưng chính của khuôn mặt từ các ảnh và sử dụng chúng để phân biệt các khuôn mặt khác nhau.

2 Phân tích dữ liệu nhiều chiều: PCA có thể giúp giảm số lượng các biến trong dữ liệu và tạo ra các biến mới không tương quan với nhau Điều này giúp cho việc phân tích dữ liệu dễ dàng và hiệu quả hơn.

3 Trực quan hóa dữ liệu: PCA có thể giúp biểu diễn dữ liệu nhiều chiều trên các đồ thị hai hoặc ba chiều, giúp cho việc nhìn nhận và hiểu dữ liệu trở nên rõ ràng hơn.

4 Nén dữ liệu: PCA có thể giúp giảm dung lượng lưu trữ của dữ liệu mà vẫn giữ được các thông tin cần thiết.

- Giá trị trung bình (Kì vọng):

+ Với bảng số liệu, phương sai thể hiện sự đặc trưng độ phân tán các số liệu trong tập dữ liệu so với giá trị trung bình. σ 2 =∑ i= 1 n ¿ ¿ ¿

+ Là độ đo sự biến thiên cùng nhau của 2 biến ngẫu nhiên.

(X i −X)(Y i −Y) n−1 + Hiệp phương sai hai biến ngẫu nhiên X và Y cho biết mối tương quan giữa X và Y + Giá trị hiệp phương sai không quan trọng bằng dấu của nó

 Nếu giá trị hiệp phương sai mang giá trị dương thì X và Y tăng hoặc giảm cùng nhau.

 Nếu giá trị hiệp phương sai mang giá trị âm thì X tăng khi Y giảm hoặc ngược lại.

 Nếu giá trị hiệp phương sai bằng không thì X và Y độc lập với nhau.

Hiệp phương sai là công cụ quan trọng để xác định mối liên hệ giữa các chiều trong tập dữ liệu có số chiều lớn Hiệp phương sai của một biến tương đương với phương sai của chính biến đó Trong không gian vector, các vector được coi là biến ngẫu nhiên nhiều chiều, trong đó mỗi thành phần của vector là một biến ngẫu nhiên vô hướng.

+ Ma trận hiệp phương sai của X có dạng như sau:

S= 1 n−1X T X ¿[ Cov Cov Cov (X (X (X ⋮ 1 2 n , X , X , X 1 1 1 ) ) ) Cov( Cov( Cov ( X X X ⋮ 1 2 2 , X , X , X 2 2 n ) ) ) ⋯ ⋯ ⋱ ⋯ Cov(X Cov(X Cov (X ⋮ 1 2 n , X , X , X n n n ) ) ) ]

+ Ta có nhận xét sau về ma trận hiệp phương sai:

 Đường chéo ma trận là phương sai của các thành phần của vecto ngẫu nhiên X.

 Các vị trị không phải là đường chéo cho thấy mối tương quan dữ liệu theo các chiều tương ứng trong vector ngẫu nhiên X.

 Ma trận S là ma trận đối xứng.

Các vector ngẫu nhiên tạo ra ma trận S, trong đó các thành phần không phải đường chéo thể hiện mối tương quan giữa các chiều trong tập dữ liệu, trong khi các thành phần đường chéo phản ánh khả năng phân tán thống kê của dữ liệu Để tối ưu hóa khả năng quan sát và phân biệt, cần tăng phương sai và giảm hiệp phương sai, từ đó giảm thiểu nhiễu và dư thừa Ma trận hiệp phương sai lý tưởng phải có các thành phần đường chéo khác không và các thành phần không thuộc đường chéo bằng không, tức là ma trận phải là ma trận chéo Việc này liên quan đến các bài toán chéo hóa ma trận trong đại số tuyến tính, nơi ma trận đối xứng được chéo hóa bởi ma trận các vector riêng trực giao của nó, và từ đó ta có định nghĩa về trị riêng và vector riêng.

 λ được gọi là trị riêng của ma trận A = [a ij ¿¿ n × n nếu tồn tại X 1 , X 2 , … X n không đồng thời bằng không sao cho:

Khi đó u= [ X X X ⋮ 1 2 n ] ∈ R n được gọi là vector riêng ứng với trị riêng λ

Thuật toán PCA trong Nhận diện khuôn mặt

PCA, được phát minh bởi Karl Pearson vào năm 1901, là một phương pháp hữu ích để xử lý dữ liệu dư thừa Thuật toán này giúp giảm số lượng biến bằng cách chuyển đổi chúng thành các thành phần chính, từ đó tối ưu hóa việc nhận diện ảnh trong không gian nhiều chiều Mục tiêu của PCA trong nhận diện khuôn mặt là giảm chiều dữ liệu trong khi vẫn giữ lại càng nhiều biến thiên từ tập dữ liệu gốc càng tốt, mặc dù điều này có thể dẫn đến mất mát thông tin Không gian hạn chế chiều tối ưu sẽ được xác định qua các thành phần chính tốt nhất.

Phương pháp nhận diện khuôn mặt sử dụng PCA giúp giảm kích thước cơ sở dữ liệu bằng cách loại bỏ các vector riêng bằng không và các vector với giá trị riêng rất nhỏ Điều này không chỉ làm nổi bật các đặc trưng của ảnh mà còn tăng khả năng phân biệt nhờ giảm mối tương quan giữa các chiều trong tập dữ liệu huấn luyện Kết quả là không gian vector của ảnh huấn luyện được căng ra, giúp việc tính toán khoảng cách ngắn nhất với ảnh cần nhận diện trở nên dễ dàng hơn, từ đó dễ dàng tìm ra ảnh tương tự trong cơ sở dữ liệu.

Trong phương pháp này, ảnh được lưu trữ dưới dạng các vector đặc trưng trong cơ sở dữ liệu bằng cách ánh xạ từng ảnh huấn luyện vào không gian khuôn mặt riêng Các đặc trưng này có thể liên quan hoặc không liên quan đến các đặc điểm khuôn mặt như mắt, mũi, miệng và tóc Ảnh nhận diện sẽ được chiếu vào không gian khuôn mặt riêng và tiến hành so sánh với các ảnh có trong cơ sở dữ liệu.

Phương pháp khuôn mặt riêng là một kỹ thuật hiệu quả trong nhận diện khuôn mặt nhờ vào tính đơn giản, tốc độ nhanh và khả năng học tập Các khuôn mặt riêng, hay còn gọi là các vector riêng của ma trận hiệp phương sai, là các thành phần chính trong phân bố khuôn mặt, với mỗi ảnh khuôn mặt NXN pixel được xem như một điểm trong không gian N² chiều Mỗi ảnh huấn luyện tương ứng với một vector riêng, cho phép biểu diễn chính xác các ảnh khuôn mặt bằng tổ hợp tuyến tính của các khuôn mặt riêng Số lượng khuôn mặt riêng tối đa tương đương với số lượng ảnh trong tập huấn luyện, và việc sử dụng các khuôn mặt riêng tốt nhất, tương ứng với các giá trị riêng lớn nhất, giúp gần đúng biểu diễn các khuôn mặt với phương sai lớn nhất.

2.1 Các bước dùng PCA để Nhận diện khuôn mặt

Khuôn mặt con người chứa đựng nhiều đặc điểm nhận diện, cho phép chúng ta nhận ra bạn bè sau thời gian dài không gặp Dù có sự thay đổi về da, tóc hay các chi tiết khác, chúng ta vẫn có thể nhớ được diện mạo tổng thể của họ Điều này cho thấy rằng mỗi khuôn mặt mang một nét đặc trưng, từ đó hình thành nên thuật toán nhận diện.

Phân tích thành phần chính (PCA) là một thuật toán nhận diện hình ảnh dựa trên các đặc điểm tổng quát của khuôn mặt Thuật toán này sẽ được áp dụng để thực hiện hai nhiệm vụ chính.

 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 bức ảnh

Bắt đầu với một tập ảnh khuôn mặt làm tập huấn luyện, mỗi ảnh kích thước M × N được coi là một vector trong không gian M*N chiều Những vector này không phân bố ngẫu nhiên mà theo một quy luật nhất định, tạo thành một không gian con gọi là không gian khuôn mặt Từ tập huấn luyện, chúng ta tìm một cơ sở trực chuẩn cho không gian khuôn mặt, trong đó các vector thuộc cơ sở này đại diện cho những đặc trưng tổng thể của khuôn mặt.

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

+ Tính vector ảnh trung bình: m=1

+ Sự khác biệt giữa những khuôn mặt với ảnh trung bình là những vector :

Ý tưởng của phân tích thành phần chính là xác định một tập hợp các vector trực chuẩn u k nhằm mô tả chính xác nhất sự phân bố của các vector khuôn mặt trong không gian Các vector u k được lựa chọn để tối ưu hóa việc thể hiện dữ liệu khuôn mặt.

 Những vector u k và giá trị vô hướng λ k chính là những vector riêng và trị riêng tương ứng của ma trận A A T

 ⟨u∨v⟩ là tích vô hướng giữa hai vector u, v.

+ Ta thấy ma trận có kích thước A M*N × P , còn ma trận A A T có kích thước

Do kích thước ma trận M*N×M*N quá lớn, việc tìm kiếm trực tiếp các vector riêng và trị riêng trở nên khó khăn Thay vào đó, chúng ta sẽ xác định các vector riêng của ma trận A T A với kích thước P×P.

 Nếu là một vector riêng của v A T A và là trị riêng tương ứng, khi đó ta có:λ

→Tức là Av là một trị riêng của ma trận A A T

 Thông thường ta chỉ lấy một số , vector riêng ứng với trị riêng có giá trị lớnQ Q nhất

+ Sau khi có các vector riêng của ma trận A A T , 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.

 Đặt L=A T A , tìm là tập hợp các vector riêng của V 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 trị riêng lớn nhất trong Q D

E = AV là tập hợp các vector riêng của ma trận A A T, được gọi là Eigenfaces do có hình dạng giống khuôn mặt Ma trận E có kích thước M*N×Q, với mỗi cột tương ứng là một vector riêng.

 Chuẩn hóa các vector cột trong (chia mỗi vector cho độ dài của vector đó).E

→Bây giờ, ta có thể coi là một cơ sở trực chuẩn của không gian khuôn mặt.E

Đối với bức ảnh H có kích thước tương đương với các bức ảnh trong tập huấn luyện, chúng ta sẽ xác định xem nó có phải là bức ảnh khuôn mặt hay không, đồng thời tìm kiếm bức ảnh tương tự nhất trong tập huấn luyện.

+ được xem là một vector trong không gian H M*N chiều Đặt K =H−m với m là vector ảnh trung bình.

Trong không gian có tích vô hướng hữu hạn chiều, xét không gian con V W Giả sử V W có một cơ sở trực chuần { u 1 , … , u Q } Hình chiếu trực giao của một vector u bất kỳ lên không gian W được xác định theo một quy trình cụ thể.

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

 Tập hợp c i =⟨u∨u i ⟩, i=1, … ,Q được gọi là tọa độ của u 0 trong không gian W

 Tìm C=E T K là tọa độ của hình chiếu K f của K lên không gian khuôn mặt làC vector cột Q×1

Đối với A i, một cột trong ma trận A (tương ứng với bức ảnh T i trong tập huấn luyện), ta tính C i = E T A 1, đây là tọa độ của hình chiếu A if của A i lên không gian khuôn mặt.

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

 s=‖ K−K f ‖ xem như khoảng cách từ bức ảnh H đến không gian mặt

 s i =‖ C−C i ‖ xem như khoảng cách từ H đến bức ảnh T i trong tập huấn luyện

Xét hai ngưỡng α và β, nếu s < α thì H được xác định là bức ảnh khuôn mặt, còn nếu s i < β thì T i là bức ảnh của cùng một người với H Điều này cho phép chúng ta tìm bức ảnh trong tập huấn luyện giống với bức ảnh H hoặc xác định xem H có phải là bức ảnh khuôn mặt hay không Tuy nhiên, bức ảnh H cần có cùng kích thước với các bức ảnh trong tập huấn luyện Trong trường hợp bức ảnh lớn H chứa nhiều khuôn mặt, chúng ta sẽ xác định vị trí của từ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

 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ừ đó ta có thể xác định vị trí những khuôn mặt trong ảnh.

2.2 Ưu điểm và Nhược điểm

Cài đặt dễ dàng cho bài toán nhận diện khuôn mặt, với độ chính xác cao khi áp dụng lý thuyết hiện có Tuy nhiên, để xác định vị trí khuôn mặt, cần sử dụng thêm một thuật toán khác để xử lý face map theo lý thuyết.

Tổng quan về Phần mềm MatLab

MATLAB, giống như các ngôn ngữ lập trình phổ biến như Java và C#, sở hữu môi trường phát triển tích hợp (IDE) và bộ thư viện riêng Được biết đến với tên gọi "ngôn ngữ lập trình mảng," MATLAB là viết tắt của "Matrix Laboratory" và thuộc thế hệ ngôn ngữ lập trình thứ tư Với thiết kế đa mô hình, MATLAB hỗ trợ nhiều phương pháp lập trình khác nhau, bao gồm lập trình chức năng, lập trình trực quan và lập trình hướng đối tượng.

- Các ứng dụng đa dạng của MATLAB bao gồm:

 Thực hiện đại số tuyến tính.

 Vẽ đồ thị cho các bộ dữ liệu lớn.

 Trực quan hóa và phân tích dữ liệu.

 Tính toán ma trận số học.

So với các ngôn ngữ lập trình bậc thấp, MathLab cung cấp khả năng tiếp cận và sử dụng dễ dàng hơn, nhờ vào nền tảng độc lập và giao diện người dùng trực quan, được thiết kế đặc biệt cho nghiên cứu trong lĩnh vực toán học.

Chương trình Nhận diện khuôn mặt bằng Phần mềm MatLab

Chương trình "Nhận dạng mặt người trên Matlab" được phát triển trên giao diện người dùng GUI của phần mềm Matlab 7.0, mang đến sự đơn giản và dễ dàng cho người sử dụng.

- Để mở chương trình ta khởi động phần mêm matlab và chạy file giaodien.fig

Các tệp dữ liệu chứa code

Giao diện giới thiệu của chương trình bao gồm hai nút bấm: Next và Close Chọn nút Close để thoát khỏi chương trình, hoặc nhấn Next để tiến tới giao diện tiếp theo của chương trình chính.

Giao diện chính của chương trình bao gồm hai khung hiển thị hình ảnh cùng với hai nút nhấn là Browse và Search Để bắt đầu quá trình tìm kiếm, người dùng cần tải ảnh khuôn mặt cần kiểm tra bằng cách nhấn vào nút Browse Khi hộp thoại mở file xuất hiện, bạn chọn file ảnh muốn kiểm tra; ví dụ, chúng ta sẽ sử dụng ảnh “ảnh_test_2” như trong hình vẽ.

Chọn ảnh cần kiểm tra

- Ảnh cần kiểm tra sẽ được đưa ra giao diện chương trình chính như hình: Ảnh cần kiểm tra

Để kiểm tra khuôn mặt trong ảnh, người dùng chỉ cần nhấn nút "Search" Chương trình sẽ tìm kiếm trong cơ sở dữ liệu để xác định bức ảnh có khuôn mặt tương tự với khuôn mặt cần kiểm tra và hiển thị kết quả trên giao diện chính.

- Chương trình sẽ tìm ra khuôn mặt gần giống nhất với khuôn mặt cấn kiểm tra Và ở đây kết quả tìm được là hình có tên “8.jpg”.

Code chương trình: function varargout = giaodien(varargin) gui_Singleton = 1; gui_State = struct('gui_Name', mfilename,

'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end function giaodien_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;

% Update handles structure guidata(hObject, handles); clc;

The function `giaodien_OutputFcn` returns outputs to the command line, while the `Search_Callback` function loads the `TestImage` and displays it on the specified axes.

The code snippet utilizes the function `nhandien` to identify a test image, generating an output name based on the provided parameters It constructs the full path for the image by concatenating the training path with the output name, then reads and displays the image using `imshow` The title of the displayed image is set to "Found Image," and the name of the image is updated in the GUI with the label "Image Name:" Additionally, a callback function, `Browse_Callback`, is included for user interaction.

[file_name file_path] = uigetfile ('*.jpg','Chon anh kiem tra ','test\2.jpg'); if file_path ~= 0

TestImage = imread ([file_path,file_name]); end axes(handles.anhkiemtra); if file_path ~= 0

34 imshow(TestImage); end save TestImage; function T = taoCSDL(trainPath)

% trainPath la duong dan toi thu muc csdl anh Thu muc nay ngoai nhung

% file anh con chua nhung file khac co ten : , , Thumbs.db

% Bien tat ca anh kich thuoc MxN thanh vector cot M*Nx1 , su dung

% ham reshape cua Matlab , sau do dat vao ma tran T , cuoi cung ma tran T

% se co kich thuoc M*NxP

The code snippet retrieves a list of files from a specified training path, counting the number of image files while excluding specific entries such as '.' , ' ', and 'Thumbs.db' This process ensures an accurate tally of valid images within the dataset.

% Tao ma tran tu nhung tam anh

In this example, image files are named sequentially as 1.jpg, 2.jpg, and so on The filename is constructed using the integer value of 'i', converting it to a string format and appending the '.jpg' extension The complete file path is then created by combining the base training path with the filename Finally, the image is read from the specified path and converted to grayscale for further processing.

[dong cot] = size(img); tam = reshape(img',dong*cot,1); % bien anh thanh vector

T = [T tam]; % tang dan kich thuoc ma tran T end function [m, A, E] = taoEF(T)

% T la mot ma tran kich thuoc M*NxP chua tat ca anh trong csdl , moi anh la

% mot vector cot trong ma tran T

% Theo thuat toan PCA ,dau tien ta se tinh ra m la trung binh cua tat ca cac anh

% Sau do ta se lay tung buc anh trong T tru cho anh trung binh , ta se duoc mot ma

% Ta can tim Eigenface la nhung vector rieng cua ma tran A*A' , nhung ma

% tran A*A' kich thuoc là M*NxM*N qua lon , ta se tim nhung vector rieng

% cua ma tran A'*A co kich thuoc PxP Ta se tim nhung vector rieng

% bang ham eig trong MatLab

% Gia su v la mot vector rieng cua ma tran A'*A , khi do A*v la vector

% tap hop nhung vector rieng cua ma tran A*A' goi la Eigenfaces

% A tap hop nhung (anh-anh trung binh )

% E nhung vector rieng cua ma tran A*A'

%tinh toan anh trung binh m = mean(T,2); soanh = size(T,2);

%xuat ra hinh anh cua m show(m,'Anh trung binh');pause;

% tinh do lech giua anh moi buc anh voi anh trung binh

A = []; for i = 1 : soanh temp = double(T(:,i)) - m; % T(:,i): vector cot thu i chinh la mot buc anh if i 0 nằm trên đường chéo chính, và K < 0 nằm dưới đường chéo chính.

Diag(V): Giống như DIAG (V, 0) và đặt vector V trên đường chéo chính.

Hàm Sort(X) được sử dụng để phân loại các phần tử trong vector hoặc ma trận Đối với vector, Sort(X) sắp xếp các phần tử theo thứ tự tăng dần, trong khi đối với ma trận, nó phân loại từng cột của ma trận theo thứ tự tăng dần Khi X là một mảng di động chứa chuỗi, Sort(X) sẽ sắp xếp các ký tự theo thứ tự bảng mã ASCII.

 Norm(X): Chuẩn hóa ma trận và vector X.

 Min(X): Trả về vị trí của phần tử nhỏ nhất của ma trận X.

[1] Satish L, Gururaj BI "Use of hidden Markov models for partial discharge pattern classification" IEEE Transactions on Dielectrics and Electrical Insulation April, 2003

Phương pháp nhận diện khuôn mặt đang ngày càng trở nên phổ biến và quan trọng trong nhiều lĩnh vực Công nghệ này sử dụng các kỹ thuật tiên tiến để xác định và xác minh danh tính của cá nhân thông qua đặc điểm khuôn mặt Vinbigdata đã cung cấp thông tin chi tiết về các phương pháp kỹ thuật khác nhau được áp dụng trong nhận diện khuôn mặt, từ đó giúp người đọc hiểu rõ hơn về cách thức hoạt động của công nghệ này và ứng dụng của nó trong thực tế Để tìm hiểu thêm, bạn có thể tham khảo bài viết tại Vinbigdata.

[3] Barlett, MS (2001) Face image analysis by unsupervised learning Boston: Kluwer International Series on Engineering and Computer Science.

[4] OpenCV (2023) Template matching [Online] Từ: https://docs.opencv.org/3.4/d4/dc6/tutorial_py_template_matching.html

[5] Helsinki University of Technology (2005) What is Independent Component Analysis: A Demo [Online] Từ: http://research.ics.aalto.fi/ica/icademo/

[6] George Dallas (2013) Principal Component Analysis 4 Dummies: Eigenvectors, Eigenvalues and Dimension Reduction [Online] Từ:

Ngày đăng: 19/12/2024, 15:34

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

TÀI LIỆU LIÊN QUAN