LỜI MỞ ĐẦU
Trước sự phát triển của khoa học kỹ thuật, ngành điều khiển học và tự động hóa đã có những bước tiến lớn. Điều khiển học và tự động hóa ngày càng đóng vai trò quan trọng trong việc tăng năng xuất lao động, giảm giá thành, tăng sự ổn định chất lượng của sản phẩm.
Trong xã hội công nghiệp ngày nay, việc ứng dụng các robot tự hành, các cánh tay máy, có khả năng hoạt động độc lập ngày càng phổ biến. Để có khả năng thông minh đó, chúng phải có khả năng nhìn, nhận dạng các tình huống, xử lý tình huống như như con người Đáp ứng nhu cầu đó, xử lý ảnh đã tham gia vào điều khiển học và tự động hóa. Dữ liệu về hình ảnh có lượng thông tin lớn và chính xác hơn các loại dữ liệu từ các cảm biến khác. Điều này giúp cho việc giải quyết các vấn đề trong lĩnh vực điều khiển tự động dễ dàng hơn.
Một trong những bài toán về xử lý ảnh phổ biến hiện nay là nhận dạng khuôn mặt người. Hơn một thập kỷ qua có rất nhiều công trình nghiên cứu về bài toán nhận dạng khuôn mặt người từ ảnh đen trắng, xám đến ảnh màu như ngày hôm nay. Các nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng. Cho đến ngày hôm nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh. Không những vậy mà còn mở rộng cả phạm vi từ môi trường xung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môi trường xung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầu thật sự và rất nhiều của con người.
Góp phần tìm hiểu về vấn đề này chúng em thực hiện đề tài “Nhận dạng mặt người dùng biến đổi Gabor Wavelet” trên tập ảnh động và tĩnh, đơn gồm các ảnh mặt người với độ sáng tối và góc chụp khác nhau.
.
MỤC LỤC
Đề mục Trang
Chương I : CÁC PHƯƠNG PHÁP NHẬN DẠNG
1/ Phương pháp phân tích các thành phần độc lập (ICA) . 1
2/ Nhận dạng mặt người bằng AdaBoost kết hợp mạng nơron . 5
3/ Nhận dạng dùng Support Vector Machine (SVM) 9
SVM tuyến tính 12
SVM phi tuyến . 14
4/ Nhận dạng dùng Fuzzy SVM (SVM mờ) . 15
5/ Nhân dạng bằng mạng Nơron . 18
Chương II : GABOR WAVELETS
1/ Tổng quát về biến đổi Gabor Wavelet 25
2/ Biểu diễn hình ảnh bằng Gabor Wavelet . 27
Chương III: ỨNG DỤNG GABOR WAVELETS TRONG THUẬT TOÁN NHẬN DẠNG KHUÔN MẶT
1/ Chiết xuất đặc trưng 30
1a/ Xác định tọa độ các điểm đặc trưng 30
1b/ Xuất vector đặc trưng 31
2/ Tính toán mức độ tương tự 32
3/ So sánh khuôn mặt . 33
CHƯƠNG IV: CHƯƠNG TRÌNH MÔ PHỎNG
1/ Tổng quan về Matlab . 36
1a/ Giới thiệu chung . 36
1b/ Các đặc điểm cơ bản của MATLAB 36
1c/ Phân tích và tiếp cận dữ liệu 38
2/ Lưu đồ giải thuật 40
2a/ Nhận dạng ảnh động 40
2b/ Nhận dạng ảnh tĩnh . 42
3/ Chương trình mô phỏng 42
CHƯƠNG V: KẾT QUẢ THỰC HIỆN
1/ Tập dữ liệu ảnh . 47
2/ Xây dựng tập ảnh mẫu và các ma trận đặc trưng mẫu 48
3/ Các kết quả thử nghiệm . 49
3a/ Nhận dạng khuôn mặt từ ảnh dùng tập ảnh mẫu thứ nhất 49
3b/ Nhận dạng khuôn mặt từ ảnh dùng tập ảnh mẫu thứ hai 50
3c/ Nhận dạng khuôn mặt từ webcam . 50
3d/ Tốc độ thực hiện 51
4/ Kết luận . 51
5/ Hướng phát triển của đề tài 52
TÀI LIỆU THAM KHẢO . 54
PHỤ LỤC: SOURCE MATLAB
54 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4764 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu Luận văn Nhận dạng mặt người dùng biến đổi Gabor Wavelet, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
tương tự phương pháp “phân chia nguồn mù” (BBS) hoặc phân chia tín hiệu chưa biết.”Nguồn” có nghĩa là các tín hiệu gốc, là các thành phần độc lập, tương tự như trong bài toán cocktail-party.”Mù” có nghĩa là biết rất ít. ICA là một phương pháp có thể được ứng dụng rất rộng rãi trong việc trình bày quá trình phân chia nguồn mù.
Trong nhiều ứng dụng, chúng ta giả thiết có thêm nhiễu trong quá trình đo đạc, có nghĩa là phải thêm thành phần nhiễu vào mô hình tính toán. Để đơn giản đôi khi ta có thể bỏ qua thành phần nhiễu.
Các điểm không xác định trong ICA:
Trong mô hình ICA (2.2), chúng ta có thể thấy các điểm không xác định như sau:
Chúng ta không thể xác định được thành phần biến (số cột ma trận tương quan) của các thành phần độc lập.
Lý do là cả S và A đều không được biết, phép nhân vô hướng của nguồn si có thể khử bằng cách chia cho cột tương ứng ai của A với cùng hướng (2.3). Hệ quả, chúng ta phải hiệu chỉnh biên độ của thành phần độc lập; như ta biết, các ICA đều là các biến ngẫu nhiên, cách đơn giản ta giả sử mỗi nguồn đều có thành phần biến số
đơn vị. Sau đó ma trận A sẽ đáp ứng với phương pháp giải ICA để khắc phục các hạn chế này. Ta có thể loại bỏ những dấu hiệu bất định này: ta có thể nhân thành phần độc lập với -1 mà không làm ảnh hưởng đến mô hình tính. Trong hầu hết các ứng dụng yếu tố dấu không có nghĩa.
Chúng ta không thể xác định được thứ tự của các thành phần độc lập.
Lý do là cả S và A đều không được biết, chúng ta có thể thay đổi tùy ý trật tự của phép tính trong công thức (2.3), và có thể gọi bất cứ thành phần độc lập nào là thành phần đầu tiên. Ma trận hoán vị P và phép biến đổi ngược của nó có thể được thay thế trong công thức . Các phần tử của Ps là các thành phần biến độc lập gốc sj , nhưng theo thứ tự khác. Ma trận AP-1 được biết như là một ma trận trộn mới chưa biết được dùng để giải bài toán ICA .
2/ Nhận dạng mặt người bằng AdaBoost kết hợp mạng nơron:
Phát hiện mặt người là bước đầu tiên của hệ nhận dạng mặt người. Tốc độ xử lý và hiệu suất của hệ nhận dạng phụ thuộc rất nhiều vào quá trình phát hiện khuôn mặt.
Phương pháp AdaBoost được đánh giá là nhanh nhất trong các thuật toán dò tìm hiện nay. Tuy nhiên những khuôn mặt tìm được có độ chính xác chưa cao (kết quả dò tìm thừa). Vì vậy cần một bộ lọc để loại bỏ các kết quả thừa.
Mạng nơron có khả năng dò tìm tương đối tốt. Ngoài ra khả năng chứng thực mặt người của mạng nơron là rất tốt. Vì vậy ta có thể kết hợp với AdaBoost ở tầng cuối để tạo thành một hệ thống nhất.
AdaBoost – NN là mô hình dò tìm khuôn mặt bằng AdaBoost kết hợp mạng nơron. AdaBoost sẽ đóng vai trò là bộ dò tìm nhanh các khuôn mặt. Mạng nơron sẽ lọc ra các dò tìm sai để cho kết quả chính xác hơn. Ảnh sau khi qua mạng nơron sẽ xác định chính xác vị trí của khuôn mặt. Hệ thống dò tìm được minh hoạ trong hình sau:
Tiền xử lý ảnh
Ảnh đầu vào
Ảnh khuôn mặt
Ảnh đã tiền xử lý
Bộ dò tìm AdaBoost
Ảnh ứng viên khuôn mặt
Chứng thực ảnh bằng mạng nơron
Phát hiện khuôn mặt nhanh bằng AdaBoost : Các ảnh đầu vào sẽ được tính tích phân của ảnh theo các đặc trưng Haar – like. Các đặc trưng này sẽ được chọn lựa lại theo mô hình phân tầng. Đầu ra của hệ thống sẽ là các ảnh ứng viên khuôn mặt dò tìm được.
Chứng thực mặt người bằng mạng Nơron : Ảnh ứng viên dò tìm được bởi AdaBoost sẽ được đưa về kích thước 30x30 pixel. Chuyển đổi ảnh màu thành ảnh grayscale. Sau đó thực hiện điều chỉnh độ tương phản của ảnh và thực hiện cân bằng lược đồ mức xám.. Khi quá trình tiền xử lý hoàn tất, ta dùng một cửa sổ trượt có kích thước 20x20 để dò tìm tất cả các vị trí trong ảnh. Nếu có một ảnh con được xác nhận là khuôn mặt thì ảnh gốc cần chứng thực là khuôn mặt. Ngược lại, nếu không có cửa sổ con nào được xác nhận là khuôn mặt thì thì ảnh đầu vào không phải là ảnh khuôn mặt.
Đầu vào của ảnh
Tập ảnh lớn (kho ảnh).
Ảnh khuôn mặt mẫu của đối tượng cần tìm.
File data (nếu có) lưu vị trí và kích thước của ảnh khuôn mặt.
Quá trình xử lý:
Từ tập ảnh mẫu, huấn luyện mạng nơron để chuẩn bị đối sánh mẫu.
Từ mỗi ảnh trong kho ảnh, dò tìm khuôn mặt trong ảnh bằng hệ AdaBoost-NN đã xây dựng. Nếu tìm thấy ảnh mặt người thì lưu vị trí và kích thước của ảnh vào file data, đồng thời đối sánh từng khuôn mặt tìm được với ảnh mẫu (dùng mạng nơron). Nếu ảnh tìm được khớp với ảnh mẫu thì chép ảnh gốc có chứa khuôn mặt của đối tượng vào một thư mục cho trước.
Ý nghĩa:
Việc lưu vị trí ảnh khuôn mặt vào file data nhằm phục vụ cho những lần tìm kiếm sau. Nếu đã có file data thì chương trình không cần dò tìm khuôn mặt mà sẽ lấy ảnh khuôn mặt theo mô tả trong file data.
Việc chép ảnh gốc vào thư mục riêng nhằm phục vụ cho các điều tra viên kiểm tra lại ảnh tìm được. Vì tập ảnh lớn, thời gian chạy chương trình sẽ rất lâu cho nên người dùng không thể ngồi theo dõi chương trình mà phải chép ảnh tìm được vào một thư mục riêng.
Tập ảnh lớn
(kho ảnh)
Lưu vị trí và kích thước ảnh vào file data
Ảnh khuôn mặt mẫu
Mạng nơron
Chép ảnh gốc vào thư mục cho trước
Tiền xử lý và rút trích đặc trưng
Bộ trọng số của mạng nơron đã được huấn luyện
Ảnh khuôn mặt tìm được
Dò tìm bằng AdaBoost-NN hoặc đọc ảnh từ file data
Có khuôn mặt
Đối sánh ảnh tìm được với ảnh mẫu
(bằng mạng nơron)
Khớp nhau
Duyệt từng ảnh
Tập tin lưu vị trí và kích thước các ảnh mặt người
Thư mục chứa các file ảnh có chứa đối tượng cần tìm
Sơ đồ xử lý nhận dạng khuôn mặt
Thuật toán AdaBoost:
B1. Đầu vào
(1) Tập Z = {(x1, y1), .., (xN, yN)} với:
N = a + b
a là số mẫu thuộc phân lớp yi = +1
b là số mẫu thuộc phân lớp yi = -1
(2) Số lớp yếu tối đa Mmax sẽ được kết hợp.
B2. Khởi tạo giá trị
với các mẫu thuộc lớp yi = +1
với các mẫu thuộc lớp yi = -1
M = 0
B3. Suy diễn tiến
While M < Mmax
(1) M <- M +1
(2) Chọn hm dựa theo biểu thức (4)
(3) Cập nhật và chuẩn hóa để
Để
B4. Đầu ra
Σ = = M
3/ Nhận dạng dùng Support Vector Machine (SVM) :
SVM (Support Vector Machines) là phương pháp nhận dạng do Vladimir N. vapnik đề xuất năm 1995. SVM là phương pháp nhận dạng dựa trên lý thuyết học thống kê ngày càng đươọc sử dụng phổ biến trong nhiều lĩnh vực, đặc biệt là lĩnh vực phân loại mẫu và nhận dạng mẫu. Đồng thời có nhiều tình năng ưu việt so với các phương pháp cổ điển khác: dể dàng xử lý, xử lý với tính ổn định cao trên dữ liệu phức tạp, có thể có số chiều lớn và quan trọng hơn cả là khả năng xử lý tổng quát.
SVM (Support Vector Machines) là một phương pháp máy học tiên tiến đã có nhiều thành công không chỉ trong các lĩnh vực khai phá dữ liệu mà còn trong lĩnh vực nhận dạng. Trong những thập niên gần đây, SVM được đánh giá là một trong những phương pháp phân lớp có độ chính xác rất cao và nó cũng đã được áp dụng nhiều trong các bài toán nhận dạng. Vì vậy chúng ta có thể ứng dụngtrong nhận dạng trên cơ sở phương pháp phân lớp SVM. Trích chọn đặc trưng phục vụ cho công việc huấn luyện và nhận dạng là một bước rất quan trọng trong một hệ thống nhận dạng.
Phương pháp SVM: gồm hai giai đoạn là huấn luyện và nhận dạng
Giai đoạn huấn luyện :Các ảnh mẫu được véc tơ hóa x = {x1, . .,x900} rồi dùng phương pháp PCA để rút trích đặc trưng thành véc tơ y={y1, . .,y100} rồi đưa vào bộ huấn luyện SVM .
Giai đoạn nhận dạng: Mẫu cần nhận dạng được cũng được véc tơ hóa và rút trích như trên sau đó đưa vào bộ nhận dạng SVM để xác định lớp cho mẫu . Tuy nhiên SVM là phương pháp phân lớp rất nhanh nhưng SVM có thể phân một đối tượng nhầm lớp nên có thể dùng thêm phương pháp mạng Nơron để so sánh.
Phương pháp phân lớp SVM :
Hàm mục tiêu của một máy phân lớp SVM nhị phân có thể được phát biểu như sau:
g(x) = w.Φ(x) + b (1)
Trong đó :
- Véc tơ đầu vào x
- w là véc tơ chuẩn của siêu phẳng phân cách trong không gian đặc trưng được sinh ra từ ánh xạ Φ(x):
- (F > D, Φ(x) có thể tuyến tính hoặc phi tuyến) và b là độ lệch so với gốc tọa độ.
Ban đầu, SVM được thiết kế cho bài toán phân lớp nhị phân, do đó dấu của g(x) cho biết véc tơ x thuộc lớp +1 hay lớp -1.
Cho tập mẫu {(x1,y1),...,(xN,yN)} trong đó xiRD và yi{±1}, mục tiêu của phương pháp phân lớp SVM là tìm một siêu phẳng phân cách sao cho khoảng cách lề (margin) giữa hai lớp đạt cực đại
Khoảng cách lề giữa hai lớp là . Để nới lỏng điều kiện phân lớp, thêm vào một số yếu tố cân bằng và việc huấn luyện SVM chính là giải bài toán tối ưu có ràng buộc:
sao cho:
yi(w. Φ(xi) + b) ≥ 1-ξi ξi ≥ 0,
trong đó :
C là tham số nới lỏng điều kiện phân lớp [1].
Thay vì giải bài toán (2), ta giải bài toán đối ngẫu của nó bằng cách giải bài toán qui hoạch toàn phương (QP-Quadratic programming):
(3)
Thỏa mãn:
và ,
trong đó α =[α1,..., αN]T và H là ma trận kích thước N×N được gọi là ma trận nhân (kernel matrix) với mỗi phần tử H(i,j) = yiyjΦ(xi).Φ(xj).
Giải bài toán QP (3) ta thu được:
(4)
Mỗi mẫu huấn luyện xi tương ứng với một hệ số Lagrange αi. Sau khi huấn luyện, các mẫu có αi>0 được gọi là véc tơ hỗ trợ.
Thế (4) vào (1), ta có :
(5)
Giả sử Φ(xi).Φ(xj) = K(xi,xj). Nghĩa là, tích vô hướng trong không gian đặc trưng tương đương với một hàm nhân K của không gian đầu vào. Vì vậy, ta không cần phải tính trực tiếp các giá trị Φ(xi), Φ(xj) mà chỉ cần tính tích vô hướng gián tiếp thông qua hàm nhân K(xi,xj). Nếu sử dụng hàm nhân là hàm tuyến tính thì SVM được gọi là SVM tuyến tính, ngược lại thì gọi là SVM phi tuyến. Như vậy, hàm mục tiêu cho bài toán phân lớp SVM nhị phân có dạng:
(6)
Chỉ có các véc tơ hỗ trợ tham gia vào việc xây dựng siêu phẳng phân cách, do đó một mẫu x sẽ được phân lớp theo hàm quyết định:
(7)
trong đó, NSV là số véc tơ hỗ trợ.
SVM gồm có SVM tuyến tính và SVM phi tuyến.
SVM tuyến tính
Giả sử cho tập (1)
trong đó xi Rn và yi {+1,-1}. Mục đích của SVM là tìm ra siêu mặt phân cách thỏa:
xi +b≥1 khi yi =+1
xi +b≥−1 khi yi =−1 (2)
trong đó w Rn và cũng là vectơ pháp tuyến của siêu mặt. Nếu như các thành phần của tập học S thỏa bất phương trình (2) thì ta nói đây là trường hợp phân cách tuyến tính. Trong việc huấn luyện siêu mặt, SVM tìm cách cực đại khoảng cách bờ ρ giữa hai lớp với . Do đó trong trường hợp tuyến tính, việc tìm siêu mặt phân cách cũng chính là giải hệ sau:
Cực tiểu : (3)
với ràng buộc i = 1,2,…,n (4)
Nếu như bất phương trình (2) không đúng với một số phần tử trong tập học,ta nói đây không phải là trường hợp phân cách tuyến tính. Trong trường hợp này tabờ mặt phân cách là “mềm”( soft margin) nếu như có một vài phần tử không thỏa (2) như trên. Để giải quyến trường hợp này, tập được thêm vào (2) như sau:
i=1,2,…,n (5)
và ξi được gọi là các biến slack (lỏng). Khi 0<ξi <1 thì các điểm rơi đúng vào hần ngăn cách của bờ ngăn cách. Khi có lỗi xuất hiện tức có điểm rơi vào bờ bên kia, ξi tương ứng sẽ lớn hơn 1. Do đó mục đích SVM bây giờ là tìm siêu phằng phân cách sao cho lỗi phân loại ít nhất và khoảng cách bờ lớn nhất. trong trường hợp không thể phân cách tuyến tính, bài toán trở thành:
Cực tiểu : (6)
Với ĐK : i=1,2,…,n (7)
và ξ ≥ 0,i = 1,2,..., n (8)
Trong đó C là tham số do người dùng chọn.
Một cách để giải quyết bài toán là dùng hàm Largange. Có hai lý do cho điều này. Thứ nhất là ràng buộc (7 - 8) sẽ được thế bằng ràng buộc trên hệ số nhân Lagrange, để dễ làm việc hơn. Thứ hai là dữ liệu huấn luyện sẽ chỉ xuất hiện dưới dạng phép nhân vô hướng giữa các vector. Điều này cho phép tổng quát hoá cho trường hợp phi tuyến. Đưa ra các hệ số nhân Lagrange không âm αi, và βi , cho các ràng buộc bất đẳng thức (7-8). Bài toán đối ngẫu trở thành :
Cực đại : (9)
Với ĐK : (10)
i=1,2,…,n (11)
Trong bài toán đối ngẫu hàm lượng giá Q(α) cực đại chỉ phụ thuộc vào dữ liệu dưới dạng tích vô hướng. Do đó các hệ số nhân Lagrange có thể tính được dựa trên các ràng buộc (10-11).
Điều kiện Karush-Kuhn-Tucker (KKT) có vai trò quan trọng đối với bài toán tối ưu ràng buộc. Với bài toán trên, điều kiện KKT có thể phát biểu:
i=1,2,…n (12)
Trong đó :
Có hai dạng tham số , nếu như 0< ≤C thì mẫu tương ứng là véctơ hỗ trợ. Véctơ lời giải cho bài toán chính là véctơ xác định bởi:
(14)
Trong đó : Ns chính là số lượng các vectơ hổ trợ.
Tuy nhiên trong trường hợp 0< <C chúng ta có ξi = 0 theo phương trình (13) của điều kiện KKT. Do đó có thể lấy điểm huấn luyện bất kỳ thỏa 0< < C để dùng công thức (12) (với ξi = 0) để tính b0. Cuối cùng có thể lấy trung bình b0 trên toàn tập mẫu S.
Một khi (w0,b0) được xác định, ta có hàm quyết định chính là:
(15)
đồng thời siêu mặt phân cách chính là g(x) = 0. Trường hợp khác xảy ra nữa là khi =C (ξi>0 có thể tính được bằng(12)) và = 0 (mẫu i đã được phân loại đúng)
SVM phi tuyến:
Trong trường hợp phi tuyến, ta chỉ cần ánh xạ véctơ dữ liệu vào không gian đặc trưng có số chiều cao hơn nhiều. Bằng cách sử dụng hàm ánh xạ , trong đó M>N, chúng ta có thể xây dựng siêu mặt phân cách trong không gian mới này. Hàm xử lý chính tích vô hướng K(x,xi) ánh xạ không gian phi tuyến vào không gian đặc trưng:
(16)
Do đó bài toán đối ngẫu trở thành :
Cực đại : (17)
Với cùng ràng buộc (10-11). Điều kiện duy nhất chính là hàm xử lý chính K(x,xi) phải thỏa điều kiện Mercer. Bằng cách sử dụng các hàm xử lý chính, dữ liệu có thể được phân loại như sau:
Trong đó g(x) là hàm quyết định như sau:
4/ Nhận dạng dùng Fuzzy SVM (SVM mờ) :
Với SVM, quá trình huấn luyện khá nhạy cảm với các mẫu cách quá xa lớp. Nếu như hai lớp có thể phân cách tuyến tính thì SVM có thể tìm ra siêu mặt phân cách mà không có mẫu nào bị phân loại sai kể hai tập mẫu có độ đo compact nhỏ đến mức độ nào. Tuy nhiên xét trường hợp hai lớp không thể phân cách tuyến tính, việc chọn đúng giá trị C có ý nghĩa khá quan trọng. (C chính là tham số do người dùng chọn cân bằng giữa độ phức tạp của hệ số và số lượng lổi ). C càng lớn thì lỗi phân cách càng nhỏ thì càng bỏ qua nhiều các mẫu phân cách sai, song bờ phân cách càng lớn. Dù C nhỏ hay lớn thì gái trị C vẫn cố định trong quá trình huấn luyện. Do đó các mẫu được huấn luyện ngang nhau, nên cuối cùng bớ phân cách sẽ nhạy cảm với những mẫu vượt. Việc xem vai trò các mẫu ngang nhau sẽ dẫn đến việc huấn luyện SVM “quá thích nghi” (overfit):
Hình minh họa nhược điểm về điểm vượt của SVM
Trong hình trên là ví dụ của việc huấn luyện mẫu hai chiều không thể phân cách tuyến tính được. Vùng ít quan trọng hơn là vùng chứa mẫu không tham gia và việc hình thành các véctơ hỗ trợ thỏa mãn phương trình (2). Ngược lại những mẫu tham gia vào hình thành véctơ hỗ trợ sẽ thuộc vùng quan trọng hơn. Với cùng giá trị C, nếu như tồn tại các mẫu vượt biên của lớp 1, siêu mặt phân cách sẽ hướng về lớp 2. Do đó độ dốc của siêu mặt cũng thay đổi do tập các véctơ hỗ trợ thay đổi theo phương trình (14). Điều đó kéo theo việc nhận dạng các mẫu của lớp 2 có nhiều lỗi hơn do việc huấn luyện “quá thích nghi”(overfit) gây ra bởi các phần tử vượt.
Như ta thấy trên, các mẫu được huấn luyện ngang hang nhau, nên cuối cùng bờ phân cách sẻ nhạy cảm với những mẫu vượt. Việc xem các mẫu ngang hàng nhau có thể gây lỗi cho SVM. Do đó ý tưởng của FSVM là tương ứng với mỗi mẫu xi ta gọi Px(xi) là xác xuất xi là mẫu vượt, ta có thể sửa lỗi thành . Tuy nhiên, với từng mẫu trong tập mẫu ban đầu, nếu được một giá trị là độ đo thành viên. Khi đó tương ứng với xác xuất gây lỗi chính là độ đo thành viên xác độ gắn kết thành viên với cả tập mẫu ban đầu. Tập mẫu ban đầu trở thành tập mờ Sf :
Với các mẫu dương(yi =+1) giá trị độ đo thành viên dược gán là và ngược lại là giá trị . Chúng được gán độc lập với nhau.
Giả sử đã có tập mẫu đã mờ hóa, ta bắt đầu việc hình thành hàm lượng giá. FSVM vừa cực đại bờ phân cách và cực tiểu lỗi ngay cả với các mẫu vượt. Không giống như SVM, FSVM giảm ảnh hưởng của các mẫu ít quan trọng hơn bằng độ đo thành viên. Bài toán FSVM trở thành :
Cực tiểu
Với ĐK i = 1,2,…,n
Trong đó m là độ mờ hóa của hàm lượng giá.
Hàm Lagrange trở thành :
Trong đó : và là các hệ số nhân Lagrange không âm, việc giải các phương trình đạo hàm riêng Q theo w,b và sẻ cho kết quả, do đó ta có phương trình sau :
Thay 3 phương trình vào phương trình trên, hàm Lagrange là hàm theo :
Cực đại :
Với ĐK :
Dể thấy sự khác biệt duy nhất giữa SVM và FSVM chính là chặn trên của hệ số nhân trong bài toán đối ngẫu. Nếu như với SVM, chặn số cố định với giá trị hằng số C, thì FSVM linh động hơn với độ đo thành viên của từng mẫu. Độ đo mẫu xi càng nhỏ thì vùng khả thi dọc theo trục càng hẹp.
Cuối cùng ta có điều kiện là :
i = 1,2,…,n
5/ Nhân dạng bằng mạng Nơron:
Neural là một đơn vị tính toán có nhiều đầu vào và một đầu ra, mỗi đầu vào đến từ một liên kết. Đặc trưng của neural là một hàm kích hoạt phi tuyến chuyển đổi tổ hợp tuyến tính của tất cả các tín hiệu đầu vào thành tín hiệu đầu ra. Hàm kích hoạt này đảm bảo tính chất phi tuyến cho tính toán của mạng neural.
w2
wk
w1
y1
y2
b0
yk
a
f
Đầu ra a=f( åw’y+b)
Đầu vào
Hình1.1: Mô hình một neural nhân tạo
Một neural được cầu tạo gồm các thành phần chính :
Liên kết neural.
Bộ cộng .
Hàm kích hoạt.
Mạng neural là một hệ thống bao gồm nhiều phần tử xử lý đơn giản (hay còn gọi là neural) tựa như neural thần kinh của não người, hoạt động song song và được nối với nhau bởi các liên kết neural. Mỗi liên kết kèm theo một trọng số nào đó, đặc trưng cho tính kích hoạt hoặc ức chế giữa các neural.
Hình 1.2: Sơ đồ đơn giản về một mạng neural
Mô hình mạng neural ở trên gồm 3 lớp:
Lớp nhập (input).
Lớp ẩn(hidden).
Lớp xuất (output).
Phân loại mạng neural nhân tạo:
Mạng neural dẫn tiến
Mạng neural qui hồi
Phương pháp mạng Nơron gồm hai giai đoạn là huấn luyện và nhận dạng như sau:
Giai đoạn huấn luyện: Mạng neural phỏng theo việc xử lý thông tin của bộ não người, do vậy đặc trưng cơ bản của mạng là có khả năng học, khả năng tái tạo các hình ảnh và dữ liệu khi đã học. Có 3 kiểu học chính:
Học có giám sát (có mẫu).
Học không giám sát.
Học tăng cường.
Tập mẫu huấn luyện được véc tơ hóa dùng phương pháp chia lưới để tính trung bình mức xám của cửa sổ con kích thước 4x4, như vây với ảnh mẫu kích thước 100x100 sẽ được biến đổi thành véc tơ kích thước là {x1, …,x625} , các véc tơ này làm đầu vào cho bộ huấn luyện mạng Nơron. Mỗi đối tượng sẽ được huấn luyện với các tư thế khuôn mặt như nhìn thẳng, sang trái 300 và sang phải 300 trong một mạng Nơron riêng rẽ tạm gọi là chủ nhân của mạng này với ngõ ra mong muốn của đối tương chủ nhân là 1, các đối tượng không phải chủ nhân sẽ có ngõ ra là 0. Mô hình này đã cải tiến được yếu điểm của SVM.
Giai đoạn nhận dạng: Ảnh cần nhận dạng cũng được véc tơ hóa như giai đoạn huấn luyện và là đầu vào của từng mạng nơron để xác định chủ nhân của mạng. Nếu không xác định được thì hệ thống thông báo là đối tượng này không có trong cơ sở dữ liệu.
Thuật toán:
Xét mạng neural 3 lớp : lớp nhập, lớp ẩn và lớp xuất.
Hàm kích hoạt các neural : logistic (sigmoid).
g(x)=
Bước 1: Khởi tạo trọng số w ngẫu nhiên nhỏ.
Bước 2 : Chọn lớp đầu vào x và đính nó vào lớp đầu vào .
Bước 3 : Truyền sự kích hoạt qua trọng số đến khi kich hoạt các neural đầu ra.
Bước 4: Tính đạo hàm riêng “δE” theo trọng số cho lớp xuất. sử dụng GRADIENT của hàm lỗi .
Bước 5: Tính đạo hàm riêng “δE” theo trọng số cho lớp ẩn. sử dụng GRADIENT của hàm lỗi.
Bước 6: Cập nhật tất cả trọng số theo Wi=W(i-1)-µ(δE/ δ Wi).
Bước 7: quay lai “Bước 2” cho đến “Bước 6” cho tất cả các mẫu.
w2
wk
w1
z=g(v)
v=b0 +
g(x)=
y1
y2
b0
yk
Hàm lỗi:
E(z)=(z - t)2
Đạo hàm riêng của hàm lỗi theo trọng số b:
Ta có:
Đặt:
Ta được:
a2
ad
a1
y=g(u)
v=a0 +
x1
x2
a0
Lớp đầu ra
Đối với các neural lớp ẩn:
Đạo hàm riêng của hàm lỗi theo trọng số:
Ta có:
Đặt:
Ta được:
(1.8)
Sau khi tính được đạo hàm riêng của hàm lỗi theo từng trọng số, trọng số sẽ được điều chỉnh bằng cách trừ bớt đi 1 lượng bằng tích của đạo hàm riêng và tốc độ học:
CHƯƠNG II:
GABOR WAVELETS
1/ Tổng quát về biến đổi Gabor Wavelet:
Hàm Gabor Wavelet được đề xuất đầu tiên bởi Dennis Gabor như là 1 công cụ dùng để phát hiện tín hiệu từ tạp nhiễu.
Sau đó, hàm Gabor Wavelet được Daugman tổng quát hóa thành dạng 2 chiều. Bộ lọc Gabor 2 chiều hiện nay được sử dụng rộng rãi trong nhiều ứng dụng xử lý ảnh trên máy tính.
Mỗi là một sóng phẳng đặc trưng bởi vector hàm sóng Gauss , với là độ lệch tiêu chuẩn của hàm sóng Gauss. Tần số tiêu chuẩn của bộ lọc Gabor thứ i được cho bởi hàm sóng đặc trưng:
Một số thông số quan trọng đối với biến đổi Gabor Wavelet:
- mô tả hướng của Wavelet. Thông số này khiến cho Wavelet quay quanh tâm của nó. Trong đa số các trường hợp có giá trị trong khoảng 0 đến . Ở đây ta sẽ chọn từ với bước nhảy : với u=1,....,8
- mô tả bước sóng của sóng sin hoặc tần số trung tâm của Wavelet. Wavelet có bước sóng lớn sẽ đáp ứng với những thay đổi cường độ của ảnh. Wavelet có bước sóng nhỏ sẽ đáp ứng với những cạnh.
Biểu diễn dạng ảnh của bộ lọc Gabor Wavelet với 5 tỉ lệ và 8 hướng:
Biểu diễn biên độ của bộ lọc Gabor Wavelet
Phần thực của bộ lọc Gabor Wavelet
2/ Biểu diễn hình ảnh bằng Gabor Wavelet:
Biến đổi Gabor Wavelet của một ảnh I cho trước được cho bởi công thức sau:
Với là cường độ ảnh tại vị trí
Từ khi biến đổi Gabor Wavelet được giới thiệu trong lĩnh vực xử lý ảnh trên máy tính, một trong những ứng dụng quan trọng của biểu diễn Gabor Wavelet 2 chiều là nhận dạng khuôn mặt. Trong 1 hoạt động của chính phủ Mỹ (chương trình FERET ) để tìm ra hệ thống nhận dạng khuôn mặt tốt nhất, một hệ thống dựa trên biểu diễn Gabor Wavelet của ảnh khuôn mặt đã được chạy thử cùng với một số hệ thống khác trong một vài cuộc thử nghiệm.
Việc sử dụng biểu diễn Gabor Wavelet trong xử lý ảnh trên máy tính được khởi xướng bởi Daugman vào những năm 1980. Gần đây, B.S. Manjunath et al đã phát triển một hệ thống nhận dạng khuôn mặt dựa trên biểu diễn Gabor Wavelet.
Một hình ảnh có thể được biểu diễn bởi biến đổi Gabor Wavelet cho phép mô tả cả cấu trúc của không gian tần số và mối liên hệ không gian. Chập hình ảnh với tổ hợp bộ lọc Gabor cho 5 không gian tần số ( v = 0,...,4) và 8 hướng (u = 1,...,8) thu được toàn bộ mật độ phổ tần số, cả biên độ và pha.
Cho ảnh gốc:
Biểu diễn ảnh gốc bằng Gabor Wavelet:
Phần thực
Phần biên độ
CHƯƠNG III:
ỨNG DỤNG GABOR WAVELETS TRONG THUẬT TOÁN NHẬN DẠNG KHUÔN MẶT
Một trong những kỹ thuật được sử dụng trong tài liệu này cho việc nhận dạng khuôn mặt dùng biến đổi Gabor Wavelet là việc sử dụng các vector đặc trưng để mã hóa khuôn mặt. Thay vì dùng biểu đồ các điểm đặc trưng trên khuôn mặt, các điểm có năng lượng cao sẽ được sử dụng để so sánh các khuôn mặt. Điều này không chỉ giúp giảm khối lượng tính toán mà còn tăng độ chính xác của thuật toán do không cần phải xác định các điểm đặc trưng trên khuôn mặt bằng tay
1/ Chiết xuất đặc trưng:
Thuật toán chiết xuất đặc trưng gồm 2 bước chính:
Xác định tọa độ các điểm đặc trưng
Tính vector đặc trưng
1a/ Xác định tọa độ các điểm đặc trưng:
Ở bước này, vector đặc trưng được tạo ra từ các điểm có nội dung thông tin cao trên hình ảnh khuôn mặt. Trông hầu hết các phương pháp dựa vào đặc trưng, các đặc trưng trên khuôn mặt là mắt, mũi, miệng. Tuy nhiên, ở đây chúng ta sẽ không áp đặt vị trí và số lượng các điểm đặc trưng. Số lượng điểm đặc trưng và vị trí của chúng có thể thay đổi nhằm mục đích biểu diễn các đặc trưng nhân diện đa dạng của nhiều khuôn mặt khác nhau như nếp nhăn, nốt ruồi,...cũng là những đặc điểm có thể sử dụng để nhận dạng khuôn mặt.
Từ đáp ứng của khuôn mặt qua bộ lọc Gabor, ta sẽ tìm các điểm đặc trưng theo phương pháp sau:
Một điểm là điểm đặc trưng nếu thỏa mãn các điều kiện sau:
(3)
(4)
Với là đáp ứng của ảnh khuôn mặt đối với bộ lọc Gabor thứ j; là kích thước của ảnh khuôn mặt; là một hình vuông có cạnh WxW pixel có tâm tại . Kích thước W là một thông số quan trọng trong thuật toán này, nó phải được chọn đủ nhỏ để thu được những đặc điểm quan trọng, và đủ lớn để tránh phần dư thừa. Phương trình (4) được dùng để tránh bị mắc trong 1 khu vực địa phương mà không tìm ra được đinh của đáp ứng. Ở đây chúng ta sẽ chọn W=9 để tìm các điểm đặc trưng của khuôn mặt qua đáp ứng đối với bộ lọc Gabor. Một sơ đồ đặc trưng cho khuôn mặt được tạo nên bằng cách lần lượt thực hiện quá trình trên đối với 40 bộ lọc Gabor
1b/ Xuất vector đặc trưng:
Vector đặc trưng được tạo ra tại các điểm đặc trưng ở dạng tổ hợp các hệ số của biến đổi Gabor Wavelet. Vector đặc trưng thứ k của hình ảnh khuôn mặt mẫu thứ i được định nghĩa như sau:
Với 40 bộ lọc Gabor, vector đặc trưng có 42 thành phần. 2 thành phần đàu tiên trong vector đặc trưng biểu diễn vị trí của điểm đặc trưng theo tọa độ (x,y). Hai thông số này có vai trò rất quan trọng trong suốt quá trình so sánh nhận dạng khuôn mặt. 40 thành phần tiếp theo của vector đặc trưng là các giá trị của đáp ứng qua bộ lọc Gabor của hình ảnh khuôn mặt tại vị trí tương ứng. Việc xây dựng vector đặc trưng bằng các giá trị của biến đổi Gabor Wavelet là rất quan trọng. Vector đặc trưng cho phép thể hiện cấu trúc không gian tần số và cả mối quan hệ không gian của vùng ảnh địa phương xung quanh điểm đặc trưng tương ứng.
2/ Tính toán mức độ tương tự:
Nhằm mục đích tính toán mức độ tương tự giữa 2 vector đặc trưng, ta sẽ sử dụng công thức tính mức độ tương tự sau đây:
(5)
thể hiện mức độ tương tự giữa vector đặc trưng thứ j của khuôn mặt kiểm tra đối với vector đặc trưng thứ k của khuôn mặt mẫu thứ i trong cơ sở dữ liệu.
Đại lượng mức độ tương tự giữa 2 vector đặc trưng sẽ thỏa mãn 2 tính chất sau:
Và nếu ảnh mẫu thứ i được dùng làm ảnh kiểm tra thì
Thông tin về vị trí của điểm đặc trưng không được sử dụng để tính mức độ tương tự giữa các vector đặc trưng, chỉ có biên độ của hệ số wavelet được sử dụng trong công thức (5). Lưu ý rằng mức độ tương tự giữa 2 vector đặc trưng chỉ là một trong số những thông số được sử dụng trong thuật toán nhận dạng này. Thông tin về vị trí của vector đặc trưng cũng sẽ được sử dụng trong suốt quá trình nhận dạng.
Công thức (5) chỉ là một biện pháp đo mức độ tương tự giữa hai vector đặc trưng dùng các hệ số của biến đổi Gabor Wavelet rất phổ biến. Tuy vậy đôi khi ta cần phải có một số thay đổi nhỏ. Trong một số tài liệu khác, đại lượng mức độ tương tự trong công thức (5) được sử dụng với các giá trị phức và hệ số pha của các giá trị biến đổi Gabor Wavelet. Trong các thử nghiệm trước đây người ta nhận thấy rằng những sự dịch chuyển nhỏ về không gian có thể gây nên các thay đổi trong giá trị phức của biến đổi Gabor Wavelet, qua đó kéo theo sự thay đổi về pha. Do đó đại lượng pha có thể được bỏ qua như trong [23]. Mặc dù sử dụng đại lượng mức độ tương tự được bù pha có thể tăng hiệu quả nhận dạng khuôn mặt, tuy nhiên đại lượng mức độ tương tự không được bù pha vẫn thường được sử dụng nhằm giảm mức độ phức tạp khi tính toán.
3/ So sánh khuôn mặt:
Sau khi xây dựng xong vector đặc trưng từ ảnh kiểm tra, chúng được so sánh với những vector đặc trưng của mỗi ảnh mẫu trong cơ sở dữ liệu. Công đoạn so sánh này trải qua 2 bước. Trong bước đầu tiên, chúng ta sẽ loại trừ những vector đặc trưng của ảnh mẫu không đủ gần với vector đặc trưng của ảnh kiểm tra theo quan hệ về vị trí và mức độ tương tự. Chỉ có những vector đặc trưng thỏa mãn được 2 điều kiện sau mới được sử dụng để so sánh khuôn mặt trong các bước tiếp theo:
1.
và biểu diễn vị trí của một diểm đặc trưng trên ảnh mẫu và ảnh kiểm tra tương ứng; là mức bán kính ngưỡng được chọn phù hợp để đạt được kết quả tốt nhất khi so sánh tọa độ giữa các điểm đặc trưng, nhằm tránh việc trùng khớp khi xác định vị trí của một điểm đặc trưng quanh mắt với một điểm đặc trưng quanh miệng của hình ảnh khuôn mặt mẫu. Sau khi xác định vị trí, chúng ta không cần để ý tới các thông tin về tọa độ của điểm đặc trưng trong các bước tiếp theo.
2.
Mức độ tương tự giữa hai vector đặc trưng phải lớn hơn , với được chọn như là độ lệch tiêu chuẩn của mức độ tương tự giữa tất cả các vector đặc trưng.
Việc chọn mức ngưỡng phù hợp sẽ giúp giảm số vector đặc trưng đủ tiêu chuẩn, qua đó tăng tốc độ tính toán ở các bước tiếp theo.
Bằng cách thay đổi và chúng ta có thể kiểm soát được cấu trúc liên kết và giá trị mức độ tương tự giữa các vector đặc trưng. Việc tăng sẽ nới rộng khu vực tìm kiếm điểm đặc trưng có mức độ tương tự lớn hơn . Điều này có thể hữu ích khi vị trí của điểm đặc trưng thay đổi do lý do nào đó, thí dụ như ảnh được chụp với các góc độ, cảm xúc khuôn mặt khác nhau. Tuy nhiên nếu quá lớn sẽ khiến cho thông tin về cấu trúc liên kết khuôn mặt bị sai lệch hoàn toàn. Khi giữ nguyên và tăng trong một phạm vi lớn sẽ khiến cho kết quả thu được không có khuôn mặt trùng khớp; ngược lại nếu giảm sẽ làm xuất hiện các vector đặc trưng thừa khiến tăng khối lượng tính toán và làm giảm độ chính xác của quá trình nhận dạng. Tuy vậy sự thay đổi nhỏ của và có lại không ảnh hưởng đến hiệu quả của thuật toán.
Sau khi thực hiện bước thứ nhất, các vector đặc trưng thỏa mãn được hai điều kiện trên của những ảnh mẫu trong cơ sở dữ liệu sẽ được dùng để tính toán các thông số tiếp theo nhằm phục vụ cho quá trình so sánh khuôn mặt. Tập hợp các vector này được ký hiệu là .Các vector còn lại sẽ được bỏ qua trong quá trình tính toán.
Ở bước thứ 2, công thức sau được đưa ra để đảm bảo rằng chỉ có nhiều nhất là một vector đặc trưng của khuôn mặt mẫu trùng khớp với vector đặc trưng của khuôn mặt kiểm tra:
Ở công thức trên, thể hiện mức độ tương tự của ảnh mẫu thứ i đối với ảnh kiểm tra dựa trên vector đặc trưng thứ j.
Tiếp theo, ta tính mức độ tương tự của ảnh mẫu thứ i đối với ảnh kiểm tra bằng cách lấy trung bình cộng của các thông số thu được ở bước trên:
Đại lượng sẽ thỏa mãn 2 tính chất sau:
Và nếu ảnh mẫu thứ i được dùng làm ảnh kiểm tra thì
Mặc dù OS là một thông số dùng để so sánh độ tương tự khá tốt, tuy nhiên ta có thể cải thiện độ chính xác của thuật toán bằng cách xét đến số lượng vector đặc trưng. Cần phải chú ý rằng số lượng điểm đặc trưng dùng để tính toán cho mỗi cặp ảnh là không giống nhau, ngay cả khi đó là ảnh của cùng một người (ví dụ: ảnh người có mang kính/không có mang kính; ảnh với các biểu hiện cảm xúc khác nhau; sự thay đổi độ sáng;....). Sự thay đổi số lương điểm đặc trưng này không được tính đến trong đại lượng OS. Do đó nếu chỉ sử dụng một đại lượng OS để so sánh thì sẽ không đạt được hiệu quả cao. Thí dụ: OS=0,85 là giá trị trung bình cộng của 20 đại lượng mức độ tương tự sẽ có giá trị hơn là OS=0,95 là giá trị trung bình cộng của 2 đại lượng mức độ tương tự. Hơn nữa, số lượng vector đặc trưng trùng khớp của mỗi ảnh mẫu đối với ảnh kiểm tra sẽ cung cấp thông tin về độ trùng khớp trong kết cấu liên kết khuôn mặt. Để sử dụng được thông tin chứa trong số lượng vector đặc trưng trùng khớp, ta sẽ tính một thông số mới C cho mỗi ảnh mẫu có trong cơ sở dữ liệu bằng cách đếm số lượng vector đặc trưng có độ tương tự cao nhất của ảnh mẫu đó với một vector đặc trưng của ảnh kiểm tra:
l=1,...,số lương khuôn mặt mẫu có trong cơ sở dữ liệu
Đối với mỗi ảnh mẫu sẽ có một đại lượng FSF được tính theo công thức sau:
Trong đó là số lượng vector đặc trưng của ảnh mẫu thứ i; là các hệ số tỉ lệ được chọn phù hợp để đạt được kết quả tối ưu. Nếu ảnh mẫu thứ i cũng được dùng làm ảnh kiểm tra thì và
CHƯƠNG IV:
CHƯƠNG TRÌNH MÔ PHỎNG
Chương trình được viết bằng ngôn ngữ Matlab. Phiên bản Matlab được sử dụng là Matlab 7.0.4
1/ Tổng quan về Matlab:
1a/ Giới thiệu chung:
MATLAB có nguồn gốc từ chữ matrix laboratory, được Cleve Moler phát minh vào cuối thập niên 1970, là chủ nhiệm khoa máy tính tại Đại học New Mexico, là ngôn ngữ máy tính dùng để tính toán kỹ thuật.
Trải qua nhiều phiên bản, năm 2004 MATLAB 7 phát hành, có khả năng chính xác đơn và kiểu nguyên, hỗ trợ hàm lồng nhau, công cụ vẽ điểm, và phát triển thuật toán tương tác.
Ban đầu MATLAB được lập ra để giải quyết các phép toán trên ma trận, chính điều này làm cho MATLAB có ứng dụng rất lớn trong nhiều ngành kỹ thuật khác nhau so với các ngôn ngữ lập trình khác tính toán trên số vô hướng. MATLAB kết hợp tính toán và lập trình đồ họa trong môi trường phát triển tương tác, thời gian lập trình chỉ bằng một phần nhỏ so với các ngôn ngữ lập trình khác nhờ vào các hàm có sẵn. MATLAB là sản phẩm của công ty The Mathworks Inc. với địa chỉ www.mathworks.com và sử dụng MATLAB phải có bản quyền. Tuy nhiên có rất nhiều hàm MATLAB được viết bởi người sử dụng và phổ biến trên mạng giúp MATLAB ngày càng phong phú hơn.
1b/ Các đặc điểm cơ bản của MATLAB:
Là ngôn ngữ bậc cao dùng cho các tính toán kỹ thuật.
Là môi trường phát triển để quản lý dữ liệu.
Gồm nhiều công cụ tương tác cho việc khai thác và xử lý dữ liệu, thiết kế và giải quyết vấn đề.
Các hàm đồ thị đối với ảnh 2 hoặc 3 chiều cho phép hình ảnh hóa dữ liệu.
Chứa các công cụ để xây dựng các giao diện đồ thị của người sử dụng.
Gồm nhiều hàm chức năng dựa trên các giải thuật cơ sở nhằm tích hợp MATAB với các ứng dụng và ngôn ngữ lập trình khác như: C, C++, Fortran, Java, Microsoft excel…
MATLAB là một ngôn ngữ bậc cao được tích hợp các công cụ phát triển giúp người sử dụng phát triển và phân tích các giải thuật và ứng dụng một cách nhanh chóng.
Ngôn ngữ lập trình MATLAB hỗ trợ các phép toán đối với ma trận và vector cơ sở cho các vấn đề kỹ thuật và khoa học.
Việc lập trình và phát triển giải thuật trong MATLAB có tốc độ nhanh hơn so với các ngôn ngữ lập trình truyền thống do MATLAB bỏ qua các công việc điều khiển bậc thấp như khai báo biến, khai báo mẫu dữ liệu và xác định vùng nhớ. Trong nhiều trường hợp, MATLAB còn bỏ qua cả sự cần thiết của các vòng lặp “for”. Kết quả là, một dòng lệnh được viết trong MATLAB có thể tương đương với nhiều dòng lệnh trong C hay C++.
Là một công cụ lập trình mạnh, MATLAB vẫn hỗ trợ những đặc tính của một ngôn ngữ lập trình truyền thống như: toán tử số học, cấu trúc vòng, các cấu trúc và dạng dữ liệu cùng đặc tính gỡ rối.
VD: Chương trình biểu diễn thuật toán điều chế tín hiệu truyền thông tạo ra 1024 điểm, thực hiện điều chế, thêm nhiễu phức Gauss và vẽ lại kết quả.
% tạo một vector N bit
N = 1024;
bits = rand(N,1)>0.5;
% chuyen sang ky tu
Tx=1-2*bits;
%them vao nhieu Gauss trang
P=0.4
Nz=P*(randn(N,1)+i*randn(N,1));
Rx= Tx + Nz;
%hien thi ket qua
plot(Rx,'.');
axix([-2 2 -2 2]);
axis square, grid;
Hình 1.1
Trong khi đối với phần lớn các ngôn ngữ lập trình truyền thống phải trải qua giai đoạn dịch (compilation) và liên kết (linking) thì MATLAB cho phép người sử dụng có thể thực thi ngay các lệnh hoặc nhóm lệnh cùng lúc. Điều này làm cho tốc độ xử lý trên MATLAB nhanh hơn đáng kể so với trên các ngôn ngữ truyền thống.
1c/ Phân tích và tiếp cận dữ liệu:
Trong quá trình phân tích dữ liệu, MATLAB hỗ trợ hầu hết các công đoạn như: thu nhận dữ liệu từ thiết bị ngoại vi, các phân tích số học, tiền xử lý, hình ảnh hóa…
Phân tích dữ liệu: Chương trình MATLAB cung cấp các công cụ tương tác cũng như các hàm điều khiển theo dòng cho việc tính toán trong phân tích dữ liệu bao gồm:
Các phép nội suy
Trích chọn tính chất
Chọn ngưỡng và lọc nhiễu
Tương quan, phân tích Fourier và lọc
Phát hiện các điểm đỉnh, đáy và điểm không
Thống kê cơ bản và chuẩn hóa các đường cong
Phân tích ma trận
Tiếp cận dữ liệu
Việc tiếp cận dữ liệu từ các thư mục, ứng dụng, cơ sở dữ liệu và thiết bị ngoại vi bởi MATLAB là hết sức dễ dàng. MATLAB hỗ trợ nhiều loại định dạng file: ASCII, nhị phân, các file hình ảnh và âm thanh hay thậm chí các file định dạng HDF.
Trong MATLAB có nhiều hộp công cụ (toolbox) hỗ trợ cho việc tiếp cận dữ liệu như: hộp công cụ cơ sở dữ liệu (Database Toolbox), hộp công cụ thu nhận dữ liệu (Data Acquisition Toolbox) hay hộp công cụ điều khiển thiết bị (Instrument Control Toolbox).
Hình ảnh hóa dữ liệu
Tất cả các đặc tính về hình ảnh cần thiết cho hình ảnh hóa các dữ liệu khoa học kỹ thuật đều được tích hợp trong MATLAB. Những đặc tính này bao gồm: các hàm vẽ ảnh 2 và 3 chiều, các hàm vẽ thể tích 3 chiều, các công cụ tương tác tạo ảnh, khả năng xuất kết quả dưới các dạng file ảnh thông thường.
VD: vẽ hàm y= sin(x) với -pi < x < pi
Mã chương trình:
>>x = -pi:.1:pi;
>>y = sin(x);
>> plot (x, y)
Hình 1.2 Đồ thị hàm y = sin(x)
2/ Lưu đồ giải thuật:
2a/ Nhận dạng ảnh động:
Y
Y
Begin
Show webcam
Chụp ảnh từ Webcam
Tìm được 1 khuôn mặt?
Tạo bộ lọc Gabor và biểu diễn hình ảnh khuôn mặt bằng Gabor Wavelet
Tìm hình ảnh khuôn mặt
Tìm vị trí các điểm đặc trưng
Tạo ma trận vector đặc trưng
Tính toán các thông số và tiến hành so sánh nhận dạng
Tìm được khuôn mặt nhận dạng khớp?
Hiển thị kết quả
End
Hiện bảng thông báo
N
N
2b/ Nhận dạng ảnh tĩnh:
N
Y
Begin
Tạo bộ lọc Gabor và biểu diễn hình ảnh khuôn mặt bằng Gabor Wavelet
Tìm vị trí các điểm đặc trưng
Tạo ma trận vector đặc trưng
Tính toán các thông số và tiến hành so sánh nhận dạng
Tìm được khuôn mặt nhận dạng khớp?
Hiển thị kết quả
End
Chọn ảnh cần nhận dạng
3/ Chương trình mô phỏng:
Chương trình có giao diện chính như hình dưới:
Chức năng các nút nhấn trên giao diện chính:
Nút WebCam: hiển thị hình ảnh thu từ webcam.
Nút NHẬN DẠNG WC: tiến hành nhận dạng khuôn mặt thu được từ webcam.
Nút LƯU WC: bổ sung vào cơ sở dữ liệu hình ảnh khuôn mặt thu được từ webcam.
Nút NHẬN DẠNG ẢNH: tiến hành nhận dạng khuôn mặt từ file ảnh nhập vào.
Nút LƯU ẢNH: bổ sung vào cơ sở dữ liệu từ hình ảnh khuôn mặt nhập vào.
Nút CLOSE: thoát khỏi chương trình.
Nút DỮ LIỆU WC: hiển thị một cửa sổ mới cho phép xem các khuôn mặt có trong cơ sở dữ liệu được chụp từ WebCam và xóa các khuôn mặt ra khỏi cơ sở dữ liệu:
Nút DỮ LIỆU ẢNH: hiển thị một cửa sổ mới cho phép xem các khuôn mặt có trong cơ sở dữ liệu từ mẫu đã chọn và xóa các khuôn mặt ra khỏi cơ sở dữ liệu:
Mô tả hoạt động của chương trình:
Một cơ sở dữ liệu gồm các khuôn mặt mẫu được tạo sẵn cho chương trình.
Khi muốn nhận dạng khuôn mặt lấy từ webcam, trước tiên ấn nút WebCam. Một khung hình ảnh video xuất hiện hiển thị hình ảnh đang thu được từ webcam. Ấn nút NHẬN DẠNG WC để tiến hành nhận dạng. Lưu ý: chương trình chỉ tiến hành nhận dạng khi hình ảnh thu được từ webcam đảm bảo các yêu cầu về độ sáng, kích thước, số lượng khuôn mặt trong ảnh. Nếu trong hình không có khuôn mặt nào hoặc có nhiều hơn 2 khuôn mặt, chương trình sẽ không tiến hành nhận dạng và hiện lên bảng thông báo:
Hình ảnh cần nhận dạng sẽ được hiển thị lên bên trái giao diện chính.Sau khi tiến hành nhận dạng, nếu hình ảnh cần nhận dạng khớp với hình ảnh trong cơ sở dữ liệu, trên giao diện chính sẽ xuất hiện thông báo “TRÙNG KHỚP” và hình ảnh trong cơ sở dữ liệu khớp với ảnh cần nhận dạng sẽ hiện lên.
Nếu không khớp thì trên giao diện chính sẽ xuất hiện thông báo “KHÔNG TRÙNG KHỚP”.
Bổ sung vào cơ sở dữ liệu hình ảnh khuôn mặt thu được từ webcam: tương tự như nhận dạng khuôn mặt lấy từ webcam, nhưng thay vì ấn nút NHẬN DẠNG WC thì ta ấn nút LƯU WC.
Khi muốn nhận dạng hình ảnh khuôn mặt từ file nhập vào: ấn nút NHẬN DẠNG ẢNH, một cửa sổ xuất hiện để ta nhập file hình ảnh khuôn mặt cần nhận dạng vào. Sau đó chương trình sẽ tiến hành nhận dạng và hiển thị kết quả tương tự như nhận dạng khuôn mặt bằng webcam.
Bổ sung vào cơ sở dữ liệu hình ảnh khuôn mặt từ file nhập vào: ấn nút LƯU ẢNH, một cửa sổ xuất hiện để ta nhập file hình ảnh khuôn mặt cần bổ sung vào. Sau đó chương trình sẽ tiến hành tính toán và bổ sung hình ảnh khuôn mặt vừa nhập vào cơ sở dữ liệu.
CHƯƠNG V:
KẾT QUẢ THỰC HIỆN
1/ Tập dữ liệu ảnh:
Taäp döõ lieäu aûnh goàm aûnh cuûa 40 caù nhaân vôùi khoaûng 450 aûnh ñöôïc laáy töø internet. Moãi caù nhaân coù khoaûng 10 aûnh coù nhöõng neùt khaùc nhau:
Neùt bieåu caûm cuûa khuoân maët khaùc nhau: bình thöôøng, cöôøi, buoàn, nhaém maét, lieác maét …
Tö theá khuoân maët khaùc nhau: aûnh tröïc dieän, ngöûa maët, cuùi maët, maët hôi nghieâng qua phaûi hay traùi, höôùng maët khaùc nhau …
Ñoä chieáu saùng cuûa caùc khuoân maët khaùc nhau: thay ñoåi möùc saùng toái cuûa böùc aûnh, chieáu saùng ñeàu tröïc dieän hay ñöôïc chieáu saùng ôû hai beân hay phía treân, döôùi, aûnh ñöôïc chuïp ôû caùc goùc ñoä khaùc nhau…
Khuoân maët coù ñeo theâm kính hay ñöôïc trang ñieåm, thay ñoåi raâu toùc …
Aûnh coù theå bò hôi meùo daïng nhö co hai beân hay co treân vaø döôùi vaø kích thöôùc cuûa khuoân maët naèm trong aûnh khaùc nhau …
Kích thöôùc cuûa aûnh 92x112 khaù caân ñoái vôùi kích thöôùc beà doïc vaø ngang cuûa khuoân maët thöïc teá.
Ảnh cuûa moät soá caù nhaân trong taäp aûnh döõ lieäu
2/ Xây dựng tập ảnh mẫu và các ma trận đặc trưng mẫu:
Chương trình được chạy thử nghiệm với 2 tập ảnh mẫu:
Taäp aûnh maãu thöù nhaát chæ goàm 1 aûnh tröïc dieän ôû traïng thaùi bình thöôøng töông öùng vôùi moãi caù nhaân.
Tập ảnh mẫu thứ hai bao gồm ảnh của 16 cá nhân ở các tư thế, biểu cảm khuôn mặt khác nhau. Mỗi cá nhân gồm 3 ảnh mẫu.
Các ảnh mẫu này không được dùng trực tiếp để so sánh nhận dạng mà được chập với bộ lọc Gabor Wavelet để tính toán chiết xuất ma trận đặc trưng (như đã trình bày ở chương III). Mỗi ảnh sẽ có 1 ma trận đặc trưng. Kích thước ma trận đăc trưng của mỗi ảnh cũng sẽ khác nhau tùy thuộc vào số lượng điểm đặc trưng tìm được trên khuôn mặt. Các ma trận đặc trưng này sẽ được dùng để tính toán, so sánh và nhận dạng khuôn mặt.
Mỗi tập ảnh mẫu sẽ có một bộ ma trận đặc trưng. Khi cần nhận dạng một cá nhân, ảnh khuôn mặt của cá nhân đó sẽ được chập với bộ lọc Gabor Wavelet, tạo ra ma trận đặc trưng và so sánh với bộ ma trận đặc trưng của tập ảnh mẫu.
Moät ma traän ñaëc tröng coù 42 coät hai coät ñaàu tieân laø toaï ñoä cuûa ñieåm ñaëc tröng vaø 40 coät coøn laïi laø giaù trò cuûa ñieåm tröng ñoù ñöôïc laáy töø 40 ñaùp öùng cuûa boä loïc Gabor.
Khi chaäp moät aûnh maët vôùi moät boä loïc Gabor thì caùc ñieåm coù giaù trò möùc xaùm khaùc nhieàu vôùi vuøng laän caän cuûa ñieåm aûnh ñoù seõ ñöôïc noåi baät leân (coøn goïi laø ñænh hay ñieåm coù naêng löôïng cao nghóa laø giaù trò möùc xaùm cuûa ñaùp öùng taïi vò trí ñieåm aûnh ñoù lôùn), coøn nhöõng vuøng coù caùc giaù trò ñieåm aûnh gaàn gioáng nhau thì khoâng ñöôïc laøm noåi leân. Treân khuoân maët con ngöôøi nhöõng vuøng coù nhieàu thay ñoåi khaùc nhau laø maét, muõi, mieäng, tai, chaân maøy, vieàn khuoân maët, nuùm ñoàng tieàn hay noát ruoài…. Vaø caùc ñieåm ñaëc tröng taäp chung ôû caùc vuøng naøy. Caùc ñieåm ñaëc tröng ñöôïc töï ñoäng trích theo giaûi thuaät ñöôïc trình baøy trong chöông III.
3/ Các kết quả thử nghiệm:
3a/ Nhận dạng khuôn mặt từ ảnh dùng tập ảnh mẫu thứ nhất:
Tập ảnh mẫu sử dụng trong thí nghiệm này gồm 28 cá nhân, mỗi cá nhân có 1 ảnh.
Tập ảnh kiểm tra thứ nhất gồm 292 ảnh của 28 cá nhân được đưa vào tập ảnh mẫu. Kết quả nhận dạng có 157 ảnh cho nhận dạng đúng (53.8%), 107 ảnh không tìm ra nhận dạng tương ứng (36.6%), 28 ảnh bị nhận nhầm với cá nhân khác(9.6%).
Tập ảnh kiểm tra thứ hai gồm 96 ảnh của 16 cá nhân không được đưa vào tập ảnh mẫu. Kết quả nhận dạng có 80 ảnh cho kết quả chính xác (83.3%), 16 ảnh bị nhận nhầm với cá nhân khác (16.7%).
3b/ Nhận dạng khuôn mặt từ ảnh dùng tập ảnh mẫu thứ hai:
Khi bổ sung ảnh khuôn mặt các cá nhân với các tư thế, biểu cảm khác nhau, hiệu quả nhận dạng được cải thiện rõ rang, tỉ lệ ảnh nhận dạng đúng tăng lên. Tập ảnh mẫu sử dụng trong thí nghiệm này gồm 16 cá nhân, mỗi cá nhân có 3 ảnh.
Tập ảnh kiểm tra thứ nhất gồm 174 ảnh của 16 cá nhân được đưa vào tập ảnh mẫu. Kết quả nhận dạng có 155 ảnh cho nhận dạng đúng (89%), 20 ảnh không tìm ra nhận dạng tương ứng (11%), không có ảnh bị nhận nhầm với cá nhân khác.
Tập ảnh kiểm tra thứ hai gồm 264 ảnh của 28 cá nhân không được đưa vào tập ảnh mẫu. Kết quả nhận dạng có 219 ảnh cho kết quả chính xác (83%), 45 ảnh bị nhận nhầm với cá nhân khác (17%).
Có thể cải thiện hiệu quả nhận dạng bằng cách tăng thêm số ảnh mẫu. Tuy nhiên khi đó thời gian nhận dạng sẻ tăng lên.
3c/ Nhận dạng khuôn mặt từ webcam:
Tập ảnh mẫu sử dụng trong thí nghiệm này gồm 6 cá nhân, mỗi cá nhân có 3 ảnh mẫu.
Tập ảnh kiểm tra thứ nhất gồm 60 ảnh của 6 cá nhân được đưa vào tập ảnh mẫu. Kết quả nhận dạng có 44 ảnh cho nhận dạng đúng (73.3%), 12 ảnh không tìm ra nhận dạng tương ứng (20%), 4 ảnh bị nhận nhầm với cá nhân khác(6.7%).
Tập ảnh kiểm tra thứ hai gồm 50 ảnh của 5 cá nhân không được đưa vào tập ảnh mẫu. Kết quả nhận dạng có 42 ảnh cho kết quả chính xác (84%), 8 ảnh bị nhận nhầm với cá nhân khác (16%).
3d/ Tốc độ thực hiện:
Ñoái vôùi maùy tính Core i7 1.6GHz thôøi gian thöïc hieän:
Tìm ảnh khuôn mặt từ ảnh chụp từ webcam mất 9s.
Bieán ñoåi Gabor Wavelets cuûa moät aûnh maët maát 0,5s
Xác định vị trí các điểm đặc trưng của khuôn mặt mất 0,2s
Taïo ma traän ñaëc tröng cho aûnh töø 40 ñaùp öùng cuûa boä loïc Gabor maát 0,3s.
Thôøi gian so khôùp aûnh caàn nhaän daïng vôùi moät aûnh trong taäp aûnh maãu tùy thuộc vào số lượng ảnh mẫu trong cơ sở dữ liệu, trong thí nghiệm dùng cơ sở dữ liệu có 28 hình ảnh mẫu mất khoảng 6 giây để so khớp.
Aûnh coù kích thöôùc caøng lôùn thì khoaûng thôøi gian naøy caøng taêng. Toåâng thôøi gian nhaän daïng cuõng tæ leä thuaän vôùi soá löôïng aûnh coù trong taäp maãu.
Vôùi maõ ñöôïc vieát baèng ngoân ngöõ Matlab chöa toái öu. Neáu maùy tính coù toác ñoâï cao hôn thì toác ñoä nhaän daïng seõ ñöôïc caûi thieän
4/ Kết luận:
Nhaän daïng maët ngöôøi laø moät lónh vöïc haáp daãn ñoái vôùi ngaønh nghieân cöùu veà heä thaàn kinh vaø nghieân cöùu tröïc quan maùy tính. Con ngöôøi coù khaû naêng nhaïân daïng moät khuoân maët quen moät caùch deã daøng nhôø cô quan thò giaùc vaø lôùp voû baùn caàu naõo nhöng dung löôïng nhôù cuûa con ngöôøi laïi coù giôùi haïn. Caùc nghieân cöùu ñeå minh hoïa khaû naêng nhaän daïng treân maùy tính ra ñôøi vôùi öu ñieåm laø dung löôïng nhôù raát lôùn. Töø naêm 1988 nhieàu giaûi thuaät ñöôïc ñeà xuaát ñeå töï ñoäng nhaän daïng moät khuoân maët. Trong ñoù noåi baät laø phöông phaùp eigenface (taïo ma traän vector rieâng cuûa moät khuoân maët) ñôn giaûn vaø phöông phaùp so khôùp maët baèng ñoà thò löôùi ñaøn hoài cho ñoä chính xaùc cao hôn nhöng tính toaùn phöùc taïp vaø toán thôøi gian thöïc hieän. Sau ñoù laø keát hôïp vôùi maïng Neural Network ñeå taêng toác ñoâï vaø ñoä chính xaùc cuûa nhaän daïng, tuy nhieân dung löôïng aûnh döõ lieäu cuõng taêng leân do maïng caàn döõ lieäu ñeå hoïc taäp.
Phöông phaùp nhaän daïng döïa treân vieäc trích caùc ñaëc tröng ra ñôøi laøm giaûm bôùt veà dung löôïng löu tröõ, vaø pheùp bieán ñoåi Gabor wavelets raát thuaän lôïi cho vieäc trích caùc ñieåm ñaëc tröng vaø vector ñaëc tröng. Nhieàu giaûi thuaät döïa treân pheùp bieán ñoåi GW ra ñôøi, öu ñieåm vaø ñieåm môùi cuûa giaûi thuaät trong luaän vaên naøy:
Tìm ñieåm ñaëc tröng töï ñoäng thay cho vieäc ñònh vò ñieåm ñaëc tröng baèng tay. Ñieåm ñaëc tröng ñöôïc choïn laø caùc ñænh coù naêng löôïng cao cuûa ñaùp öùng sau khi chaäp aûnh vôùi boä loïc GW, ñieàu naøy giuùp cho moãi khuoân maët giöõ ñöôïc caùc neùt ñaëc thuø rieâng cuûa noù hôn laø phöông phaùp duøng nuùt ñoà thò trong phöông phaùp khôùp ñoà thò ñaøn hoài.
Ñoái vôùi caùc phöông phaùp trích ñaëc tröng duøng GW laøm giaûm dung löôïng löu tröõ döõ lieäu raát nhieàu do chæ löu tröõ ma traän ñaëc tröng vôùi kích thöôùc nhoû vaøi chuïc (30-40) pixell vôi haøng laø soá ñieåm ñaëc tröng vaø coät laø soá boä loïc GW coäng theâm 2 coät chöùa vò trí ñieåm ñaëc tröng. Ñoàng thôøi soá löôïng aûnh maãu khoâng caàn nhieàu, moät aûnh maãu cuõng coù theå duøng ñeå nhaän daïng.
Phöông phaùp naøy coù khaû naêng nhaän daïng toát ñoái vôùi söï thay ñoåi ñoä chieáu saùng cuûa moät aûnh maët, vaø tình traïng thay ñoåi neùt bieåu caûm treân khuoân maët.
Vôùi giaûi thuaät so khôùp nhaän daïng vôùi hai ñieàu kieän khôûi ñaàu laø thoûa hai giaù trò ngöôõng th1 vaø th2, neáu ñöôïc choïn hôïp lyù seõ laøm taêng toác ñoä cuûa quaù trình so saùnh vaø nhaän daïng. Giaûi thuaät so khôùp tính toaùn ñôn giaûn vaø thôøi gian thöïc hieän toái öu hôn phöông phaùp so khôùp maët baèng ñoà thò löôùi ñaøn hoài.
5/ Hướng phát triển của đề tài:
Höôùng phaùt trieån cuûa ñeà taøi ñöôïc ñeà xuaát nhö sau:
Caûi thieän ngoân ngöõ xöû lyù ñeå taêng toác ñoä vôùi cô sôû aûnh maãu lôùn.
Cải tiến thuật toán để tăng độ chính xác của quá trình nhận dạng.
Phát triển khả năng nhận dạng theo thời gian thực qua camera để có thể áp dụng vào thực tế.
TÀI LIỆU THAM KHẢO
Burcu Kepenekci, “Face reconition using Gabor wavelet transform”, The Midle East Technical University, September 2001.
T.S. Lee, “Image representation using 2-d Gabor wavelet”, IEEE Trans. On Pattern Analysis and Machine Intelligence, vol. 18, no.10, October 1996.
Javier R. Movellan, “Tutorial on Gabor Filters”.
David S. Bolme, “Elastic Bunch Graph Matching”, Colorado State University, Summer 2003.