Professional Documents
Culture Documents
KHOA ĐIỆN TỬ
BỘ MÔN: TIN HỌC CÔNG NGHIỆP
ĐỒ ÁN MÔN HỌC
MÔN HỌC
CÔNG NGHỆ PHẦN MỀM
Hình 2. Các bước chính trong một hệ thống nhận dạng khuôn mặt.
Phát hiện khuôn mặt dò tìm, định vị những vùng (vị trí) có thể là khuôn mặt xuất hiện
trong ảnh hoặc các frame video. Các vùng này sẽ được tách riêng để xử lý. Phân đoạn khuôn
mặt sẽ xác định vị trí mắt mũi, miệng và các thành phần khác của khuôn mặt và chuyển kết quả
này cho bước trích chọn đặc trưng. Ở bước trích chọn đặc trưng, bằng một phương pháp trích
chọn đặc điểm nào đó (mẫu nhị phân cục bộ-Local Binary Pattern-LBP, Gabor wavelets…) sẽ
được sử dụng với ảnh mặt để trích xuất các thông tin đặc trưng cho ảnh từ các thông tin về các
thành phần trên khuôn mặt, kết quả là mỗi ảnh sẽ được biểu diễn dưới dạng một vector đặc trưng
(feature vector). Những vecto đặc trưng này sẽ là dữ liệu đầu vào cho một mô hình đã được huấn
luyện trước để nhận dạng khuôn mặt (Face Recognition) hay phân lớp khuôn mặt (Face
Classifition), tức là xác định danh tính (identity) hay nhãn của ảnh-đó là ảnh của ai. Ở bước nhận
dạng khuôn mặt (Face Recognition), thường thì phương pháp k-láng giềng gần (k-nearest
neighbor:kNN) sẽ được sử dụng.
Bên cạnh những bước chính nêu trên, chúng ta còn có thể áp dụng thêm một số bước khác
như tiền xử lý, hậu xử lý nhằm làm tăng độ chính xác cho hệ thống. Ví dụ, sau bước phát hiện
khuôn mặt, ta có thể thực hiện bước tiền xử lý (Preprocessing) bao gồm các bước căn chỉnh ảnh
(face image alignment) và chuẩn hóa ánh sáng (illumination normalization).
Do một số thông số như: tư thế khuôn mặt, độ sáng, điều kiện ánh sáng, v.v… phát hiện
khuôn mặt được đánh giá là bước khó khăn và quan trọng nhất so với các bước còn lại của hệ
thống. Tuy nhiên, trong phạm vi đồ án này, không tập trung tìm hiểu bước phát hiện khuôn mặt
mà chỉ tập trung chủ yếu vào bước nhận dạng khuôn mặt.
Dữ liệu cho một hệ thống nhận dạng mặt được chia làm 3 tập: tập huấn luyện (training set),
tập tham chiếu (reference set haygallery set) và tập để nhận dạng (probe set hay query set, đôi
khi còn gọi là test set). Trong nhiều hệ thống, tập training trùng với tập reference. Tập training
gồm các ảnh được dùng để huấn luyện (hay học-learning), thông thường tập này được dùng để
sinh ra một không gian con (projection subspace) là một ma trận và phương pháp hay được sử
dụng là PCA (Principal Component Analysis), WPCA (Whitened PCA), LDA (Linear
Discriminant Analysis), KPCA (Kernel PCA). Tập reference gồm các ảnh đã biết danh tính được
chiếu (projected) vào không gian con ở bước training. Bước training nhằm 2 mục đích: giảm số
chiều (dimension reduction) của các vector đặc điểm (feature vector) vì các vector này thường
Hình 5. Sơ đồ phân tích, xử lý ảnh và lưu đồ thông tin giữa các khối.
Hình 6. Lân cận các điểm ảnh của tọa độ (x, y).
- Các lân cận chéo: Các điểm lân cận chéo Np(P) (Có thể coi lân cận chéo là 4 hướng:
Đông-Nam, Đông-Bắc, Tây-Nam, Tây-Bắc)
Np(P) = {(x+1,y+1); (x+1, y-1); (x-1, y+1); (x-1, y-1)}
- Tập kết hợp: N8(p) = N4(p) + Np(p) là tập hợp 8 lân cận của điểm ảnh p.
- Chú ý: Nếu (x, y) nằm ở biên (mép) ảnh; một số điểm sẽ nằm ngoài ảnh.
b) Các mối liên kết điểm ảnh.
Các mối liên kết được xác định để xác định giới hạn (Boundaries) của đối tượng vật thể
hoặc xác định vùng trong một ảnh. Một liên kết được đặc trưng bởi tính liền kề giữa các điểm
và mức xám của chúng.
Giả sử V là tập các giá trị mức xám. Một ảnh có các giá trị cường độ sáng từ thang mức
xám từ 32 đến 64 được mô tả như sau:
V = {32, 33, 34, …, 63, 64}
Có 3 loại liên kết.
- Liên kết 4: Hai điểm ảnh p và q được nói là liên kết 4 với các giá trị cường độ sáng V
nếu q nằm trong một các lân cận của p, tức p thuộc N4(p).
- Liên kết 8: Hai điểm ảnh p và q nằm trong một các lân cận của p, tức q thuộc N8(p).
- Liên kết m (liên kết hỗn hợp): Hai điểm ảnh p và q với các giá trị cường độ sáng V được
nói là liên kết m nếu:
1. q thuộc N4(p) hoặc
2. q thuộc Np(p)
c) Đo khoảng cách giữa các điểm ảnh.
Định nghĩa: Khoảng cách D(p) giữa hai điểm ảnh p tọa độ (x, y), q tọa độ (s, t) là hàm
khoảng cách (Distance) hoặc Metric nếu:
Bộ môn Tin học công nghiệp 14
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
1. D(p,q) ≥ 0 (Với D(p,q) = 0 nếu và chỉ nếu p = q)
2. D(p,q) = D (p, q)
3. D(p, z) ≤ D(p,q) + D(q, z); z là một điểm ảnh khác.
Khoảng cách Euclide: Khoảng cách Euclide giữa hai điểm ảnh p(x, y) và q(s, t) được định
nghĩa như sau:
De(p,q) = [(x - s)2 + (y – t)2] 1/2
Khoảng cách khối: Khoảng cách D4(p,q) được gọi là khoảng cách khối đồ thị (City-Block
Distance) và được xác định như sau:
D4(p,q) = |x - s| + |y - t|
Giá trị khoảng cách giữa các điểm ảnh r: giá trị bán kính r giữa điểm ảnh từ tâm điểm ảnh
đến tâm điểm ảnh q khác. Ví dụ: Màn hình CGA 12’’ (12’’*2,54cm = 30,48cm = 304,8mm) độ
phân giải 320*200; tỷ lệ 4/3 (chiều dài/chiều rộng). Theo định lý Pitago về tam giác vuông,
đường chéo sẽ láy tỷ lệ 5 phần (5/4/3: đường chéo/chiều dài/chiều rộng màn hình); khi đó độ dài
thật là (305/244/183) chiều rộng màn hình 183mm ứng với màn hình CGA 200 điểm ảnh theo
chiều dọc. Như vậy, khoảng cách điểm ảnh lân cận của CGA 12’’ là ≈ 1mm.
Khoảng cách D8(p,q) còn gọi là khoảng cách bàn cờ (Chess-Board Distance) giữa điểm
ảnh p, q được xác định như sau: D8(p,q) = max (|x – s|, |y – t|).
- Thiết lập 3 đường dẫn sau trong biến người dùng và hệ thống.
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin;
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin\x64;
o C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin\x86;
Bước 3: Cấu Hình Visual Studio 2010 (Tương tự với bản 2013).
1. Tạo một project Window Application mới, đặt tên là “Two Layer”.
2. Trong Solution Explorer, click phải chuột vào References, chọn Add Reference…
5. Tiếp theo, khai báo các thư viện OpenCV mà chúng ta sử dụng trong mỗi class:
using Emgu.CV;
using Emgu.CV.Structure;
using Emgu.Util;
Sau khi thực hiện 5 bước trên, chúng ta có thể sử dụng các thư viện của OpenCv để lập
trình.
b) Thêm Control của EmguCV vào Toolbox.
Trong Toolbox, click phải chuột vào tab bất kì, chọn Add Tab, gõ tên EmguCV > Enter.
Click chuột phải lên tab EmguCV vừa tạo, chọn Choose Items…, sau khi hộp thoại hiển
thị, chọn tab .NET Framework Components. Click vào nút Browse, duyệt đến thư mục:
C:\Emgu\emgucv-windows-universal-gpu 2.4.9.1847\bin
Chọn tệp tin Emgu.CV.UI.dll. Nhấn Open. Trong ô Filter, gõ Emgu. Danh sách các
control của thư viện OpenCV sẽ hiển thị ra, chọn tất cả rồi nhấn OK.
Sử dụng Control:
Chọn tab EmguCV vừa tạo, chọn control cần sử dụng, kéo thả vào form. Đặt thuộc tính
Name và set Text cho control, rồi sử dụng bình thường như các control khác.
Hình 10. Nhận dạng dựa trên phương pháp đối sánh mẫu.
4.1.5 Hướng tiếp cận dựa trên diện mạo (appearance-based)
Trái ngược hẳn với hướng tiếp cận dựa trên đối sánh mẫu, các mô hình (hay các mẫu) được
học từ một tập ảnh huấn luyện trước đó. Sau đó hệ thống (mô hình) sẽ xác định khuôn mặt người.
Do phương pháp này thường dùng một mô hình máy học nên còn được gọi là phương pháp dựa
trên máy học (machine learning-based).
Hình 12. Sơ đồ khối trích chọn đặc trưng sử dụng Eigen Faces.
4.2.1 Thuật toán PCA và ứng dụng trong nhận dạng mặt người.
a) Giới thiệu chung về thuật toán.
Phân tích thành phần chính (Principal Coponent Analysis) gọi tắt là PCA là một thuật
toán được sử dụng để tạo ra một ảnh mới từ ảnh ban đầu. Ảnh mới này có kích thước nhỏ hơn
nhiều so với ảnh ban đầu nhưng vẫn mang những đặc trưng cơ bản nhất của ảnh cần nhận dạng.
PCA không cần quan tâm đến việc tìm ra các đặc điểm cụ thể của thực thể cần nhận dạng
và mối quan hệ giữa các đặc điểm đó. Tất cả các chi tiết đó đều được thể hiện ở ảnh mới được tạo
ra từ PCA.
Ưu điểm của phương pháp PCA:
Tìm được các đặc tính tiêu biểu của đối tượng cần nhận dạng mà không cần phải
xác định các thành phần và mối quan hệ giữa các thành phần đó.
Thuật toán có thể thực hiện tốt với các ảnh có độ phân giải cao, do PCA sẽ thu gọc
ảnh thành một ảnh có kích thước nhỏ hơn.
PCA có thể kết hợp với các phương pháp khác như mạng Nổn, Support Vector
Machine… để mang lại hiệu quả nhận dạng cao hơn.
Mục tiêu của phương pháp PCA đó là tìm phép biến đổi tuyến tính T thỏa mãn:
y = T.x
sao cho trung bình bình phương lỗi (MSE) là nhỏ nhất (sai số nhỏ nhất do giảm số chiều).
Người ta chứng minh được rằng: “Nếu T là ma trận m hàng, mỗi hàng là 1 vector riêng của
C, đồng thời m vector riêng này phải ứng với m trị riêng lớn nhất. Khi đó, T chính là phép biến
đổi thỏa mãn MSE nhỏ nhất”.
Tóm lại, phương pháp PCA quy về việc đi tìm trị riêng (Eigenvalues) và vector riêng
(eigenvectors) của ma trận hiệp phương sai C. Sau đó, chỉ giữ lại K vector riêng ứng với K trị
riêng lớn nhất để làm cơ sở cho không gian mới này.
Bước 2: Biểu diễn mỗi ảnh I1, I2,.., IM, thành các vector T1, T2, …, TM tương ứng. Mỗi vector
Ti sẽ có kích thước (NxP)x1.
Ví dụ: Để đơn giản, ta giả sử chỉ có 4 ảnh trong tập huấn luyện (kích thước mỗi ảnh là 3x3).
Ta tính toán được các vector Ti có kích thước (9x1) :
225 10 196 255
229 219 35 223
48 24 234 224
251 255 232 255
𝑇𝑖 = 33 ; 𝑇2 = 18 ; 𝑇3 = 59 ; 𝑇4 = 0
238 247 244 255
0 17 243 249
255 255 57 255
[217] [ 2 ] [226] [235]
Bước 3: Tính vector khuôn mặt trung bình theo công thức:
𝑀
1
𝜓= ∑ 𝑇𝑖
𝑀
𝑖=1
Cụ thể, ta có:
Ф𝑖 = 𝑇𝑖 − 𝜓
(i = 1 .. M)
Cụ thể ta có:
53.50 −161.50 24.50 83.50
52.50 42.50 −141.50 46.50
−84.50 −108.50 101.50 91.50
2.75 6.75 −16.25 6.75
Ф𝑖 = 5.50 ; Ф2 = −9.50 ; Ф3 = 31.50 ; Ф4 = −27.50
−8.00 1.00 −2.00 9.00
127.25 −110.25 115.75 121.75
49.50 49.50 −148.50 49.50
[ 47.00 ] [−168.00] [ 56.00 ] [ 65.00 ]
Cụ thể ta có:
53.50 −161.50 24.50 83.50
52.50 42.50 −141.50 46.50
−84.50 −108.50 101.50 91.50
2.75 6.75 −16.25 6.75
𝐴= 5.50 −9.50 31.50 −27.50
−8.00 1.00 −2.00 9.00
−127.25 −110.25 115.75 121.75
49.50 49.50 −148.50 49.50
[ 47.00 −168.00 56.00 65.00 ]
Ma trận A kích thước (3x3)x4
Từ đó, ta tính được ma trận hiệp phương sai C, kết quả như sau:
∑𝐾
𝑖=1 𝜆𝑖
> 𝑇ℎ𝑟𝑒𝑠ℎ𝑜𝑙𝑑 (𝑒. 𝑔, 0.9 𝑜𝑟 0.95)
∑𝑁
𝑖=1 𝜆𝑖
E =A.V là tập các vectors riêng của A.AT. Do đây là những vectors riêng, mà nó lại có dạng
khuôn mặt nên còn được gọi là Eigenfaces. E là ma trận (NxP)xK, mỗi cột là một vector riêng.
Chuẩn hóa các vector cột trong E để thu được một cơ sở trực chuẩn của không gian khuôn
mặt.
𝑢𝑖
𝑢𝑖 (‖𝑢𝑖 = 1‖), nghĩa là: 𝑢𝑖 = ‖𝑢𝑖 ||
Bước 6.2: Tính các vector riêng vi (eigenvectors) của ma trận vuông ATA kích thước 4x4.
Cách tìm trị riêng (eigenvalues) và vector riêng (eigenvectors) có thể xem lại “Toán cao
cấp_Tập 1_Đại số và hình học giải tích”. Tuy nhiên, cách này không khả thi khi lập trình. Do
đó, khi lập trình, ta có thể dùng “Phương pháp lặp” (thuật toán QR) để tìm.
Bộ môn Tin học công nghiệp 34
ĐAMH Công nghệ phần mềm GVHD Phùng Thị Thu Hiền
Ở đây ta sẽ tìm được 4 trị riêng của ma trận ATA, tuy nhiên ta sẽ sắp xếp lại theo thứ tự giảm
dần, và chỉ lấy các trị riêng khác 0 “non=zero”. Kết quả ta thu được 3 trị riêng (từ đó tính ra
các vector riêng tương ứng).
−0.263 0.521 −0.640
−0.679 −0.437 0.314
𝑣1 = [ ]; 𝑣2 = [ ]; 𝑣3 = [ ]
0.586 −0.559 −0.306
0.355 0.475 0.631
𝜆1 = 153520 𝜆2 = 50696 𝜆3 = 22781
V=[v1, v2, v3]: Các vector riêng (eigenvector) của ma trận ATA.
D= [λ1, λ2, λ3]: Các trị riêng (eigenvalues) tương ứng với các vectors riêng.
Bước 6.3: Từ các vector riêng vi (có kích thước Mx1 = 4x1), ta dễ dàng suy ra được các vector
riêng ui (kích thước (NxP)x1 = (3x3)x1 =9x1) cần tìm theo công thức:
ui = Avi (*)
𝑢𝑖
𝑢𝑖 = ‖𝑢𝑖 ||
𝑝𝑟𝑤 𝑢 = 𝑢0 = ∑(𝑢 𝑢𝑖 ) . 𝑢𝑖
⃗ , ⃗⃗⃗
𝑖=1
𝐺𝑓 = ∑ 𝑐𝑖 . 𝑒𝑖
𝑖=1
với ci = C(i, 1); ei = E(1, i).
Với Ai là một cột trong ma trận A (tương ứng với bức ảnh Ti trong tập huấn luyện). Ta tính
Ci = ET.Ai là tọa độ của hình chiếu Aif của Ai lên không gian khuôn mặt.
Tính: Si = || C – Ci || xem như khoảng cách từ H đến bức ảnh Ti trong tập huấn luyện.
Gọi β = eigenDistanceThreshold là khoảng cách ngưỡng riêng, khi đó:
Nếu Si < β thì Ti là bức ảnh của cùng một người với H (H đủ gần với Ti).
Hình 18: Phát hiện khuôn mặt trong dòng hỉnh ảnh của camera.
Nhận xét: Từ bảng kết quả, ta có thể thấy rằng, kết quả nhận dạng phụ thuộc rất nhiều
vào giá trị của khoảng cách ngưỡng riêng. Do đó, cần điều chỉnh thông số một cách phù hợp để
có thể thu được kết quả tốt nhất. Ngoài ra, các ảnh bị nhận dạng sai hoặc không nhận dạng
được phụ thuộc vào chất lượng ảnh đầu vào, đa số các ảnh bị nhận dạng sai hoặc không nhận
dạng được đều là các bức ảnh bị chụp thiếu sáng.
Một số kết quả nhận dạng với dữ liệu ảnh chưa chuẩn hóa.
- Ảnh đầu vào là ảnh tĩnh.