BÀI TẬP MÔN HỌC
PHÂN TÍCH ẢNH VÀ THỊ GIÁC MÁY TÍNH
NHẬN DẠNG MẶT NGƯỜI BẰNG MẠNG
NORON VÀ PHƯƠNG PHÁP PCA
2
MỤC LỤC
MỤC LỤC ......................................................................................................... 3
MỞ ĐẦU ........................................................................................................... 4
1. HỆ THỐNG NHẬN DẠNG KHUÔN MẶT ................................................ 5
2. PHƯƠNG PHÁP TRÍCH CHỌN ĐẶC TRƯNG PCA................................. 6
3. MẠNG NORON NHÂN TẠO ..................................................................... 8
3.1.
MẠNG NORON TRUYỀN THẲNG.................................................. 8
3.2.
THUẬT TOÁN LAN TRUYỀN NGƯỢC SAI SỐ ........................... 10
4. NHẬN DẠNG KHUÔN MẶT ................................................................... 12
5. CHƯƠNG TRÌNH TRÊN MATLAB......................................................... 14
6. KẾT LUẬN ............................................................................................... 19
3
MỞ ĐẦU
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
Phương pháp phân tích thành phần chính (PCA - Principal Component
Analysis) 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 noron 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 về độ sáng, hướng
nghiêng, kích thước ảnh, hay ảnh hưởng của tham số môi trường.
4
1. HỆ THỐNG NHẬN DẠNG KHUÔN MẶT
Các bước nhận dạng khuôn mặt cơ bản trong một hệ thống
Hình 1: Hệ thống nhận dạng khuôn mặt cơ bản
Ảnh cần nhận dạng: Ảnh mặt người cần nhận dạng
Tiền xử lý: Đây là quá trình xử lý đối với ảnh khuôn mặt. Mục đích của
quá trình này nhằm nâng cao chất lượng ảnh, chuẩn hóa dữ liệu, kích thước ảnh
Trích chọn đặ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 tính đặc trưng của đối tượng cần nhận dạng. Trong nội dung sẽ
trình bày phương pháp phân tích thành phần chính PCA. Đây là một phương
pháp có nhiều ưu điểm, phương pháp này giúp giảm chiều dữ liệu; thay vì giữ
lại các trục tọa độ của không gian cũ, PCA xây dựng lên một không gian mới ít
chiều hơn, nhưng có khả năng biểu diễn dữ liệu tốt tương đương không gian cũ.
Bộ phân loại: Các đặc trưng của các đối tượng sau khi được trích chọn sẽ
được đưa vào bộ phân loại (nhận dạng) để so sánh với các dữ liệu trong Cơ sở
dữ liệu khuôn mặt huấn luyện, từ đó nhận dạng đối tượng. Có nhiều phương
pháp khác nhau cho nhận dạng khuôn mặt. Trong nội dung trình bày phương
pháp nhận dạng bằng mạng noron.
5
2. PHƯƠNG PHÁP TRÍCH CHỌN ĐẶC TRƯNG PCA
Ý tưởng chính của phương pháp phân tích thành phần chính (PCA–
Principal Component Analysis) là tìm các vector biểu diễn những sự phân bố
đặc trưng nhất của các ảnh trong toàn bộ không gian ảnh. Những vector này
hình thành nên một không gian con của các ảnh được gọi là “không gian khuôn
mặt” (eigenface)
Bắt đầu
Chuyển các
ảnh thành các
vector cột
Đọc các
ảnh từ tập
huấn luyện
Tính trị riêng và
vector riêng của ma
trận hiệp phương sai
Chọn số đặc trưng để
tạo không gian khuôn
mặt (Eigenface)
Tính ma trận
hiệp phương sai
Tính vector
trung bình
Tính sai lệch của mỗi
vector đối với vector
trung bình
Biểu diễn các ảnh của tập
huấn luyện trong không
gian khuôn mặt (eigenface)
Kết thúc
Hình 2: Lưu đồ thuật toán cho trích chọn đặc trưng bằng PCA
Đầu tiên, các ảnh trong tập huấn luyện phải cùng kích thước, khuôn mặt
trong các ảnh phải chính diện
- Giả sử có tập ảnh mẫu S gồm m ảnh. Mỗi ảnh có kích thước r x c. Mỗi
ảnh được chuyển thành một vector cột Γi có n= r x c chiều
S = [ Γ1 , Γ 2 ,..., Γ m ]
- Tính vector trung bình:
ψ=
1 m
∑ Γi
m i =1
- Tính sai lệch của các ảnh đầu vào so với ảnh trung bình
Φ=
Γi − Ψ
i
- Tính ma trận hiệp phương sai
6
C = A.AT với A = [Φ1 , Φ 2 ,..., Φ m ]
- Tính trị riêng và vector riêng của ma trận hiệp phương sai
Do ma trận C có kích thước quá lớn (n x n) nên để tìm vector riêng và trị
riêng của C ta tìm vector riêng và trị riêng của ma trận L:
L = AT .A
Ma trận L sẽ có kích thước: m x m. Giả sử vL,uL và vector riêng và trị
riêng của ma trận L , khi đó ma trận vector riêng vC của ma trận C sẽ là:
vC = A.vL
- Ma trận vector riêng vC có kích thước nxn. Ta có thể bỏ đi k vector
riêng ứng với các trị riêng nhỏ nhất và giữ lại n-k vector riêng ứng với các trị
riêng lớn hơn. Khi đó ma trận vC sẽ có kích thước n x (n-k)
- Tập hợp các vector cột trong ma trận vC tạo ra một eigenface (Không
gian khuôn mặt).
- Chiếu các vector ảnh trong tập huấn luyện lên không gian mới này ta
được các vector đặc tính tương ứng. Các 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 đặc trưng của ảnh
- Ma trận các vector đặc tính:
P = vCT .A
Mỗi cột trong ma trận P là một vector đặc tính tương ứng với mỗi ảnh
trong tập mẫu
Mỗi cột trong ma trận P sẽ là một vector đầu vào của mạng noron để huấn
luyện mạng
7
3. MẠNG NORON NHÂN TẠO
Nơron nhân tạo và mạng nơron nhân tạo được hình thành trên cơ sở các
kiến thức về cấu trúc và chức năng của nơron thần kinh và hệ thống thần kinh
sinh học. Mạng nơron nhân tạo giải quyết được nhiều bài toán thực tế như nhận
dạng, phân loại mẫu, xấp xỉ hàm phi tuyến…cũng như các bài toán xử lý thông
tin, hình thành tín hiệu điều khiển… mà một nơron đơn không thể giải quyết
được. Thông thường, mỗi mạng nơron bao gồm nhiều lớp, mỗi lớp lại có nhiều
nơron liên kết theo các dạng khác nhau.
Mạng noron sử dụng để nhận dạng khuôn mặt trong bài toán là mạng noron
truyền thẳng nhiều lớp, luyện mạng với thuật toán lan truyền ngược giảm độ dốc
với momentum và quy tắc học thích nghi.
3.1.
Mạng noron truyền thẳng
Mạng nơron truyền thẳng (liên kết thẳng) bao gồm nhiều lớp nơron liên kết
nối tiếp với nhau, đầu ra của lớp này được nối với đầu vào của lớp kế tiếp. Tín
hiệu truyền thẳng từ đầu vào đến đầu ra của mạng. Một mạng nơron truyền
thẳng thường có ba lớp chính:
- Lớp đầu vào (input layer), đầu vào của lớp này liên kết với vectơ đầu vào,
số lượng nơron trong lớp này bằng với số lượng tín hiệu của vectơ đầu vào;
- Lớp ẩn (hidden layer), là lớp trung gian giữa lớp vào và lớp ra, số lượng lớp
ẩn có thể là một hoặc nhiều hơn. Lớp ẩn đóng vai trò chủ yếu trong việc xử lý và
biến đổi tín hiệu đầu vào. Số các lớp ẩn và số lượng nơron trong một lớp ẩn,
hàm chuyển đổi của nơron trong lớp ẩn phụ thuộc vào tính chất và mức độ phức
tạp của nhiệm vụ mà mạng nơron cần phải giải quyết.
- Lớp ra (output layer), thường có hàm chuyển đổi là hàm tuyến tính, số
lượng nơron trong lớp này bằng với kích thước của vectơ đầu ra.
8
Hình 3: Cấu trúc mạng noron truyền thẳng 3 lớp
Hàm kích hoạt sử dụng cho mỗi lớp trong hệ thống nhận dạng khuôn mặt
là hàm logsig
Hình 4: Hàm logsig
Mạng noron truyền thẳng nhiều lớp sử dụng thuật toán lan truyền ngược
sai số là một dạng huấn luyện có giám sát
Hình 5: Mô hình học có giám sát
9
3.2.
Thuật toán lan truyền ngược sai số
Thuật toán này yêu cầu cung cấp cả vector đầu vào và vector mục tiêu
(vector đầu ra mong muốn). Khi tiến hành luyện mạng, vector đầu ra a của mạng
sẽ được so sánh với vector mục tiêu t. Trong trường hợp có sự khác nhau giữa 2
vector, các trọng số và bias của mạng sẽ được điều chỉnh để giảm thiểu sự khác
nhau đấy. Khi bắt đầu luyện mạng, trọng số và bias của mạng được cài đặt ngẫu
nhiên.
Hình 6: Mô hình mạng noron truyền thẳng 3 lớp
Đối với mạng nhiều lớp lan truyền thẳng, đầu ra của lớp trước là đầu vào
của lớp kế tiếp. Phương trình biểu diễn mối quan hệ nối tiếp nhau này có dạng:
1
a m +=
f m +1 ( W m +1a m + b m +1 )
= 0,1,...,M - 1
m
trong đó là số lớp của mạng. Các nơron của lớp đầu tiên nhận các tín hiệu đầu
vào đưa đến mạng:
a 0 = p1
Các đầu ra của nơron của lớp cuối cùng là đầu ra của mạng:
a = am
Với mỗi vectơ đầu vào đưa đến mạng, giá trị đầu ra của mạng sẽ được so
sánh với giá trị đích. Thuật toán phải điều chỉnh các tham số của mạng nhằm
mục đích tối thiểu hóa hàm số đối với sai số trung bình bình phương:
F (x) = E[e 2 ] = E[(t - a) 2 ]
trong đó là vectơ tham số của trọng lượng và bias của mạng.
Nếu như mạng có nhiều đầu ra thì:
F (x) = E[eT e] = E[(t - a)T (t -a)]
Giống như thuật toán giảm độ dốc lớn nhất (LMS), thực hiện xấp xỉ hóa
hàm số của sai số trung bình bình phương bằng hàm số:
F (x) = (t (k) - a(k))T (t (k)-a(k))=eT (k)e(k)
10
trong đó kỳ vọng của sai số bình phương được thay thế bằng sai số bình phương
tại bước lặp thứ k
Thuật toán giảm độ dốc lớn nhất để xấp xỉ sai số trung bình bình phương,
áp dụng đối với trọng số và bias của các nơron trong mạng có dạng:
∂
F
w im, j (k +=
1) w im, j (k) − α
∂w im, j
∂F
m
m
bi (k + =
1) bi (k) − α m
∂bi
11
4. NHẬN DẠNG KHUÔN MẶT
Tập ảnh được sử dụng để huấn luyện đượ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 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…… Tập ảnh gồm ảnh
của 40 người, mỗi người có 10 ảnh khác nhau. Các ảnh đều là ảnh xám, có kích
thước 112x92. Ngoài ra có thể tạo thêm các ảnh khác để đưa vào tập huấn luyện.
Các ảnh trong tập huấn luyện sẽ được lưu trong thư mục Anh train. Trong
thư mục này, ảnh của mỗi người sẽ được lưu trong một thư mục riêng. Các thư
mục này được đặt tên theo thứ tự: S1, S2, S3…. Các ảnh trong mỗi thư mục
được đặt tên bằng các số theo thứ tự: 1,2,3,4…n (n: số ảnh của một người). Các
ảnh sử dụng có đuôi: .bmp hoặc .pgm
Đầu ra mạng
Người thứ 1
Người thứ 2
Người thứ k
PCA
Vector
đặc trưng
Mạng noron
1
0
0
0
0
1
0
0
0
0
1
0
Người thứ m
0
Người thứ: 1
Tập ảnh
huấn luyện
Hình 7: Quá trình huấn luyện tập ảnh huấn luyện
12
0 0 1
2… k… m
a1
a2
Ảnh cần
nhận
dạng
PCA
Vector
đặc trưng
Mạng noron
ak
am
ai_max < a0
So sánh với
ngưỡng a0
ai_max=Max(ai)
ai_max>a0
Không
giống trong
tập ảnh
huấn luyện
Ảnh nhận dạng giống
ảnh người thứ i trong
tập huấn luyện
Hiển thị ảnh và
thông tin của ảnh
Hình 8: Quá trình nhận dạng ảnh
Ảnh cần nhận dạng sẽ được chuẩn hóa kích thước theo ảnh trong tập huấn
luyện, biểu diễn trong không gian eigenface của tập huấn luyện để tạo ra một
vector đặc trưng cho ảnh. Sau đó vector đặc trưng cho ảnh này được đưa vào
mạng noron để kiểm tra. Đầu ra của mạng là một vector cột. Xác định phần tử
lớn nhất trong vector, so sánh với một ngưỡng để xác định ảnh đấy có giống với
ảnh nào trong tập huấn luyện không và xác định ảnh giống đấy.
13
5. CHƯƠNG TRÌNH TRÊN MATLAB
- Để chạy chương trình, chạy file: XLA_CDT29.m
Hình 9: Giao diện chính của chương trình
Các nút chức năng trong giao diện:
- Them doi tuong mau: Chọn Các đối tượng mẫu để đưa vào luyện mạng
+ Anh trong 1 lop: Số ảnh của cùng một người
+ So lop them: Số người sẽ được đưa vào tập mẫu để luyện mạng
+ So lop da them: Số người đã được đưa vào tập mẫu
- Xoa toan bo du lieu: Xóa toàn bộ tập mẫu đã được xây dựng
- Thay doi lop du lieu: Cho phép thay đổi dữ liệu về một người đã được
đưa vào tập huấn luyện. Lựa chọn lớp cần thay đổi, sau đó nhấn Thay doi và
chọn vào thư mục chứa ảnh của lớp cần thay đổi.
- Tao doi tuong mau: Lựa chọn mở ra giao diện cho phép xây dựng các
ảnh mẫu để đưa vào tập huấn luyện. Có thể xây dựng ảnh mẫu từ webcam hoặc
từ một ảnh khác.
14
Hình 10: Giao diện tạo đối tượng mẫu
- Thiet lap mang noron: Cho phép thiết lập các tham số của mạng noron
Hình 11: Thiết lập mạng noron
15
Nút View: Hiển thị cấu trúc mạng được sử dụng để luyện mạng
Hình 12: Cấu trúc mạng sử dụng
- TRAINING: Tiến hành luyện mạng
Hình 13: Hình hiển thị khi tiến hành luyện mạng
- Nhan dang anh: Lựa chọn cho phép nhận dạng từ ảnh. Ảnh cần nhận
dạng được đưa vào bằng cách nhấn Chon anh, tìm đến file ảnh cần nhận dạng.
Sau đó tách khuôn mặt từ ảnh bằng các sử dụng 2 nút nhấn Tu dong hoặc Bang
tay:
16
+ Tu dong: Cho phép tách khuôn mặt từ ảnh một cách tự động. Chương
trình sẽ tự động phát hiện các khuôn mặt có trong ảnh. Mỗi lần nhấn Tu dong,
một khuôn mặt trong ảnh sẽ được chọn và hiển thị sang bên phải. Sau đó nhấn
nút Nhan dang để tiến hành nhận dạng khuôn mặt. Nếu nhận dạng được ảnh thì
các thông tin về ảnh sẽ được hiển thị ở các mục bên dưới ảnh, một ảnh trong tập
huấn luyện sẽ được hiện thị vào vị trí của ảnh phía trên các mục thông tin về ảnh
Mục So thu tu: Hiển thị lớp trong tập huấn luyện giống ảnh cần nhận
dạng
Nếu không nhận dạng được, mục So thu tu sẽ hiện thị: Khong xac
dinh.
+ Bang tay: Chọn khuôn mặt bằng cách sử dụng chuột để tạo một
khung hình chữ nhật bao quanh khuôn mặt cần nhận dạng.
- Nhan dang webcam: Cho phép phát hiện và nhận dạng khuôn mặt từ
webcam. Nếu đối tượng được nhận dạng thì trên góc trái cùng của khuôn mặt sẽ
hiển thị lớp trong tập huấn luyện mà đối tượng đó thuộc về và tên của đối tượng,
nếu không nhận dạng được, thì sẽ hiện thị “00000”
Hình 14: Nhận dạng qua webcam
17
- Nhan dang Video: Cho phép lựa chọn video, chương trình sẽ phát hiện
các khuôn mặt trong video và tiến hành nhận dạng các khuôn mặt phát hiện
được.
Hình 15. Nhận dạng qua video
- Cách hiển thị thông tin nhận dạng được như trường hợp nhận dạng qua
webcam.
18
6. KẾT LUẬN
Với kiến thức được trang bị trong môn học, nhóm thực hiện đã xây dựng
được chương trình Nhận dạng khuôn mặt bằng mạng noron và phương pháp
PCA trên phần mềm matlab. Mạng noron sử dụng là mạng noron truyền thẳng
nhiều lớp, luyện mạng với thuật toán lan truyền ngược giảm độ dốc với
momentum và quy tắc học thích nghi. Chương trình cho phép tạo đối tượng mẫu
để đưa và tập huấn luyện, thiết lập các tham số của mạng noron. Chương trình
có khả năng phát hiện nhiều khuôn mặt trong ảnh, video, webcam và nhận dạng
các ảnh phát hiện được. Tuy nhiên, do kiến thức và thời gian thực hiện còn hạn
chế nên chương trình còn một số hạn chế như: chưa chuẩn hóa được (về chất
lượng) các ảnh xây dựng để đưa vào tập mẫu, tốc độ nhận dạng qua video và
webcam thấp, chưa đáp ứng được thời gian thực…
19