Tải bản đầy đủ (.doc) (91 trang)

Trình bày các cơ sở lý thuyết và thuật toán dùng mạng nơron vào pháthiện khuôn mặt người trong ảnh số

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.88 MB, 91 trang )

MỤC LỤC
MỤC LỤC..................................................................................................................................4
.....................................................................................................................................................5
TỔNG QUAN............................................................................................................................6
DANH MỤC CÁC HÌNH.........................................................................................................7
Chương 1.GIỚI THIỆU BÀI TOÁN – PHẠM VI NGHIÊN CỨU CỦA KHÓA LUẬN.........1
1.1Giới thiệu bài toán..........................................................................................................1
1.1.1Nhận diện vật thể trong ảnh số, tầm quan trọng và các ứng dụng thực tế..............1
1.1.2Nhận diện khuôn mặt người trong ảnh số...............................................................2
1.2Các khó khăn trong bài toán nhận diện khuôn mặt........................................................6
1.3Các công trình nghiên cứu và hướng tiếp cận liên quan đến nhận diện khuôn mặt......9
1.4Thuật toán sử dụng mạng nơron để phát hiện khuôn mặt............................................11
1.4.1Giới thiệu..............................................................................................................11
1.4.2Ưu điểm................................................................................................................13
1.4.3Khuyết điểm..........................................................................................................14
1.5Giới thiệu mục đích và giới hạn phạm vi nghiên cứu của khóa luận...........................14
1.5.1Mục đích...............................................................................................................14
1.5.2Giới hạn phạm vi nghiên cứu................................................................................14
Chương 2.CÁC CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN ÁP DỤNG VÀO PHÁT HIỆN
KHUÔN MẶT NGƯỜI....................................................................................15
2.1Hướng tiếp cận của khóa luận......................................................................................15
2.2Các thuật toán tiền xử lý ảnh :.....................................................................................16
2.2.1Cân bằng ánh sáng................................................................................................20
2.2.2Làm nổi ảnh (Histogram Equalizer).....................................................................22
2.3Giới thiệu khái niệm cửa sổ (Window) và mặt nạ (Mask)...........................................24
2.3.1Cửa sổ (Window)..................................................................................................24
2.3.2Mặt nạ (Mask).......................................................................................................25
2.4Các bước trong quá trình phát hiện khuôn mặt............................................................26
2.4.1Tạo các cửa sổ (Window) từ các độ căng (Scale) của ảnh...................................26
2.4.2Tiền xử lý ảnh nhỏ trong vùng cửa sổ..................................................................28
2.4.3Đưa các điểm ảnh trong cửa sổ không bị che bởi mặt nạ vào mạng, đưa ra kết quả


...........................................................................................................................28
2.5Mã giả hàm tìm kiếm (Search).....................................................................................29

GVHD: SVTH :


Chương 3.THIẾT KẾ MẠNG NƠRON, THU THẬP DỮ LIỆU HUẤN LUYỆN VÀ HUẤN
LUYỆN MẠNG................................................................................................31
3.1Thiết kế mạng..............................................................................................................31
3.2Thu thập dữ liệu huấn luyện và huấn luyện mạng.......................................................34
Chương 4.HIỆN THỰC, KẾT QUẢ CHẠY THỬ, CÁC CẢI TIẾN VÀ HƯỚNG PHÁT
TRIỂN CỦA KHÓA LUẬN.............................................................................40
4.1.1Hiện thực lõi kiến trúc mạng nơron......................................................................40
4.1.2Hiện thực Demo phát hiện khuôn mặt..................................................................46
4.1.3Kết quả chạy Demo chương trình khi chưa cải tiến..............................................52
4.1.4Các cải tiến............................................................................................................52
4.2Hướng phát triển của luận văn trong tương lai............................................................56
PHỤ LỤC.................................................................................................................................58
Phụ lục A: GIỚI THIỆU MẠNG NƠRON NHÂN TẠO.........................................................59
1.Từ ý tưởng mạng nơron sinh học...................................................................................59
2. Đến mạng nơron nhân tạo.............................................................................................60
3. Ứng dụng mạng nơron nhân tạo...................................................................................62
4. Huấn luyện mạng nơron................................................................................................63
5.Thu thập dữ liệu huấn luyện mạng nơron......................................................................63
Phụ lục B: CƠ SỞ LÝ THUYẾT CỦA MẠNG NƠRON NHÂN TẠO..................................65
1.Phần tử xử lý..................................................................................................................65
2.Kiến trúc mạng nơron nhân tạo......................................................................................67
3. Huấn luyện mạng nơron truyền thẳng:.........................................................................70
Phụ Lục C : MINH HỌA GIẢI THUẬT LAN TRUYỀN NGƯỢC TRONG HUẤN LUYỆN
MẠNG NHIỀU LỚP........................................................................................75

DANH MỤC TÀI LIỆU THAM KHẢO...............................................................................85

GVHD: SVTH :


TỔNG QUAN

Chương 1. Trình bày tổng quan về bài toán nhận diện vật thể trong ảnh số có ứng
dụng quan trọng trong thức tế. Và bài toán phát hiện mẫu khuôn mặt
người dùng mạng nơron là một bài toán con đặt biệt của bài toán nhận
dạng vật thể. Trình bày một số công trình nghiên cứu gần đây và
hướng tiếp cận của khóa luận đến bài toán nhận diện khuôn mặt.
Chương 2. Trình bày các cơ sở lý thuyết và thuật toán dùng mạng nơron vào phát
hiện khuôn mặt người trong ảnh số.
Chương 3. Trình bày bước thiết kế mạng nơron, thu thập dữ liệu gồm tập ảnh là
mẫu khuôn mặt và và tập ảnh không phải là mẫu khuôn mặt. Sau đó là
bước huấn luyện cho mạng nhận dạng được đâu là mẫu khuôn mặt
người và không là khuôn mặt người.
Chương 4.

