Tải bản đầy đủ (.docx) (39 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.64 MB, 39 trang )

ĐỒ Á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


DANH MỤC CÁC TỪ VIẾT TẮT
MATLAB: MATrix LABoratory
PCA: Principal Component Analysis
CSDL: Cơ sở dữ liệu


ĐỒ ÁN TỐT NGHIỆP

Trang 3/36

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ật
toá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ười
là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ắc
vớ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 được
như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ột
tỉnh thành khác, hoặc ở đâu đó trên đất nước, thậm chí là quốc tế thì ta phải
là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ệu
quả 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át
triển không ngừng. Ngày nay chúng ta có thể dễ dàng thấy được sự xuất hiện
củ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ùng
phương pháp thuật toán PCA để trainning tạo ra CSDL và testing nhận diện
khuô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.

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



ĐỒ ÁN TỐT NGHIỆP

Trang 4/36
1.2 Lý thuyết chung
-

Trước hết phải tìm ra khuôn mặt có tồn tại trong tấm hình hay không sau đó ta
tiếp tục tiến hành việc nhận diện. Vấn đề tìm khuôn mặt là bài toán cần thực
hiện trước hết.

-

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ện
bằ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ích
thướ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ời
gian, không có yếu tố khả thi cao cho việc áp dụng nhận diện khuôn mặt ở điều
kiệ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 cho
việ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ện
mặt người, PCA làm cho chiều vector giảm so với vector ban đầu , trích lọc ra
cá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 đó.


Ứ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 2: GIỚI THIỆU VỀ THUẬT TOÁN PCA
2.1. Sơ đồ khối
-

Với những điều nêu trên thì sơ đồ khối thực hiện có dạng như sau:
Đưa hình cần tìm vào

Quét kiểm tra khuôn
mặt

Tách khuôn
mặt

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

So sánh kết quả với CSDL

Xuất ra kết quả cần tìm

Hình 1: Sơ đồ khối
-

Với hình cần tìm:
 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ấy
khuôn mặt cận diện nhất.


 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 định
cá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êng
củ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ác
loạ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à đi
tì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ện
xung 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 đặc
trư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.


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ện
và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 đã vector
hó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ộc
và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ẽ áp
dụ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ới
một vector, ta thấy những vector này không phân bố ngẫu nhiên trong
không gian ảnh mà phân bố theo một quy luật tương đối nào đó, có thể nói
những vector này nằm trong một không gian con gọi là không gian khuôn
mặt. Từ những vector trong tập huấn luyện, ta tiếp tục tìm một cơ sở trực
chuẩ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 T 1, 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ả ảnh
phải cùng kích thước.


Hình 2: Ảnh khuôn mặt người

Tính vector ảnh trung bình : m =
Sự khác biệt giữa những khuôn mặt với ảnh trung bình là những vector :
Ai = Ti - m , i=1…G
Ý tưởng của việc phân tích thành phần chính dựa vào một tập những vector trực
chuẩn

uk sao cho các vector này biểu diễn tốt nhất quá trình phân bố các vector

khuôn mặt trong không gian. Những vector

uk được lựa chọn :


lớn nhất .
Các vector uk và giá trị vô hướng λk chính là các vector riêng và giá trị riêng tương
ứng của ma trận A*AT.
(u/v) là phép nhân tích vô hướng giữa hai vector u và v:

A = [A 1A2…AP


].
Ta thấy ma trận A có kích thước M*N×P, còn ma trận A*A T có kích thước
M*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ững
vector riêng và những trị riêng trực tiếp được, thay vào đó sẽ cần tìm những vector
riê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 ma

trậ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ớn
nhất.
Sau khi thu thập 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= 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êng
tươ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 ứng
vớ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*A T. 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.



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 trong
tậ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 gian
con 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:

Độ 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.
ETZ là tọa độ của hình chiếu Zf của Z lên không gian khuôn mặt. C là

