1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

ỨNG DỤNG THUẬT TOÁN PCA vào VIỆC NHẬN DIỆN mặt NGƯỜI DÙNG MATLAB (có code)

39 897 12

Đ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

Định dạng
Số trang 39
Dung lượng 3,1 MB

Nội dung

- Trình bày các tấm hình ban đầu thành ma trận hai chiều, việc xác định tấm hìnhcó khuôn mặt đang cần tìm có trong cơ sở dữ liệu hay không được thực hiệnbằng việc tiến hành toán trừ với

Trang 1

ĐỒ ÁN TỐT NGHIỆP

ỨNG DỤNG THUẬT TOÁN PCA VÀO VIỆC NHẬN DIỆN MẶT NGƯỜI DÙNG

MATLAB

Trang 2

DANH MỤC CÁC TỪ VIẾT TẮT

MATLAB: MATrix LABoratory

PCA: Principal Component Analysis

CSDL: Cơ sở dữ liệu

Trang 3

ĐỒ ÁN TỐT NGHIỆP

Trang 1/36

Ứng dụng thuật toán PCA vào việc nhận diện mặt

người dùng Matlab

CHƯƠNG 1: KHÁI QUÁT ĐỀ TÀI

1.1 Giới thiệu về đề tài

- Ngày nay, sự tiến bộ không ngừng của lĩnh vực khoa học công nghệ, các thuậttoán đã giúp con người có thể sử dụng thiết bị máy thay thế cho vấn đề khókhăn trở nên đơn giản hơn, những việc làm yêu cầu xử lý bằng tốc độ cao màhiệu quả của nó mang lại tốt và chính xác gấp rất nhiều lần so với con ngườilàm

- Ứng dụng “Nhận diện khuôn mặt người” là một trong những ứng dụng xuất sắcvới những giá trị to lớn mà nó mang lại Để tìm được thông tin về một ai đó,chúng ta sẽ mất rất nhiều thời gian và tốn rất nhiều công sức mới tìm ra đượcnhưng kết quả thu được chỉ trong phạm vi nhỏ và tìm kiếm đơn giản mà thôi,vậy nếu muốn có thông tin cũng như hình ảnh về một người nào đó ở mộttỉnh thành khác, hoặc ở đâu đó trên đất nước, thậm chí là quốc tế thì ta phảilàm sao? Đó là việc làm vô cùng khó khăn và dường như là bất khả thi Nhưngđối với một thuật toán chuyên về nhận diện khuôn mặt, tất cả chỉ gói gọn trong

ít phút có thể lâu hơn một chút đối với cơ sở dữ liệu lớn tuy nhiên về mặt hiệuquả vẫn rất tốt

- Ứng dụng về nhận diện khuôn mặt người đã phát triển ngày một rộng rãi và pháttriển không ngừng Ngày nay chúng ta có thể dễ dàng thấy được sự xuất hiệncủa chúng trên những chiếc điện thoại smartphone để khóa mở màn hình, có thểdùng để kiểm tra thông tin, điểm danh trong trường học, các doanh nghiệp,

1.1.1 Đề tài yêu cầu

- Chuẩn đoán xác định khuôn mặt, rút trích và tách lọc riêng khuôn mặt Dùngphương pháp thuật toán PCA để trainning tạo ra CSDL và testing nhận diệnkhuôn mặt đó

1.1.2 Phương hướng

- Viết sơ đồ giải thuật, code, tạo giao diện người dùng bằng ứng dụng MATLAB

Trang 4

- Trình bày các tấm hình ban đầu thành ma trận hai chiều, việc xác định tấm hình

có khuôn mặt đang cần tìm có trong cơ sở dữ liệu hay không được thực hiệnbằng việc tiến hành toán trừ với từng tập mẫu Mấu chốt ở đây chính là kíchthước ma trận khá lớn, cơ sở dữ liệu bao la, chính vì vậy sẽ tốn không ít thờigian, không có yếu tố khả thi cao cho việc áp dụng nhận diện khuôn mặt ở điềukiện số lượng đông