Hiện thực chương trình, kết quả thu được trước và sau khi cải tiến.
Kết luận và định hướng phát triển của khóa luận.

GVHD: SVTH :


DANH MỤC CÁC HÌNH
Hình 1.1. Nhận diện vật thể trong ảnh số.
Hình 1.2. Nhận diện khuôn mặt trong ảnh số.
Hình 1.3. Các bước nhận diện khuôn mặt

Hình 1.4 a) và b) :Các tư thế, góc chụp khác nhau.

Hình 1.5 : Ảnh chụp do râu che một số phần khuôn mặt.
Hình 1.6 a) và b) : Ảnh chụp phức tạp do biểu cảm.
Hình 1.7 : Ảnh chụp phức tạp do che khuất.
Hình 1.8 a) Ảnh chụp trong nhà. b) Ảnh chụp ngoài trời.
Hình 1.9. Sử dụng cấu trúc mạng nơron nhân tạo (Aftificial Neural Network) để
phát hiện các mẫu khuôn mặt và không phải khuôn mặt.
Hình 2.1 Ảnh gốc.
Hình 2.2 Ảnh đen trắng
Hình 2.3 Ảnh chưa cân bằng sáng.
Hình 2.4 Ảnh đã cân bằng sáng.
Hình 2.5. Ảnh chưa làm nổi.
Hình 2.6 Ảnh đã làm nổi.
Hình 2.7. Định vị cửa sổ (window) trong ảnh số.
Hình 2.8. Cửa sổ trước khi áp mặt nạ.
Hình 2.9. Mặt nạ và cửa sổ sau khi áp mặt nạ.

Hình 2.10. Cửa sổ thu được với tỷ lệ scale ảnh gốc lớn.
Hình 2.11 Cửa sổ thu được với tỷ lệ scale ảnh gốc lớn.
Hình 2.12 Cửa sổ mặt nạ.
Hình 2.13 Cửa sổ ảnh sau khi áp mặt nạ.
Hình 3.1. Cấu trúc mạng nơron.
Hình 3.2. Công thức và đồ thị minh hoạ hàm nén lướng cực (Bipolar Sigmoid).
Hình 3.3. Minh hoạ Vectơ đầu vào.
Hình 3.5. Tập mẫu huấn luyện đúng.
Hình 3.6. Tập mẫu huấn luyện sai.
Hình 3.7. Minh hoạ quá trình huấn luyện
GVHD: SVTH :



1/93

Chương 1.

GIỚI THIỆU BÀI TOÁN – PHẠM VI NGHIÊN CỨU
CỦA KHÓA LUẬN

1.1

Giới thiệu bài toán
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 xác
định khuôn mặt người từ ảnh đen trắng, đế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. Đến
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ực tiễn của con người.

1.1.1

Nhận diện vật thể trong ảnh số, tầm quan trọng và các ứng dụng thực tế
Hệ thống nhận diện vật thể là một hệ thống nhận vào một ảnh hoặc một
đoạn Video (một chuỗi các ảnh). Qua xử lý tính toán hệ thống xác định được vị
trí vật thể trong ảnh (nếu có) và xác định đó là vật thể nào trong số những vật
thể hệ thống đã được biết (qua quá trình học) hoặc là vật thể lạ. Nhận diện vật
thể trong ảnh số được minh họa như hình 1.1


Quả bóng rổ

Chiếc xe đạp
Không biết
Hình 1.1. Nhận diện vật thể trong ảnh số.

GVHD: SVTH :


2/93

1.1.2

Nhận diện khuôn mặt người trong ảnh số

1.1.2.1

Giới thiệu nhận diện khuôn mặt.
Phát hiện khuôn mặt người (Face Detection) là một kỹ thuật máy tính

để xác định các vị trí và các kích thước của các khuôn mặt trong các ảnh bất kỳ
(ảnh kỹ thuật số). Kỹ thuật này nhận biết các đặc trưng của khuôn mặt và bỏ
qua những thứ khác, như: tòa nhà, cây cối, cơ thể, … Nói chính xác hơn là khu
biệt hóa khuôn mặt (khả năng tìm và nhận biết đâu là khuôn mặt trong toàn bộ
một khung hình).
Ở hệ thống này, từ một đầu vào là bức ảnh hoặc một đoạn Video (một
chuỗi các ảnh), máy tính có thể khu biệt hóa khuôn mặt nằm ở vị trí nào. Qua
xử lý tính toán hệ thống xác định được vị trí mặt người trong ảnh (nếu có) và
xác định là người nào trong số những người hệ thống đã được biết (qua quá
trình học) hoặc là người lạ.

Có rất nhiều thuật toán đã được phát triển nhằm cải thiện quá trình
nhận dạng khuôn mặt người ngày càng tốt hơn. Với cơ sở dữ liệu so sánh lớn,
thuật toán phức tạp, sự hỗ trợ từ phần cứng hay chíp xử lý riêng, hệ thống nhận
diện có thể nhận diện ngay cả khi mặt người quay ngang hay nhìn lên, nhìn
xuống, chuyển động hay đứng yên, thậm chí mặt chỉ chiếm một phần rất nhỏ
trong toàn bộ khung hình.
Bài toán nhận dạng mặt người là bài toán con đặc biệt của nhận dạng
vật thể .Tuy nhiên, đây là một bài toán khó nên những nghiên cứu hiện tại vẫn
chưa đạt được kết quả mong muốn. Chính vì thế vấn đề này vẫn đang được
nhiều nhà nghiên cứu trên thế giới quan tâm. Đây là một vấn đề lớn trong
ngành thị giác máy tính (Computer Vision – viết tắt CV).

