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

tìm hiểu phép biến đổi (phương pháp pca) nhận dạng khuôn mặt

23 2K 18

Đ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 23
Dung lượng 1,94 MB

Nội dung

Không gian mới p1,p2 theo hướng phân bố mạnh nhất của các vector trong không gian x1, x2 tìm theo PCA Ưu điểm của phương pháp PCA :  Tìm được các đặc tính tiêu biểu của đối tượng cần nh

Trang 1

Trường Ðại học Công nghiệp Hà Nội

Khoa Công nghệ thông tin

BÁO CÁO BÀI TẬP LỚN

Trang 2

Mục Lục

1 Phép biến đổi Karhunen-Loève: 3

2 Thuật toán PCA: 7

2.1 Giới thiệu chung về thuật toán : 7

2.2 Nội dung thuật toán PCA: 9

3 Áp dụng PCA trong bài toán nhận dạng khuôn mặt : 11

3.1 Giới thiệu chung về các phương pháp nhận dạng mặt người: 11

3.2 Nhận dạng khuôn mặt dựa trên PCA: 12

3.3 Các hàm hiển thị ảnh trong Matlab 14

3.4 Các hàm khác được sử dụng trong đề tài 15

4 Chương trình Demo: 17

Tài liệu tham khảo 22

Trang 3

1 Phép biến đổi Karhunen-Loève :

Các phép biến đổi Karhunen-Loève (KL) có liên quan với các giải thích cấu trúc dữ liệu thông qua một số tuyến tính kết hợp của các biến Giống như PCA, phép biến đổi

KL cũng là cách tối ưu cho dự án d - chiều điểm để giảm điểm chiều sao cho sai số của

dự án (tức là tổng của khoảng cách bình phương (SSD)) là tối thiểu (Fukunaga, 1990)

Cho D {x 1 , x 2 , , x n} là một tập dữ liệu không gian d chiều, và X là đồng vị ma trận dxd, nghĩa là X= (xij)nxd với xij là giá trị j thành phân của xi

x i( i =1,2,,n) là vector d chiều Chúng có thể hiển thị không lỗi bằng phép tính tổng vector tuyến tính độc lập như

Các ma trận d × d cơ sở φ và chúng ta biết thêm có thể cho rằng những hàng φ hình thức một bộ trực giao, nghĩa là:

Trang 4

Vì vậy, Y chỉ đơn giản là một biến đổi trực giao của X φj được gọi là vectơ thứ j tính năng và yij là thành phần thứ j của mẫu xi trong không gian tính năng này Để giảm bớt chiều, chúng ta chỉ chọn m(m<d) tính năng vectơ có thể gần đúng X tốt Xấp xỉ có thể được thu được bằng cách thay thế các thành phần của yj với hằng chọn trước

Y(1,m) là ma trận nxm có được bằng cột m đầu tiên của Y, có nghĩa là Y(1,m) = (yij)nxm

và một ma trận n×(md)với (i, j) nhập từ bi,m+j

Không mất tổng quát, chúng ta giả định rằng chỉ có các thành phần m đầu tiên của mỗi

yj được tính toán Sau đó, các lỗi của các kết quả là xấp xỉ

Trang 7

2 Thuật toán PCA:

2.1 Giới thiệu chung về thuật toán :

PCA (Principle Components Analysic) là một thuật toán được sử dụng để tạo ra một ảnh mới từ ảnh ban đầu Ảnh mới này có kích thước nhỏ hơn nhiều so với ảnh ban đầu nhưng vẫn mang những đặc trưng cơ bản nhất của ảnh cần nhận dạng

PCA không cần quan tâm đến việc tìm ra các đặc điểm cụ thể của thực thể cần nhận dạng và mối quan hệ giữa các đặc điểm đó Tất cả các chi tiết đó đều được thể hiện ở ảnh mới được tạo ra từ PCA

Về bản chất, PCA tìm ra một không gian mới theo hướng biến thiên mạnh nhất của một tập hợp các vector trong không gian cho trước Trong không gian mới, người ta hi vọng rằng việc phân loại sẽ mang lại kết quả tốt hơn so với không gian ban đầu

