Có một số nghiên cứu từ rất sớm đã áp dụng phương phápnà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ă
Trang 1MỤC LỤC
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.1 Giới thiệu bài toán 1
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ế 1
1.1.2 Nhận diện khuôn mặt người trong ảnh số 2
1.2 Các khó khăn trong bài toán nhận diện khuôn mặt 6
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 9 1.4 Thuật toán sử dụng mạng nơron để phát hiện khuôn mặt 11
1.4.1 Giới thiệu 11
1.4.2 Ưu điểm 13
1.4.3 Khuyết điểm 14
1.5 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 14
1.5.1 Mục đích 14
1.5.2 Giớ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.1 Hướng tiếp cận của khóa luận 15
2.2 Các thuật toán tiền xử lý ảnh : 16
2.2.2 Cân bằng ánh sáng 20
2.2.3 Làm nổi ảnh (Histogram Equalizer) 22
2.3 Giới thiệu khái niệm cửa sổ (Window) và mặt nạ (Mask) 24
2.3.1 Cửa sổ (Window) 24
2.3.2 Mặt nạ (Mask) 25
2.4 Các bước trong quá trình phát hiện khuôn mặt 26
2.4.1 Tạo các cửa sổ (Window) từ các độ căng (Scale) của ảnh 26
2.4.2 Tiề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.5 Mã giả hàm tìm kiếm (Search) 29
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
Trang 23.2 Thu 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.1 Hiện thực lõi kiến trúc mạng nơron 40
4.1.2 Hiện thực Demo phát hiện khuôn mặt 46
4.2.1 Kết quả chạy Demo chương trình khi chưa cải tiến 52
4.2.2 Các cải tiến 52
4.3 Hướ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
Trang 3
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ặtngườ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ậndạ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ặtngườ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
Trang 4Hì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.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
Trang 5Chươ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ácnghiê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ìnthẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng Đếnnay 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ôitrường xung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầuthự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
Hình 1.1 Nhận diện vật thể trong ảnh số.
Quả bóng rổ
Chiếc xe đạp
Không biết
Trang 61.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á
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 đượcnhiều nhà nghiên cứu trên thế giới quan tâm Đây là một vấn đề lớn trongngành thị giác máy tính (Computer Vision – viết tắt CV)
Trang 7Hệ thống nhận diện mặt người trong ảnh số được minh họa như hình 1.2:
1)
2)
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.
Không biết
vì khuôn mặt không
có trong cơ
sở dữ liệu
Hệ thống nhận dạng khuôn
mặt
BinLaden
Obama
Trang 8Hì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 đặctrư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.
Phát hiện khuôn mặt ( tìm kiếm )
Hình/video
Phân đoạn khuôn mặt
Vị trí khuôn mặt
Rút trích đặc trưng
Khuôn mặt đã phân đoạn
Phân lớp khuôn mặt
Vec-tơ đặc trưng
Chỉ số khuôn mặt (Face ID)
Trang 91.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ềunhóm nghiên cứu trong thời gian dài Các ứng dụng liên quan đến nhận dạngmặ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ôngcộ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ề chotrung 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ệcnhậ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ủatừ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ủamì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 địnhthô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ânhà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ườirú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ônmặ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ãngtruyền hình, … Ví dụ tìm các đoạn video có tổng thống Bush phát biểu, tìm
Trang 10cá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ầntrê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]…
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ữaCamera 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éobê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ácnhau, 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ộtphần hoặc thậm chí khuất hết
Hình 1.4 a) và b) :Các tư thế, góc chụp khác nhau.
Trang 11 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ệnhoặ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
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ácthô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.
Hình 1.5 : Ảnh chụp do râu che một số phần khuôn mặt
Trang 12 Đ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ấtCamera (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à Hình 1.8 b) Ảnh chụp ngoài trời.
Hình 1.7 : Ảnh chụp phức tạp do che khuất.
Trang 131.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ốnhướ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êncòn được gọi là phương pháp dựa trên máy học (machine learning-based)
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ànhphầ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ápnà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ênnào khuôn mặt người, Sahbi và Boujemaa [7] sử dụng mạng neural học để ướclượ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
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áckhó 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ộ (chitiết) như: mắt, lông mày, mũi, miệng, và tóc[8], Kruppa [9] dùng sắc màu của da
Trang 14thô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ócmắt, miệng và tâm mắt [10] Ông xây dựng thuật toán SVM (Support VectorMachine) đã được học trước đó để xác định các vị trí ứng viên có phải là gócmắt, miệng, và tâm mắt hay không để phân lớp ảnh.
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ĩabằ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 đồngcho 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ếndạng trong bước phát hiện khuôn mặt
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êngia định nghĩa trước, phương pháp này sử dụng những mẫu được rút trích quamộ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 [16]), Mô hình dựa trên phân phối (K K Sung and T.Poggio 1998 [20]), Mạng Nơ-ron (H Rowley 1998 [1]), Support Vector Machine(E Osuna et al 1997 [17] ), các mô hình tăng cường (AdaBoost của P Viola)[18] [19].
Trang 151.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ạngmẫ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ùngmạ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ônmặ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
Thuật toán được minh họa như hình 1.9.
Trang 16Hì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.
Ảnh đầu vào
Ảnh có thể được thu nhận bằng máy quét Scanner, Webcam, hoặc cácthiết bị thu nhận ảnh thông dụng khác
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ìmxem có mẫu khuôn mặt trong cửa sổ hay không
Trang 17- Để 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.
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 (HistogramEqualization) Kết quả ảnh ở giai đoạn này trung thực với ảnh gốc, có độ chứngthực bởi mạng nơron chính xác cao
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ước25x25 điểm ảnh và xuất ra một giá trị trong khoảng từ -1 đến 1 Khi đưa vàomộ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ẫukhuô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àychứ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ả thicủ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 đượccà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 ảnhhưở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
Trang 181.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 ápdụ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ưởngbở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 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
Á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ôngquá 100)
Ảnh được chụp trong điều kiện ánh sáng bình thường (không chụpngượ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)
Trang 19Chươ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ạngneuron nhân tạo Ba vấn đề đã được nêu ra để xử lý trong quá trình tìm khuônmặt:
Một là ảnh khuôn mặt có nhiều chi tiết khác nhau, phụ thuộc vàonguồ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 quantrọ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ữngkhá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ụngduy 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éodãn một chiều, phóng đại, hay tạo một hình ảnh của khuôn mặt quagươ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ảngcách xa sẽ làm mờ ảnh
Sự khác biệt về ánh sáng và bố cục của bức ảnh: khi chụp ảnh trongcác môi trường có cường độ sáng khác nhau sẽ tạo ra những bức ảnh
Trang 20có cường độ sáng tối khác nhau Cộng với nền của bức ảnh sẽ gâynhiễ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 haynó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ếudù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ắckhác nhau trên khuôn mặt Chính vì vậy mà ta phải chuyển ảnh sang đen trắngsau đó 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
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
Trang 21do 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ắckhá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ọnlạ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.
Trang 22 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 Hình 2.2 Ảnh đen trắng
Trang 23if (mask[l][c] == 1) {
Trang 242.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 ánhsáng chiếu vào khuôn mặt khi chụp ảnh Vì khi chụp ảnh ở các tư thế, thời giankhác nhau sẽ cho ảnh có chất lượng khác nhau về độ chiếu sáng ở từng phầntrê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.
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
n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;
for(int c=0; c<h;c++) {
if (mask[l][c] == 1) {
Hình 2.3
Ảnh chưa cân bằng sáng
Hình 2.4.
Ảnh đã cân bằng sáng
Trang 25rb[l] = sy/n - ra[l] * sx/n;
}//Duyệt theo cột
for(int c=0; c<h;c++) {
n=0; sx = 0; sy = 0; sxy = 0; sxx = 0;
for(int l=0; l<w;l++) {
if (mask[l][c] == 1) {
cb[c] = sy/n - ca[c] * sx/n;
}// Áp dụng lên ảnh
int g;
for(int l=0; l<w;l++) for(int c=0; c<h;c++) {
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ìmhiểu và sử dụng Nếu cần biết thêm chi tiết tham khảo [1].
Trang 262.2.2 Làm nổi ảnh (Histogram Equalizer)
Bước chuyển ảnh màu sang ảnh đen trắng sẽ tạo ra những màu sắc của
những Pixel trong vùng khuôn mặt có cường độ sáng không cao vì màu da của khuôn mặt và sự ánh xạ từ màu da sang màu đen trắng Chính vì vậy mà vùng sáng nhất của màu da cũng chỉ là những giá trị bé thua 255 Để khắc phục điều
này sau khi cân bằng sáng ta tiến hành làm nổi ảnh để tăng cường ánh sáng chonhững vùng có ánh sáng mạnh Những vùng nào có ánh sáng mạnh nhất sẽ đạt
được cường độ tối đa (255) ngược lại những điểm ảnh có cường độ nhỏ nhất sẽ nhận giá trị nhỏ nhất (0) trong thang độ đen trắng.
Các bước làm nổi ảnh :
1 Ta thấy có tất cả 255 màu sắc khác nhau trong thang độ màu trắng đen Ta sẽ cộng tất cả các Pixel có cùng cường độ màu sắc Ta làm như vậy đối với tất cả các Pixel có cường độ từ nhỏ nhất (0) đến cường độ lớn nhất (255) Điều này được cài đặt đơn giản là dùng mảng
255 phần tử tương ứng với thang độ đen trắng Và giá trị của mảng chính là số Pixel giống nhau Việc xử lý tìm kiếm và cộng dồn được thực hiện qua hai vòng for quét toàn bộ Pixel của bức ảnh.
2 Tiếp theo ta sẽ tiến hành cộng số Pixel tại cường độ màu đang xét với số Pixel có cường độ màu thấp hơn nó một đơn vị Làm
như vậy đối với toàn bộ cường độ màu (toàn bộ phần tử của mảng) Gọi giá trị vừa tìm được là H[i]
W, H lần lượt là chiều rộng và chiều cao của khung ảnh đang xét
Vậy màu của Pixel có giá trị là i sẽ nhận được giá trị mới sau khi làm
nổi ảnh là i=(255*H[i]) / (W*H)
Qua công thức này ta dễ dàng thấy rằng i sẽ nhận giá trị lớn nhất (255) khi [i]=(W*H) tức là i là chỉ số màu lớn nhất trong toàn bộ khung hình (lưu ý
là i có thể bé thua 255).Vậy quá trình này thực chất là một quá trình cân đối lại
màu sắc cho màu sắc nhận những giá trị tương ứng của nó trên toàn bộ thang
Trang 27độ màu đen trắng Đồng thời cũng là việc tăng độ tương phản giữa các điểmảnh
Kết quả làm nổi ảnh ta sẽ thấy được minh họa trong hình 2.5 và hình 2.6.
//Mã hàm HistogramEqualization()
void HistogramEqualization()
{
//256 pixel có giá trị màu bằng nhau
int[] H = newint[256];
//Khởi tạo giá trị ban đầu
for (int i=0; i<256; i++) H[i] = 0;
//Cộng dồn các pixel có giá trị bằng nhau tại //vị trí có chỉ số bằng giá trị pixel
for (int l = 0; l<w; l++)
{for (int c = 0; c<h; c++)H[img.GetPixel(l,c).R]++;
}//Dãn giá trị màu ra toàn thang [0,255]
for (int i=1; i<256; i++) H[i] += H[i-1];
//Tăng độ tương phản cho các pixel
for (int i=0; i<256; i++) H[i] = (255 * H[i])/(w*h);
Trang 28//Cập nhật lại màu cho toàn bức ảnh.
int g;
for (int l = 0; l<w; l++)
for (int c = 0; c<h; c++) {
g = img.GetPixel(l,c).R;
g = H[g];
img.SetPixel(l,c,Color.FromArgb(g, g, g));
}}
2.3 Giới thiệu khái niệm cửa sổ (Window) và mặt nạ (Mask)
Để tìm được khuôn mặt trong một bức ảnh lớn chúng ta phải dùngmột cửa sổ di chuyển toàn bộ khung hình lớn để lấy những pixel trong cửa sổ
đó để tiến hành xác định khuôn mặt Đồng thời để loại bỏ đi những phần khôngcần xét đến trong cửa sổ(thường là hình nền lẫn với khuôn mặt ở các góc)chúng ta phải dùng đến mặt nạ Chi tiết về cửa sổ và mặt nạ sẽ được trình bàychi tiết trong các mục sau
2.3.1 Cửa sổ (Window)
Trong quá trình tìm kiếm khuôn mặt ta sẽ dùng cửa sổ để quét toàn bộ
khung hình[1] Cửa sổ chiếm một phần nhỏ của khung hình (khoảng 25 x 25 Pixel) Có kích thước gần bằng với kích thước khuôn mặt nhằm giảm bớt các thông số phải tính toán Khung cửa sổ này sẽ duyệt từ trên xuống dưới và từ trái qua phải Mỗi lần duyệt nó sẽ di chuyển một khoảng cách nào đó (WinGap
=2) được qui định trong mạng nơron Và làm như vậy cho đến hết khung ảnh Khung cửa sổ này sẽ quét trên ảnh đã được chuyển sang trắng đen Mỗi cửa sổ
sẽ được cân bằng sáng sau đó là làm nổi ảnh và cuối cùng sẽ được chuyển cho mạng nơron để xác định khuôn mặt.
Trang 29Kết quả xác định cửa sổ trong ảnh số được minh họa như trong hình 2.7
Hình 2.7 Định vị cửa sổ (Window) trong ảnh số.
2.3.2 Mặt nạ (Mask)
Như đã đề cập ở phần 1.4.3, một yếu điểm của mạng nơron là dễ bị ảnh
hưởng bởi nhiễu Do đó, để đạt được kết quả tốt, đầu vào của mạng cần được
giảm nhiễu một cách tối đa có thể
Qua quan sát thực tế, khuôn mặt người nằm giữa cửa sổ thường códạng hơi tròn bầu, các phần góc của cửa sổ thường là các chi tiết không phải
khuôn mặt (nhiễu) như cổ áo, tóc, cảnh nền v v Giải pháp là tạo một Mặt nạ
Rộng 25 pixel Cao
Trang 30nhằm cố gắng loại bỏ bớt những điểm ảnh nhiễu này và chỉ đưa những điểm
ảnh thuộc khuôn mặt vào mạng để xử lý[1]
Mặt nạ có thể được hiện thực bằng một ma trận hai chiều kiểu nhị phân
có kích thước bằng với kích thước của cửa sổ, gán giá trị 1 cho những phần tửtrong ma trận mặt nạ ứng với những điểm ảnh ở các góc của cửa sổ để đánh dấucác điểm ảnh này sẽ không được đưa vào mạng nơron, gán giá trị 0 cho nhữngphần tử còn lại ứng với những điểm ảnh sẽ được đưa vào mạng
VD: Khoá luận sử dụng cửa sổ có kích thước 25x25 điểm ảnh nên matrận mặt nạ có kích thước 25x25 phần tử Kết quả áp mặt nạ lên cửa sổ ta sẽ
thấy như minh họa trong hình 2.9:
2.4 Các bước trong quá trình phát hiện khuôn mặt
Sau khi thực hiện chuyển ảnh sang đen trắng Một cửa sổ nhỏ sẽ dichuyển toàn bộ khung ảnh Mỗi lần di chuyển cửa sổ chương trình sẽ tiến hànhcân bằng sáng, làm nổi ảnh và đưa vào mạng neuron để kiểm tra khuôn mặt
2.4.1 Tạo các cửa sổ (Window) từ các độ căng (Scale) của ảnh
Trong mạng nơron qui định mức căng hình nhỏ nhất và lớn nhất cộng
với số lần tiến hành căng hình Từ các thông số này ta hoàn toàn tính toán được
độ phóng đại mỗi lần căng hình
Hình 2.9 Mặt nạ và cửa sổ sau khi áp mặt nạ.
Các điểm ảnh có vị trí tương ứng với các phần tử có giá trị 1 (màu đen) trên ma trận mặt nạ sẽ không được đưa vào mạng.
Trang 31Giải thích:
Hình 2.10 : Khung màu đỏ là khung cửa sổ nhỏ có kích thước là 25x25
Pixel và sẽ chạy (chạy từ trên xuống và từ trái qua phải) khắp khung ảnh lớn
mỗi lần sẽ dịch chuyển một khoảng vài Pixel Trong hình này ảnh gốc có kích
cỡ lớn (200 x 219) nên cửa sổ sẽ không bao trùm được khuôn mặt (để bao trùm khuôn mặt thì cửa sổ phải có kích thước 80 x 80) Chính vì vậy mà khuôn mặt
sẽ được xác định ở những lần thu nhỏ ảnh
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 nhỏ.
Trang 32Hình 2.11 Ảnh được thu nhỏ (bằng 25/80 khung ảnh gốc) nhưng cửa
sổ vẫn giữ nguyên kích thước Vì vậy khung cửa sổ 25x25 bao trùm khuôn mặt Lúc này chương trình sẽ dễ dàng nhận diện được đây là khuôn mặt.
2.4.2 Tiền xử lý ảnh nhỏ trong vùng cửa sổ
Ảnh nhỏ hay là một phần của một ảnh lớn được chứa trong một cửa sổ Ảnh này là ảnh trắng đen được tiến hành cân bằng sáng và bước cuối cùng là làm nổi ảnh Kết quả cuối cùng sẽ được đưa vào mạng nơron để phân tích.
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ả
Như đã đề cập ở phần mặt nạ, mặt nạ chính là một ma trận hai chiều
đánh dấu những vị trí điểm ảnh nhiễu cần bỏ đi trên cửa sổ Những điểm ảnh
này chủ yếu tập trung ở các góc của các cửa sổ Mạng sẽ xử lý chính xác hơn
khi loại bỏ bớt những điểm ảnh nhiễu này Kết quả được minh họa như trong
hình 2.12 và hình 2.13.
Giải thích:
Hình 2.12 Phần màu trắng là phần không bị che bởi mặt nạ Còn phần
màu đen là phần mặt nạ che đi những chi tiết không thuộc khuôn mặt
Hình 2.13 Khuôn mặt được mặt nạ che đi một phần hình nền mặt.
Trang 33Đoạn mã đơn giản sau được dùng để đưa giá trị các điểm ảnh không bị mặt nạche vào vector đầu vào của mạng nơron:
2.5 Mã giả hàm tìm kiếm (Search)
Sau khi có các thông số về cửa sổ lớn (tỉ lệ căng nhỏ nhất và lớn nhất, chiều rộng, chiều cao của bức ảnh) và thông số của cửa sổ nhỏ (chiều rộng, chiều cao) ta sẽ tính được số khung cửa sổ nhỏ cần duyệt.
Công thức được dùng để tính toán:
n là số lần căng hình, N i là tỉ lệ căng hình của lần căng hình
thứ i so với ảnh gốc.Với i<=n.
Min, Max lần lượt là tỉ lệ căng hình nhỏ nhất và lớn nhất
W , H là chiều rộng và chiều cao của khung ảnh lớn.
w, h là chiều rộng và chiều cao của khung ảnh nhỏ.
W G là khoảng cách dịch chuyển khung ảnh nhỏ
Vậy tổng số cửa sổ S cần phải xét trong một lần căng ảnh với tỉ lệ N là :
S = ((W * N) – w) * ((H * N) –h)Thực hiện tương tự với n lần căng ảnh và cộng các kết quả lại với nhau
ta sẽ được tổng số cửa sổ cần xét trong n lần căng ảnh Trong đó :
Nj+1 = Nj+((Max-Min)/n)
Các cửa sổ được cân bằng sáng và được làm nổi ảnh để mạng nơron dễdàng nhận biết
Trang 34Khi thực hiện chức năng tìm kiếm hàm tìm kiếm sẽ duyệt toàn bộ cáccửa sổ Nếu giá trị trả về sau khi được đưa qua mạng nơron tính toán vượt quamột ngưỡng nào đó (khoảng 0.92) thì chương trình sẽ xác định đó là khuôn mặt
và tiến hành lưu giữ lại tọa độ và độ phóng đại của khung hình nhằm hiển thịlại trên khung hình chính sau khi tìm kiếm thành công
Tóm lại, các bước dùng để xác định khuôn mặt là :
1 Chuyển ảnh lớn sang ảnh trắng đen dùng hàm GrayScale() tham khảo phần [2.2.3].
2. Lưu các cửa sổ cần duyệt vào một mảng 1 chiều của một mảng
1 chiều 2 phần tử (chỉ lưu tọa độ của đỉnh có tọa độ x,y nhỏ nhất).Sốlượng cửa sổ được tính bằng công thức trên.Các cửa sổ quét toàn bộkhung ảnh với khoảng cách WinGap được quy định bởi người sử dụng.Chú ý là phải lưu toàn bộ cửa sổ của các lần căng ảnh
3. Tiền xử lý cửa sổ : Tại mỗi cửa sổ được lưu trữ tiến hành cân
bằng sáng dùng hàm LinearBestFitAdjust() tham khảo phần [2.2.2],
để giảm nhiễu do ánh sáng chiếu với các góc độ khác nhau trên từngphần của khuôn mặt,sau đó tiến hành làm nổi ảnh để tăng độ tươngphản và trải đều màu sắc ra toàn thang độ đen trắng dùng hàm
HistogramEqualization() tham khảo phần [2.2.3].
4. Duyệt ảnh : Đưa mặt nạ vào ảnh và chỉ lấy ra những pixelkhông bị che lấp.Đưa tất cả những pixel đó vào mảng nhập mộtchiều(inps) Truyền mảng một chiều đó vào mạng neuron để tiến hành
tính toán dùng hàm Compute() tham khảo phần phụ lục Sau khi tính
toán xong hàm này sẽ trả về giá tri trong khoảng [-1,1] Giá trị cànglớn thì khả năng cửa sổ chứa khuôn mặt càng cao Nếu giá trị trả vềvượt một ngưỡng nào đó được lưu trong mạng thì sẽ tiến hành lưu lạitọa độ cùng tỉ lệ phóng đại hiện tại và xác định đó là khuôn mặt.Sau đóquay trở lại bước 3 và xét cho đến hết ảnh được lưu ở bước 2
Nhận xét: Ta nhận thấy rằng khi tìm kiếm tuần tự tất cả các cửa sổ
trong khung hình sẽ lãng phí tài nguyên.Vì chương trình sẽ tìm kiếm khuôn mặt
ở cả những nơi mà nó đã phát hiện ra khuôn mặt rồi Chính vì vậy để cải tiến
Trang 35thuật toán chúng ta cần loại bỏ vị trí đã tìm ra khuôn mặt Như vậy sẽ giảmđược một số lượng rất lớn các cửa sổ và kết quả hoàn toàn không bị trùng lặp.
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.
nhiên, mô hình trên đã được đơn giản hoá từ kết hợp nhiều mạng nơron song
song trở thành dùng một mạng duy nhất để phù hợp với thời gian và quy môcủa khoá luận
Việc thiết kế mạng không có một quy chuẩn nào cho số lượng các
nơron và các lớp ẩn, hay nói cách khác chỉ có thể xác định một cấu trúc mạng
này tốt hơn cấu trúc mạng khác qua thực nghiệm, bằng cách kiểm tra mạng trên
những mẫu khuôn mặt nó không được học (còn được gọi là kiểm tra chéo) [24]
(trang 112) Nên lưu ý rằng nếu số lượng lớp ẩn và nơron quá ít, mạng sẽ không
đủ phức tạp để học được các mẫu khuôn mặt [24] (trang 111) Ngược lại, nếu số
nơron và lớp ẩn quá nhiều sẽ tạo ra chi phí tính toán không cần thiết và mạng
có thể học cả nhiễu gây ra tình trạng quá khớp hay học vẹt – đây là tình trạng
mạng học rất tốt các mẫu khuôn mặt huấn luyện nhưng lại không nhận ra cácmẫu không được học [24] (trang 111)
Do các đặc tính trên, khoá luận dùng phương pháp thử sai (Error and Trial) để tìm ra cấu trúc mạng tương đối thích hợp cho việc học mẫu khuôn mặt
như sau:
- Đầu tiên thiết kế một loạt khoảng 20 cấu trúc mạng từ đơn giản đến
phức tạp gọi là tập dự tuyển.
Trang 36- Với từng cấu trúc mạng trong tập dự tuyển này, ta tiến hành huấnluyện với tập khuôn mặt mẫu (đề cập trong 3.2) và kiểm tra chéo trêncác mẫu khuôn mặt nó chưa được học.
- So sánh độ chính xác khi kiểm tra chéo giữa các cấu trúc mạng trongtập dự tuyển, chọn ra cấu trúc mạng có độ chính xác cao nhất để sửdụng
Với cách này có thể không chọn được một cấu trúc mạng tối ưu choviệc mô hình hoá các mẫu khuôn mặt, nhưng cấu trúc mạng thu được cũng cókết quả tương đối chấp nhận được Trong khoá luận này, mạng được chọn cócấu trúc như sau:
- Mạng được thiết kế gồm một lớp nhập (Input Layer) có 20 nơron, một lớp ẩn (Hidden Layer) có 50 nơron và một lớp xuất (Output Layer) có 1 nơron được minh họa như trong hình 3.1:
- Ma trận trọng số (Weight Matrix) (tức trọng số của các liên kết giữa nơron lớp nhập-lớp ẩn và lớp ẩn – lớp xuất) của mạng sẽ được khởi tạo ngẫu nhiên (Randomize) trong khoảng [-1,1] [1]
50 Hidden (lớp ẩn)
20 Input (lớp nhập)
1 Output (lớp xuất) Hình 3.1 Cấu trúc mạng nơron
Trang 37- Toàn bộ các nơron trong mạng sử dụng hàm truyền (Activation Function) là hàm nén lưỡng cực (Bipolar Sigmoid)[1] Công thức và đồ thị hàmnhư sau:
Như đã trình bày trong Chương 2, để đưa được toàn bộ các vị trí trong
ảnh gốc vào mạng nơron, khoá luận dùng một cửa sổ ảnh nhỏ (window) dịchchuyển để quét qua ảnh gốc Tại mỗi bước dịch chuyển, cửa sổ ảnh nhỏ này lưumột phần của ảnh gốc tại vị trí của nó, được áp dụng các thuật toán tiền xử lý
để giảm độ phức tạp và tăng độ tương phản, cuối cùng được áp một mặt nạ(mask) nhằm che bớt một phần (bỏ các điểm ảnh) ở các góc của cửa sổ để giảmthiểu nhiễu - do các góc của cửa sổ thường chứa phần nền phía sau khuôn mặt.Cửa số ảnh đã xử lý và áp mặt nạ này sẽ được đưa vào mạng nơron để nhận biếtxem nó có chứa mẫu khuôn mặt hay không Dựa vào lý thuyết trên, vector đầuvào (Input Vector) của lớp nhập và vector đầu ra (Output Vector) của lớp xuất
sẽ được thiết kế như sau:
- Vector đầu vào của mỗi nơron lớp nhập sẽ bằng với số điểm ảnh của cửa số (window) trừ đi số điểm ảnh của mặt nạ (Mask) Như vậy cả 20 nơron
lớp nhập của mạng sẽ nhận cùng một vector đầu vào, thiết kế như vậy nhằmtăng khả năng mô hình hoá của mạng đối với vector đầu vào khá phức tạp này
Trang 38Ví dụ: Nếu sử dụng cửa sổ có kích thước 25 x 25 điểm ảnh, ta có số điểm ảnh là 625 điểm Sau đó áp mặt nạ có số điểm ảnh là 104 điểm, lúc đó vector đầu vào của mỗi nơron lớp nhập sẽ có kích thước 625-104= 521 phần
tử, mỗi phần tử chứa giá trị của một điểm ảnh không bị loại bỏ bởi mặt nạ
- Vector đầu ra của mạng chỉ có 1 phần tử số thực mang giá trị trong
khoảng từ [-1, 1] Ta quy định nếu giá trị đầu ra của mạng càng gần -1 sẽ thể
hiện mẫu đưa vào càng không phải là khuôn mặt Ngược lại, đầu ra của mạng
càng gần 1 sẽ thể hiện mẫu đưa vào càng có thể là khuôn mặt Như vậy 0 chính
là ngưỡng phân biệt giữa đầu ra là khuôn mặt và đầu ra không là khuôn mặt
3.2 Thu thập dữ liệu huấn luyện và huấn luyện mạng.
Trong phần này khoá luận sẽ trình bày các bước thu thập tập huấnluyện để huấn luyện mạng nơron đã được thiết kế ở trên Tiếp theo là các bướchuấn luyện dùng giải thuật lan truyền ngược chuẩn
Thu thập dữ liệu huấn luyện
Để phát hiện được mẫu khuôn mặt người, mạng nơron đã thiết kế ở trên cần được huấn luyện với một tập lớn các mẫu khuôn mặt và không phải khuôn mặt.
Việc huấn luyện mạng nơron phát hiện khuôn mặt (Facial Detection) trong ảnh tương đối khó khăn hơn so với huấn luyện mạng nhận diện các
Hình 3.3 Minh họa Vector đầu vào.
Trang 39khuôn mặt khác nhau (Face Identify) Đó là vì nhiệm vụ của mạng không phải phân biệt giữa mẫu khuôn mặt này với mẫu khuôn mặt kia mà là phân biệt giữa mẫu khuôn mặt và mẫu không phải khuôn mặt, trong khi các mẫu không phải khuôn mặt thì có số lượng lớn đến vô cùng.
Để có thể có được nhanh chóng một tập các mẫu khuôn mặt huấn luyệntương đối chuẩn, khoá luận đã sử dụng tập dữ liệu khuôn mặt được lấy từ thưviện ảnh thí nghiệm của đại học Caltech (California Institute of Technology),theo địa chỉ: http://www.vision.caltech.edu/htmlfiles/archive.html Tập nàygồm 450 ảnh chụp khuôn mặt nhìn thẳng của khoảng 27 người trong các điềukiện phông nền, ánh sáng và biểu cảm khác nhau (vui, cười, ngạc nhiên v.v ).Tập ảnh được chia thành hai phần, phần đầu khoảng 100 ảnh ngẫu nhiên đượcdùng để huấn luyện mạng, phần sau 200 ảnh không trùng với phần đầu đượcdùng để đánh giá mạng sau khi huấn luyện
Tạo tập mẫu huấn luyện đúng:
Chúng tôi cắt thủ công từng cửa sổ chứa khuôn mặt trong tập 100 ảnh
huấn luyện Sau đó từng cửa sổ này được co lại theo đúng kích thước 25x25 Pixel của cửa sổ đầu vào và được áp dụng các thuật toán tiền xử lý ảnh.
Hình 3.4 Tập mẫu huấn luyện đúng.
Trang 40Tạo tập mẫu huấn luyện sai:
Do các mẫu không phải khuôn mặt là vô cùng lớn, chúng tôi chỉ cắt ngẫu nhiên khoảng 400 cửa sổ không chứa khuôn mặt và áp dụng các thuật toán tiền xử lý để đưa vào tập sai Trong quá trình huấn luyện và thử nghiệm mạng, những mẫu cửa sổ bị mạng phát hiện sai – tức trả về giá trị gần 1 cho cửa sổ
không chứa mẫu khuôn mặt, sẽ được thêm vào tập này cho lần huấn luyện tiếptheo Đây gọi là quá trình học chủ động (Active learning) được đề cập trong [1] -trang.32
Huấn luyện mạng
Ý tưởng của quá trình huấn luyện:
- Cho một cửa sổ mẫu đúng (có chứa khuôn mặt) có giá trị đích là 1
- Xử lý, áp mặt nạ và đưa giá trị các điểm ảnh không bị mặt nạ che củamẫu này vào mạng nơron có ma trận trọng số được khởi tạo ngẫu nhiên, mạng sẽcho ra một kết quả ngẫu nhiên thường không gần với giá trị đích của mẫu là 1
- Tính lỗi bằng cách lấy giá trị đích của mẫu trừ đi kết quả của mạng.Lan truyền ngược lỗi này lại toàn mạng để chỉnh sửa ma trận trọng số sao cho khiđưa vào mạng mẫu đúng, mạng phải cho ra một kết quả gần 1
- Tương tự đối với mẫu sai có giá trị đích là -1
- Hoàn thành quá trình huấn luyện khi đưa vào mạng một mẫu huấnluyện đúng, mạng cho ra kết quả rất gần 1 và khi đưa vào một mẫu sai mạng cho
ra kết quả rất gần -1 Hay nói cách khác sai số giữa kết quả đầu ra của mạng vàgiá trị đích của mẫu huấn luyện là rất nhỏ ( thường là nhỏ hơn một ngưỡng đượcđịnh nghĩa trước)
Hình 3.5 Tập mẫu huấn luyện sai.