Vũ Nguyễn Anh Huy - CĐTH11C
LỜI CẢM ƠN
Trên thực tế, không có một sự thành công nào mà không có sự hỗ trợ, dù ít hay
nhiều, dù trực tiếp hay gián tiếp của người khác.
Trong suốt thời gian học tập tại trường Cao đẳng Kỹ thuật Cao Thắng, tác giả đã
nhận được rất nhiều sự quan tâm, giúp đỡ về của quý Thầy Cô, bạn bè. Với lòng biết
ơn sâu sắc nhất, tác giả xin gửi lời cảm ơn đến quý Thầy Cô ở khoa Công nghệ thông
tin, những người đã dùng hết tâm huyết để truyền đạt lại những kiến thức, kinh nghiệm
quý báu của mình cho sinh viên.
Đặc biệt, tác giả xin chân thành cảm ơn thầy Lữ Cao Tiến, người đã bỏ ra rất
nhiều thời gian, công sức và nhiệt huyết để giảng dạy cho tác giả nhiều điều, giúp đỡ
cho tác giả không chỉ về kiến thức mà còn cả về tinh thần để tác giả có thể hoàn thành
Đồ án tốt nghiệp này.
Ngoài ra, tác giả xin cảm ơn thầy Dương Hữu Phước. “Một chữ cũng là thầy,
nửa chữ cũng là thầy”, tuy chỉ gặp thầy ở tháng cuối cùng, nhưng thầy đã truyền đạt
cho tác giả nhiều kiến thức bổ ích, giúp tác giả bổ sung thêm những kiến thức còn thiếu
sót.
Cuối cùng, tác giả xin gửi lời cảm ơn đến gia đình và bạn bè, những người luôn
ở bên cạnh giúp đỡ cho em, đặc biệt là bạn Trương Tấn Khải, tuy không chung nhóm
nhưng bạn đã hỗ trợ cho tác giả rất nhiều trong việc chạy thực nghiệm và thu thập kết
quả.
Đồ án chỉ là bước đầu tìm hiểu một công trình nghiên cứu đã có từ lâu, vì vậy
không thể tránh khỏi những sai sót, lỗi lầm do sự thiếu hụt về kiến thức căn bản cũng
như nâng cao mà tác giả có. Đồ án cũng giúp tác giả bắt đầu hiểu thế nào là nghiên cứu
khoa học, tìm hiểu một vấn đề mới theo một khía cạnh khác, vì vậy tác giả rất mong
nhận được sự cảm thông của quý Thầy Cô, và những lời đóng góp, chia sẻ của quý
Thầy Cô sẽ là động lực lớn lao nhất để tác giả hoàn thành tốt đồ án này.
Một lần nữa tác giả xin chân thành cảm ơn!
TPHCM, ngày … tháng … năm …
GIÁO VIÊN PHẢN BIỆN
Vũ Nguyễn Anh Huy - CĐTH11C
NHẬN XÉT CỦA HỘI ĐỒNG
MỤC LỤC
GIỚI THIỆU CHUNG 1
1.1. Tổng quan về bài toán phát hiện mặt người 1
1.1.1. Giới thiệu chung 1
1.1.2. Một số hướng tiếp cận để giải quyết bài toán 2
1.2. Phân biệt bài toán phát hiện mặt người và nhận diện mặt người 3
1.3. Các ứng dụng của hệ thống dò tìm, phát hiện và nhận dạng mặt người 4
1.4. Một số công trình nghiên cứu và sự lựa chọn của đồ án 6
1.5. Các thách thức trong hệ thống dò tìm, phát hiện khuôn mặt 7
1.6. Một số vấn đề liên quan trong đồ án 8
MẠNG NEURAL NHÂN TẠO 9
2.1. Tổng quan về mạng neural 9
2.1.1. Giới thiệu về mạng neural sinh học 9
2.1.2. Giới thiệu về mạng neural nhân tạo 11
2.1.3. Lịch sử phát triển của mạng neural nhân tạo: 13
2.1.4. Khái niệm về Neural 14
2.1.5. Khái niệm về perceptron 16
2.2. Mạng Perceptron truyền thẳng 17
2.2.1. Mạng Perceptron 17
2.2.2. Mạng Perceptron truyền thẳng nhiều lớp 18
2.2.3. Các phương pháp học của mạng 20
Học có giám sát 21
Học không có giám sát 22
Học tăng cường 22
Phương pháp huấn luyện cho mạng và sự lựa chọn của đồ án 22
2.2.4. Thuật toán lan truyền ngược 24
2.2.5. Ví dụ về thuật toán lan truyền ngược 34
2.2.6. Một số vấn đề khi sử dụng mạng neural 36
Vũ Nguyễn Anh Huy - CĐTH11C
Kì vọng 61
Ma trận hiệp phương sai 61
Vũ Nguyễn Anh Huy - CĐTH11C
4.2. Động cơ của phương pháp phân tích thành phần chính 62
4.3. Cơ sở toán học 63
4.4. Tính toán eigenfaces (Các vector riêng) 65
4.4.1. Phân tích ma trận QR 69
Giới thiệu 69
Các phương pháp phân tích QR 70
Thuật toán HouseHolder 71
4.4.2. Thuật toán lặp QR tìm trị riêng và vector riêng 77
Thuật toán “Pure” QR 78
Thuật toán QR thực tế 78
4.5. Chuẩn hóa eigenfaces 79
4.6. Cắt giảm các eigenfaces 81
4.7. Biểu diễn lại ảnh học trên không gian mới 82
DÒ TÌM PHÁT HIỆN MẶT NGƯỜI 84
5.1. Giới thiệu về bài toán dò tìm phát hiện mặt người 84
5.1.1. Mô hình của bài toán 84
5.1.2. Bài toán phân lớp 85
5.2. Huấn luyện mạng neural 87
5.2.1. Chuẩn bị cơ sở dữ liệu 87
5.2.2. Xây dựng không gian khuôn mặt 89
5.2.3. Cấu hình cho mạng neural 90
5.2.4. Kết quả chạy thử nghiệm 90
Thời gian 91
Hiệu suất 92
Hình 2.1. Các loại tế bào thần kinh sinh học 10
Hình 2.2. Synapse 11
Hình 2.3. Mạng neural nhân tạo 13
Hình 2.4. Neural nhân tạo 15
Hình 2.5. Mạng perceptron (Single player) 17
Hình 2.6. Mạng perceptron nhiều lớp 19
Hình 2.7. Mạng neural dùng trong minh họa thuật toán lan truyền ngược 24
Hình 2.8. Các thành phần của neural nhân tạo 25
Hình 2.9. Minh họa lan truyền tiến 26
Hình 2.10. Minh họa lan truyền tiến 27
Hình 2.11. Minh họa lan truyền tiến 27
Hình 2.12. Tính giá trị lỗi ở neural đầu ra ở lớp đầu ra 30
Hình 2.13. Lan truyền lỗi ở neural lớp đầu ra đến các neural ở lớp ẩn 2 31
Hình 2.14. Lan truyền lỗi từ các neural lớp ẩn 2 đến các neural lớp ẩn 1 32
Hình 2.15. Cập nhật lại trọng số kết nối từ lớp đầu vào tới lớp ẩn 34
Hình 2.16. Cập nhật lại trọng số liên kết từ lớp ẩn 2 tới lớp đầu ra 34
Hình 2.17. Biểu đồ sự biến thiên khác biệt của hàm Sigmoid 39
Hình 2.18. Mạng neural 1 neural input, 1 neural output, 1 bias 40
Hình 2.19. Biểu đồ biến thiên của hàm Sigmoid khi có bias 40
Hình 2.20. Sự biến thiên của trọng số khi không có Momentum 42
Hình 2.21. Sự biến thiên của trọng số khi có Momentum 42
Hình 3.1. Quá trình xử lý ảnh 43
Hình 3.2. Minh họa về điểm ảnh 44
Hình 3.3. Ví dụ về không gian màu RGB 45
Hình 3.4. Các thuật toán xử lý ảnh trong đồ án 46
Hình 3.5. Ảnh bị tối bên phải 48
Vũ Nguyễn Anh Huy - CĐTH11C
Hình 5.7. Một số ảnh trong cơ sở dữ liệu ORL 88
Hình 5.8. Một số ảnh trong bộ dữ liệu testing 88
Hình 5.9. Mô hình dò tìm phát hiện mặt người bằng mạng neural của Rowley 89
Hình 5.10. Minh họa về “pyramid” của Rowley 134
Hình 5.11. Ảnh chứa các khuôn mặt nhỏ 135
Hình 5.12. Kích thước các cửa sổ sẽ được quét qua ảnh 135
Hình 5.13. Ảnh 1 trước khi phân vùng màu da 136
Hình 5.14. Ảnh 1 sau khi phân vùng màu da 137
Hình 5.15. Ảnh 2 trước khi phân vùng màu da 137
Hình 5.16. Ảnh 2 sau khi phân vùng màu da 138
Hình 5.17. Hiện tượng chồng chéo 138
Hình 5.18. Ảnh 3 trước khi sử dụng heuristic 139
Hình 5.19. Hình 3 sau khi sử dụng heuristic 139
Hình 5.20. Giao diện giới thiệu 141
Hình 5.21. Giao diện chính 142
Hình 5.22. Cách mở phần mềm con 142
Hình 5.23. Cách di chuyển giữa các giao diện phần mềm con 143
Hình 5.24. Các biểu tượng đại diện cho phần mềm con 143
Hình 5.25. Nút thoát chương trình 144
Hình 5.26. Cách chung để thoát phần mềm con 144
Hình 5.27. Giao diện phần mềm dò tìm phát hiện mặt người 145
Hình 5.28. Menu File 145
Hình 5.29. Giao diện thiết lập thông số quét 146
Hình 5.30. Kết quả sau khi phát hiện mặt người 147
Hình 5.31. Giao diện của phần mềm mạng neural nhân tạo 148
Hình 5.32. Giao diện phần mềm xử lý ảnh 149
Hình 5.33. Menu Process 150
trí và kích thước của các mặt người có trong các ảnh bất kỳ. Kỹ thuật này sẽ phát hiện
ra các mặt người có trong ảnh và bỏ qua các đối tượng khác như cây cối, tòa nhà, bàn
ghế,…
Như định nghĩa trên, ta thấy nhiệm vụ của bài toán phát hiện mặt người là đi tìm
các vùng có dạng giống với mặt người trong 1 ảnh cho trước. Với bài toán này ta có thể
hiểu đơn giản rằng, nếu ta có 1 bộ dữ liệu các mặt người, ta gọi là bộ dữ liệu mẫu, sau
đó ta so sánh các vùng với bộ dữ liệu mẫu để tìm sự tương quan giữa chúng. Ngoài ra,
ta cũng có thể chuẩn bị sẵn một bộ luật về mặt người, sau đó áp dụng nó vào một vùng
và xem vùng này có đáp ứng được một mức độ nào đó của bộ luật này hay không và
đưa ra kết luận.
Dĩ nhiên trên thực tế việc so sánh một vùng bất kỳ với các ảnh trong bộ dữ liệu
mặt người hoặc tìm ra một bộ luật về mặt người là không hề đơn giản. Dù đã có nhiều
phương pháp đã được xuất nhưng cho đến nay vẫn chưa có một phương pháp nào thực
sự trọn vẹn, mang lại hiệu quả ổn định và giải quyết hết các thách thức cũng như tình
huống trong vấn đề phát hiện mặt người. Một nguyên nhân cơ bản làm cho vấn đề trở
nên phức tạp là vì nếu ảnh bị nhiễu hoặc có vật cản phía trước khuôn mặt sẽ gây ra tình
trạng các đặc trưng như mắt, mũi, miệng,…bị che khuất, điều này có thể dẫn đến việc
so sánh vùng ảnh có khuôn mặt này với bộ dữ liệu mẫu không trùng khớp hay không
đáp ứng được bộ luật mặt người, dẫn đến kết luận sai và bỏ sót khuôn mặt trên ảnh, vì
vậy cho đến nay bài toán phát hiện mặt người vẫn đang là vấn đề mở và được nhà khoa
học tiếp tục nghiên cứu. Ngoài ra còn nhiều những nguyên nhân phức tạp khác, sẽ
được đề cập trong phần 1.5.
Vũ Nguyễn Anh Huy - CĐTH11C
2
1.1.2. Một số hướng tiếp cận để giải quyết bài toán
Về hướng tiếp cận thì 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:
Active Shape Model (ASM)
Dựa vào diện mạo
Khuôn mặt riêng (Eigenface)
Eigenvector decomposition and
clustering
Vũ Nguyễn Anh Huy - CĐTH11C
3
Dựa trên phân phối (Distribution -
based)
Gaussian distribution and multilayer
perceptron
Neural Network
Ensem of neural networks and
arbitration schemes
Support Vector Machine (SVM)
SVM with polynomial kernel
Phân lớp bayes (Naïve Bayes
Classifier)
Joint statistics of local appearance and
position
Mô hình Markov ẩn (Hidden Markov
Model)
Higher order statistics with HMM
(Hidden Markov Model)
Information - Theoretical Approach
Kullback relative information
Bảng 1.1. Một số hướng tiếp cận
Các ứng dụng chuyên biệt cho ngành hàng không
o Đảm bảo sự truy cập và tính hợp lệ trong công việc cho từng nhân
viên: Mỗi nhân viên làm việc tại cảng hàng không cũng như nhân
viên phi hành đoàn được cung cấp quyền truy cập để đến vị trí làm
việc. Làm thế nào để xác minh nhân viên này vào đúng khu vực làm
việc hay không?
o Làm sao để đảm bảo trong số những hành khách không có sự trà
trộn của một số kẻ khủng bố/tội phạm quốc gia/quốc tế?
Bảo vệ trẻ tác giả ở nhà trẻ từ bọn bắt cóc
o Quy định rằng chỉ có những nhân viên của nhà trẻ mới được phép
dẫn trẻ tác giả ra ngoài và trao tận tay cho bố mẹ đón về. Nhưng
trong xã hội cũng có một số trường hợp giả danh nhân viên để bắt
Vũ Nguyễn Anh Huy - CĐTH11C
5
cóc trẻ tác giả với mục đích xấu. Làm thế nào để ngăn chặn hành vi
xấu này?
Nhận diện mặt người được sử dụng với thẻ truy cập
o Ở các nước phát triển, hầu như mọi người dân đều dùng thẻ tín
dụng để mua bán, rút tiền, trao đổi hàng hóa. Điều này rất nguy
hiểm khi thẻ truy cập này bị người khác lấy được và biết được mật
khẩu của sở hữu thẻ này? Làm cách nào có thể bảo đảm an toàn
nhất?
Có thể dùng song song 2 mật khẩu: có nghĩa là sử dụng
khuôn mặt như là một mật khẩu thứ hai để truy cập vào hệ
thống cùng với thông tin từ card truy cập để rút được tiền:
Đưa thẻ vào hệ thống.
Nhập mật khẩu số.
Nếu đúng thì đưa khuôn mặt vào để nhận diện.
1.4. Một số công trình nghiên cứu và sự lựa chọn của đồ án
Cho đến nay đã có rất nhiều những công trình nghiên cứu khoa học về bài toán dò
tìm, phát hiện và nhận diện mặt người được công bố, các công trình nghiên cứu hầu
như đều dựa vào các hướng tiếp cận đã được đề xuất trong phần 1.1.2, dưới đây là một
số công trình nghiên cứu [3]:
Wenyi Zhao, Arvindh Krishnaswamy, Rama Chellappa, Danie L.Swets,
John Weng (1998) sử dụng phương pháp phân tích thành phần chính
(Principal Component Analysis) kết hợp phân tích độc lập tuyến tính
(Linear Discriminant Analysis).
John Daugnman (1998) đưa ra phương pháp dùng đặc trưng về tròng của
mắt để phân biệt cặp trai/gái song sinh.
Antonio J.Colmenarez và Thomas S.Huang (1998) sử dụng kỹ thuật học thị
giác và phù hợp mẫu 2–D.
Kazunori Okada, Johannes Steffens, Thomas Maurer, Hai Hong, Egor
Elagin, Hartmut Neven, and Christoph (1998) nhận dạng khuôn mặt dựa vào
sóng Gabor và phương pháp phù hợp đồ thị bó.
Vũ Nguyễn Anh Huy - CĐTH11C
7
Baback Moghaddam và Alex Pentland (1998) đưa ra phương pháp phù hợp
thị giác trực tiếp từ các ảnh cần sửdụng cho mục đích nhận dạng khuôn mặt
và dùng độ đo xác suất để tính độ tương tự.
Rowley, Baluja, and Kanade (1998) sử dụng mạng neural nhân tạo để phân
lớp khuôn mặt và không phải khuôn mặt.
Guodong Guo, Stan Z.Li, Kap Luk Chan (2001) dùng phương pháp SVM để
nhận diện khuôn mặt.
Ngoài ra cũng còn rất nhiều những công trình nghiên cứu khác. Trong đồ án này,
tác giả sử dụng phương pháp phân tích thành phần chính (PCA) kết hợp với mạng
neural nhân tạo (Artificial Neural Network) để giải quyết bài toán. Mạng neural nhân
Định vị khuôn mặt hay xác định vị trí khuôn mặt: Đây là vấn đề rất
gần với vấn đề phát hiện mặt người. Nếu như phát hiện mặt người trong
ảnh là phải trả lời các câu hỏi có tồn tại khuôn mặt trong ảnh hay không ?
Nếu tồn tại thì tồn tại bao nhiêu khuôn mặt? Vị trí của khuôn mặt ở đâu ?
Thì vấn đề định vị mặt người chỉ trả lời cho câu hỏi vị trí mặt người ở
đâu trong một ảnh đã biết trước là có một mặt người. Như vậy có thể
thấy, định vị khuôn mặt là một phần công việc của phát hiện mặt người.
Phát hiện các đặc trưng của khuôn mặt: Đây là vấn đề cũng rất gần với
vấn đề định vị khuôn mặt. Nó cũng giả thiết rằng chỉ có một khuôn mặt
trong ảnh và việc phát hiện đặc trưng khuôn mặt là tìm ra vị trí của các
đặc trưng như đôi mắt, mũi, miệng, môi, tai…
Bám sát khuôn mặt: Mục đích của vấn đề này là ước lượng liên tục sự
thay đổi về vị trí và huớng của khuôn mặt trong một chuỗi ảnh thời gian
thực.
Nhận diện trạng thái khuôn mặt: Mục tiêu của vấn đề này là nhận diện
trạng thái của khuôn mặt con người (Hạnh phúc, tức giận, đau khổ…).
Đây là vấn đề rất khó và thú vị vì trạng thái khuôn mặt của từng người có
thể là rất khác nhau trong cùng một trạng thái tâm lý. Vấn đề này trong
hệ thống dò tìm phát hiện mặt người cũng cần được lưu ý, tuy nhiên nó là
một gánh nặng thật sự trong hệ thống nhận diện mặt người.
Vũ Nguyễn Anh Huy - CĐTH11C
9
MẠNG NEURAL NHÂN TẠO
2.1. Tổng quan về mạng neural
2.1.1. Giới thiệu về mạng neural sinh học
Hệ thống thần kinh (Neural network) là một mạng lưới các tế bào chuyên biệt cho
việc tiếp nhận, hội nhập và truyền tải thông tin. Bao gồm não, tủy sống (Hệ thống thần
Ngoài ra, giữa các nhánh vào và phần thân tế bào, còn có một yếu tố quan trọng
khác, đó là khớp thần kinh (Synapse):
Vũ Nguyễn Anh Huy - CĐTH11C
11 Hình 2.2. Synapse
Tế bào thần kinh tự nhiên nhận được tín hiệu thông qua các khớp thần kinh nằm
trên tua gai hoặc màng của tế bào thần kinh. Khi các tín hiệu nhận được đủ mạnh
(Vượt qua một ngưỡng nhất định), các tế bào thần kinh được kích hoạt và phát ra một
tín hiệu đến sợi trục. Tín hiệu này có thể được gửi đến khớp thần kinh khác, và có thể
kích hoạt tế bào thần kinh khác [5].
Như vậy, khớp thần kinh có chức năng tiếp nhận tín hiệu từ các tua gai và gửi đến
nhân tế bào. Khớp thần kinh chính là yếu tố quyết định sự truyền tải tín hiệu nhanh hay
chậm, tức là sẽ quyết định một người nào đó suy nghĩ nhanh hay chậm nhờ vào tốc độ
và khả năng truyền tải tín hiệu của nó.
2.1.2. Giới thiệu về mạng neural nhân tạo
Mạng neural nhân tạo, Artificial Neural Network (ANN) gọi tắt là mạng neural,
là một mô hình xử lý thông tin phỏng theo cách thức xử lý thông tin của các hệ neural
sinh học, lấy cảm hứng từ các tế bào thần kinh tự nhiên [6]. Nó được tạo lên từ một số
lượng lớn các phần tử (Gọi là nút hay neural) kết nối với nhau thông qua các liên kết
Vũ Nguyễn Anh Huy - CĐTH11C
12
(Gọi là trọng số liên kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ
thể nào đó.
Một mạng neural nhân tạo được cấu hình cho một ứng dụng cụ thể (Nhận dạng
mẫu, phân loại dữ liệu, ) thông qua một quá trình học từ tập các mẫu huấn luyện. Về