Trang 8

Không gian mới (p1,p2) theo hướng phân bố mạnh nhất của các vector trong không gian

(x1, x2) tìm theo PCA

Ưu điểm của phương pháp PCA :

 Tìm được các đặc tính tiêu biểu của đối tượng cần nhận dạng mà không cần phải xác định các thành phần và mối quan hệ giữa các thành phần đó

 Thuật toán có thể thực hiện tốt với các cảnh có độ phân giải cao, do PCA sẽ thu gọn ảnh thành một ảnh có kích thước nhỏ hơn

 PCA có thể kết hợp với các phương pháp khác như mạng Nơron, Support Vector Machinge… để mạng lại hiệu quả nhận dạng cao hơn

Nhược điểm của PCA :

 PCA phân loại theo chiều lớn nhất của tập vector Tuy nhiên, chiều phân bố lớn nhất không phải lúc nào cũng mang lại hiệu quả tốt nhất cho bài toán nhận dạng Đây

là nhược điểm cơ bản của PCA

 PCA rất nhạy với nhiễu

Trang 9

2.2 Nội dung thuật toán PCA:

Không gian mới được tạo bởi PCA được cấu thành từ k vector đơn vị có chiều là N Mỗi vector được gọi là một Eigenface

Phép biến đổi :

A=  W = với K<<N

W=T.A

Với T là ma trận chuyển đổi, T có kích thước K x N

Gọi M là số ảnh đầu vào, mỗi ảnh được chuyển thành vector N chiều Ta có tập hợp đầu vào

Gọi các giá trị riêng của C là : λ1, λ2,…, λn sắp xếp theo thứ tự giảm dần, tương ứng với

N vector riêng u1, u2,…, uN Các vector riêng này trực giao từng đôi một, Mỗi vector

Trang 10

riêng ui được gọi là một eigenface Tập hợp các vector ban đầu được biểu diễn trong không gian tạo bởi n eigenface theo mô tả :

Vấn đề cần giải quyết ở đây là ma trận tương quan C=A.AT có kích thước N2

Với N=180x200=36000, khối lượng tính toán sẽ rất lớn Do đó, để tính được các eigenface mà không cần tính cả ma trận C, người ta đưa ra phương pháp tính nhanh dựa vào vector riêng và giá trị riêng của ma trận L=AT.A có kích thước MxM với M là

Trang 11

Ta thấy A.vi chính là vector riêng của C=A.AT ứng với giá trị riêng μi.

3 Áp dụng PCA trong bài toán nhận dạng khuôn mặt :

3.1 Giới thiệu chung về các phương pháp nhận dạng mặt người:

a Các phương pháp nhận dạng khuôn mặt người :

Các phương pháp nhận dạng hiện nay có 2 loại :

 Nhận dạng dựa trên các đặc trưng phần tử trên khuôn mặt (Feature based face recognition)

 Nhận dạng dựa trên xét tổng thể khuôn mặt (Apppearance base face recognition )

b Nhận dạng dựa trên mối quan hệ giữa các phần tử :

Đây là phương pháp nhận dạng khuôn mặt dựa trên việc xác định các đặc trưng hình học của các chi tiết trên khuôn mặt ( như vị trí, diện tích, hình dạng của mắt, mũi, miệng ), và mối quan hệ giữa chúng (như khoảng cách 2 mắt, khoảng cách 2 lông mày…)

Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng để nhận biết khuông mặt Hơn nữa, với việc xác định đặc tính và mối quan hệ, phương pháp này có thể cho kết quả tốt trong các trường hợp ảnh có nhiều nhiễu, bị nghiêng, bị xoay và ánh sáng thay đổi

Nhược điểm của phương pháp này là cài đặt thuật toán phức tạp do việc xác định mối quan hệ giữa các đặc tính đòi hỏi các thuật toán phức tạp Mặt khác với ảnh kích thước

bé thì các đặc tính sẽ khó phân biệt

c Nhận dạng khuôn mặt dựa trên xét toàn diện khuôn mặt :