GVHD: SVTH :


3/93

Hệ thống nhận diện mặt người trong ảnh số được minh họa như hình 1.2:
Ảnh Inputs

Ảnh Outputs

Bin Laden

1)

2)

Hệ thống
nhận dạng khuôn

mặt

Obama

Không biết vì
khuôn mặt
không có
trong cơ sở
dữ liệu

3)

Hình 1.2. Nhận diện khuôn mặt trong ảnh số.

1.1.2.2

Bốn bước nhận diện mặt người trong ảnh số
Một hệ thống nhận dạng mặt người thông thường bao gồm bốn [1] bước

xử lý sau: phát hiện khuôn mặt (face detection), phân đoạn khuôn mặt (face
alignment hay segmentation), rút trích đặc trưng (feature extraction) và phân
lớp khuôn mặt (face classification). Các bước nhận diện mặt người trong ảnh số
được minh họa như hình 1.3.

GVHD: SVTH :


4/93

Hình/video


Phát hiện
khuôn mặt
( tìm kiếm )

Vị trí
khuôn mặt

Phân đoạn
khuôn mặt

Khuôn mặt đã
phân đoạn

Vec-tơ
đặc trưng

Rút trích
đặc trưng

Phân lớp
khuôn mặt

Chỉ số khuôn
mặt
(Face ID)

Hình 1.3. Các bước nhận diện khuôn mặt.

Phát hiện khuôn mặt dò tìm và định vị những vị trí khuôn mặt xuất hiện

trong ảnh hoặc trên các Frame Video. Phân đoạn khuôn mặt sẽ xác định vị trí
mắt, mũi, miệng, và thành phần khác của khuôn mặt và chuyển kết quả này cho
bước rút trích đặc trưng. Từ những thông tin về các thành phần trên khuôn mặt,
chúng ta có thể dễ dàng tính được véc-tơ đặc trưng trong bước rút trích đặc
trưng. Những véc-tơ đặ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 để phân loại khuôn mặt. 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. Do một số thông số như:
tư thế khuôn mặt, độ sáng, điều kiện ánh sáng… 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. Trong khóa luận này, chúng tôi tập trung chủ yếu vào bước phát hiện
khuôn mặt.

GVHD: SVTH :


5/93

1.1.2.3

Các ứng dụng của nhận diện khuôn mặt.
Bài toán nhận diện mặt người có thể áp dụng rộng rãi trong nhiều ứng

dụng thực tế khác nhau. Đó chính là lý do mà bài toán này hấp dẫn rất nhiều
nhóm nghiên cứu trong thời gian dài. Các ứng dụng liên quan đến nhận dạng
mặt người có thể kể như:
- Hệ thống phát hiện tội phạm: Camera được đặt tại một số điểm công
cộng như: siêu thị, nhà sách, trạm xe buýt, sân bay, v.v... Khi phát hiện được sự
xuất hiện của các đối tượng là tội phạm, hệ thống sẽ gởi thông điệp về cho
trung tâm xử lý. Ví dụ nhận dạng người A có phải là tội phạm đang truy nã

hay không? giúp cơ quan an ninh thực hiện tốt chức năng của mình. Công việc
nhận dạng có thể ở trong môi trường bình thường cũng như trong bóng tối (sử
dụng camera hồng ngoại).
- Hệ thống theo dõi nhân sự trong một đơn vị: Giám sát giờ ra vào của
từng nhân viên và chấm công. Điều khiển vào ra: văn phòng, công ty, trụ sở,
máy tính, Palm, …. Kết hợp thêm vân tay và mống mắt. Cho phép nhân viên
được ra vào nơi cần thiết, hay mỗi người sẽ đăng nhập máy tính cá nhân của
mình mà không cần nhớ tên đăng nhập cũng như mật khẩu mà chỉ cần xác định
thông qua khuôn mặt
- Kiểm tra trạng thái người lái xe có ngủ gật, mất tập trung hay không,
và hỗ trợ thông báo khi cần thiết.
- Lưu trữ (rút tiền ATM, để biết ai rút tiền vào thời điểm đó). Các ngân
hàng có nhu cầu khi có giao dịch tiền sẽ kiểm tra hay lưu trữ khuôn mặt người
rút tiền để sau đó đối chứng và xử lý.
- Hệ thống giao tiếp người máy: Thay thế việc tương tác giữa người và
máy theo những cách truyền thống như: bàn phím, chuột,v.v...Thay vào đó là
sử dụng các giao tiếp trực quan: biểu cảm khuôn mặt, dấu hiệu, cử chỉ bằng tay
(Visual Input, Visual Interaction).
- Tìm kiếm và tổ chức dữ liệu liên quan đến con người thông qua khuôn
mặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng
truyền hình, …. Ví dụ tìm các đoạn video có tổng thống Bush phát biểu, tìm
GVHD: SVTH :


6/93

các phim có diễn viên Lý Liên Kiệt đóng, tìm các trận đá banh có cầu thủ
Ronaldo …
- An ninh sân bay, xuất nhập cảnh (hiện nay cơ quan xuất nhập cảnh
Mỹ đã áp dụng). Dùng để xác thực người xuất nhập cảnh và kiểm tra có phải là