- Cách giải quyết ở đây là tìm ra một thuật toán có thể xử lý vấn đề nhanh choviệc tính toán và thuật toán PCA đáp ứng hầu như mọi thứ cho việc nhận diệnmặt người, PCA làm cho chiều vector giảm so với vector ban đầu , trích lọc racác yếu tố đặc trưng nhất về khuôn mặt, tính toán ma trận hiệp phương sai đểtìm ra các trị riêng và vector riêng của hình Các vector riêng là cơ sở giúp xácđịnh dữ liệu và thông tin về khuôn mặt người đó

Trang 5

Đưa hình cần tìm vào

Quét kiểm tra khuôn

mặt

Tách khuônmặt

Sử dụng PCA tính toán

 Sử dụng các hình có chứa khuôn mặt người bất kì trong đó

 Dùng thuật toán Haar Like để định vị, chuẩn đoán vị trí của khuôn mặt

 Khi đã tra ra vị trí khuôn mặt, xác định bề mặt và thực hiện việc cắt lấykhuôn mặt cận diện nhất

Trang 6

 Thuật toán giúp rút gọn và chắt lọc những đặc trưng nhất của khuôn mặt và sau đó giữ chúng lại.

 Tạo dữ liệu cho CSDL

 Ảnh cần nhận diện phải bằng với ảnh mẫu về kích thước

 Càng nhiều ảnh mẫu trong CSDL càng hạn chế được sai sót

 Thiết kế giao diện người dùng với các chức năng cần thiết cho quá trình nhận diện

2.2 Khái quát về thuật toán PCA

Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác địnhcác vị trí và các kích thước của các khuôn mặt người trong các ảnh chân dung hoặc bất

kỳ ảnh khác (ảnh kỹ thuật số) Kỹ thuật này có khả năng nhận biết các đặc trưng riêngcủa khuôn mặt và bỏ qua những chi tiết không quan trọng khác như: tòa nhà, cây cối,

cơ thể…

2.2.1 Phương pháp xác định khuôn mặt người

Hướng tiếp cận về tri thức: Mã hóa các hiểu biết của con người về cácloại khuôn mặt người thành các luật Thông thường các luật này sẽ mô tả quan hệ cácđặc trưng trên khuôn mặt

Hướng tiếp cận về đặc trưng không thay đổi: Mục tiêu của các thuật toán là đitìm những đặc trưng cơ bản của cấu trúc khuôn mặt người mà các đặc trưng này sẽkhông thay đổi khi tư thế khuôn mặt thay đổi, vị trí đặt thiết bị thu hình hoặc điều kiệnxung quanh, độ sáng thay đổi

Hướng tiếp cận so với khớp mẫu: Dùng các mẫu chuẩn của khuôn mặt người(các mẫu này được lựa chọn và lưu trữ) để mô tả cho khuôn mặt người hay các đặctrưng khuôn mặt (các mẫu này phải chọn sao cho tách biệt nhau, theo tiêu chuẩn màcác tác giả định ra để so sánh) Các mối quan hệ qua lại giữa dữ liệu ảnh đưa vào vàcác mẫu dùng để xác định khuôn mặt người

Hướng tiếp cận dựa vào diện mạo: Khác hoàn toàn với so khớp mẫu, các môhình (hay các mẫu) được học từ một tập ảnh huấn luyện trước đó Sau đó hệ thống (môhình) sẽ xác định khuôn mặt người

Trang 7

2.2.2 Thuật toán PCA

Ý tưởng này được cho là của Pearson đưa ra đầu tiên vào năm 1901 Sau đó làHotelling vào năm 1933 Cho một tập các ảnh huấn luyện có kích thước MN được

mô tả bởi các vector có kích thước MM, các vector cở sở cho một không gian con tối

ưu được xác định thông qua lỗi bình phương trung bình khi chiếu các ảnh huấn luyệnvào không gian con này Tập các vector cơ sở tối ưu này là ảnh riêng sau đó gọi tắt làvector riêng của ma trận hiệp phương sai được tính từ các ảnh khuôn mặt đã vectorhóa trong tập huấn luyện Nếu cho 100 ảnh, mà mỗi khuôn mặt có kích thước 9150

có thể chỉ cần dùng 50 ảnh riêng, trong khi đó vẫn duy trì khả năng giống nhau hợp lý(giữ được 95% tính chất)