Nội dung chính của hướng tiếp cận này là xem mỗi ảnh có kích thước RxC là một vector trong không gian RxC chiều Ta sẽ xây dựng một không gian mới có chiều nhỏ hơn sao cho khi biểu diễn trong không gian đó các đặc điểm chính của một khuôn mặt

Trang 12

không bị mất đi Trong không gian đó, các ảnh của cùng một người sẽ được tập trung lại thành một nhóm gần nhau và cách xa các nhóm khác.

Thuật toán PCA ( Principle Components Analysis) thuộc nhóm này

3.2 Nhận dạng khuôn mặt dựa trên PCA:

Kohonen đã đưa ra phương pháp dùng vector riêng để nhận dạng khuôn mặt, ông dùng một mạng neural đơn giản để chứng tỏ khả năng của phương pháp này trên các ảnh đã được chuẩn hóa Mạng neural tính một mô tả của khuôn mặt bằng cách xấp xỉ các vector riêng của ma trận tương quan của ảnh Các vector riêng sau này được biết đến với cái tên Eigenface Kirby và Sirovich chứng tỏ các ảnh có các khuôn mặt có thể được mã hóa tuyến tính bằng một số lượng vừa phải các ảnh cơ sở Tính chất này dựa trên biến đổi Karhunen-Lòeve, mà còn được gọi dưới một cái tên khác là PCA và biến đổi Hotelling Ý tưởng này được xem là của Pearson trình bày đầu tiên vào năm 1901và 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 n x m được mô tả bởi các vector có kích thước m x 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 Các tác giả gọi tập các vector cơ sở tối

ưu này là ảnh riêng sau đó gọi cho đơn giản 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 91x50 thì có thể chỉ dùng 50 ảnh riêng, trong khi vẫn duy trì được một khả năng giống nhau hợp lý (giữ được 95% tính chất) Turk và Pentland áp dụng PCA để xác định và nhận dạng khuôn mặt Tương tự, dùng PCA trên tập huấn luyện ảnh các khuôn mặt để sinh các ảnh riêng (còn gọi là eigenface) để tìm một không gian con (không gian khuôn mặt) trong không gian ảnh Các ảnh khuôn mặt được chiếu vào không gian con này và được gom nhóm lại Tương

tự các ảnh không có khuôn mặt dùng để huấn luyện cũng được chiếu vào cùng không gian con và gom nhóm lại Các ảnh khi chiếu vào không gian khuôn mặt thì không bị thay đổi tính chất cơ bản, trong khi chiếu các ảnh không có khuôn mặt thì xuất hiện sự khác nhau cũng không ít Xác định sự có mặt của một khuôn mặt trong ảnh thông qua

Trang 13

tất cả khoảng cách giữa các vị trí trong ảnh và không gian ảnh Khoảng cách này dùng

để xem xét có hay không có khuôn mặt người, kết quả khi tính toán các khoảng cách

sẽ cho ta một bản đồ về khuôn mặt Có thể xác định được từ cực tiểu địa phương của bản đồ này Có nhiều nghiên cứu về xác định khuôn mặt, nhận dạng, và trích đặc trưng từ ý tưởng vector riêng, phân rã, và gom nhóm Sau đó Kim phát triển cho ảnh màu, bằng cách phân đoạn ảnh để tìm ứng để không gian tìm kiếm bớt đi

Bước đầu tiên trong nhận dạng khuôn mặt dựa trên PCA là trích chọn vector đặc tính Một bức ảnh về khuôn mặt được coi như một vector, nếu bức ảnh có kích thước

là w*h pixels thì không gian chứa vector này có số chiều là N=w*h Mỗi pixel sẽ được

mã hóa bởi một thành phần của vector

Khâu quan trọng nhất trong bài toán nhận dạng đó là trích chọn vector đặc tính Các bước trích chọn bao gồm :

i Tạo một tập X gồm M ảnh (ảnh học), mỗi ảnh có kích thước N, các ảnh được chuyển thành vector N chiều

Trang 14

vi = uit Φi

Trong đó, vi = uit Φi là vector đặc tính của ảnh thứ I trong không gian mới Ω ở đây là tập các eigenface, các thành phần cơ bản cho bức ảnh cần nhận dạng