nhân vật khủng bố không.
- Các thệ thống bảo mật dựa trên thông tin trắc sinh học: Mặt người,
vân tay,v.v... thay vì xác nhận mật khẩu, khóa.
1.2

Các khó khăn trong bài toán nhận diện khuôn mặt
Đây là một bài toán khó nên những nghiên cứu hiện tại vẫn chưa đạt
được kết quả mong muốn. Chính vì thế vấn đề này vẫn đang được nhiều nhóm
trên thế giới quan tâm nghiên cứu. Khó khăn của bài toán nhận diện mặt người
có thể kể như là tư thế, góc chụp, sự xuất hiện hoặc thiếu một số thành phần
trên khuôn mặt, sự biểu cảm, sự che khuất, hướng của ảnh, điều kiện ảnh[1]…
o Tư thế, góc chụp
Ảnh chụp khuôn mặt có thể thay đổi rất nhiều bởi vì góc chụp giữa
Camera và khuôn mặt. Chẳng hạn như: chụp thẳng, chụp xéo bên trái 450 hay xéo
bên phải 450, chụp từ trên xuống, chụp từ dưới lên, v.v...). Với các tư thế khác
nhau, các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một
phần hoặc thậm chí khuất hết.

a)

a)

b)

b)

Hình 1.4 a) và b) :Các tư thế, góc chụp khác nhau.

GVHD: SVTH :



7/93

o Sự xuất hiện hoặc thiếu một số thành phần của khuôn mặt
Các đặc trưng như: râu mép, râu hàm, mắt kính, v.v... có thể xuất hiện
hoặc không. Vấn đề này làm cho bài toán càng trở nên khó hơn rất nhiều.

Hình 1.5 : Ảnh
chụp do râu che
một số phần khuôn
mặt.

o Sự biểu cảm của khuôn mặt
Biểu cảm của khuôn mặt người có thể làm ảnh hưởng đáng kể lên các
thông số của khuôn mặt. Chẳng hạn, cùng một khuôn mặt một người, nhưng có
thể sẽ rất khác khi họ cười hoặc sợ hãi,v.v...

a)

b)

Hình 1.6 a) và b) : Ảnh chụp phức tạp do biểu cảm.

GVHD: SVTH :


8/93

o Sự che khuất
Ảnh khuôn mặt có thể bị che khuất bởi các đối tượng khác hoặc các

khuôn mặt khác.

Hình 1.7 : Ảnh chụp
phức tạp do che
khuất.
o Hướng của ảnh
Các ảnh của khuôn mặt có thể biến đổi rất nhiều với các góc quay khác
nhau của trục Camera. Chẳng hạn chụp với trục máy ảnh nghiêng làm cho khuôn
mặt bị nghiêng so với trục của ảnh.
o Điều kiện của ảnh
Ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng, về tính
chất Camera (máy kỹ thuật số, máy hồng ngoại,v.v...) ảnh hưởng rất nhiều đến
chất lượng ảnh khuôn mặt.

Hình 1.8 a) Ảnh chụp trong nhà.

GVHD: SVTH :

Hình 1.8 b) Ảnh chụp ngoài trời.


9/93

1.3 Các công trình nghiên cứu và hướng tiếp cận liên quan đến nhận diện khuôn
mặt
Có rất nhiều hướng tiếp cận trước đây đã thực hiện liên quan đến vấn
đề phát hiện mặt người. Theo Ming-Hsuan Yang

[2]


, có thể phân loại thành bốn

hướng tiếp cận chính: dựa trên tri thức (knowledge-based), đặc trưng bất biến
(feature invariant), đối sánh mẫu (template matching), và dựa vào diện mạo
(appearance-based) 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).

o Các phương pháp dựa trên tri thức:
Hướng tiếp cận này chủ yếu dựa trên những luật được định nghĩa trước
về khuôn mặt người. Những luật này thường là các mối quan hệ giữa các thành
phần trên khuôn mặt. Có một số nghiên cứu từ rất sớm đã áp dụng phương
pháp này như của Kanade 1973 [3], G .Yang 1994 [4], Kotropoulos 1997 [ 5], Fan
[6]

phân đoạn ảnh màu để tìm cạnh thông qua thuật toán tăng vùng để xác định

các ứng viên.Dùng đặc tính hình ellipse của khuôn mặt người để xác định ứng
viên nào khuôn mặt người, Sahbi và Boujemaa

[7]

sử dụng mạng neural học để

ước lượng các tham số cho mô hình Gauss, mục đích để tìm ứng viên trên sắc
màu da của người. Sau khi có ứng viên, hai ông chiếu lên hai trục: đứng và
ngang để xác định khuôn mặt người.
o Hướng tiếp cận dựa trên các đặc trưng bất biến:
Hướng tiếp cận này cố gắng tìm kiếm những đặc trưng độc lập – những
đặc trưng không phụ thuộc vào tư thế khuôn mặt, điều kiện chiếu sáng, và các
khó khăn khác. Các đặc trưng như thế được gọi là bất biến và được sử dụng để

phát hiện khuôn mặt. Những công trình sử dụng hướng tiếp cận này có thể kể
như: K. C. Yow và R. Cipolla 1997 [11], T. K. Leung 1995 [12].
Gần đây có nhiều nghiên cứu sử dụng các đặc trưng toàn cục như: màu
da người, kích thước, và hình dáng để tìm các ứng viên khuôn mặt, rồi sau đó sẽ
xác định ứng viên nào là khuôn mặt thông qua dùng các đặc trưng cục bộ (chi
tiết) như: mắt, lông mày, mũi, miệng, và tóc [8], Kruppa

