Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
I. GIỚI THIỆU:
Hiện nay, cùng với sự phát triển như vũ bão của công nghệ thông tin nói chung và sự
phát triển trong lĩnh vực thị giác máy nói riêng, các hệ thống phát hiện và nhận dạng mặt
người đang ngày càng có nhiều ứng dụng trong thực tế.
Đặc biệt sau thảm họa ngày 11/9, các chính phủ trên toàn thế giới đã bắt đầu chú ý hơn
tới các mức an ninh ở sân bay và biên giới. Ngân sách hằng năm của các nước đã tăng lên
nhiều cho các kỹ thuật hiện đại để xác định, nhận dạng và lần theo các đối tượng nghi
vấn. Nhu cầu tăng lên trong các ứng dụng này đã giúp các nhà khoa học có thêm quỹ
để phát triển các dự án nghiên cứu. Mặc dù việc nhận dạng mặt người không thể chính xác
được như các phương pháp nhận dạng khác như nhận dạng vân tay, nhưng nó vẫn nhận
được sự quan tâm lớn của các nhà nghiên cứu trong lĩnh vực thị giác máy. Lý do chủ yếu
là trên thực tế, mặt người vẫn là cách truyền thống để con người nhận ra nhau.
Nhận dạng khuôn mặt hiện nay có rất nhiều hướng nghiên cứu nhằm nâng cao hiệu suất
nhận dạng và tối ưu hóa hệ thống. Bài báo này nghiên cứu và phát triển hai hệ thống nhận
dạng khuôn mặt đơn giản theo hai phương pháp đối sánh và mạng nơron cùng dựa trên
đặc trưng PCA.
Hệ thống được kiểm tra trên cơ sở dữ liệu ORL của AT&T. Kết quả thực nghiệm được
phân tích để đánh giá hiệu suất nhận dạng và tính ổn định của hai hệ thống nhận dạng
trong các điều kiện kiểm thử khác nhau. Kết quả cũng chỉ ra hiệu suất vượt trội của mạng
nơron so với phương pháp đối sánh.
II. ĐẶT VẤN ĐỀ:
Nhận dạng khuôn mặt người là một công nghệ được ứng dụng rộng rãi trong đời sống
hằng ngày của con người như các hệ thống giám sát, quản lý vào ra, tìm kiếm thông tin
một người nổi tiếng,…Có rất nhiều phương pháp nhận dạng khuôn mặt để nâng cao
hiệu suất tuy nhiên dù ít hay nhiều những phương pháp này đang vấp phải những thử thách
về độ sáng, hướng nghiêng, kích thước ảnh, hay ảnh hưởng của tham số môi trường.
- Bảo vệ trẻ em từ nhà trẻ khỏi bọn bắt cóc: Qui định chỉ người giữ trẻ mới được đưa
các trẻ từ lớp học trao cho bố mẹ chúng. Nhưng trong xã hội có rất nhiều kẻ xấu giả
danh nhân viên giữ trẻ hay bố mẹ các em để bắt cóc. Bằng cách nào để xác định được có
phải là nhân viên hay bố mẹ các bé để ngăn ngừa hành vi xấu này?
2
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
- Nhận dạng khuôn mặt kèm với thẻ truy cập: Ngày nay với sự phát triển như vũ bão
của kỹ thuật và công nghệ, trên nhiều nước tiên tiến, mọi người đều sử dụng thẻ tín
dụng để trao đổi, mua bán, giao dịch. Điều này rất thuận tiện nhưng bên cạnh đó cũng
rất nguy hiểm khi bị mất thẻ và người nhặt được thẻ biết được mật khẩu. Cách giải
quyết tốt là sử dụng song mật khẩu. Nghĩa là: để rút được tiền, người dùng cần thực
hiện các thao tác:
+ Đưa thẻ vào
+Nhập mật khẩu
+Nếu đúng, đưa tiếp khuôn mặt vào
+Nếu hợp lệ thì cho rút tiền
+Nếu không hợp lệ thì không cho rút.
Hệ thống trên sử dụng khuôn mặt như là mật khẩu thứ hai. Nếu hệ thống nhận dạng
chính xác thì đây là một cách rất tốt để tránh sự truy cập thẻ bất hợp pháp của kẻ xấu.
- Trong lĩnh vực kinh doanh thương mại điện tử: Với sự phát triển của khoa học công
nghệ, việc kinh doanh trên mạng đang trở nên phổ biến. Hai bên đối tác không cần gặp
mặt trực tiếp (face to face) mà chỉ cần trao đổi trên mạng thông qua hình ảnh của
MÔ HÌNH HỆ THỐNG:
Hình 1: Mô tả các bước nhận dạng khuôn mặt cơ bản trong một hệ thống.
4
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
1. Tiền xử lý:
Quá trình tiền xử lý đối với khuôn mặt nhằm nâng cao chất lượng ảnh, chuẩn hóa dữ
liệu, kích thước ảnh. Các ảnh trong nghiên cứu này là có chất lượng tương đối tốt nên
ta không cần dùng các thuật toán nâng cao chất lượng ảnh mà ta chỉ cần chuẩn hóa
ảnh
(normalize image) .Việc chuẩn hóa này khiến độ lệch giữa 2 điểm ảnh được giảm xuống
làm quá trình rút đặc trưng thêm chính xác.
2. Trích rút đặc trưng:
Trích rút đặc trưng là kỹ thuật sử dụng các thuật toán để lấy ra những thông tin mang
những đặc điểm riêng biệt của một người. Trong bài báo này ta sử dụng phương pháp
PCA được thực hiện theo các bước :
*Tạo một tập S gồm M ảnh (ảnh học). Mỗi ảnh có kích thước RxC. Mỗi ảnh được chuyển
thành một vector N = RxC chiều.
*Tính ảnh trung bình ψ:
*Tính sai lệch của các ảnh đầu vào so với trung bình:
BỘ PHÂN LOẠI - MẠNG NƠRON:
6
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
Phần trên đã giới thiệu phương pháp trích chọn đặc trưng của ảnh. Nhiệm vụ tiếp theo
của hệ thống nhận dạng là dựa trên những đặc trưng đã được trích chọn đó, học được
cách phân loại ảnh tương ứng với từng người.
Trong các bộ phân loại hiện nay, nổi trội lên và được quan tâm nhiều đó là mạng nơron
nhân tạo. Các mạng nơron nhân tạo có thể được coi như những “mô hình tính toán” với
những đặc tính như khả năng thích nghi hay khả năng học, tổng quát hóa, phân cụm
hay tổ chức dữ liệu.
Trong bài báo này, thuật toán học lan truyền ngược được sử dụng vì thuật toán đã tỏ ra khá
hiệu quả đối với bài toán nhận dạng mặt người. Khi một mẫu học được đưa vào, các giá
trị kích hoạt sẽ được lan truyền đến các nơron ra, tín hiệu ra thực sự của mạng được so
sánh với tín hiệu ra mong muốn. Sự khác biệt giữa các tín hiệu này gọi là lỗi eo với mỗi
nơron ra o. Mục đích là phải làm cho eo bằng 0.
Theo quy tắc delta, để giảm lỗi, các trọng số được chỉnh sửa theo
Để có thể chỉnh sửa được trọng số từ nơron vào đến các nơron ẩn, cần tiếp tục áp
dụng quy tắc delta. Mỗi nơron ẩn h nhận một δ từ mỗi nơron ra o bằng δ của nơron ra
trọng số của các liên két được điều chỉnh dựa trên dữ liệu. Nói cách khác, các mạng neural
“học” và các ví dụ và dựa trên các dữ liệu đó thì nó có khả năng tổng quát tri thức và đưa
ra “nhận thức của mình”.
Mạng neural là mô hình mạng ứng dụng các phương pháp xử lý song song và các
thành phần mạng xử lý hoàn toàn đợc lập với nhau. Một vài nguời xem khả năng xử lý
song song số lượng lớn và tính liên kết cao của mạng neural là các tính chất đặc trưugn
của nó. Tuy nhiên với những yêu cầu như thế thì lại không có những mô hình đơn giản, ví
dụ như mô hình hồi quy tuyến tính đơn giản, một mô hình được ứng dụng rất rộng rãi của
mạng neural.
8
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
Mạng neural có thể được áp dụng trong mọi trường hợp khi tồn tại một mối liên hệ
giữa các biến độc lập (inputs) và các biến phụ thuộc (outputs), thậm chí là ngay cả khi mối
quan hệ đó phứuc tạp. Một số lĩnh vực mà mạng neural đã được áp dụng thành công như
dự đoán triệu chứng y học, dự đoán thị trường chứng khoán, đánh giá độ tin cậy tài chính,
điều chỉnh điều kiện của cơ cấu máy móc.
2. Thuật toán lan truyền ngược:
Bây giờ chúng ta sẽ tập trung nghiên cứu một kĩ thuật rất phổ biến của mạng
neural nhiều tầng. Chúng ta sẽ xem xét cách mà một mạng học một ánh xạ từ một tập
dữ liệu cho trước.
Chúng ta đã biết việc học dựa trên định nghĩa của hàm lỗi, hàm lỗi này sau đó sẽ
tương tự cũng được một số nhà ngiên cứu phát triển bao gồm Werbos (1974) và Parker
(1985).
Cần nói thêm rằng giải thuật lan truyền ngược được sử dụng trong mạng neural
có ý nghĩa rất lớn. Ví dụ như, kiến trúc của mạng perceptron nhiều tầng cũng thường
được gọi là mạng lan truyền ngược. Khái niệm lan truyền ngược cũng thường được sử
dụng để mô tả quá trình huấn luyện của mạng perceptron nhiều tầng sử dụng phương
pháp gradient descent áp dụng trên hàm lỗi dạng sai số trung bình bình phương. Để
làm rõ hơn về thuật ngữ này chúng ta cần xem xét quá trình luyện mạng một cách kĩ
càng. Phần lớn các giải thuật luyện mạng đều liên quan đến một thủ tục được lặp đi lặp
lại nhằm làm tối thiểu hàm lỗi, bằng cách điều chỉnh trọng số trong một chuỗi các bước.
Tại mối bước như vậy, chúng ta có thể chia thành hai bước phân biệt.
Tại bước thứ nhất, cần phải tính đạo hàm hàm lỗi theo các trọng số. Chúng ta đã
biết rằng một đóng góp rất quan trọng của kĩ thuật lan truyền ngược đó là việc cung
cấp một phương pháp hết sức hiệu quả về mặt tính toán trong việc đánh giá các đạo
hàm. Vì tại bước này lỗi sẽ được lan truyền ngược trở lại mạng nên chúng ta sẽ sử dụng
khái niệm lan truyền ngược để đặc trưng riêng cho việc đánh giá đạo hàm này.
Tại bước thứ hai, các đạo hàm sẽ được sử dụng trong việc tính toán sự điều chỉnh
đối với trọng số. Và kĩ thuật đơn giản nhất được sử dụng ở đây là kĩ thuật gradient
descent, kĩ thuật này được Rumelhart et al. (1986) đưa ra lần đầu tiên.
Một điều hết sức quan trọng là phải nhận thức được rằng hai bước này là phân
biệt với nhau. Do đó, quá trình xử lý đầu tiên , được biết đến là quá trình lan truyền
ngược các lỗi vào trong mạng để đánh giá đạo hàm, có thể được áp dụng đối với rất
nhiều laọi mạng khác nhau chứ không chỉ đối với riêng mạng perceptron nhiều tầng.
Nó cũng có thể được áp dụng với các loại hàm lỗi khác chứ không chỉ là hàm tính
sai số bình phương cực tiểu, và để đánh giá các đạo hàm khác này có thể sử dụng các
(I.35)
11
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
Với zi là giá trị nhập hoặc là giá trị xuất của một nút có cung kết nối với nút j và
wji chính là trọng số của cung kết nối đó. Giá trị tổng này được tính trên tất cả các nút
có kết nối trực tiếp với nút j. Chúng ta biết rằng, trọng ngưỡng của nút cũng được đưa
vào trong tổng bằng cách tạo ra thêm một giá trị nhập cố định = 1. Tổng trong (I.35) lại
được biến đổi thông qua một hàm truyền phi tuyến g(.) để đưa ra được gía trị xuất z i
của nút j theo công thức:
zi = g ( a j )
(I.36)
Bây giờ chúng ta cần phải xác định giá trị của các trọng số trong mạng thông qua
việc tối thiểu hoá hàm lỗi.
ở đây ta sẽ coi cá hàm lỗi được viết như một tổng của tất cả các lỗi tại mỗi mẫu
riêng biệt.Tổng này sẽ được tính trên tất cả các mẫu của tập huấn luyện
E = ∑En
n
(I.37)
∂w ji ∂a j ∂w ji
(I.38)
Từ (I.35) ta có:
∂a j
∂w ji
= zi
(I.39)
Như vậy suy ra:
∂E n
= δ j zi
∂w ji
Trong đó
(I.40)
∂E n
δj ≡
∂a j
Từ công thức (I.40) ta thấy rằng để tính được đạo hàm chúng ta chỉ cần tính giá
trị cho mỗi nút ẩn và nút xuất trong mạng và sau đó áp dụng công thức (I.40).
Với các nút xuất thì việc tính δk là hết sức đơn giản.
δj ≡
∂E n
∂E n ∂a k
=∑
∂a j
k ∂a k ∂a j
(I.42)
Trong đó giá trị tổng được tính trên các nút k mà nút j kết nối đến. Việc sắp xếp
các nút cũng như các trọng số được minh hoạ trong Hình 6.
Hình 5: Minh họa việc tính δj cho việc tính nút ẩn j
Chú ý rằng các nút có nhãn k này có thể bao gồm cả nút nhập và nút xuất.
Bây giờ chúng ta có công thức lan truyền ngược như sau:
14
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
δ j ≡ g ' ( a j ) ∑ wkj δ k
k
để tính các đạo hàm.
Đạo hàm của lỗi tổng E có thể thu được bằng cách lặp đi lặp lại các bước trên đối
với trừng mẫu trong tập huấn luyện và sau đó tính tổng trên tất cả các lỗi.
Trong quá trình tính đạo hàm trên chúng ta đã giả định rằng mỗi nút ẩn cũng
như xuất đếu có chung một hàm truyền g(.). Tuy nhiên điều này hoàn toàn có thể tính
được với trường hợp mỗi nút khác nhau đếu có các hàm truyền riêng, đơn giản bằng
cách đánh dấu dạng của hàm g(.) ứng với từng nút.
4. Hiệu quả của lan truyền ngược :
Một trong những đặc tính quan trọng nhất của lan truyền ngược chính là ở khả
năng tính toàn hiệu quả của nó.
Đặt w là tổng số các trọng số và trọng ngưỡng. Do đó một phép tính hàm lỗi (cho
một mẫu nhập nào đó) cần O(w) thao tác với w đủ lớn. Điều này cho phép số lượng
trọng số có thể lớn hơn số lượng nút, trừ những mạng có quá ít kết nối. Do vậy, hiệu
quả của việc tính toán trong lan truyền ngược sẽ liên quan đến việc tính giá trị của tổng
trong công thức (I.35), còn việc tính toán các hàm truyền thì tổng phí khá nhỏ. Mỗi lượt
15
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
tính tổng trong (I.35) cần đến một phép nhân và một phép cộng, dẫn đến chi phí tính
toán toàn bộ sẽ bằng O(w).
Với tất cả w trọng số thì sẽ có w đạo hàm cần tính toán. Với mỗi lần tính đạo hàm
GV: Nguyễn Phương Nga
Với outputs là tập hợp cái nơron ở lớp ra, Wjk là trọng số liên kết từ k nơron lớp ra
đến nơron j của lớp ẩn.
Quá trình cập nhật lại trọng số :
Nếu gọi η được gọi là hệ số học thì
Sau khi cập nhật những trọng số này, các mẫu trong tập Xs lại tiếp tục đưa vào
mạng, quá trình này sẽ diễn ra khi giá trị lỗi E < ε cho trước :
Với outputs là tập hợp cái nơron ở lớp ra, tk là giá trị ra mong muốn của nơron k
cho mẫu huấn luyện d,Ok là giá trị ra thực của nơron k.
6. Cấu hình mạng:
Ta khởi tạo mạng nơron ban đầu với các thông số như sau : Đầu vào mạng là các vectơ
đặc trưng được trích rút bằng thuật toán PCA, 120 nơron trong lớp ẩn, 40 nơron ở
lớp đầu ra, sử dụng hàm truyền log-sig ở các nơron của cả hai lớp mạng, chọn tốc độ học
lr = 0.01, dùng phương pháp độ dốc gradient để tính lỗi, chọn giá trị lỗi mse =1e-10.
Ngoài ra các trọng số và hệ số phân cực được khởi tạo ngẫu nhiên trước khi huấn luyện
mạng.
IV. CÀI ĐẶT VÀ KIỂM THỬ:
Thiết kế hệ thống Bộ ảnh dữ liệu dùng để kiểm thử hệ thống được lấy từ cơ sở dữ liệu
ORL (Olivetti Research Laboratory, Surrey University). Các ảnh ở đây tương đối đa
dạng, chúng có thể được chụp ở những thời điểm khác nhau, với những góc nghiêng khác
17
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
18
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
V.KẾ
T QUẢ VÀ
PHÂN TÍCH:
1. Cơ sở dữ liệu:
Cơ sở dữ liệu cho bài toán nhận dạng được phân thành tập huấn luyện và kiểm tra từ tập
ảnh ORL ( Olivetti Research Laboratory ) của AT&T [10]. Cơ sở dữ liệu này gồm
có 400 ảnh của 40 người, mỗi người có 10 hình ảnh khác nhau. Đối với một đối tượng,
hình ảnh được chụp tại các thời điểm khác nhau, thay đổi ánh sáng, biểu cảm trên khuôn
mặt (vui, buồn, …) và các chi tiết trên khuôn mặt (kính / không đeo kính).Với bộ ảnh này
trong 10 ảnh sẽ có 5 tư thế khác nhau tức là 2 trong 10 ảnh sẽ gần giống nhau và có 5 cặp
như vậy. Từ đặc điểm này chúng tôi phân chia ra các tập dữ liệu dùng để huấn luyện và
kiểm tra như sau:
- Tập 1: Từ 10 ảnh của 1 người, lấy 3 ảnh đưa vào tập Training và 7 ảnh đưa vào tập
Testing sao cho ảnh trong tập Test chứa tư thế chụp chưa từng xuất hiện trong tập Train (
Train 3-7 và Test 3-7 ).
19
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
với công thức (11). Tốc độ học càng nhỏ thì quá trình huấn luyện càng lâu, mạng càng khó
hội tụ, đòi hỏi bộ nhớ lớn. Hiệu suất của mạng không tỉ lệ nghịch với tốc độ học mà ta chỉ
có thể dùng phương pháp thử sai để lựa chọn thông số phù hợp với mạng.
Từ hai nhận xét trên, ta có thể chọn các thông số để tối ưu cho mạng như sau : Số
nơron trong lớp ẩn là 110, tốc độ học lr = 0.01.
2.2. Kết quả so sánh hiệu suất nhận dạng giữa hai phương pháp đối sánh và mạng
nơron ( tập 3-7)
21
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
Từ bảng 2 và hình 5, ta thấy rõ ràng hiệu suất nhận của mạng nơron tốt hơn hẳn so
với việc dùng phương pháp đối sánh trong cùng tập cơ sở dữ liệu. Khi dữ liệu đầu vào
thay
đổi thì hiệu suất nhận dạng mạng nơron cũng ổn định hơn nhiều so với phương pháp đối
sánh. Điều này cho thấy mạng nơron rất linh hoạt, mềm dẻo khi xử lý các dữ liệu đầu vào
khác nhau.
VI. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI:
Bằng cách kết hợp các phương pháp phân tích thống kê và phương pháp biến đổi hình
thái, hệ thống đã đạt được một phương pháp khá hiệu quả đối với bài toán nhận dạng
mặt người.
thu được kết quả nhận dạng với độ chính xác cao hơn cần tối ưu hơn nữa cấu trúc và các
thông số mạng, điều này đòi hỏi thời gian thử nghiệm và huấn luyện mạng lâu hơn.
Mạng nơron là mạng có tính linh hoạt nên ta có thể áp dụng nó không chỉ cho nhận dạng
khuôn mặt, mà còn ứng dụng cho nhận dạng vân tay, điệu bộ mà chỉ cần thay đổi dữ liệu
đầu vào với giá trị đầu ra mong muốn. Đây chính là một ưu thế của mạng nơron mà những
thuật toán khó có được.
Tuy nhiên kết quả nhận dạng ta thu được nằm trong những điều kiện cụ thể. Việc ứng
dụng hệ thống vào thực tế sẽ gặp những vấn đề thách thức hiện nay như các thông số
của môi trường, chất lượng ảnh thu được…. Đây là một hướng phát triển của đề tài để đưa
hệ thống vào các ứng dụng thực tế như quản lý nhân viên, kiểm soát ra vào. Ngoài ra, có
thể ‘‘nhúng’’ vào các hệ thống vi xử lý, FPGA DSP…để mở rộng phạm vi ứng dụng.
VI.CHƯƠNG TRÌNH NHẬN DẠNG MẶT NGƯỜI
Chương trình “Nhận dạng mặt người trên Matlab” là chương trình được thiết kế trên giao
diện người dùng GUI của phần mền Matlab 7.0. Rất đơn giản và đễ dàng sử dụng.
23
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
CODE CHƯƠNG TRÌNH:
function varargout = DOANMONHOC2(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',
mfilename, ...
% --- Outputs from this function are returned to the command line.
function varargout = DOANMONHOC2_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function Search_Callback(hObject, eventdata, handles)
load TestImage;
axes(handles.anhtimduoc);
TrainPath='train';
T = taoCSDL(TrainPath);
[m, A, Eigenfaces] = taoEF(T);
OutputName = nhandien(TestImage, m, A, Eigenfaces);
anhtim = strcat(TrainPath,'\',OutputName);
anhtim = imread(anhtim);
imshow(anhtim);
title('Anh tim duoc');
str = strcat('Ten anh :',OutputName);
set(handles.tenanh,'String',str);
function Browse_Callback(hObject, eventdata, handles)
[file_name file_path] = uigetfile ('*.jpg','Chon anh kiem tra ','test\2.jpg');
25
Nhóm 21: Nhận dạng mặt người sử dụng mạng nơron