Sau khi trích chọn được các vector đặc tính, cần đối chiếu vector này với cơ sở dữ liệu,

từ đó đưa ra kết quả nhận dạng Trong bài toán, kết quả nhận dạng sẽ là nhận biết được hoặc chưa nhận biết được

Để thực hiện phân loại có rất nhiều phương pháp như khoảng cách Euclid, mạng Noron… trong đó khoảng cách Euclid là phương pháp đơn giản nhất Nó cho kết quả tốt đối với trường hợp đối tượng đã được tạo thành các nhóm cách xa nhau Vector đặc tính của đối tượng được tạo thành các nhóm cách xa nhau

Vector đặc tính của đối tượng cần nhận dạng sẽ được so sánh lần lượt với vector đặc tính của từng ảnh mẫu trong tập các ảnh học Các khoảng cách ngắn nhất sẽ được lưu lại:

εk= ||Ω- Ωk || với k=1, ,M

Ở đây Ωk là vector của khuôn mặt thứ k trong CSDL Nếu εk nhỏ hơn một số được xác định trước thì bức ảnh được nhận dạng là khuôn mặt thứ k trong CSDL

3.3 Các hàm hiển thị ảnh trong Matlab

Để hiển thị ảnh, Matlab cung cấp 2 hàm cơ bản là image và imagesc Ngoài ra, trong

Image Processing Toolbox cũng có hai hàm hiển thị khác là imview và imshow

- Hàm image(x,y,c) hiển thị hình ảnh biểu diễn bởi ma trận c kích thước mxn lên hệ

trục tọa độ x,y là các véctơ xác định vị trí của các điểm c(1,1) và c(m,n)

- Hàm imagesc có chức năng tương tự hàm image, ngoại trừ việc dữ liệu ảnh sẽ được

co giãn để sử dụng toàn bộ bản đồ màu hiện hành

- Hàm imview cho phép hiển thị ảnh trên của sổ riêng nền Java, gọi là Image Viewer.

Trang 15

- Hàm imshow cho phép hiển thị ảnh trên một Figure và tự động thiết lập giá trị các

đối tượng image, axes, figure để hiển thị hình ảnh

Các hàm chuyển đổi loại ảnh và kiểu dữ liệu ảnh Dither Tạo ảnh nhị phân hay ảnh RGB

gray2ind Chuyển ảnh trắng đen thành ảnh indexed

Grayslice Chuyển ảnh trắng đen thành ảnh indexed bằng lấy ngưỡng

im2bw Chuyển ảnh thành ảnh kiểu dữ liệu nhị phân

im2double Chuyển ảnh thành ảnh kiểu dữ liệu double

im2uint16 Chuyển ảnh thành ảnh kiểu dữ liệu uint16

im2uint8 Chuyển ảnh thành ảnh kiểu dữ liệu uint8

Imapprox Xấp xỉ ảnh indexed bằng cách giảm số màu

ind2gray Chuyển ảnh indexed thành ảnh gray scale

ind2rgb Chuyển ảnh indexed thành ảnh RBG

mat2gray Tạo ảnh gray scale từ ma trận

rgb2ind Chuyển ảnh RBG thành ảnh indexed

rgb2gray Chuyển ảnh RBG thành ảnh gray scale

Các hàm truy xuất dữ liệu ảnh Imfinfo Truy xuất thông tin ảnh

Imread Đọc ảnh từ file và xuất ra ma trận ảnh

Imwrite Lưu ma trận ảnh thành file ảnh

Các hàm biến đổi hình học cp2tform Định nghĩa phép biến đổi hình học từng cặp tương ứng

Imcrop Trích xuất một phần ảnh

Imresize Thay đổi kích thước ảnh

Imrotate Thực hiện phép quay ảnh

Imtranform Thực hiện phép biến đổi hình học tổng quát

Maketform Định nghĩa phép biến đổi hình học tổng quát

Bảng 3.3 Các hàm xử lý hình ảnh cơ bản trong Matlab

3.4 Các hàm khác được sử dụng trong đề tài

