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.
1
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
Có hai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên đặc trưng của các
phần tử trên khuôn mặt như biến đổi Gabor Wavelet và mạng Neural, SVM,…và nhận
dạng dựa trên xét tổng thể toàn khuôn mặt như phương pháp PCA, LDA, LFA [1][2].
Trong đó, PCA là phương pháp trích rút đặc trưng nhằm giảm số chiều của ảnh tuy đơn
giản nhưng mang lại hiệu quả tốt. Nhận dạng khuôn mặt dùng PCA kết hợp với mạng
nơron là phương pháp mang lại hiệu quả nhận dạng cao bởi nó phát huy được ưu điểm của
PCA và mạng nơron . Hệ thống hoạt động ổn định và có tính thích nghi cao khi dữ liệu
đầu vào thay đổi nhiều.
Trong bài báo này, các phương pháp dựa trên PCA và mạng nơron được nghiên cứu và
phát triển trong phần 2. Kết quả thực nghiệm được phân tích trong phần 3. Phần cuối cùng
trình bày kết luận và hướng phát triển của đề tài.
1. Một số ứng dụng của bài toán nhận dạng mặt người trong thực tế:
- Trong lĩnh vực hàng không: Hiện nay, nạn khủng bố máy bay đang diễn ra hết sức
phức tạp và tinh vi. Làm sao để có thể nhận diện được kẻ khủng bố/tội phạm quốc
gia/tội phạm quốc tế trà trộn chung với hành khách?, hoặc các tên tội phạm trong nước
có thể tìm cách trốn ra nước ngoài bằng đường hàng không, chúng sẽ trộn lẫn trong
hành khách, làm sao tại sân bay ta có thể phát hiện được. Ứng dụng này tương tự như
ứng dụng mà chúng tôi thực hiện trong luận văn này.
- Trong mỗi công ty hay một tổ chức, mỗi nhân viên có một quyền hạn nhất định trong
phạm vi làm việc của mình. Làm sao để xác định được sự truy cập quyền hạn của nhân
viên đó có đúng hay khô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
người đại diện. Song có rất nhiều vụ lừa đảo, giả danh,…Làm sao để biết được người
đang giao dịch với mình là thật hay giả?
- Khi lần theo dấu vết của một đối tượng tình nghi, làm sao để biết được đó có phải là
đối tượng mà ta đang tìm kiếm hay không?
- Ngăn chặn việc xuất/ nhập cảnh bất hợp pháp: Một số người không được quyền
xuất/nhập cảnh vào một nước. Nhưng họ cố tình khai gian giấy tờ để xuất/nhập cảnh
bất hợp pháp. Làm sao để ngăn chặn được sự gian lận này?
- Truy tìm đối tượng dựa theo mô tả: Công an đang truy tìm hung thủ cho một vụ án,
nhân chứng nhớ được khuôn mặt của hung thủ, làm sao xác định được thông tin về
3
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
hung thủ một cách nhanh nhất khi trong tay có một csdl ảnh rất lớn, có chứa ảnh của
hung thủ.
2. Những khó khăn đề ra trong bài toán nhận dạng mặt người:
- Những biến đổi quá lớn giữa các ảnh khuôn mặt của cùng một người cần nhận dạng
gồm trạng thái cảm xúc trên khuôn mặt, ánh sáng, các vị trí thay đổi của khuôn mặt
(nghiêng trái , phải, ngước lên, cuối xuống).
- Giới hạn về số ảnh cần thiết cho việc huấn luyện, tập các ảnh khuôn mặt huấn luyện
không thể bao quát được tất cả các biến đổi có thể có trên khuôn mặt của một người
cần nhận dạng trong thế giới thực.
III. XÂY DỰNG HỆ THỐNG NHẬN DIỆN KHUÔN MẶT:
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:
*Tính ma trận hiệp phương sai :
5
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ì ma trận C có kích thước quá lớn (NxN) nên để tìm eigenvector ui của C ta tìm
eigenvector và eigenvalue của ma trận L:
Ma trận L có kích thước MxM << NxN nên việc tính eigenvector sẽ nhanh chóng hơn.
*Gọi vi là eigenvector của L thì eigenvectơ của C là :
Sau khi tìm được các eigenface, các ảnh trong tập cơ sở dữ liệu sẽ được chiếu lên
không gian các eigenface này để tạo ra vector đặc tính. Vector này có kích thước nhỏ hơn
nhiều so với kích thước ảnh nhưng vẫn mang nhiều nhất thông tin chứa trong ảnh.
3. Nhận dạng khuôn mặt:
Những đặc trưng sau khi được trích rút sẽ đưa vào khối nhận dạng để phân lớp đối
tượng. Trong đề tài này ta dùng hai thuật toán: phương pháp đối sánh dùng khoảng cách
Euclides, Mahalanobis và dùng mạng nơron để nhận dạng các đối tượng.
B)
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
đó với trọng số là trọng số của kết nối giữa những
nơron đó
7
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
Sau mỗi lần lặp, giá trị mới của các trọng số được cập nhật theo giá trị của số gia. Quá
trình huấn luyện được tiếp tục đến khi lỗi nhỏ hơn một ngưỡng cho phép nào đó.
1. Giới thiệu về mạng nơron:
Có thể nói, hiện nay, không có một định nghĩa chính thức nào cho mạng neural. Tuy
nhiên phần lớn mọi người đều đồng tình rằng mạng neural là một mạng bao gồm rất nhiều
bộ xử lý đơn giản (gọi là các unit), mỗi unit có vùng nhớ riêng của mình. Các unit được
kết nối với nhau thông qua kênh thông tin (gọi là các connection), thường mang dữ liệu số
(không phải là các ký hiệu), và được mã hóa theo một cách nào đấy. Các unit chỉ xử lý
trên bộ dữ liệu của riêng nó và trên các đầu vào được đưa tới thông qua các liên kết. hạn
chế của các phép xử lý cục bộ này là nó thường ở trạng thái nghỉ trong suốt quá trình học.
Một số mạng neural là các mô hình mạng neural sinh học, một số thì không, nhưng
từ trước tới nay, thì tất cả các lĩnh vực của mạng neural đều được nghiên cứu xây dựng
xuất phát từ các yêu cầu xây dựng các hệ thống nhận tạo rất phức tạp, hay các phép xử lý
“thông minh”, và những gì tuơng tự như bộ não con người.
Hầu hết các mạng neural đều có một vài quy tắc học nào đó mà thông qua đó các
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ẽ
được tối thiểu hoá dựa vào các trọng số và các trọng ngưỡng trong mạng.
Trước tiên ta sẽ xem xét trường hợp mạng sử dụng hàm ngưỡng. Vấn đề cần bàn
ở đây chính là cách để khởi tạo các trọng số cho mạng như thế nào. Công việc này
thường được gọi là ‘credit assignment problem’. nếu một nút đầu ra tạo ra một đáp số
sai lệch thì chúng ta phải quyết định xem liệu nút ẩn nào phải chịu trách nhiệm cho sự
sai lệch đó, cũng chính là việc quyết định trọng số nào cần phải điều chỉnh và điều chỉnh
là bao nhiêu.
Để giải quyết vấn đề gán trọng số này, chúng ta hãy xem xét một mạng với các
hàm truyền phân biệt ,do đó giá trị tổng trọng của các nút xuất sẽ trở thành một hàm
phân biệt của các biến nhập và của trọng số và trọng ngưỡng. Nếu ta coi hàm lỗi, ví dụ
có dạng sai số trung bình bình phương, là một hàm riêng biệt cho các giá trị xuất của
mạng thì bản thân nó cũng chính là một hàm phân biệt của các trọng số.
Do đó chúng ta có thể tính toán được đạo hàm hàm lỗi theo các trọng số, và giá
trị đạo hàm này lại có thể dùng để làm cực tiểu hoá hàm lỗi bằng cách sử dụng phương
pháp giảm gradient (gradient descent) hoặc các phương pháp tối ưu hoá khác.
Giải thuật ước lượng đạo hàm hàm lỗi được biết đến với tên gọi lan truyền
ngược, nó tương đương với việc lan truyền ngược lỗi trong mạng. Kĩ thuật về lan
truyền ngược được biết đến rất rộng rãi và chi tiết qua các bài báo cũng như các cuốn
sách của Rumelhart, Hinton và Williams (1986). Tuy nhiên gần đây một số ý tưởng
9
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ươ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
10
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ương pháp khác như phương pháp ma trận Jacobian và Hessian mà chúng ta sẽ xem
xét ở phần sau.
Và cũng tương tự như vậy thì tại bước thứ hai, việc điều chỉnh trọng số sử dụng
các đạo hàm đã được tính trước đó có thể thực hiện với nhiều phương pháp tối ưu hoá
khác nhau, và rất nhiều trong số các phương pháp đó cho kết quả tốt hơn phương pháp
gradient descend.
3. Lan truyền ngược:
Hình 4: Lan truyền ngược
Bây giờ chúng ta sẽ áp dụng giải thuật lan truyền ngược cho bất kì một mạng
neural có cấu hình lan truyền tiến tuỳ ý, sử dụng các hàm truyền phi tuyến tuỳ ý, và cả
hàm lỗi có dạng tuỳ ý. Để minh hoạ chúng ta sẽ dùng một mạng có cấu trúc một tầng
nút ẩn dạng sigmoid và hàm lỗi là hàm tính theo sai số trung bình bình phương.
Trong các mạng lan truyền tiến nói chung mỗi nút đều tình tổng trọng hoá các
đầu vào của nó theo công thức:
a j = ∑ w ji z i
i
(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)
Với n là nhãn của từng mẫu.
Chúng ta cũng giả định rằng lỗi E n có thể được thể hiện như một hàm riêng của
các biến đầu ra, có nghĩa là :
En = En(yc, …, yc)
Mục đích của chúng ta ở đây chính là phải tìm ra một hàm nhằm để tính được
đạo hàm của hàm lỗi theo các trọng số và trọng ngưỡng của mạng.
Đối với từng mẫu, ta sẽ coi như đã cung cấp một vector nhập tương ứng là đầu
vàovà đã tính được các giá trị xuất của các nút ẩn cũng như nút xuất theo các công
thức (I.35), (I.36). Quá trình này thường được gọi là quá trình lan truyền tiến trong
mạng.
Bây giờ hãy xem xét việc tính đạo hàm của E n theo cá trọng số wji. Giá trị xuất của
các nút sẽ phụ thuộc vào từng mẫu nhập n nào. Tuy nhiên để dễ nhìn, ta quy ước sẽ bỏ
qua việc viết kí tự n trên các biến nhập và xuất. Trước tiên ta cần chú ý rằng E n phụ
12
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
thuộc vào trọng số wji thông qua tổng giá trị nhập ai của nút j. Do đó ta có thể đưa ra
công thức tính các đạo hàm riêng như sau:
∂E n ∂E n ∂a j
=
*
∂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.
Ta có:
13
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
δk ≡
∂E n
∂E n
= g ' ( ak )
∂a k
∂y k
(I.41)
Để tính ra (I.41) ta cần tìm ra công thức tính g’(a) và
∂E n
∂y
.
Để tính được δ cho cá nút ẩn, ta cần sử dụng công thức tính đạo hàm riêng:
δ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
(I.43)
Công thức này nói lên rằng giá trị của δ đối với một nút ẩn có thể đựơc tính từ
việc lan truyền ngược các giá trị δ của các nút ẩn cao hơn trong mạng, như được minh
hoạ trong hình 5. Bởi vì chúng ta đã biết đựơc các giá trị δ của các nút xuất nên ta có
thể áp dụng (I.43) một cách đệ quy nhằm tính ra các giá trị δ cho tất cả các nút ẩn
trong mạng, mà không quan tâm đến cấu hình của nó.
Chúng ta có thể tổng kết lại giải thuật lan truyền ngược nhằm tính đạo hàm hàm lỗi E n
theo các trọng số trong 4 bước:
Đưa vector nhập xn vào mạng và lan truyền tiến nó trong mạng sử dụng và
để tìm ra giá trị xuất cho tất cả các nút ẩn cũng như nút xuất.
Tính δ cho tất cả các nút xuất sử dụng công thức
Lan truyền ngựơc các d bằng công thức để thu được δ cho mỗi nút ẩn trong
mạng.
áp dụng
∂E n
= δ j zi
∂w ji
để 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
như vậy cần phải thực hiện tìm biểu thức hàm lỗi, xác định công thức tính đạo hàm và
sau đó tính toán chúng theo giải thuật lan truyền ngược, mỗi công việc đó sẽ đòi hỏi
O(w) thao tác. Như vậy toàn bộ quá trình tính toán tất cả các đạo hàm sẽ tỉ lệ với
O(w2). Giải thật lan truyền ngược cho phép các đạo hàm được tính trong O(w) thao tác.
Điều này cũng dẫn đến rằng cả hai pha lan truyền ngược và lan truyền tiến đều cần
O(w) thao tác, việc tính đạo hàm theo công thức (I.43) cũng cần O(w) thao tác.Như vậy
giải thuật lan truyền ngược đã làm giảm độ phức tạp tính toán từ O(w2) đến O(w) đối
với mỗi vector nhập. Vì quá trình luyện mạng, dù có sử dụng lan truyền ngược, có thể
cần rất nhiều thời gian, nên việc đạt được hiệu quả như vậy là hết sức quan trọng.Với
tổng số N mẫu luyện, số lượng các bước tính toán để đánh giá hàm lỗi trên toàn bộ tập
dữ liệu sẽ là N lần bước tính toán của một mẫu.
5. Quá trình huấn luyện mạng :
Quá trình huấn luyện mạng chính là quá trình huấn luyện các mẫu học Xs={x1, x2, …,xn}
để giá trị ra cuối cùng Ts={t1, t2, …,tn} như ta mong muốn.
+ Quá trình truyền thẳng :
Giá trị đầu ra tại nơron j của một lớp bất kì :
Trong đó Wji gọi là trong số liên kết từ đầu vào thứ i đến nơron j, xji là giá trị đầu
vào thứ i đến nơron j, m là số phần từ của lớp trước đó.
+ Quá trình lan truyền ngược các sai số :
Tại mỗi nơron đầu ra k ta tính lỗi giá trị
Với tk là giá trị đầu ra mong muốn thứ k.
Đối với mỗi nơron trong lớp ẩn δh:
16
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 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
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
nhau, những trạng thái khác nhau như cười hoặc không cười, đeo kính hoặc không, nheo
mắt, miệng mở hoặc đóng…
MATLAB được sử dụng để cài đặt hệ thống vì nó được tích hợp một môi trường tính toán
kỹ thuật phù hợp cho các thuật toán được thiết kế ở đây.
Kết quả thực nghiệm Cơ sở dữ liệu ảnh ORL gồm 10 ảnh cho mỗi người, chương trình sử
dụng 5 ảnh đầu tiên cho việc huấn luyện mạng và 5 ảnh còn lại để kiểm thử. Mỗi ảnh
huấn luyện sẽ được bổ sung một ảnh ở dạng ảnh gương của nó để tăng thêm sự đa
dạng cho tập ảnh huấn luyện.
Các tham số huấn luyện như số lượng các vector đặc trưng được chọn ở mỗi phương
pháp, tỉ lệ học của mạng nơron, số lượng các nơron ẩn của mạng là những tham số quan
trọng ảnh hưởng lớn đến thời gian thực hiện
cũng như độ chính xác của hệ thống. Hệ thống đã được kiểm thử nhiều lần để chọn ra bộ
tham số tối ưu, giúp hệ thống đạt được hiệu quả về thời gian thực hiện và độ chính
xác cao nhất có thể.
Với những tham số học đã tính, nếu chỉ sử dụng phương pháp trích chọn đặc trưng
dựa trên những đặc điểm mang tính thống kê, chương trình chỉ đạt độ chính xác khoảng
90%. Trong khi đó, nếu kết hợp các đặc trưng mang tính thống kê với những đặc trưng
mang tính hình học, chương trình đã đạt độ chính xác trên 95%.
Đặc biệt, phương pháp xử lý hình thái đã bổ sung cho phương pháp trích chọn đặc
trưng mang tính chất thống kê, chương trình đã nhận dạng rất tốt đối với những ảnh có
nhiễu.
Ảnh có nhiễu ở đây là những ảnh đã được chỉnh sửa bằng tay với những loại nhiễu
như nhiễu nhị phân, che khuất hoặc xóa bớt một số bộ phận của khuôn mặt (hình 6).
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
Bộ môn: Tính toán mềm
GV: Nguyễn Phương Nga
- Tập 2: Ứng với 5 cặp ảnh ta lần lượt lấy 1 ảnh đưa vào tập Training và 1 ảnh đưa vào tập
Testing ( Train 5-5 và Test 5-5).Như vậy tập Testing sẽ có các bức ảnh gần giống với tập
Training.
- Tập 3: Lấy 7 ảnh đưa vào tập Training và 3 ảnh còn lại đưa vào tập Testing (Train 7-3 và
Test 7-3 ).
2. Kết quả thực nghiệm:
2.1. Kết quả kiểm tra khi thay đổi các thông số mạng ( tập 3-7)
Bảng 1. Hiệu suất nhận dạng khi thay đổi số nơron trong lớp ẩn
Từ Bảng 1, ta thấy số nơron trong lớp ẩn càng nhiều thì khả năng nhận dạng càng
chính xác. Tuy nhiên khi số nơron trong lớp ẩn đạt đến ngưỡng 110 thì tỉ lệ nhận dạng sẽ
giảm. Khi dữ liệu đầu vào không đổi, số nơron trong lớp ẩn quá nhiều cũng gây ta khó
khăn cho việc học của mạng (cấu trúc phức tạp, dữ liệu ít, ...) làm cho tỉ lệ nhận dạng thấp.
20
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
Theo Hình 4, tốc độ học cũng ảnh hưởng hiệu suất nhận dạng. Điều này là phù hợp
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.
Phương pháp PCA trích chọn những đặc trưng mang tính thống kê, kết hợp với phương
pháp biến đổi hình thái ảnh cung cấp những đặc trưng mang tính hình học của khuôn mặt
giúp hệ thống có được những thông tin đặc trưng tương đối đầy đủ của mỗi người.
Mạng nơron với thuật toán học lan truyền ngược đã thực hiện khá tốt vai trò bộ phân
loại của hệ thống.
22
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ặc dù hệ thống đã đạt được độ chính xác khá cao, tuy nhiên vẫn còn một tỉ lệ nhỏ
chưa chính xác do hệ thống chưa đánh giá được toàn bộ những đặc trưng của mặt
người.
Trong những nghiên cứu tiếp theo nhằm phát triển hoàn thiện hệ thống hơn, việc nhận
dạng có thể kết hợp thêm các phương pháp phân tích khác như nhận dạng mắt, nhận
dạng miệng hay nhận dạng mũi là những đặc trưng quan trọng của khuôn mặt.
Bài báo đã xây dựng hệ thống nhận dạng khuôn mặt dùng PCA kết hợp với mạng
nơron với các thông số : tốc độ học lr=0.01, số nơron trong lớp ẩn là 110,
giá trị
mse=1e -10, hàm truyền ở cả hai lớp là log-sig. Với các thông số này, mạng nơron có hiệu
suất nhận dạng cao và ổn định hơn hẳn phương pháp đối sánh. Một ưu điểm nữa có thể
thấy qua các kết quả đó là dù lượng thông tin vào mạng ít ( 60 eigenfaces so với 120
eigenfaces) nhưng kết quả nhận dạng vẫn cao hơn mạng đối sánh ( 84% so với 80%). Để
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, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @DOANMONHOC2_OpeningFcn, ...
'gui_OutputFcn', @DOANMONHOC2_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
function DOANMONHOC2_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
24
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
guidata(hObject, handles);
clc;
% --- 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