- 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 2DANH 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 72.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 MN được
mô tả bởi các vector có kích thước MM, 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 9150
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 9u 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 10Vớ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 11Như 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 12Hì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 132 ]T3=
[19635
2342325924424357
226]T4=
[255223
2242550255249255
Trang 14Ta 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 15Hì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 16Khi đã tính được các vector vi (có kích thước là M1), 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 18CHƯƠ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 19Hì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 20Hì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 21Hình 17: Tìm vector trung bình
Hình 18: Thực hiện chuẩn hóa vector
Trang 22Hì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 23Hì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 24Hì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 25CHƯƠ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 264.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 27Hì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 29nhậ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