[filename,pathname]=uigetfile(filterspec,title): hiển thị hộp thoại chọn đường

dẫn file Giá trị trả về tên file, và đường dẫn

T=strcat(s1,s2,s3…): ghép các chuỗi lại với nhau, trả về chuỗi nối tiếp s1s2s3…

strcmp(s1,s2): hàm so sánh, trả về 1 nếu s1 giống s2, ngược lại trả về 0

T=dir(pathname): Lấy thông tin của một Folder bao gồm: số file chứa trong

folder, tên file, ngày tạo, kích thước file…

Trang 16

N=num2str(x): Chuyển đổi các số(bất kỳ có thể số nguyên hoặc thực) thành chuỗi

ký tự

D=size(a): Trả về giá trị là ma trận có dạng [x,y] là kích thước của ma trận a

T=reshape(X,M,N): Trả về ma trận có kích thước MxN với các phần tử là các

phần tử nằm trong ma trận X

mean(X): Ma trận X có kích thước MxN, hàm trả về ma trận có kích thước 1xN

mỗi phần tử là trung bình từng cột trong ma trận X

mean(X,dim): với dim là chiều lấy trung bình, nếu dim bằng 1 lấy trung bình theo

cột, nếu dim bằng 2 lấy trung bình theo hàng Không có tham số dim thì mặc định dim bằng 1

double(X): Chuyển đổi gấp đôi chính xác giá trị ma trận X

E=eig(X): Trả về một vector chứa các giá trị riêng của ma trận vuông X.

[V, D] = eig(X): tạo ra một ma trận đường chéo D của các giá trị riêng và một ma trận

V có các cột tương ứng là các vector riêng, do đó: X * V = V * D

diag(V,K): Trong đó V là một vector với các thành phần N là một ma trận vuông

kiểu N+ABS(K) với các phần tử của V trên đường chéo thứ K K = 0 là đường chéo chính, K> 0 là ở phía trên đường chéo chính và K <0 là ở phía 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.

Sort(X): Phân loại tăng dần hay giảm.

Đối với các vector, Sort(X) sắp xếp các phần tử của X thứ tự tăng dần Đối với ma trận, Sort(X) các loại mỗi cột của X thứ tự tăng dần Khi X là một mảng di động của chuỗi, Sort(X) 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.

Trang 17

4 Chương trình Demo:

Hình 4.0: Sơ đồ khối tổng quát của chương trình

Chương trình mô phỏng nhận dạng khuôn mặt sử dụng phương pháp PCA được viết trên matlab và thiết kế trên giao diện người dùng GUI Để mở chương trình bạn khởi

động chương trình Matlab Ta chỉ đường dẫn Nhom27\ChuongTrinh\DemoGUI sau

đó mở file BTLTTM.fig ở chế độ GUI, Run Figure Như hình dưới đây:

Trang 18

Hình 4.1: Mở chương trình trên Matlab

Hình 4.2: Giao diện chương trình chính

Trang 19

Đây chính là giao diện chính của chương trình gồm hai khung hiển thị hình ảnh và hai

nút nhấn Browse và Search Để bắt đầu tìm kiếm ta cần load ảnh khuôn mặt người cần kiểm tra bằng cách nhấn vào phím Browse Hộp thoại mở file xuất hiện, bạn chọn

file ảnh bạn muốn kiểm tra Ở đây ta lấy ví dụ ảnh kiểm tra là ảnh “4.jpg” như hình vẽ:

Hình 4.3: 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:

Hình 4.4: Ảnh cần kiểm tra

Ngày đăng: 19/12/2014, 17:30

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
1. Nhập môn xử lý ảnh – Nguyễn Thanh Thủy, Lương Mạnh Bá Khác
2. Face recognition using Principle Component Analysis - Kyungnam Kim Khác
3. Tổng quan các phương pháp xác định khuôn mặt người – Phạm Thế Bảo Khác
4. A tutorial on Principle Component Analysis - Lindsay I Smith, 2002 Khác
7. 'Eigenface' Face Recognition System - written by: Amir Hossein Omidvarnia Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w