GVHD: SVTH :

[9]

dùng sắc màu của da


10/93

người để tìm ứng viên, nhưng ông không xử lý cho từng điểm ảnh theo cách
thông thường, mà ông dùng mô hình màu da người trên từng phần nhỏ rồi xử lý
phân đoạn trên đó. Sau khi có ứng viên khuôn mặt, ông dùng một số đặc tính về
hình dáng để xác định khuôn mặt người, Park dùng Gaze để tìm ứng viên góc
mắt, miệng và tâm mắt

[10]

. Ông xây dựng thuật toán SVM (Support Vector

Machine) đã được học trước đó để xác định các vị trí ứng viên có phải là góc
mắt, miệng, và tâm mắt hay không để phân lớp ảnh.
o Phương pháp đối sánh mẫu:
Trong hướng tiếp cận này, một mẫu khuôn mặt chuẩn được định nghĩa

bằng tay trước hoặc được tham số hóa bằng một hàm số. Mẫu này được sử dụng
để phát hiện khuôn mặt bằng cách quét nó qua ảnh và tính toán giá trị tương
đồng cho mỗi vị trí. Việc xuất hiện một khuôn mặt tại một vị trí nào đó trong ảnh
phụ thuộc vào giá trị tương đồng của điểm đó so với mẫu chuẩn. I. Craw 1992 [15]
đã áp dụng một mẫu cứng trong khi A. Lanitis 1995

[14]

sử dụng một mẫu có thể

biến dạng trong bước phát hiện khuôn mặt.
o Phương pháp dựa trên máy học:
Ngược với phương pháp đối sánh mẫu sử dụng các mẫu được các chuyên
gia định nghĩa trước, phương pháp này sử dụng những mẫu được rút trích qua
một quá trình học. Nói cách khác, các thuật toán dựa trên máy học dùng các kỹ
thuật phân tích thống kê và máy học để xấp xĩ một hàm phân lớp tuyến tính. Có
nhiều mô hình máy học được áp dụng trong hướng tiếp cận này: Eigenface (M.
Turk và A. Pentland 1991
Poggio 1998

[20]

GVHD: SVTH :

), Mô hình dựa trên phân phối (K. K. Sung and T.

), Mạng Nơ-ron (H. Rowley 1998

(E. Osuna et al 1997
[19].


[16]

[17]

[1]

), Support Vector Machine

), các mô hình tăng cường (AdaBoost của P. Viola)[18]


11/93

1.4

Thuật toán sử dụng mạng nơron để phát hiện khuôn mặt
Mạng nơron được áp dụng khá thành công trong các bài toán nhận dạng
mẫu. Xác định khuôn mặt người có thể xem là bài toán nhận dạng hai loại mẫu
(mẫu là mặt người và mẫu không phải là mặt người). Một thuận lợi khi dùng
mạng nơron để xác định khuôn mặt là tính khả thi của hệ thống học khi có sự
phức tạp trong lớp của các mẫu khuôn mặt.
Theo đánh giá các phương pháp dùng mạng nơron để xác định khuôn
mặt người của nhiều tác giả, thì nghiên cứu của Rowley

[1]

được xem là tốt nhất

đối với ảnh xám. Một mạng đa tầng được dùng để học các mẫu khuôn mặt và

không phải khuôn mặt từ các ảnh tương ứng .
1.4.1

Giới thiệu
Thuật toán sử dụng mạng nơron [1] để nhận dạng mẫu khuôn mặt người
trong một bức ảnh gồm bốn bước sau:
1.

Đưa vào một ảnh để nhận dạng, ảnh được chụp thẳng hoặc
nghiêng không quá 10o , chụp trong điều kiện ánh sáng bình thường.

2.

Xác định cửa sổ (Window) có khuôn mặt theo từng tỷ lệ co
ảnh gốc, đây còn gọi là bước phát hiện khuôn mặt.

3.

Tiền xử lý cửa sổ ảnh: chuyển cửa sổ ảnh từ màu sang đen
trắng, cân bằng sáng, làm nổi ảnh.

4.

Cửa sổ ảnh thu được sau giai đoạn tiền xử lý ở bước 3 sẽ đưa
vào mạng nơron đã được huấn luyện để xác định đây có phải là mẫu
khuôn mặt người hay không.

Thuật toán được minh họa như hình 1.9.

GVHD: SVTH :



12/93

Hình 1.9. Sử dụng cấu trúc mạng nơron nhân tạo (Aftificial Neural
Network) để phát hiện các mẫu khuôn mặt và không phải khuôn mặt.
o Ảnh đầu vào
Ảnh có thể được thu nhận bằng máy quét Scanner, Webcam, hoặc các
thiết bị thu nhận ảnh thông dụng khác.
o Phát hiện khuôn mặt
- Dùng một cửa sổ (Window) có kích thước 25x25 điểm ảnh quét cửa
sổ đó qua toàn bộ ảnh gốc. Với mỗi khung hình con được tạo bởi cửa sổ trên
ảnh gốc, đưa khung hình đó qua một mạng nơron đã được huấn luyện để tìm
xem có mẫu khuôn mặt trong cửa sổ hay không.
GVHD: SVTH :


13/93