PCA (Principal Component Analysis) là thuật toán nhận dạng ảnh phụ thuộcvào những nét tổng quát trên khuôn mặt (hướng tiếp cận dựa vào diện mạo), ta sẽ ápdụng thuật toán này để thực hiện hai công việc sau :

 Đầu tiên là tìm một khuôn mặt giống với khuôn mặt cho trước

 Sau đó là xác định vị trí những khuôn mặt người trong một bức ảnh

Phân tích thuật toán PCA

- Đầu tiên ta sưu tầm một tập ảnh khuôn mặt gọi là tập ảnh huấn luyện

(training) 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 Giờ đây mỗi khuôn mặt ứng vớimột vector, ta thấy những vector này không phân bố ngẫu nhiên trongkhông gian ảnh mà phân bố theo một quy luật tương đối nào đó, có thể nóinhững vector này nằm trong một không gian con gọi là không gian khuônmặt Từ những vector trong tập huấn luyện, ta tiếp tục tìm một cơ sở trựcchuẩn cho không gian khuôn mặt Các vector thuộc cơ sở trên có thể xem

là các vector mang theo những nét tổng quát đặc trưng về khuôn mặt

- Giả sử tập huấn luyện có G ảnh, khi đó ta sẽ có G vector T1, T2, … TG

(tập các khuôn mặt training) với khuôn mặt phải chính diện và tất cả ảnhphải cùng kích thước

Trang 9

u i/u j={1nếu i= j 0 nếu i≠ j

(u/v) là phép nhân tích vô hướng giữa hai vector u và v: A = [A1A2…AP

]

Ta thấy ma trận A có kích thước M*N×P, còn ma trận A*AT có kích thướcM*N×M*N, do kích thước ma trận này rất lớn do đó ta không thể tìm được nhữngvector riêng và những trị riêng trực tiếp được, thay vào đó sẽ cần tìm những vectorriêng của ma trận AT*A có kích thước P×P

Nếu v là một vector riêng của AT*A và λ là trị riêng, dựa vào đó ta có:

AT*A v = λv  A AT*A v = λAv, tức là Av là một trị riêng của matrận AAT

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

Sau khi thu thập các vector riêng của ma trận A*AT , 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= ATA, 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êngtương ứng

V gồm J vector riêng ứng với những trị riêng lớn hơn một giá trị bất kì hoặc ứngvới J trị riêng lớn nhất trong D

E = A*V là tập các vector riêng của A*AT Do đây là những vector riêng, mà nólại có dạng khuôn mặt nên còn đuợc gọi là Eigenfaces E là ma trận M*N×J, mỗi cột làmột vector riêng

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

Có thể coi E là một cơ sở trực chuẩn của không gian khuôn mặt

Trang 10

Với H là ảnh có đồng kích thước với những ảnh trong tập training 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 trongtập huấn luyện.

H được xem là một vector trong không gian M*N chiều

Đặt Z=H - m với m là vector ảnh trung bình

Cho V là một không gian có tích vô hướng hữu hạn chiều và R là một không giancon của V Giả sử R có một cơ sở trực chuần là {u1 , … , uQ}

Khi đó hình chiếu trực giao của vector u bất kỳ lên R được xác định như sau:

p r R u=

i=1

J

u/u i u i

Độ dài u – u0 được gọi là khoảng cách từ u đến R

Tập hợp ci= u/ui, i=1,… , J được gọi là tọa độ của u0 trong không gian R

Tìm C = ET Z là tọa độ của hình chiếu Zf của Z lên không gian khuôn mặt C làvector cột J×1

Z f=∑

i=1

J

c i e i với ci = C( i , 1) ; ei = E( : , i ) 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ấnluyện) Ta tính:

Ci = ET Ai là tọa độ của hình chiếu Aif của Ai lên không gian khuônmặt

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

s = Z – Zf xem như khoảng cách từ bức ảnh B đến không gian mặt

si = C – Ci xem như khoảng cách từ B đến bức ảnh Ti trong tậphuấn luyện

Xét α và β là hai ngưỡng nào đó

s < α => B là bức ảnh khuôn mặt (do B đủ gần với không gian mặt)