Tìm C =
vector cột J×1.

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 T i trong tập huấn luyệ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ôn mặ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 T i trong tập

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


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
( />
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

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

2.3 Ví dụ:
Ta lấy một ví dụ cơ bản với 4 ảnh để training (kích thước 3x3). Ta tính toán:
Biểu diễn tất cả các ảnh Pi dưới dạng vector Ti
Hình 6: Biểu diễn vector ảnh xám
( />Bước 1:
Tính vector khuôn mặt trung bình m theo công thức: m =
Tổng quát ta sẽ có một vector có kích thước 9x1:
Hình 7: Vector trung bình
( />Bước 2:
Ở đây ta sẽ thấy sự khác nhau giữa những khuôn mặt với ảnh trung bình là những
vector:
Ai = Ti - m , i=1…P
Tiếp theo ta sử dụng phép toán trừ vector khuôn mặt trung bình:

Ta có được :
Hình 8: Kết quả sau khi trừ vector trung bình

Φ2431

( />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à N2xM



A=

Ma trận A kích thước N2xM (9x4) tạo bởi ghép các Ai làm các cột

C=

Ma trận C kích thước N2xN2 (9x9). Quá lớn !!

Hình 9: Ma trận phương sai
( />
Bước 4:
Bước tiếp theo ta sẽ đi tính các Eigenvector u i (“vector riêng”) của ma trận vuông
A.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 A TA
và λ là trị riêng tương ứng , khi đó ta
có :
ATA v = λv 
AATA v = λAv, tức là Av là một trị riêng của ma trận
AAT.
Bước 4.1:
Trong bước này, ta cần xét ma trận A T.A (lưu ý kích thước của ma trận này là
M×M).
Chi tiết ta có như sau:


AT.A =

Kích thước MxM (4x4). Giảm hẳn !!


Hình 10: Ma trận AT.A

( />Bước 4.2:
Một bước tiếp theo là ta sẽ đi tính các vector riêng v i (eigenvectors) của ma trận
vuông AT.A này.
Ngay tại bước này ta sẽ xác định được 4 trị riêng của ma trận A T.A, tuy nhiên ta sẽ
sắp xếp lại theo thứ tự giảm dần, và chỉ lấy các trị riêng “non-zero”. Kết quả ta được 3
trị riêng (từ đó tính ra 3 vector riêng tương ứng):

Các eigenvector của AT.A tương ứng với các eigenvalues. Kích thước M

v1

v2

v3
Các eigenvalues của AT.A.

Khi đã tính được các vector v i (có kích thước là M×1), ta sẽ ngay lập tức suy ra được
cá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
sẽ là:

Ui = Aν i (*)

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

u1

u2


u3

Lưu ý là ta nên chuẩn hóa các vector ui (||ui||= 1), tức là:
Ta sẽ thu được các vector Ui ngay sau khi ta thực hiện việc chuẩn hóa:


Thành quả cuối cùng!! Đây chính là các vector cơ sở của không gian mới. Ta gọi các vector

u2

u1=

u3

Hình 11: Eigenfaces
( />Bước 4.3:
Bước tiếp theo đó, ta sẽ xác định M vector riêng u i tốt nhất của A.AT cũng với
công thức đã xác định Ui
Bước 5:
Ta chỉ giữ lại K vector riêng trong số M vector nói trên (ứng với K trị riêng lớn
nhất), dĩ nhiên là K<Ở đâ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)




CHƯƠNG 3: GIẢI THUẬT VÀ CHƯƠNG TRÌNH HỆ THỐNG
3.1 Lưu đồ giải thuật:
Nhập ảnh cần testing

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

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

So sánh với CSDL

SAI

ĐÚNG
Nhận diện chính xác với ảnh
trong CSDL

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

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


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
 Training:

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

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


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


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

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


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


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ác
kế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
1 bộ CSDL

Tiếp theo ta tiến hành thực hiện các bước Testing để hoàn tất quá trình nhận dạng
khuôn mặt
3.3. Các bước thực hiện Testing


Testing:

Hình 22: Thực hiện các bước như Training với ảnh mới ngoài CSDL đã lưu


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


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ực hiệ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ử

Trực diện

Tốt

100

100

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

Số ảnh
nhận
diện sai

Tỉ lệ đạt
được

84

16


84%


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


×