- Để xác định khuôn mặt có kích thước lớn hơn 25x25 điểm ảnh, ta co
ảnh gốc theo nhiều tỷ lệ khác nhau (biến thiên tỷ lệ này do người xây dựng
quyết định) rồi dùng cửa sổ quét qua toàn bộ các tỷ lệ ảnh này để tìm tất cả các
vị trí tương đối của các khuôn mặt ở các tỷ lệ khác nhau này.
o Tiền xử lý ảnh
Chuyển đổi khung hình con trong cửa sổ từ ảnh màu thành ảnh trắng
đen (Grayscale). Sau đó thực hiện cân bằng ánh sáng (Linear BestFit Adjust) để
tránh những vùng quá sáng hay quá tối, làm tăng độ tương phản (Histogram
Equalization). Kết quả ảnh ở giai đoạn này trung thực với ảnh gốc, có độ chứng
thực bởi mạng nơron chính xác cao.
o Nhận dạng ảnh bằng mạng nơron

Để xác định vùng ảnh trong cửa sổ nào có chứa mẫu khuôn mặt người,
dùng một mạng nơron đã huấn luyện để nhận một vùng ảnh có kích thước
25x25 điểm ảnh và xuất ra một giá trị trong khoảng từ -1 đến 1. Khi đưa vào
một vùng ảnh, nếu kết quả gần -1 thì nghĩa là vùng ảnh này không chứa mẫu
khuôn mặt người, nhưng nếu kết quả gần 1 thì nhiều khả năng vùng ảnh này
chứa mẫu khuôn mặt người.
1.4.2

Ưu điểm
• Một thuận lợi khi dùng mạng nơron để xác định khuôn mặt là tính khả thi
của hệ thống học khi có sự phức tạp trong lớp của các mẫu khuôn mặt.
• Ngoài ra khả năng phát hiện mặt người của mạng nơron là rất tốt. Mặt
khác các phương pháp ra quyết định trong nhận dạng truyền thống được
cài đặt tĩnh trong chương trình, khi muốn bổ sung thêm các mẫu học mới
phải thiết kế lại chương trình. Trong khi với mạng nơron, chỉ cần cung cấp
một tập mẫu vào, ra của dữ liệu mới cho pha huấn luyện mà không ảnh
hưởng đến cấu trúc chương trình ban đầu.
• Độ chính xác cao nếu được huấn luyện tốt.

GVHD: SVTH :


14/93

1.4.3

Khuyết điểm
• Tuy nhiên, một điều trở ngại là các kiến trúc mạng đều tổng quát, khi áp
dụng thì phải xác định rõ ràng số lượng lớp, số lượng nơron mỗi lớp, tỷ lệ
học, …, cho từng trường hợp cụ thể.

• Chi phí huấn luyện cực cao, dữ liệu huấn luyện lớn. Có thể bị ảnh hưởng
bởi nhiễu, thường phải kết hợp với các phương pháp

[8],[9],[10],[21],[22],[23]

để có

kết quả tối ưu.
1.5
1.5.1

Giới thiệu mục đích và giới hạn phạm vi nghiên cứu của khóa luận
Mục đích
• Ứng dụng nền tảng mạng nơron đã nghiên cứu và cài đặt [phụ lục] vào
một vào một ứng dụng lớn mang tính thực tế.
• Cài đặt thành công cơ sở lý thuyết phát hiện khuôn mặt dựa theo nghiên
cứu [1].
• Áp dụng được một số cải tiến cho ứng dụng.
• Là một nỗ lực tìm hiểu, cài đặt các nghiên cứu, kỹ thuật mới trên thế giới,
cung cấp nền tảng, tài nguyên cho các nghiên cứu sâu hơn.

1.5.2

Giới hạn phạm vi nghiên cứu
Trong khóa luận này, do giới hạn thời gian, chúng tôi chỉ bàn và nghiên
cứu việc xác định sự xuất hiện và định vị khuôn mặt nếu có trong ảnh. Khóa
luận có những giới hạn sau:
Thuật toán giải quyết cho ảnh đơn (chưa xử lý cho ảnh Video).
Ảnh khuôn mặt được chụp thẳng hay góc nghiêng không đáng kể (không
quá 100).

Ảnh được chụp trong điều kiện ánh sáng bình thường (không chụp
ngược sáng), ảnh phải được chụp bằng máy ảnh kỹ thuật số, webcam.
Ảnh không bị che khuất, chồng lên nhau, có các biểu cảm đặc biệt (1.2).

GVHD: SVTH :


15/93

Chương 2.

CÁC CƠ SỞ LÝ THUYẾT VÀ THUẬT TOÁN ÁP DỤNG
VÀO PHÁT HIỆN KHUÔN MẶT NGƯỜI.

2.1

Hướng tiếp cận của khóa luận
Chương trình xử lý ảnh được nhóm chúng tôi tham khảo từ luận án tiến
sỹ của Herry Rowley[1] . Trong luận án ông đã trình bày chi tiết về chương
trình phát hiện khuôn mặt trong ảnh số cùng với hướng tiếp cận là dùng mạng
neuron nhân tạo. Ba vấn đề đã được nêu ra để xử lý trong quá trình tìm khuôn
mặt:
• Một là ảnh khuôn mặt có nhiều chi tiết khác nhau, phụ thuộc vào
nguồn sáng, tư thế, biểu cảm của khuôn mặt. Giải thuật chỉ có thể giải
xử lý một số đặc trưng và buộc phải bỏ đi những chi tiết không quan
trọng hoặc không thể mô hình hóa.
• Hai là một hoặc nhiều mạng neuron được phân chia để xử lý những
khác biệt của khuôn mặt.
• Ba là việc gom kết quả trả về của tất cả các mạng neuron để tổng hợp
ra một kết quả duy nhất về đối tượng.