si < β => Ti là bức ảnh của cùng một người với B (B đủ gần với Ti)

Trang 11

Như vậy ta đã có thể tìm bức ảnh trong tập huấn luyện (training) 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 B phảiđồng kích thước với những bức ảnh trong tập huấn luyện (training)

Trang 12

Hình dưới sẽ trình bày rõ hơn:

Hình 3: Chiều của các vector trong không gian (https://123doc.org//document/333793-tim-hieu-phuong-phap-pca-nhan-dang-khuon-mat-ung-dung-matlab.htm)

Giải thích hình học của PCA (tìm các eigenvalue/vectors):

PCA chiếu dữ liệu theo hướng ở vị trí dữ liệu khác nhau nhiều nhất

Các hướng này được xác định bằng các eigenvectors của ma trận hiệp phương sai(covariance matrix)

Hình 4: Diễn giải hình học của PCA(https://123doc.org//document/333793-tim-hieu-phuong-phap-pca-nhan-dang-khuon-mat-

ung-dung-matlab.htm)

Hình 5: Ví dụ về giảm chiều vector của PCA

Trang 13

2 ]T3=

[19635

2342325924424357

226]T4=

[255223

2242550255249255

Trang 14

Ta có được :

A1=

[ 53.5052.50

−48.502.755.50

−8.00127.2549.5047.00 ]A2=

[−161.5042.50

−108.506.75

−9.501.00

−110.2549.5

−168.50]A3=

[−141.5024.50

101.50

−16.2531.50

−2.00115.75

−148.5056.00 ]A4=

[ 83.5046.50

91.506.75

−27.509.00121.7549.5065.00 ] Hình 8: Kết quả sau khi trừ vector trung bình(https://123doc.org//document/333793-tim-hieu-phuong-phap-pca-nhan-dang-khuon-

mat-ung-dung-matlab.htm)

Bước 3:

Tiếp theo ta tính ma trận hiệp phương sai C: C = AAT

Kích thước của vector C sẽ là N2xN2

Với: A = [A1A2…AM] Và kích thước của vector A là N2 xM

A =

C =

Ma trận C kích thước

N2xN2 (9x9) Quá lớn !!

Trang 15

Hình 9: Ma trận phương sai(https://123doc.org//document/333793-tim-hieu-phuong-phap-pca-nhan-dang-khuon-

mat-ung-dung-matlab.htm)

Bước 4:

Bước tiếp theo ta sẽ đi tính các Eigenvector ui (“vector riêng”) của ma trận vuôngA.AT (C có kích thước N2xN2)

Ma trận này có kích thước quá lớn  không khả thi  đi theo hướng khác

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

Các eigenvalues

của AT.A

Trang 16

Khi đã tính được các vector vi (có kích thước là M1), ta sẽ ngay lập tức suy ra đượccác vector riêng ui (kích thước N2x1) mà ta cần xác định, công thức xác định vector U

Các eigenvector của ma trận hiệp phương sai C (AT.A) cần phải tìm

EIGENFACES

Trang 17

Ở đây ta sẽ có 2 cách để xác định K

Cách 1:

- Ta sắp xếp các eigenvalues đã tìm được theo thứ tự giảm dần

- Sau đó ta theo dõi sự thay đổi của các giá trị trên cho đến khi không còn thay đổi(hoặc gần như bằng không) thì lúc đó ta đã chọn đủ K

Cách 2:

Ở một cách khác, ta có thể chọn K theo công thức sau:

N(Alpaydin)

Trang 18

CHƯƠNG 3: GIẢI THUẬT VÀ CHƯƠNG TRÌNH HỆ THỐNG3.1 Lưu đồ giải thuật:

SAI

ĐÚNG

Nhập ảnh cần testing

Chuyển ảnhtesting thànhảnh xám

Thuật thoán PCA tính toán số

liệu

Nhận diện sai với ảnh trong

CSDL

So sánh vớiCSDL

Nhận diện chính xác với ảnh

trong CSDL

Trang 19

Hình 12: Lưu đồ giải thuật

3.2 Các quy trình thực hiện Training

* Một ví dụ về quy trình thực hiện Training và Testing nhận diện khuôn mặt

Hình 13: Tạo thư viện ảnh

Hình 14: Chuyển ảnh màu thành ảnh xám

Trang 20

Hình 15: Các ma trận tượng trưng cho các ảnh xám đã chuyển

Hình 16: Chuyển thành vector cột

Trang 21

Hình 17: Tìm vector trung bình

Hình 18: Thực hiện chuẩn hóa vector

Trang 22

Hình 19: Tạo ma trận trực giao

Hình 20: Cách giảm số chiều vector của PCA

Trang 23

Hình 21: Tạo Eigenfaces và xác định Eigenvector

Với việc tạo Eigenfaces và tính các khoảng cách của các giá trị trong Eigenfaces trên

ta đã có được các khoảng cách được lưu vào trong CSDL để sau này đối chiếu với cáckết quả của Testing từ đó sẽ xác định được khuôn mặt cần nhận diện

Đến đây xem như đã thực hiện xong các bước chuẩn bị của Training và đã tạo ra được

Trang 24

Hình 23: So sánh kết quả của Testing với CSDL để nhận diện

chính xác khuôn mặt cần tìm

Trang 25

CHƯƠNG 4: ĐÁNH GIÁ CHẤT LƯỢNG VÀ KẾT QUẢ

4.1 Các số liệu thống kê về hệ thống

Với hướng đi là sự nhận diện cơ bản nhất về khuôn mặt của người nên phép thửđược thực hiện ở dạng chụp thẳng chính diện dưới điều kiện ánh sáng tốt nhằm thuđược kết quả tối đa

Với phép thử 100 ảnh đối với CSDL đã dựng lên thì thu được kết quả là:

 Phép thử với khuôn mặt người bình thường không có các dị tật quá nhiều,dưới điều kiện ánh sáng và góc chụp trực diện thuận lợi vẫn có % sai nhưng tỉ lệ tươngđối là chấp nhận được

 Với phép thử là 100 ảnh trong hệ thống này thì có 16 ảnh bị nhận diện sai Đạt

tỉ lệ 84% Tương đối khá chính xác so với các hệ thống nhận diện khác đã được thựchiện

Bảng 4.1: Bảng thống kê số liệu và tỉ lệ thành công

Cách

chụp

Độ sáng khi chụp CSDL

Số ảnh thử

Số ảnh nhận diện đúng

Số ảnh nhận diện sai

Tỉ lệ đạt được

Trực

Trang 26

4.2 Đánh giá và kết quả hệ thống

Hình 24: Hệ thống nhận diện chính xác người đã Training trong CSDL

Trang 27

Hình 25: Hệ thống nhận diện sai với người được Training trong CSDL

Đánh giá về hệ thống:

- Vì là chương trình hoàn toàn được viết theo cách đơn giản nhất, tuy nhiên hệ

thống vẫn hoạt động tương đối đạt mục đích ban đầu đề ra và đạt tỉ lệ chínhxác cũng tươn đối là khá cao so với các hệ thống khác

Trang 28

- Bên trên là các bài báo viết về tỉ lệ chính xác của các hệ thống đã thực hiện và

công bố được sưu tầm trên internet.Từ những kết quả của các bài báo trên ta

Trang 29

nhận thấy là nếu tăng số lượng CSDL để training lên càng cao và giảm bớt sốlượng ảnh testing của 1 người thì tỉ lệ thành công càng tăng cao

- Như vậy tỉ lệ chính xác của hệ thống là tương đối sát so với các hệ thống khác

đã được công bố, 84% là con số tương đối có thể chấp nhận được với 1 hệthống nhận diện khuôn mặt ở mức đơn giản

- Những yếu tố có thể dẫn đến việc sai sót trong khâu nhận diện có thể là do:

 Hướng chụp của khuôn mặt

 Khoảng cách từ thiết bị chụp đến khuôn mặt

 Yếu tố thời tiết (độ sáng, gió, )

 Ngoài ra còn có một vài chi tiết ảnh hưởn đến kết quả nhận diện như nếpnhăn, tóc, kinh cận, …

- Thấy rõ được phương pháp giảm số chiều vector của PCA nên đồng thời giảmđược thời gian xử lý tính toán các phép toán

Ngày đăng: 22/03/2019, 20:32

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w