Việc xử lý như trên rất phức tạp. Chính vì vậy khóa luận chỉ sử dụng
duy nhất một mạng neuron để xử lý phát hiện khuôn mặt.
Các khó khăn trong quá trình xử lý hình ảnh :
• Sự khác biệt của khuôn mặt ngay trong bức ảnh như: việc quay, kéo
dãn một chiều, phóng đại, hay tạo một hình ảnh của khuôn mặt qua
gương. Ngoài ra còn các vấn đề về sự chiếu sáng, độ tương phản và
diện tích bị che lấp của vùng khuôn mặt.
• Sự khác biệt về tư thế của khuôn mặt trong ảnh: như việc quay người,
cúi xuống hay đang vận động khi chụp ảnh, việc chụp ảnh ở khoảng
cách xa sẽ làm mờ ảnh.

GVHD: SVTH :


16/93

• Sự khác biệt về ánh sáng và bố cục của bức ảnh: khi chụp ảnh trong
các môi trường có cường độ sáng khác nhau sẽ tạo ra những bức ảnh
có cường độ sáng tối khác nhau. Cộng với nền của bức ảnh sẽ gây
nhiễu nhiều hay ít.
• Cuối cùng là hình dáng của khuôn mặt như chớp mắt, mở miệng hay
nói tóm lại là trạng thái của khuôn mặt.
Trong luận án cũng đưa ra cách giải quyết các vấn đề trong tìm kiếm
khuôn mặt như phương pháp loại bỏ nhiễu ánh sáng (bằng cách xử lý hình ảnh
trước khi đưa vào mạng xử lý), tìm những khuôn mặt trong tư thế nghiêng
(bằng cách quay khung cửa sổ nhỏ đang xét theo những góc độ khác nhau hay
sử dụng nhiều mạng nơron mỗi mạng tìm khuôn mặt ở những tư thế riêng rồi
sau đó tổng hợp các giá trị của các mạng lại…). Với mức độ khóa luận đại học
chúng tôi chỉ đi sâu vào tìm hiểu nhận diện khuôn mặt nhìn thẳng và cải tiến
thuật toán nhằm tăng tốc ứng dụng.

2.2

Các thuật toán tiền xử lý ảnh :
Ảnh màu có 3 thông số màu khác nhau cho các giá trị màu RGB nếu
dùng cả 3 giá trị này để tính toán thì phải xử lý rất phức tạp. Không những thế
các nhiễu phát sinh do việc chụp ảnh như loại máy ảnh,các tư thế chụp hình,
màu sắc, cường độ ánh sáng chiếu vào các phần khuôn mặt sẽ tạo ra màu sắc
khác nhau trên khuôn mặt. Chính vì vậy mà ta phải chuyển ảnh sang đen trắng
sau đó cân bằng sáng cho khuôn mặt rồi cuối cùng là dãn màu sắc và tăng độ
tương phản.

Chuyển ảnh thành trắng đen (Grayscale Converter)
Chuyển ảnh màu thành ảnh đen trắng. Tại sao chúng ta lại phải làm
điều đó? Bởi vì ảnh màu quá phức tạp để tiến hành xử lý trong khi chúng ta chỉ
cần một ảnh đen trắng cũng có thể nhận diện chính xác một khuôn mặt.
Để hiểu được quá trình chuyển từ một ảnh màu sang một ảnh đen trắng
ta cần phải biết sự tổng hợp 3 màu (đỏ, xanh lá, xanh đậm) trong cấu trúc màu
RGB. Các Pixel trong ảnh màu có giá trị của các màu cơ bản nằm trong khoảng
GVHD: SVTH :


17/93

từ 0->255 (8 bit cho một màu hoặc là 24 bit cho 3 màu). Sự tổng hợp màu sắc
do thay đổi các thông số khác nhau của các màu cơ bản sẽ cho các màu sắc
khác nhau.
Ví dụ như với các thông số :


(255,0,0) cho màu đỏ.




(0,255,0) cho màu xanh lá.



(0,0,255) cho màu xanh đậm.



(0,0,0) cho màu đen.



(255,255,255) cho màu trắng.

Theo cấu trúc như vậy ta có thể nhận ra được là với một màu sắc mà ta
tiến hành tăng hay giảm cùng một tỉ lệ cho 3 màu cùng một lúc thì ta sẽ nhận
được cùng màu sắc đó nhưng với độ sáng hay tối khác nhau. Hay nói tóm gọn
lại là thang độ màu sắc từ màu sáng nhất đến màu tối nhất (màu đen). Ví dụ ta
có màu trắng có thông số của 3 màu là (255, 255, 255), ta muốn một màu tối
hơn một chút (màu trắng xám) thì thông số sẽ giảm đi vài đơn vị đối với tất cả
các màu ở đây ta chọn (230, 230, 230) với tỉ lệ giảm là 230 / 255. Với tỉ lệ
giảm càng cao thì màu trắng sẽ chuyển thành màu đen.
Vậy vấn đề đặt ra là làm sao để chuyển từ màu sắc bất kì sang thang độ
màu đen trắng. Để giải quyết vấn đề này ta cần một hàm ánh xạ các màu sắc bất
kì sang màu trong thang độ đen trắng tương ứng. Đơn giản nhất là hàm này sẽ
lấy các thông số của 3 màu cơ bản nhân với các thông số tương ứng x,y,z với
điều kiện x+y+z=1 rồi tiến hành cộng các kết quả lại. Lấy kết quả đó làm thông

số cho cả 3 giá trị màu. Ta sẽ được màu đen trắng tương ứng.
Ví dụ : Ta lấy các tỉ lệ 0.32, 0.5, 0.18 này để ánh xạ các màu sang
thang màu trắng đen và ta lấy hai màu: tím (140, 120, 240), trắng (255, 255,
255) để ánh xạ.
 Tổng các tỉ lệ phải bằng 1: 0.32 + 0.5 + 0.18=1. Nhằm đảm bảo
rằng giá trị sau khi tính toán phải thuộc khoảng [0, 255]. Giá trị càng
gần 0 thì càng đen, càng gần 255 thì càng trắng.
GVHD: SVTH :


18/93

 Chuyển từ màu tím sang trắng đen : 0.32*140 + 0.5*120 +
0.18*240=148. Vậy ta có màu trắng đen là (148, 148, 148) tỉ lệ giảm
so với màu trắng là : 148 / 255. Làm tương tự với màu trắng ta được
kết quả sau khi chuyển vẫn là (255, 255, 255). Vậy màu trắng vẫn là
màu trắng không thay đổi sau khi chuyển. Áp dụng tương tự với các
màu khác nhau. Ta có hàm chuyển sang màu trắng đen :
1. Tạo một mảng đối tượng chứa giá trị của pixel màu (biến
Color). Biến này chứa 3 thông số của 3 màu cơ bản (Color (r, g,
b )). Số phần tử trong mảng bằng với số pixel của bức ảnh.
2. Tại mỗi pixel thực hiện chuyển sang thang màu đen trắng
như được giới thiệu ở phần trước (phần chuyển ảnh màu sang
đen trắng 2.2.1).
3. Làm lại bước 2 cho đến khi duyệt hết toàn bộ các Pixel
của bức ảnh. Kết quả sau khi chuyển từ ảnh màu sang ảnh trắng
đen ta sẽ thấy được như minh họa trong hình 2.1. và hình 2.2.

Hình 2.1 Ảnh gốc


GVHD: SVTH :

Hình 2.2 Ảnh đen trắng


19/93

Mã hàm chuyển ảnh đen trắng :
Public Void GrayScale()
{

//biến lấy giá trị màu sắc của pixel trong ảnh màu
Color col;
//biến chứa giá trị màu sắc sau khi chuyển sang //trắng đen
int gray;
//Tính toán và cập nhật lại toàn bộ pixel.
for (int l = 0; lfor (int c = 0; c{
if (mask[l][c] == 1)
{
col = img.GetPixel(l,c);
gray = (int)(0.32f * col.R + 0.5f * col.G + 0.18f*
col.B);
img.SetPixel(l,c,Color.FromArgb( gray, gray, gray));
}
}
}

GVHD: SVTH :



20/93

2.2.1

Cân bằng ánh sáng
Mục đích của việc làm cân bằng sáng là làm giảm bớt nhiễu do ánh
sáng chiếu vào khuôn mặt khi chụp ảnh. Vì khi chụp ảnh ở các tư thế, thời gian
khác nhau sẽ cho ảnh có chất lượng khác nhau về độ chiếu sáng ở từng phần
trên khuôn mặt. Kết quả ảnh được cân bằng ánh sáng ta sẽ thấy được như minh
họa trong hình 2.3. và hình 2.4.

Hình 2.3.
Ảnh chưa cân bằng sáng

Hình 2.4.
Ảnh đã cân bằng sáng

Mã hàm LinearBestFitAdjust()
Void LinearBestFitAdjust(Bitmap img)

{
//mảng lưu giá trị duyệt theo dòng.
float[] ra = new float[w];
float[] rb = new float[w];
//Mảng lưu giá trị duyệt theo cột.
float[] ca = new float[h];
float[] cb = new float[h];
//Các biến trong quá trình xử lý.

float sx, sy, sxy, sxx;
//Biến lưu trữ số lượng pixel được xử lý khi
//duyệt theo hàng hoặc cột.
int n;
//Biến chứa giá trị của pixel khi duyệt theo
//hàng.
float p;
// Duyệt theo dòng :
for(int l=0; l{
n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;
for(int c=0; c{
if (mask[l][c] == 1)
{
GVHD: SVTH :


21/93
sx += c; sxx += c * c;
p = img.GetPixel(l,c).R;
sy += p;
sxy += p*c;
n++;
}
}
ra[l] = (n*sxy - sx*sy)/(n*sxx - sx*sx);
rb[l] = sy/n - ra[l] * sx/n;
}
//Duyệt theo cột.

for(int c=0; c{
n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;
for(int l=0; l{
if (mask[l][c] == 1)
{
sx += l; sxx += l * l;
p = ra[l] * c + rb[l]; // c ou l ?
sy += p;
sxy += p*l;
n++;
}
}
ca[c] = (n*sxy - sx*sy)/(n*sxx - sx*sx);
cb[c] = sy/n - ca[c] * sx/n;
}
// Áp dụng lên ảnh.
int g;
for(int l=0; lfor(int c=0; c{
g = img.GetPixel(l,c).R;
g = g - (int)(ca[c] * l + cb[c])+128;
if (g<0) g = 0;
if (g>255) g = 255;
img.SetPixel(l,c,Color.FromArgb(g, g, g));
}
}


Vì giải thuật này thuộc nghiên cứu chuyên sâu về ánh sáng và hình ảnh.
Nên chúng tôi không đi sâu vào nghiên cứu chi tiết mà chỉ dừng lại ở mức tìm
hiểu và sử dụng. Nếu cần biết thêm chi tiết tham khảo [1].

GVHD: SVTH :


×