Đồ án Hệ thống phát hiện khuôn mặt dựa trên mạng neural và phương pháp vân vùng màu da

CHƯƠNG I: GIỚI THIỆU 1. Tổng quan về các phương pháp phát hiện mặt người 1.1 Phát hiện mặt người và ứng dụng 1.2 Các thách thức trong vấn đề phát hiện mặt người 1.3 Các vấn đề liên quan đến phát hiện mặt người 1.4 Tổnq quan các hướng tiếp cận phát hiện khuôn mặt 1.4.1 Hướng tiếp cận dựa trên đặc trưng của ảnh (Feature-based approaches) 1.4.2 Hướng tiếp cận dựa trên thông tin xuất hiện trong ảnh (Image-based approach) 1.4.4 Kết luận 2. Tổng quan về các kỹ thuật nhận biết màu da dựa trên tính chất điểm ảnh 2.1 Giới thiệu 2.2 Không gian màu sử dụng cho mô hình hóa màu da 2.2.1 Không gian màu RGB 2.2.2 Không gian RGB chuẩn hóa 2.2.3 HIS, HSV, HSL - Độ bão hòa của màu 2.2.4 TSL – Tint, Saturation, Lightness (sắc thái, độ bão hòa, độ dịu ) 2.2.5 YcrCb 2.2.6 Các hệ tọa độ không gian màu khác 2.3 Mô hình hóa màu da 2.3.1 Xác định ngưỡng cụ thể một điểm ảnh là màu da 2.3.2 Phưong pháp mô hình hóa màu da sử dụng phân phối không tham số 2.3.3 Mô hình hóa phân phố màu da có tham số 2.3.3.4 Tổng kết các phưong pháp mô hình hóa theo tham số 2.4 So sánh kết quả các mô hình 2.5 Đánh giá phương pháp 2.6 Chọn lựa không gian màu và phương pháp mô hình hóa dùng để nhận biết màu da cho đồ án. 3. Giới thiệu về mạng neural nhân tạo MPL và thuật toán lan truyền ngược 3.1 Giói thiệu 3.2 Mạng Perceptron nhiều tầng (MPL – Multi Perceptron Layer) 3.2.1 Ánh xạ mạng lan truyền tiến 3.2.2 Hàm sigmoid 3.3 Thuật toán lan truyền ngược 3.3.1. Lan truyền ngược 3.3.2 Hiệu quả của lan truyền ngược CHƯƠNG II: TÔNG THỂ HOẠT ĐỘNG CỦA HỆ THỐNG VÀ VẤN ĐỀ CHUẨN BỊ CƠ SỞ DỮ LIỆU 1. Tổng thể sơ đồ hoạt động của hệ thống phát hiện mặt người 2. Chuẩn bị cơ sở dữ liệu 2.1 Dữ liệu huấn luyện mạng neural 2.1.1 Ảnh huấn luyện là khuôn mặt 2.1.2 Ảnh huấn luyện không khuôn mặt 2.2 Ảnh huấn luyện để phân vùng màu da 2.3 Cơ sở dữ liệu để đánh giá kết quả hệ thống. CHƯƠNG III: PHÁT HIỆN KHUÔN MẶT DỰA TRÊN MẠNG NEURAL VÀ PHƯƠNG PHÁP PHÂN VÙNG MÀU DA 1. Kiến trúc hệ thống 2. Huấn luyện phân vùng và phân vùng màu da dựa trên mô hình phân phối Gaussian 2.1 Huấn luyện phân vùng màu da 2.1.1 Cơ sở để huấn luyện 2.1.2 Huấn luyện phân vùng màu da 2.2 Nhận biết và phân vùng màu da. 2.2.1 Lọc khởi tạo 2.2.2 Nhận biết màu da 2.3 Phân vùng màu da 3. Mạng neural phát hiện khuôn mặt 3.1 Mô hình mạng Neural 3.1.1 Mô hình 3.1.2 Mô hình xác suất dựa trên công thức xác suất đầy đủ Bayes 3.2 Huấn luyện mạng 3.2.1 Huấn luyện mạng học ảnh khuôn mặt 3.2.2 Chiến thuật huấn luyện mạng học ảnh không khuôn mặt 4. Nâng cao chất lượng phát hiện khuôn mặt và cải thiện tốc độ phát hiện 4.1 Heuristic giúp phát hiện khuôn mặt chính xác hơn 4.2 Heuristic cải thiện thời gian phát hiện. CHƯƠNG IV: PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 1. Xác định yêu cầu 2. Phân tích và thiết kế hệ thống 2.1 Giới thiệu 2.2 Phân tích và thiết kế hệ thống 2.3. Thiết kế cơ sở dữ liệu 3. Thiết kế chương trình và kết quả minh họa 3.1 Thiết kế chương trình 3.2 Kết quả chương trình CHƯƠNG V: KHẢO SÁT THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN TÀI LIỆU THAM KHẢO

doc124 trang | Chia sẻ: maiphuongtl | Lượt xem: 2308 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Hệ thống phát hiện khuôn mặt dựa trên mạng neural và phương pháp vân vùng màu da, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Mỹ , Phi, Châu đại dương…Kết quả của quá trình huấn luyện sẽ cho ra bộ tham số bao gồm xác suất ngưỡng nhỏ nhất mà mô hình học được, vector trung bình và ma trận hiệp phương sai. Đây là bộ tham số được dùng để tiến hành phân vùng màu da ảnh trước khi ảnh được đưa vào hệ thống phát hiện khuôn mặt. Phát hiện khuôn mặt: Đây là hoạt trực tuyến của hệ thống. Trong hoạt động này, ảnh màu đầu vào cần phát hiện khuôn mặt trước khi phát hiện khuôn mặt sẽ được qua quá trình tiền xử lý như lọc nhiễu, cân bằng biểu đồ mức xám. Sau đó ảnh được phân vùng màu da và tạo ra một ảnh nhị phân ảnh phân vùng. Ảnh gốc sau quá trình phân vùng màu da sẽ được chuyển sang ảnh đa mức xám. Cuối cùng, sẽ là quá trình phát hiện khuôn mặt trong ảnh bằng cách trích mọi cửa sổ của ảnh theo không gian tìm kiếm của vùng da được phân vùng. Để có thể phát hiện khuôn mặt của ảnh ở các kích thước khác nhau, trong quá trình này, ảnh cũng được xử lý đa phần giải. Xử lý kết quả: Sau quá trình phát hiện, các cửa số được hệ thống phát hiện là khuôn mặt trước khi cho kết quả cuối cùng sẽ được xử lý bằng một vài heuristic để có thể cho ra những cửa số được phát hiện khuôn mặt có độ tin cậy cao nhất. Tổng thể các hoạt động của hệ thống có thể được mô tả như sơ đồ thuật toán sau đây 2. Chuẩn bị cơ sở dữ liệu Hệ thống phát hiện khuôn mặt được xây dựa trên mạng neural và phần vùng màu da, chính vì vậy việc chuẩn bị dữ liệu cho hệ thống đóng một vai trò vô cùng quan trọng, nó quyết định đến hiệu năng cuối cùng của hệ thống. Dữ liệu cho hệ thống ở đây sẽ bao gồm: Dữ liệu cho huấn luyện mạng neural: Bao gồm tập các dữ liệu khuôn mặt và không phải khuôn mặt. Tập các ảnh được sử dụng để huấn luyện mạng. Dữ liệu cho việc phân vùng màu da: Đâu là tập các mẫu màu da của nhiều chủng tộc và châu lục trên thế giới, sự phong phú và chính xác của tập mẫu này quyết định kết hiệu quả của quá trình phân vùng. Dữ liệu được dùng để khảo sát và thử nghiệm kết quả hoạt động của hệ thống 2.1 Dữ liệu huấn luyện mạng neural 2.1.1 Ảnh huấn luyện là khuôn mặt Ảnh huấn luyện khuôn mặt được sử dụng trong đồ án này là tập ảnh chuẩn được lấy từ website của Dr Libor Spacek: Đây là một nguồn ảnh mầu chuẩn phong phú với 750 ảnh màu 24bit kích thước 480 x 640 của 50 người, mỗi người là 15 kiểu ảnh theo tư thề nhìn thẳng hoặc xê dịch một lượng không đáng kể. Các khuôn mặt ở các trạng thái như bình thường, cười, nghiêm nghị, đeo kính và không đeo kính, nhắm mắt và mở mắt. Toàn bộ 750 ảnh này được sử dụng để chuẩn hóa về kích thước cửa sổ 25x25, đây là kích thước cửa số chuẩn được chọn để sử dụng cho hệ thống phát hiện khuôn mặt. Điều này cũng có nghĩa là, kích thước tối thiểu của khuôn mặt có thể được phát hiện bởi hệ thống là 25 x 25. Hình 8: Ví dụ về ảnh trong cơ sở dữ liệu của Libor Spacek Để làm phong phú thêm cho nguồn ảnh khuôn mặt, sau khi ảnh được chuẩn hóa về kích thước 25 x 25, ảnh sẽ được cho qua phép đối xứng [8]. Như vậy, cuối cùng cơ sở dữ liệu ảnh khuôn mặt mà chúng ta có được là 1500 ảnh. Hình 9: Ví dụ về ảnh được chuẩn hóa về kích thước cửa số 25 x 25 và sau khi lấy đối xứng Sau khi chuẩn hóa và lấy đối xứng, các cửa sổ được tiến hành tiền xử lý. Thực ra, quá trình tiền xử lý được thực hiện khi ảnh được cho vào hệ thống huấn luyện mạng neural. Và trước khi thực hiện tiền xử lý, các cửa sổ ảnh được chuyển sang đa mức xám grayscale 24bit bằng cách sử dụng không gian màu YcrCb (giá trị của mỗi điêm ảnh đa mức xám là giá trị độ sáng Y của không gian màu YCrCb). Sau đó ảnh được tiến hành tiền xử lý, đầu tiên cửa sổ được lọc nhiễu bằng phép lọc thông thấp, sau đó tiến hành cân bằng lược đồ mức xám để làm tăng độ tương phản trong ảnh [8]. Để tiến hành cân bằng lược đồ mức xám, ở đây, sẽ sử dụng một chụp mặt nạ để loại bỏ ảnh hưởng của pixel nền kích thước 25 x 25 Hình 10: Mặt nạ loại bỏ kích ảnh hưởng của pixel nền Như vậy quá trình cân bằng lược đồ chỉ được tiến hành cho những pixel nằm trong vòng tròn mặt nạ [8] Hình 11: Ví dụ ảnh sau quá trình cân bằng lược đồ 2.1.2 Ảnh huấn luyện không khuôn mặt Có thể nói việc huấn luyện ảnh phát hiện khuôn mặt gặp nhiều thách thức là do gặp khó khăn trong việc biểu thị ảnh “không khuôn mặt”. Không nhau việc nhận dạng khuôn mặt, trong đó các lớp phân biệt là các khuôn mặt khác nhau. Hai lớp gọi là phân biệt trong dò tìm khuôn mặt là “ảnh có chứa khuôn mặt” và “ảnh không chứa khuôn mặt” [6]. Dễ dàng lấy được mẫu ảnh chứa khuôn mặt điển hình, nhưng việc lấy mẫu ảnh không chứa khuôn mặt điển hình và có giá trị là khó hơn rất nhiều. Có thể thấy, đối với một hệ thống cụ thể, thì những ảnh không khuôn mặt được xem là có giá trị nhất khi nó bị phát hiện nhầm là ảnh khuôn mặt. Trong đồ án này, do đầu vào là các ảnh màu, và hơn nữa ảnh trước khi được phát hiện khuôn mặt được cho qua bộ phần vùng màu da, chính vì vậy, những ảnh không khuôn mặt có giá trị thông thường là ảnh có chứa vùng có màu tương tự màu da. Chính vì vậy, tập ảnh không khuôn mặt có màu tương tự màu da, đặc biệt là tập ảnh có chứa bộ phân cơ thể con người như tay, chân, cũng như các bộ phân trên khuôn mặt là đáng chú ý nhất. Tuy nhiên để đảm bảo tính tổng quát của hệ thống, tập ảnh không khuôn mặt được chuẩn bị không chỉ có những ảnh có màu tương tự màu da mà là tập ảnh tự nhiên bất kì. Như ảnh hoa lá cây cỏ, nhà cửa. Trong đồ án này, quá trình huấn luyện ảnh không khuôn mặt bao gồm huân luyện thụ động và huấn luyện chủ động có học. Huấn luyện thụ động có nghĩa là huấn luyện không khuôn mặt từ tập ảnh tạo sẵn. Còn huấn luyện chủ động có học là tiến hành cập nhật những cửa số bị phát hiện nhầm là khuôn mặt vào cơ sở dữ liệu ảnh không khuôn mặt. Toàn bộ quá trình huấn luyện này sẽ được đề cập đến trong chương III của đồ án. Trong phần này, chỉ đề cập đến cơ sở dữ liệu tạo sẵn ban đầu, như là một bước chuẩn bị cho quá trình huấn luyện ảnh không khuôn mặt thụ động. Tập ảnh ban đầu này bao gồm hai phần và chứa khoảng 200 cửa sổ. Trong đó, 100 cửa sổ được tạo ngẫu nhiên từ một số bức ảnh tự nhiên không chưa mặt người. 100 ảnh còn lại là tập các ảnh được trích chọn thủ công từ các tập ảnh có sẵn. Những cửa số này tập trung vào những vùng tưong tự màu da, các bộ phận cơ thể con người cũng như bộ phận của khuôn mặt. 200 ảnh này sau quá trình trích chọn cũng được tiến hành lọc nhiễu và cân bằng lược đồ xám. Hình 12: Hình minh họa các cửa sổ được trích chọn ngẫu nhiên trong cơ sở dữ liệu ảnh huấn luyện không khuôn mặt. Bên cạnh tập 200 ảnh tạo sẵn này, chúng ta cũng chuẩn bị sẵn khoảng 50 bức ảnh được sử dụng để tiến hành huấn luyện chủ động có học cho ảnh không khuôn mặt .Đây là nguồn ảnh được lấy bất kì trên mạng Internet. 50 ảnh này là tập các ảnh màu kích thước 480 x 360, là các ảnh tập thể, gia đình, tự nhiên. Tập 50 ảnh này cũng được tiến hành lọc nhiễu và cân bằng lược đồ xám. Hình 13: Ví dụ về ảnh dùng để huấn luyện chủ động ảnh không khuôn mặt 2.2 Ảnh huấn luyện để phân vùng màu da Mô hình phần vùng màu da được sư dụng dưa trên mô hình có tham số dựa trên phân phối Gaussian, sử dụng trong không gian màu YCrCb. Để có thể học tốt và tạo ra bộ tham số hiệu quả, các mẫu màu da được trích chọn phải là những mẫu điển hình, bao gồm tất cả các màu da của các châu lục, chủng tộc. Đồng thời đó phải là màu da thực, không phải màu da được trang điểm hay xử lý bằng kỹ thuật xử lý ảnh. Toàn bộ một trăm mẫu màu da có trong cơ sở dữ liệu của đồ án đều được trích chọn thủ công từ nhiều bức ảnh tìm kiếm trên Internet. Các mẫu màu da này bao gồm khá đầy đủ cho các chủng tộc châu lục Âu, Á, Mỹ, Phi, Úc…Các mẫu màu da trước khi tiến hành huấn luyện để tạo ra bộ tham số phân vùng ảnh đều được tiến hành lọc nhiễu bằng bộ lọc thông thấp Hình 14: Ví dụ tập mẫu da được dùng để huấn luyện bộ phân vùng màu da 2.3 Cơ sở dữ liệu để đánh giá kết quả hệ thống. Một hệ thống sau khi xây dựng luôn cần có những khảo sát để đánh giá kết quả. Muốn vậy, chúng ta cần có những bộ dữ liệu chuẩn để tiến hành đánh giá. Đối với hệ thống trong đồ án, do tập ảnh huấn luyện khuôn mặt là nhìn thẳng với độ nghiêng và góc quay của khuôn mặt không đáng kể, vì vậy, để đánh giá được hiệu quả học của hệ thống, chúng ta cần có những bộ dữ liệu chuẩn tương tự. Ở đây, đồ án sẽ sử dụng bộ dữ liệu test chuẩn được lấy từ cơ sở dữ liệu của trường đại học University of Ljubljana, tại website: Đây là bộ dữ liệu test ảnh màu bao gồm 320 ảnh màu của 141 người, chỉ có một khuôn mặt kích thước 640 x 480 được chụp trong điều kiện ánh sáng đồng nhất. Hình 15: Ví dụ về bộ ảnh trong tập dữ liệu để kiểm tra hiệu năng hệ thống Ngoài ra, do chưa có một bộ dữ liệu test ảnh màu nhiều khuôn mặt nào được phổ biến miễn phí trên mạng nên ở đây, chúng ta sẽ tự xây dựng cho mình một tập cảc ảnh nhiều khuôn mặt để có thể đánh giá một cách chính xác hơn hiệu năng hệ thống. Tập ảnh này được xây dựng dựa trên tiêu chí để kiểm tra hiệu quả của hệ thông trong các khía cạnh: Hệ thống phát hiện được nhiều khuôn mặt với các kích thước khác nhau như thế nào ? Hệ thống phát hiện được các khuôn mặt với nội dung khuôn mặt đầy đủ và không đầy đủ như thê nào ? Hệ thống phát hiện được các khuôn mặt ở các tư thế khác nhau, nhìn thẳng, nhìn nghiêng, góc quay, mắt nhắm hay không, đeo kính hay không, trạng thái khuôn mặt như thế nào ? Chất lượng phát hiện ra sao khi các bức ảnh bị làm nhiễu ? Kích thước của các bức ảnh được xây dựng bao gồm các kích thước như: 480 x 360; 320 x 240. Hình 16: Ví dụ về tập ảnh tự xây dựng để test chương trình, ảnh ban đầu và ảnh bị làm nhiễu CHƯƠNG III: PHÁT HIỆN KHUÔN MẶT DỰA TRÊN MẠNG NEURAL VÀ PHƯƠNG PHÁP PHÂN VÙNG MÀU DA 1. Kiến trúc hệ thống Có thể nói, vấn đề phát hiện khuôn mặt thực chất là bài toán phân lớp: lớp khuôn mặt và lớp không phải khuôn mặt. Toàn bộ kiến trúc hệ thống phát hiện khuôn mặt trong ảnh màu, tĩnh dựa vào mạng neural và phương phương pháp phân vùng màu da được thể hiện như hình dưới đây. Hệ thống bao gồm ba module chính. Modue đầu tiên là module mạng huấn luyện nhận biết khuôn mặt, mạng neural được sử dụng ở đây là mạng MPL (Multi Perception Layer) với thuật toán lan truyền ngược sử dụng phương pháp giảm gradient để giảm lỗi, hàm truyền được sử dụng ở đây là hàm sigmoid. Kết quả của module này sẽ cho ta bộ trọng số của mạng neural, từ bộ trọng số này sẽ giúp ta phân lớp được ảnh đầu vào có phải là khuôn mặt hay không. Module thứ hai là module huấn luyện phân vùng màu da dựa trên phân phối Gaussian. Kết quả của module sẽ cho ta bộ tham số bao gồm giá trị xác suất nhỏ nhất mà bộ phân vùng học được, vector trung bình và ma trận hiệp phương sai của phân phối. Từ bộ tham số này, với ảnh màu đầu vào, chúng ta có thể tiến hành nhận biết và phân vùng màu da trên ảnh. ` Module cuối cùng và là module xử lý trực tiếp phát hiện khuôn mặt. Ảnh đầu vào của module là ảnh màu, ảnh sẽ được tiến hành tiền xử lý. Tiền xử lý ở bước này đóng vai trò rất quan trọng, vì ảnh sẽ được tăng cường độ sáng, cân bằng lược đồ và lọc nhiễu. Quá trình tiền xử lý tốt sẽ giúp cho quá trình phân vùng màu da sau này có hiệu quả cso. Sau khi tiền xử lý, ảnh sẽ được đưa đi theo hai con đường, con đường thứ nhất là đưa vào bộ phân vùng để tiến hành phân vùng màu da, và kết quả của quá trình phân vùng này sẽ cho ta ảnh nhị phân có các vùng màu da đã được phân biệt. Con đường thứ hai là ảnh sẽ được chuyển sang ảnh đa mức xám, sau đó kết hợp với ảnh đã được phân vùng màu da, sẽ trích xuất mọi cửa số có kích thước 25 x 25 pixel trên vùng màu da để đưa vào mạng neural tiến hành phân lớp xem cửa sổ này có phải là khuôn mặt hay không. Tại bước này, ta tiến hành xử lý đa phân giải với tỉ lệ chọn là 1.2 để có thể tìm kiếm được các khuôn mặt tại các kích thước khác nhau. Có thể thấy trong kiến trúc này, mạng neural gồm ba lớp, lớp đầu vào có 625 đầu ra tương ứng với cửa số kích thước 25 x 25, lớp ẩn có 16 nút ẩn sử dụng kết nối đầy đủ tới 625 nút đầu vào và hai nút đầu ra để phân xử kết quả. Sở dĩ ở đây sử dụng đầu ra có hai nút thay vì một nút thông thương vì trong mô hình này, chúng ta sẽ sử dụng thêm một mô hình xác suất nhỏ để tiến hành phân xử kết quả ra. Việc sử dụng mô hình xác suất ở đây giúp chúng ta có thể tìm kết quả một cách mềm dẻo hơn và tránh được sai số khi thiết kế cài đặt trên máy tính. Mô hình xác suất sẽ được đề cập đến trong phần sau của chương này. Cuối cùng sau quá trình phân xử kết quả, đầu ra của hệ thống sẽ cho ta câu trả lời, ảnh đầu vào có khuôn mặt hay không, nếu có thì có bao nhiêu khuôn mặt và vị trí của từng khuôn mặt ở đâu trong ảnh. 2. Huấn luyện phân vùng và phân vùng màu da dựa trên mô hình phân phối Gaussian Như đã đề cập trong chương I, việc phân vùng màu da có tác dụng giảm không gian tìm kiếm khuôn mặt trong ảnh. Và trong chương I, sau khi đã xem xét và đánh giá hiệu năng của các phương pháp mô hình hóa màu da cũng như không gian màu, chúng ta đã chọn ra một phương pháp phù hợp nhất cho hệ thống của đồ án, đó là phương pháp mô hình hóa có tham số dựa trên phân phối Gaussian và trong không gian màu YcrCb. 2.1 Huấn luyện phân vùng màu da 2.1.1 Cơ sở để huấn luyện Như đã đề cập, ảnh được dùng để huấn luyện phân vùng màu da là tập 100 ảnh mẫu kích thước 30 x 40 màu da được trích chọn thủ công từ nhiều bức ảnh khác nhau, bao gồm đầy đủ các màu da của các chủng tộc và châu lục được biết đên như châu Âu, châu Á, Châu Mỹ, Châu Phi… Để giảm độ sai lệch của bộ tham số học được sau quá trình huấn luyện, ảnh đầu vào được tiến hành lọc thông thấp giảm nhiễu. Không gian sử dụng để mô hình hóa màu da là không gian YCrCb, sở dĩ chúng ta chọn không gian màu này là do, công thức chuyển đổi từ không gian RGB sang YCrCb là khá đơn giản, hơn nữa trong không gian nay, sự độc lập giữa độ sáng và các thành phần màu là rất cao. Công thức chuyển đổi từ RGB sang YcrCb (III.1) Một lý do để lựa chọn không gian màu YCrCb nữa đó là, theo khảo sát của các nhà nghiên cứu, sự phân bố của màu da người trong mặt phẳng CrCb là tương đối tập trung và nhỏ lẻ [8]. Có thể thấy điều này trong hình minh họa sau: Hình 18: Phân bố màu da trong mặt phẳng CrCb của không gian YCrCb Theo những nghiên cứu trước đây, màu da con người có những đặc trưng phân biệt đồng thời, chúng ta khác nhau về màu da chủ yếu là do khác nhau về độ sáng hơn là sự khác nhau về các thành phần màu. Hình phấn bố màu da trong không gian ba thành phần của không gian màu YCrCb sau đây sẽ cho chúng ta thấy điều đó. : Hình 19: Phân bố màu da trong không gian YCrCb Khi chuyển sang phân phối Gaussian để biểu diễn người ta thu được phân bố màu da trong mô hình Gaussian như hình vẽ dưới đây: Hình 20: Phân bố màu da trong phân phối Gaussian biểu diễn trong không gian màu YCrCb Từ kết quả của biểu diễn này, người ta nhận thấy, với một pixel màu thì có thể tính được xác suất nó là ảnh màu da theo công thức sau đây: (III.2) Trong đó c là vector mẫu màu da được trích chọn, khi biểu diễn trong YCrCb thì c= (CrCb)T, µs  là vector trung bình của phân bố, còn Σs là ma trận hiệp phương sai của phân bố. Chúng được tính theo công thức: [III.3] Với n là tổng số mẫu mà da được huấn luyện. Để có thể tìm ra được bộ tham số µs, Σs và xác suất ngưỡng dưới nhỏ nhất. Chúng ta tiến hành huấn luyện theo quá trình như sau. 2.1.2 Huấn luyện phân vùng màu da Với mỗi ảnh trong tập cơ sở huấn luyện, sau khi chuyển sang không gian màu YCrCb, chúng ta biểu diễn x = (CrCb)T là vector các giá rị CrCb trung bình của tất cả các giá trị CrCb tại tất cả các điểm ảnh của ảnh đó. Với n ảnh màu da huấn luyện, chúng ta tìm được vector trung bình của tất cả các ảnh trong cớ sở dữ liệu: [III.4] Trong đó, j là vector của ảnh j trong cớ sơ dữ liệu, m là vector trung bình và E là toán tử kì vọng. Từ đó chúng ta tính được ma trận hiệp phương sai cua vector x trong cơ sở dữ liệu theo công thức: [III.5] Sau khi tính được C và m, chúng ta sủ dụng hàm phân phối Gaussian hai chiều cho vector x tại mỗi điểm ảnh trong mỗi ảnh mẫu màu da trong cơ sở dữ liệu: P(Cr, Cb) = Exp[-0.5(x-m)TC-1(x-m)] (III.6) Ta có giá trị P tương ứng với tất cả các điểm ảnh trong tất cả các ảnh thuộc cơ sở dữ liệu ảnh màu da. 0 < P < 1. Tìm giá trị nhỏ nhất của P, chúng ta sẽ thu được một ngưỡng phân vùng ảnh. Ngưỡng xác suất này sẽ được dùng để phân loại một điểm ảnh có là điểm ảnh màu da hay không. Kết quả thực nghiệm trong đồ án, huấn luyện với tập 100 ảnh mẫu, chúng ta thu được bộ tham số phân vùng như sau: Vector trung bình: Ma trận hiệp phương sai: Và giá trị nhỏ nhất của P học được đó là: MinPro = 0.00004025 2.2 Nhận biết và phân vùng màu da. Với bộ tham số tìm được trong quá trình huấn luyện, với mỗi ảnh đầu vào ta tiến hành nhận biết và phân vùng màu da cho ảnh. Quá trình nhận biết là quá trình phân lớp các pixel trong ảnh ra làm hai lớp, lớp là pixel màu da và lớp pixel không phải màu da. Sau quá trình nhận biết, chúng ta sẽ tiến hành phân vùng để sư dụng làm giảm không gian tìm kiếm trong quá trình phát hiện mặt người. Nghĩa là chúng ta sẽ chỉ tìm kiếm mặt người trên vùng màu da được nhận biết. 2.2.1 Lọc khởi tạo Như đã từng đề cập, trước khi một pixel được nhận biết nó có là pixel màu da hay không nó sẽ được đưa qua một bộ lọc khởi tạo. Thực chất, bộ lọc này là một tập các quy tăc được chọn lọc từ các phương pháp chọn ngưỡng để phân vùng màu da. Tập quy tắc này được kiểm định từ thực nghiệm là đúng đắn với mọi màu da cần nhật biết. Trong đồ án này, sau khi tham khảo một số các quy tắc được đề xuất, tiền hành chọn lọc và thử nghiệm trên nhiều ảnh màu khác nhau, đồ án đã đề xuất một tập các quy tắc sau nhằm giúp lọc ngay từ ban đầu các pixel không phải màu da. Điều này cho phép giảm khối lượng tính toán của ảnh đáng kể. Tập quy tắc này được phát biểu trong không gian màu RGB như sau: Một pixel sẽ không phải là pixel màu da nếu nó thỏa mãn một trong các điều kiện sau đây: 1. ( (B > 160 && R < 180 && G < 180) - Quá nhiều thành phần xanh lơ (Blue) 2. (G > 160 && R < 180 && B < 180) - Quá nhiều thành phần xanh lá cây (Green) 3. (B < 100 && R < 100 && G < 100) - Quá tối 4. (G > 200) – pixel màu xanh lá cây Green 5. (R 100 && B > 110 && G < 140 && B < 160) – Màu xanh đại dương 2.2.2 Nhận biết màu da Nhận biết màu da sẽ phân các pixel thành hai lớp, lớp là màu da và lớp không phải màu da. Một pixel sau khi đã qua khỏi bộ lọc khởi tạo. Sẽ được tính giá trị xác suất trong phân phối Gaussian dựa trên bộ tham số m, C có được nhờ quá trình huấn luyện. Xác suất 1của pixel đựoc tính dựa trên công thức [III.2] dựa trên phân phối Gausian. Xác suất P tìm được sẽ so sánh với ngương MinPro trong bộ tham số. Luật phân lớp điểm ảnh màu da sẽ là: Nếu P >= MinPro thì pixel đó là pixel màu da Ngược lại, đó không phải là pixel màu da Kết quả của quá trình nhận biết có thể được thấy trong hình cạnh bên. Ảnh phân vùng sẽ có dạng ảnh nhị phân. Pixel màu da được đại diện bởi màu trắng, còn pixel không phải màu da sẽ được đại diễn bởi màu đen. Kích thước ảnh thử nghiệm là 240 x 480 pixel. 2 2.3 Phân vùng màu da Phần vùng màu da là bước tiếp theo của quá trình nhận biết màu da. Việc phân vùng thực chất là gán nhãn cho từng màu da đã được nhận biết. Mỗi vùng sẽ được gán một nhãn là một chỉ số của vùng. Việc gán nhãn sẽ giúp cho quá trình tìm kiếm khuôn mặt trên vùng được tiện lợi hơn. Một vùng màu da sẽ là tập các pixel cùng màu (đen hoặc trắng) cùng thuộc một vùng liên thông. Như vậy thuật toán tìm và gán nhãn cho tất cả các vùng liên thông sẽ thực hiện quá trình phân vùng này. Như đã biết, cửa sổ khuôn mặt chuẩn được chọn trong hệ thống có kích thước là hình vuông 25 x 25 pixel. Các khuôn mặt sẽ chỉ được tìm kiếm trên vùng màu da. Vì vây ở đây chúng ta sẽ sử dụng một khái niệm gọi là vùng bao chữ nhật. Khái niệm vùng bao chữ nhật của một vùng màu da được đĩnh nghĩa như sau: Vùng bao chữ nhật của một vùng màu da là môt hình chữ nhật có kích thước nhỏ nhất chứa tất cả các điểm của vùng màu da đó. Tọa độ của vùng bao được xác định bằng tọa độ của hai đỉnh góc trái trên phải dưới. Như vậy có thể thấy việc xác định vùng bảo của một vùng màu da là không mấy khó khăn vì tọa độ của chúng chính là giá trị tọa độ nhỏ nhất (ứng với đỉnh góc trái trên) và giá trị tọa độ lớn nhất (ứng với đỉnh góc phải dưới). Như vậy quá trình tìm kiếm khuôn mặt chỉ được diễn ra trong các vùng bao chữ nhậtg này. Có nghĩa là các cửa số được trích chọn phải nằm hoàn toàn trong vùng bao. Kết quả của ảnh phân vùng màu da có thể nhìn thấy trong ảnh dưới đây. Tại đó mọi vùng màu da đều được bao bởi vùng bao chữ nhật của mình. Hình 22: Ảnh trước và sau khi phân vùng màu da Việc định nghĩa khái niệm vùng bao chữ nhật không những giúp chúng ta xác định rõ ràng vùng tìm kiếm khuôn mặt cho một bức ảnh, nó giúp cho việc trích chọn mọi cửa số được dễ dàng hơn mà nó còn giúp chúng ta lọc bớt những vùng màu da chắc chắn không phải khuôn mặt. Thật vậy, dễ nhận thấy kích thước tối thiểu của khuôn mặt có thể nhận biết được là 25 x 25 pixel. Chính vì vậy sẽ không thể có khuôn mặt đối với những vùng bao có kích thước một trong hai chiều nhỏ hơn 25 pixel. Sử dụng ngưỡng này chúng ta có thể lọc đi khá nhiều vùng bao màu da. Ví dụ đối với ảnh trên, sau khi phân vùng, chúng ta có 13 vùng bao màu da, tiến hành lọc vùng bao chúng ta chỉ còn lại 3 vùng bao là có thể chưa khuôn mặt. Toàn bộ kết quả của quá trình lọc khởi tạo, nhận biết màu da, phân vùng màu da và lọc vùng bao được thể hiện như hình dưới đây: 3. Mạng neural phát hiện khuôn mặt 3.1 Mô hình mạng Neural 3.1.1 Mô hình Như đã đề cập trong phần trước, hình vẽ trên cho ta mô hình mạng neural sử dụng trong đồ án. Đây là mạng MPL bao gồm ba lớp. Lớp đầu vào có 625 đầu vào đúng bằng kích thước 25 x 25 của cửa sổ ảnh. Lớp ẩn gồm 16 nút ẩn và lớp ra gồm hai nút. Toàn bộ kết nối trong mô hình đều là kết nối đầy đủ (full connection). Có thể nói mang neural là một kiến trúc mở, và cho đến nay chưa có một lý thuyết nào khẳng định phải sử dụng mô hình neural nào đó cho bài toán nào đó, việc sử dụng mô hình mạng neural phụ thuộc rất nhiều vào kinh nghiệm. Với một bài toán có thể nhiều mô hình mạng khác nhau cùng cho một kết quả. Vấn đề quan trọng hiện nay của mạng neural đó chính là quá trình huấn luyện mạng. Trong mô hình mạng neural MPL này, chúng ta sẽ sử dụng thuật toán lan truyền ngược (Backprobagation) để tiến hành học mạng, phương pháp giảm lỗi được sử dụng là phương pháp giảm gradient với hàm truyền hay hàm kích hoạt là hàm sigmoid. Toàn bộ thuật toán và lý thuyết về vấn đề này đã được đề cập đến trong chương I của đồ án. Ở đây không nhắc lại mà chỉ xin nêu lại đặc tính của hàm truyền sigmoid, một tính chất quan trọng ảnh hưởng tới mô hình mạng neural đã chọn. Hàm truyền sigmoid logistic dạng S, có đầu ra nằm trong khoảng (0,1) được viết như sau: (III.7) Và hình vẽ dưới đây miêu tả quan hệ vào ra của hàm sigmoid trong mặt phẳng đềcác Hình 25: Đồ thị biểu diễn hàm sigmoid Giải thuật học ở đây sẽ điều chỉnh trọng số của các kết nối giữa các nút mạng để hàm này ánh xạ giá trị trị của x sang dạng nhị phân thông thường: f(x) > 0.9 : f(x) = 1 f(x) < 0.1 : f(x) = 0 Tuy nhiên trong mô hình mạng trong đồ án, thay vì chỉ có một đầu ra tức là sẽ ra quyết định phân lớp cho cửa số là khuôn mặt hay không khuôn mặt ngay khi có được giá trị của f(x), chúng ta sẽ sử dụng hai đầu ra minh họa cho hai trường hợp kết quả mong muốn của f(x). Chúng ta luôn mong muốn rằng f(x) sẽ bằng 0.9 hoặc 0.1 để có thể phân lớp ngay, nhưng trong thực tế giá trị của f(x) lại hay nằm trong khoảng từ 0.1 đến 0.9. Điều này sẽ dẫn đến có thể chúng ta bỏ sót cửa số khuôn mặt. Việc tại sao sử dụng hai đầu ra này còn có được từ mô hình xác suất sẽ được đề cập đến ngay sau đây dựa trên lý thuyết xác suất của Bayes 3.1.2 Mô hình xác suất dựa trên công thức xác suất đầy đủ Bayes [9] Mô hình xác suất này dưa trên lý thuyết xác suất Bayes, nếu chúng ta gọi P(face|window) là xác suất cửa số đầu vào sẽ là cửa số khuôn mặt, P’(face) và P’(nonface) là xác xuất của khuôn mặt và không khuôn mặt trong tập dữ liệu được sử dụng để huấn luyện, khi đó dựa vào công thức xác suất đầy đủ của Bayes chúng ta nhận được công thức: (III.8) Quá trình huấn luyện mạng sẽ ước lượng giá trị của vế trái. Chúng ta lại biết P’(face), P’(nonface) và biết rằng P(windown|nonface) = 1- P(window|face). Thay và phương trình trên và tiến hành rút gọn biểu thức, chúng ta sẽ nhận được công thức sau đây: (III.9) Bây giờ khi tiến hành phân lớp một cửa sổ, chúng ta gọi xác suất của cửa sổ đó là khuôn mặt là P(face), xác suất cửa sổ đó không là khuôn mặt là P(nonface). Chúng ta tiếp tục dùng công thức xác suất đầy đủ của Bayes, sẽ nhận được công thức sau: (III.10) Thay P(window|face) bằng NN Output, chúng ta sẽ nhận được công thức: (III.11) Chúng ta sẽ phân lớp cửa số đó là khuôn mặt nếu như xác suất P(face|window) > 0.5 tương đương với một ngưỡng: (III.12) Do chúng ta sử dụng hàm kích hoạt là hàm tanh, với khoảng giá trị là -1 đến 1, do đó ngưỡng để phân lớp ở đây sẽ là: (III.13) Sử dụng kết quả có được từ mô hình xác suất này, chúng ta xây dựng mô hình mạng neural với hai đầu ra. Một đầu ra sẽ mang giá trị xác suấtcho của sổ là khuôn mặt, một đầu ra sẽ la giá trị xác suất cho cửa sổ không là khuôn mặt. Do sử dụng hàm tanh nên chúng ta sẽ thiết lập giá trị mong muốn đạt đến cho chúng ta 0.1 ứng với đầu ra không khuôn mặt và 0.9 ứng với đầu ra là khuôn măt. Trong quá trình huấn luyện, khi một cửa sổ được huấn luyện, giả sử cửa sổ đó là ảnh khuôn mặt, ta gọi là đã huấn luyện thành công nếu như xác suất đầu ra là khuôn mặt lớn hơn xác xuất đầu ra không là khuôn mặt. Còn khi tiến hành phân lớp, công thức [III.12] cho ta định nghĩa NN Output như là độ tin cậy của quá trình phân lớp, giá trị này được tính bằng hiệu giữa xác suất đầu ra là khuôn mặt trừ đi xác suất đầu ra không là khuôn mặt. Và như vậy, cửa sổ được xếp là lớp khuôn mặt nếu như độ tin cậy của nó vượt quá giá trị ngưỡng threshold. Do chúng ta sử dụng hàm kích họat tăng nên ở đây threshold = 0.8 Tuy nhiên đó không phải là kết quả cuối cùng, mà kết quả cuối cùng chúng ta có được sẽ qua những heuristic để có thể lọc bớt những của sổ có độ tin cậy không cao. 3.2 Huấn luyện mạng 3.2.1 Huấn luyện mạng học ảnh khuôn mặt Với kiến trúc là một mạng mở thì hiệu quả hoạt động của mạng neural phụ thuộc phần lớn vào quá trình huấn luyện mạng. Quá trình đó bao gồm xác định mục đích, chuẩn bị huấn luyện và chiến thuật huấn luyện mạng. Như đã trình bày trong huấn luyện mạng, chúng ta sẽ bao gồm huấn luyện mang nhận biết ảnh khuôn mặt và huấn luyện mạng nhận biết ảnh không phải là khuôn mặt. Tuy nhiên đây là một quá trình huấn luyện đông thời. Với kiến trúc là một mạng neural đơn lẻ, chúng ta không thể cùng một lúc phát hiện mặt ở mọi tư thế, nhìn thẳng và nghiêng, bởi vì nếu như thế trong tập ảnh huấn luyện khuôn mặt, chúng ta phải có đầy đủ các bộ dữ liệu miêu tả các tư thế khác nhau của khuôn mặt. Nhưng khi đó sự sai khác của các ảnh huấn luyện sẽ quá lớn, và điều đó sẽ làm cho mạng học sai và dẫn đến sẽ không học được cái gì cả [6]. Cũng chính vì điều này mà trong tập ảnh khuôn mặt để huấn luyện, sẽ chỉ có ảnh nhìn thẳng hoặc ảnh bị xê dịch như nghiêng, quay, dịch lên hay nhìn xuống với một góc không đáng kể (theo như tài liệu miêu tả trong tâp ảnh tải về, thì độ nghiêng không quá 200) và góc quay không quá 110). Quá trình huấn luyện ảnh khuôn mặt sẽ cố định với tập 1500 ảnh khuôn mặt có sẵn, và nói chung việc huấn luyện ảnh khuôn mặt không có điều gì phải nói thêm. Vấn đề ở đây sẽ là chiến thuật để huấn luyện ảnh không khuôn mặt. Vì thực tế cho thấy, số lượng ảnh không khuôn mặt so với ảnh có khuôn mặt là rất nhiều. Theo một số tài liệu thì với 1500 khuôn mặt thì số ảnh không khuôn mặt tương ứng phải lên đến con số gấp 1000 lần như thế. Để có thể huấn luyện được toàn bộ số ảnh này thật là điều khó khăn. Chính vì vậy một chiến lược giảm bớt số ảnh không khuôn mặt cần huấn luyện là điều vô cùng cần thiết. Hơn thế nữa, mục tiêu của chúng ta sẽ là tiến hành cho mạng học để sau này có thể phân lớp một cửa sổ là khuôn mặt hay không. Có nghĩa là tốt nhất, số lượng mẫu học không khuôn mặt càng gần số mẫu học khuôn mặt càng tốt. 3.2.2 Chiến thuật huấn luyện mạng học ảnh không khuôn mặt Chiến thuật luyện mạng học ảnh không khuôn mặt được xây dựng dựa trên những nhận xét sau đây: Nếu ta gán cho mỗi ảnh không khuôn mặt là một trọng số gọi là giá trị tương ứng với xác suất một mạng có thể nhận biết nhầm nó là ảnh khuôn mặt. Dễ nhận thấy, giá trị của các cửa sổ không khuôn mặt là không giống nhau. Vì khi tiến hành nhận biết, sẽ có những của sổ bị nhận nhầm là khuôn măt, một số cửa sổ khác sẽ không bị nhận nhầm. Rõ ràng trong huấn luyện mạng không khuôn mặt, những của sổ ảnh bị nhận nhầm có giá trị cao hơn nhiều so với những của sổ không bị nhận nhầm. Và chúng ta sẽ chú ý nhiều đến những cửa sổ này. Phương pháp của chúng ta đồng thời được kết hợp với phương pháp phân vùng màu da để giảm không gian tìm kiếm. Việc làm này đã làm cho một số củă sổ sẽ không bao giờ bị nhận nhầm nếu nó không phải thuộc vùng màu da. Và giá trị của những của sổ không khuôn mặt thuộc vùng màu da là rất cao. Đặc biệt là những cửa sổ chứa một bộ phận nào đó của khuôn mặt. Và chúng ta cũng chú ý đến những cửa sổ này. Hai nhận xét trên không phải là đã làm mất hết giá trị của các cửa sổ không bị nhận nhầm là cửa sổ khuôn mặt, bởi đây chính là những cửa sổ có nhiệm vụ khởi tạo cho mạng học, những cửa sổ này sẽ giúp cho mạng phân biệt ranh giới giữa ảnh không khuôn mặt và ảnh khuôn mặt được rõ ràng hơn. Chính vì vậy chúng ta cũng sẽ lưu tâm đến tập của sổ có tính chất tổng quát này. Với ba nhận xét trên chúng ta sẽ thực hiện huấn luyện mạng theo phương pháp huấn luyện mạng chủ động có học sau đây: Bước một: Tạo 100 của sổ là của sổ ngẫu nhiên được lấy từ một số ảnh phong cảnh cây cối nhà của và không chứa khuôn măt. Đồng thời tạo thêm 100 ảnh là tập ảnh thuộc vùng màu da như bộ phân trên cơ thể, và các bộ phân trên khuôn mặt. Bước hai: Tiến hành luyện mạng với bộ dữ liệu này. Lúc này bộ dữ liệu được huấn luyện sẽ bao gồm 200 ảnh không khuôn mặt và hai trăm ảnh khuôn mặt. Sau quá trình huấn luyện với một ngưỡng thành công nào đó (trong đồ án lấy ngưỡng 99% nghĩa là 99% ảnh đầu vào được nhận biết với tính chất của nó). Sẽ tiến hành sang bước ba. Bước ba: Tiến hành nhận biết tập các ảnh được sử dụng để luyện mạng, đây là tập 50 ảnh kích thước 480 * 360 bao gồm ảnh thiên nhiên, ảnh tập thể gia đình, không có, có một hay nhiều khuôn mặt. Sau mỗi lần nhận biết, tiến hành cập nhật tất cả các cửa sổ không phải khuôn mặt nhưng bị nhận nhầm là khuôn mặt vào cơ sở dữ liệu ảnh không khuôn mặt. Sau đó chuyển sang bước hai để tiếp tục luyện mạng. Trong quá trình luyện mạng luôn đảm bảo số lượng ảnh khuôn mặt và không khuôn mặt là luôn luôn bằng nhau. Quá trình này sẽ lặp đi lặp lại cho đến khi chúng ta đạt được tỉ lệ 1000 ảnh không khuôn mặt trong cở sở dữ liệu. Và tỉ lệ thành công đạt mức cao nhất. Đến đây chúng ta kết thúc quá trình luyện mạng. Và trong cơ sở dữ liệu sẽ có bộ tham sô các thông số mạng. Bộ tham số này sẽ được dùng để tiên hành phân lớp, nhận biết khuôn mặt cho một ảnh màu bất kì. Chiến thuật trên đã được sủ dụng để luyện mạng trong đồ án, thời gian luyện mạng là khá lâu. Đồng thời đã được tiến hành với số lượng nút ẩn khác nhau với mong muôn tìm ra một con số phù hợp nhất. Cuối cùng, số lượng nút ẩn đựoc chọn là 16 nút ẩn. Ảnh minh họa dưới đây có thể cho chúng ta thấy quá trình huấn luyện chủ động ảnh không khuôn mặt: 4. Nâng cao chất lượng phát hiện khuôn mặt và cải thiện tốc độ phát hiện Hệ thống phát hiện khuôn mặt sau quá trình huấn luyện đã được thử nghiệm trên một số ảnh màu. Sau quá trình thử nghiệm, đã nhận thấy rằng, chúng ta có thể cải thiện chất lượng phát hiện khuôn mặt đồng thời làm giảm thời gian chạy của hệ thống bằng một vài heuristic đơn giản. Các heuristic chỉ mang tính chất như những mẹo giúp ích cho hệ thống. Và có thể trong trường hợp tổng quát nhất nó không hoàn toàn đúng. 4.1 Heuristic giúp phát hiện khuôn mặt chính xác hơn Tiến hành thử nghiệm chúng ta nhận thấy rằng. Trong một vùng màu da có khuôn mặt, có rất nhiều cửa sổ được phát hiện nhưng chỉ trên cùng một khuôn mặt. Điều này có thể thấy trong hình dưới đây. Hình 27: Ảnh minh họa kết quả khi chưa sử dụng heuristic Có thể thấy, chúng ta luôn mong muôn mỗi khuôn mặt chỉ được phát hiện một lần với độ chính xác cao nhất. Tuy nhiên kết quả ra bao giờ cũng rất nhiều cửa sổ được phát hiện với độ sai khác không nhiều. Đây thông thường là kết quả của quá trình xử lý đa phân giải. Để có thể nâng cao độ chính xác của bộ phát hiện, chúng ta dựa vào mô hình mạng neural để tìm ra các heuristic. Có thể thấy rằng các cửa sổ được phân lớp là khuôn mặt đều có độ tin cậy lớn hơn ngưỡng 0.8. Tuy nhiên qua khảo sát thực tế cho thấy, các cửa sổ phân lớp khuôn mặt có độ tin cậy cao nhất là nhứng của sổ phát hiện chính xác nhất, khuôn mặt được phát hiện, gần với tập mẫu huấn luyện nhất.Từ đó chúng ta nghĩ đến heuristic chỉ chọn cửa sổ có độ tin cậy cao nhất trong các cửa sổ trên cùng một khuôn mặt. Vấn đề đặt ra bây giờ là làm thế nào để biết các cửa sổ là nhận biết cho cùng một khuôn mặt. Một nhận xét nữa được đưa ra như là một heuristic thứ hai. Đó là, thông thường, nếu một cửa sổ là của một khuôn mặt thì các cửa sổ lân cận nó đều là của khuôn mặt ấy. Hai cửa sổ được gọi là lân cận nhau nếu như chúng giao nhau. Nhận xét này giúp ta tìm được tập các của sổ biểu thị cho một khuôn mặt một cách không mấy khó khăn. Đó là tập các cửa sổ giao với ít nhất một cửa sổ trong tập đó. Để tránh trường hợp có hai cửa sổ trong cùng một tập có cùng độ tin cậy (thực tế kiểm nghiệm đã có trường hợp này). Chúng ta sẽ sủ dụng thêm một điều kiện chọn nữa. Đó là trong tất cả các cửa sổ có độ tin cậy cao nhất như nhau, chúng ta sẽ chọn cửa sổ có sổ lượng cửa sổ trong tập giao với nó là lớn nhất. Với điều kiện chọn này, kết quả cuồi cùng cho một tập cửa sổ hầu như chỉ có một cửa sổ duy nhất. Như vậy thuật toán để cải thiện chất lượng phát hiện bao gồm hai bước sau đây: Bước một: Với mỗi cửa sổ, tiến hành đếm số lượng của sổ giao nó. Đông thời gán cùng nhãn cho tập tất cả các cửa sổ này. Bước hai: Trong mỗi vùng, chọn cửa sổ có độ tin cậy cao nhất và số của sổ giao với nó nhiều nhất làm đại diện cho vùng. Đó là của sổ kết quả duy nhất khi phát hiện. Chúng ta sẽ loại bỏ tất cả các cửa sổ giao với của sổ được chọn này. Kiểm nghiệm thực tế khi áp dụng các heuristic này, kết quả phát hiện được cải thiện khá nhiều như mô tả trong hình minh họa dưới đây cho ảnh đã sử dụng phía trên Hình 28: Kết quả khi sử dụng heuristic Tuy nhiên, như đã nói, khái niệm heuristic chỉ mang tính một thủ thuật, nó khác với khái niệm thuật toán. Các heuristic thông thường chỉ đúng trong phần lớn trường hợp, còn trong một số trường hợp, nó không đúng. Với heuristic này, chúng ta có thể nhận thấy một trường hợp không đúng có hai khuôn mặt, một khuôn mặt tuy vẫn đầy đủ nội dụng nhưng bị khuất sau khuôn mặt kia một phần nào đó. Nếu như không sử dụng heuritic, có thể cả hai khuôn mặt đều được phát hiện, nhưng khi sư dụng heuritic, chỉ có một khuôn mặt được phát hiện. Hình dưới đây minh họa cho trường hợp trên: Hình 29: Ảnh minh họa việc đánh mất cửa sổ khuôn mặt khi sử dụng heuristic 4.2 Heuristic cải thiện thời gian phát hiện. Việc phải quét tất cả mọi cửa sổ trong tất cả các vùng bao chữ nhật cũng như phải tiến hành xử lý đa phân giải làm cho công việc của chúng ta phải tính toán một khối lượng rất lớn. Kiểm nghiệm thực tế trên một máy tính C1.7GHz, RAM 256, HDD 49Gb cho thấy thời gian phát hiện trung bình của ảnh kích thước 320 x 240 la từ 5à15 phút. Với mục đích có thể giảm bớt phần nào thời gian chạy chương trình. Và với nhận xét là các khuôn mặt được phát hiện và tìm ra hoàn toàn trên vùng màu da được nhận biết. Người viết đã kiểm thử hơn 1000 khuôn mặt khác nhau được chương trình chương trình phát hiện. Tiến hành thống kê tỉ lệ phần trăm giữa số pixel là pixel màu da trên tổng số pixel trong khuôn mặt thì cho thấy kết quả là. Tỉ lệ đó nằm trong khoảng từ 54% đến 94%. Từ đó đã tiến hành chọn ngưỡng cho cửa sổ phát hiện khuôn mặt như sau. Với một cửa sổ được trích chọn từ vùng màu da. Ta tiến hành tính tỉ lệ phần trăm sp theo công thức sau: (III.14) Cửa sổ sẽ chỉ được đem đi phân lớp khuôn mặt hay không nếu như nó thỏa mãn ngưỡng: 50 < sp < 100. (III.15) Để có thể tính được số pixel là màu da trong một vùng chữ nhật bất kì trong ảnh nhị phân đã được phân vùng. Trong quá trình phân vùng ảnh, nếu ta gọi seg[m,n] là ma trận sẽ chưa ảnh nhị phân được phân vùng kích thước m x n, thay vì seg[i,j] (với 0 ≤ i ≤ m-1 và 0 ≤ j ≤ n-1) nhận các giá trị 0 hoặc 1 thì giá trị của seg[i,j] được đĩnh nghĩa là tổng số pixel trong cửa sổ có cặp tọa độ trái trên phải dưới [(0,0); (i,j)]. Để tính được seg[i,j] ta dùng công thức truy hồi như sau: seg[i,j] = seg[i - 1, j] + seg[i, j - 1] - seg[i - 1, j - 1] + pixel(i,j) (III.16) Trong đó pixel(i,j) = 1 nếu điểm ảnh (i,j) là ảnh màu da và ngược lại nó nhận giá trị 0. Khi đó muốn tính số pixel màu da trong vùng chữ nhật bất kì có cặp tọa độ trái trên phải dưới [(i1, j1); (i2,j2)] ta sư dụng công thức: Tổng pixel = seg[i2, j2] - seg[i1, j2] - seg[i2, j1] + seg[i1, j1] (III.17) Kết quả khảo sát thực nghiệm cho thấy, với heuristic này, thời gian tìm kiếm trung bình cho tập ảnh trên là từ 3 -> 8phút, giảm đáng kể so với thời gian tìm kiếm ban đầu. CHƯƠNG IV: PHÂN TÍCH THIẾT KẾ VÀ CÀI ĐẶT CHƯƠNG TRÌNH 1. Xác định yêu cầu Như đã trình bày, chương trình được xây dựng với mục đích phát hiện khuôn mặt trong ảnh màu tĩnh dựa trên huấn luyện mạng neural và giảm không gian tìm kiếm bằng phương pháp phân vùng màu da. Chương trình của chúng ta xây dựng phải đáp đứng những yêu cầu như lý thuyết đã trình bày, bao gồm yêu cầu về module huấn luyện phát hiện khuôn mặt bằng mạng neural, module huấn luyện phân vùng màu da dựa trên phân phối Gaussian. Và cuối cùng là module phát hiện khuôn mặt cho ảnh màu đầu vào dựa trên kết quả của hai module trên. Hệ thống được xây dựng phải cho phép nhận ảnh màu đầu vào dưới nhiều dạng nén với phần mở rộng như JPEG, GIF, BMP. Hệ thống cũng cho phép quá trình huấn luyện chủ động cập nhật các cửa sổ phát hiện khuôn mặt sai trong quá trình thử nghiệm. 2. Phân tích và thiết kế hệ thống 2.1 Giới thiệu Với yêu cầu đặt ra như trên, đồng thời dựa trên tổng thể sơ đồ thuật toán và kiến trúc hệ thống của chương trình. Chúng ta nhận thấy, chương trình có mức độ phân chia về chức năng khá rõ ràng. Hơn nữa, kiến trúc hệ thống không phải là quá phức tạp, vì vậy người viết lựa chọn phương pháp phân tích và thiết kế hệ thống dựa trên hướng cấu trúc dựa trên biểu đồ luồng dữ liệu (BLD). Đây là một công cụ khá hay để phân tích và thiết kế cho những hệ thống không quá phức tạp, kể cả hệ thống được thiết kế cài đặt theo hướng đối tượng. 2.2 Phân tích và thiết kế hệ thống Hệ thống được phân tích theo cấu trúc dựa trên biểu đồ luông dự liệu BLD. Đầu tiên là sơ đồ BLD mức hệ thống tổng quát của chương trình: Hình 20: Sơ đồ BLD mức tổng quát của hệ thống Có thể thấy, hệ thống sẽ bao gồm ba chức năng chính. Đó là chức năng huấn luyện mạng neural, chức năng huấn luyện phân vùng màu da và chức năng phát hiện mặt người cho ảnh màu đầu vào. Chúng ta sẽ áp dụng quy tắc phân rã chức năng theo hướng cấu trúc và dựa trên biểu đồ luống dữ liệu BLD cho từng chức năng. Đầu tiên sẽ là chức năng huấn luyện mạng neural: Hình 30: Sơ đồ BLD phân rã chức năng huấn luyện mạng Trong sơ đồ này, bên canh các chức năng, ta thấy xuất hiện các cơ sở dữ liệu phải dung, bao gồm cơ sở dũ liệu ảnh huấn luyện, là tổng hợp của cơ sở dữ liệu ảnh khuôn mặt và cơ sở dữ liệu ảnh không khuôn mặt. Và kết quả của module huấn luyện là bộ tham số của mạng neural. Ta gọi đó là CSDL kết quả huấn luyện mạng. Tiếp theo là chức năng huấn luyện phân vùng màu da: Hình 31: Sơ đồ BLD phân rã chức năng huấn luyện phân vùng màu da Trong sơ đồ này, cũng có thêm hai cơ sở dữ liệu xuất hiện, đó là cơ sở dữ liệu nguồn mẫu màu da dùng để huấn luyện, và cơ sở dữ liệu kết quả huấn luyện phân vùng màu da. Đây là bộ ba tham số bao gồm ngưỡng xác suất trong phân phối gaussian mà bộ huấn luyện học được, vector trung bình của phân phối và ma trận hiệp phương sai của chương trình. Cuối cùng sẽ là chức năng chính của hệ thống, chức năng phát hiện khuôn mặt cho ảnh màu dựa trên kết quả của hai module trên. Đây là module phức tạp nhất, và kết quả cuối cùng của quá trình phân rã chức năng được thể hiện trên sơ đồ luồng dữ liệu BLD hình 32 trang bên: Hình 32: Sơ đồ BLD phân rã chức năng phát hiện mặt người Có thể dễ dang thấy rằng, module phát hiện mặt người sẽ sử dụng hai CSDL kết quả của hai module huấn luyện mạng neural và huấn luyện phân vùng màu da. Kết quả của chương trình sẽ được ghi vào CSDL gọi là CSDL kết quả phát hiện khuôn mặt. Đây thực chất sẽ là tọa độ các khuôn mặt mà chương trình sẽ phát hiện được nếu có. Ngoài ra, module này sẽ truy cập thêm CSDL ảnh huấn luyện không khuôn mặt. Vì như ta biết quá trình huấn luyện là chủ động và có học, cập nhật những cửa sổ phát hiện sai sau những lần thử nghiệm. Cuối cùng, tổng hợp tất cả các BLD trên, chúng ta có sơ đồ BLD chi tiết của hệ thống cần xây dựng: Hình 33: Sơ đồ BLD toàn bộ kiến trúc hệ thống 2.3. Thiết kế cơ sở dữ liệu Như đã phân tích trong phần trên, hệ thống chúng ta sẽ sử dụng các CSDL sau đây: - Cơ sở dữ liệu các ảnh huấn luyện mạng neural bao gồm: CSDL ảnh không khuôn mặt và CSDL ảnh khuôn mặt - Cơ sở dữ liệu ảnh huấn luyện phân vùng màu da - Cơ sở dữ liệu kết quả huấn luyện mạng neural - Cơ sở dữ liệu kết quả huấn luyện phân vùng màu da - Cơ sở dữ liệu kết quả phát hiện khuôn mặt Có thể thấy hai CSDL ban đầu là những mẫu ảnh với kích thước chuẩn hóa cố định. Ở đây chúng ta sẽ sử dụng kích thước chuẩn 25 x 25 pixel cho mẫu huấn luyện mạng neural. Hai tập con của CSDL này sẽ được gán nhãn và lưu vào từng thư mục riêng. Tập mẫu ảnh khuôn mặt sẽ được lưu vào thư mục FaceFolder và được gán nhãn cho từng mẫu là “isface + chỉ số mẫu”. Còn tập mẫu ảnh không khuôn mặt được lưu và thư mục NonFaceFolder và được gán nhãn cho từng mẫu là “nonface+ chỉ số mẫu”. Còn cơ sở dữ liệu tập mẫu màu da, cũng là những mẫu được trích chọn thủ công chuẩn kích thước 30 x 40 pixel. Tập mẫu này cũng được gán nhãn mẫu và lưu vào thư mục SkinSample. Ba CSDL sau, thực chất là những CSDL rất đơn giản, chúng chỉ là những bộ tham số của kết quả chương trình. Vì vậy, chúng ta sẽ sử dụng loại CSDL đơn giản nhất để lưu trữ chúng đó là file truy nhập tuần tự. Cụ thể, kết quả huấn luyện mạng neural sẽ được lưu vào file facenet*.nn. Ở đây “* “đại diện cho số nút ẩn mà kiến trúc mạng neural dùng, nhằm dễ dàng phân biệt trong quá trình thử nghiệm và huấn luyện. Kết quả của huấn luyện phân vùng màu da sẽ được lưu và file skin.nn. Đây sẽ là bộ ba tham số cần thiết. Cuối cùng sẽ là file faceresult.nn được dùng để lưu kết quả của các cửa sổ được phát hiện, việc lưu này với mục đích để dễ xử lý như cập nhật cửa sổ sai trong quá trình huấn luyện chủ động. 3. Thiết kế chương trình và kết quả minh họa 3.1 Thiết kế chương trình Chương trình được thiết kế bằng ngôn ngữ lập trình Visual Basic 6.0. Sở dĩ người viết chọn ngôn ngữ này vì đây là ngôn ngữ mà người viết nắm vững nhất và cũng rất dễ dang viết khi thiết kế theo sơ đồ BLD. Chương trình được viết dựa theo hướng đối tượng cụ thể dựa trên những thư viện mà Visual Basic gọi là các class. Chương trình bao gồm 4 class chính đóng vai trò là thư viện các phương thức để có thể sử dụng lời gọi trong chương trình chính. Ngoài ra, chương trình còn xây dựng một module bao gồm các hàm toán học có sử dụng trong chương trình gọi là module basMaths. Chương trình chính được xây dựng dưới dạng frame. Quan hệ các thành phần trong chương trình cũng như chức năng của từng thành phần được miêu tả như sơ đồ dưới đây: ` Hình 34: Sơ đồ các phương thức và quan hệ các lớp trong hệ thống 3.2 Kết quả chương trình - Hướng dẫn sử dụng - Đóng gói sản phẩm CHƯƠNG V: KHẢO SÁT THỰC NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ 1. Cơ sở dữ liệu ảnh khảo sát Chương trình sẽ khảo sát và đánh giá với hai tập dữ liệu cơ bản: - Tập cơ sở dữ liệu chuẩn bao: gồm 320 ảnh chân dung độ phân giải 320 x 140 điểm ảnh. Đây là tập ảnh được tải từ Tập ảnh này được chụp bởi máy ảnh kỹ thuật số Sony Digital Mavica, không flash. Trong tập ảnh này, bao gồm 150 ảnh là ảnh có độ sáng đồng đều trong các vùng ảnh. 170 ảnh có độ sáng không đồng đều, với cường độ sáng bên phải ảnh tối hơn. Từ tập 320 ảnh này, sẽ tiến hành thu nhỏ lại với kích thược 240 x 180 để kiểm tra khả năng phát hiện các khuôn mặt ở các kích thước khác nhàu. Toàn bộ 640 ảnh này sẽ được tạo thêm 640 ảnh nữa với việc thêm nhiễu ngẫu nhiên vào với tỉ lệ nhiễu chiếm 25%. - Tập cơ sở dữ liệu tự xây dựng: Do cơ sở dữ liệu trên chỉ là ảnh chân dung một khuôn mặt. Và chưa tìm được một tập có sở dữ liệu chuẩn nào gồm nhiều khuôn mặt. Vì vậy, nguời viết đã tiến hành tự xây dựng tập cơ sở dữ liệu nhiều khuôn mặt. Với các mục đích để kiểm tra: Khả năng phát hiện các khuôn mặt có kích thước khác nhau trong cùng một ảnh. Khả năng phát hiện các khuôn mặt có các tư thế, độ nghiêng và góc quay xê dịch trong ảnh. Khả năng phát hiện các khuôn mặt với các trạng thái khác nhau như cười, khóc, nghiêm trang. Mắt nhắm, mở…Khả năng có phát hiện được các ảnh bị che khuất hay không. Khả năng có phát hiện các khuôn mặt bị lấp trong vùng tối hay không. Khả năng có phát hiện được khuôn mặt trong bức ảnh bị nhiễu hay không. Với mục đích như vậy, 100 ảnh có độ phân giải bao gồm 240 x 180, 320 x 240, 480 x 360 điểm ảnh được sưu tầm và trích chọn từ nhiều nguồn ảnh khác nhau qua Internet. 100 ảnh này cũng sẽ được thêm nhiễu ngẫu nhiên để tạo thêm 100 ảnh nữa. Như vậy tổng số ảnh đã khảo sát thực nghiệm là 1480 ảnh. 2. Kết quả khảo sát (Do CSDL ảnh test hơi lớn, nên em chưa khảo sát xong. Nhưng em định tổ chức các bảng như sau) 2.1 Ảnh chân dung 2.2.1 Tập ảnh không nhiễu kích thước 480 x 360 Kích thước Tổng số ảnh Tổng số khuôn mặt Tổng số khuôn mặt phát hiện được Tổng số khuôn mặt phát hiện sai Tổng số khuôn mặt phát hiện thiếu Độ chính xác 480 x 360 320 320 Tỷ lệ (Hình minh họa kết quả) 2.2.2 Tập ảnh không nhiễu kích thước 320 x 240 Kích thước Tổng số ảnh Tổng số khuôn mặt Tổng số khuôn mặt phát hiện được Tổng số khuôn mặt phát hiện sai Tổng số khuôn mặt phát hiện thiếu Độ chính xác 320 x 240 320 320 Tỷ lệ (hình minh hoạ kết quả) 2.2.3 Tập ảnh không thêm nhiễu nhiễu kích thước 480 x 360 Kích thước Tổng số ảnh Tổng số khuôn mặt Tổng số khuôn mặt phát hiện được Tổng số khuôn mặt phát hiện sai Tổng số khuôn mặt phát hiện thiếu Độ chính xác 480 x 360 320 320 Tỷ lệ (hình minh họa kết quả) 2.2.4 Tập ảnh không thêm nhiễu nhiễu kích thước 320 x 240 Kích thước Tổng số ảnh Tổng số khuôn mặt Tổng số khuôn mặt phát hiện được Tổng số khuôn mặt phát hiện sai Tổng số khuôn mặt phát hiện thiếu Độ chính xác 320 x 240 320 320 Tỷ lệ (HÌnh mình họa kết quả) 2.3 Ảnh tập thể tự xây dựng 2.3.1 Tập ảnh không nhiễu, với các kích thước khác nhau Kích thước Tổng số ảnh Tổng số khuôn mặt Tổng số khuôn mặt phát hiện được Tổng số khuôn mặt phát hiện sai Tổng số khuôn mặt phát hiện thiếu Độ chính xác 480 x 360, 320 x 240, 240 x180 100 Tỷ lệ (HÌnh mình họa kết quả) 2.3.2 Tập ảnh thêm nhiễu với các kích thước khác nhau Kích thước Tổng số ảnh Tổng số khuôn mặt Tổng số khuôn mặt phát hiện được Tổng số khuôn mặt phát hiện sai Tổng số khuôn mặt phát hiện thiếu Độ chính xác 480 x 360, 320 x 240, 240 x180 100 Tỷ lệ (Hình mình họa kết quả) 3. Nhận xét, đánh giá kết quả và hướng ứng dụng TÀI LIỆU THAM KHẢO SÁCH 1. James A. Freeman – David M. Skapura: “Neural networks: Algorithms, applications and Programing Techniques” (eBook) 2. Anil K Jain: “Fundamentals of digital image processing” – Prentice Hall 3. Ben Krose - Patrick van der Smagt:“An Introduction to neural networks” (eBook) 4. Colin fyfe: “Artificial neural networks” – (eBook) 5. Nguyễn Thanh Thủy – Lương Mạnh Bá: “Nhập môn xử lý ảnh” - Nhà xuất bản khoa học kỹ thuật – 1999 BÀI BÁO 6. Henry A. Rowley - Shumeet Baluja - Takeo Kanade: “Neural Network-Based Face Detection” 7. Vladimir Vezhnevets - Vassili Sazonov - Alla Andreeva: “A survey on pixel-based skin color detection techniques” 8. Nguyễn Thị Hoàng Lan - Nguyễn Thanh Phương: “Face detection using skin color region and neural network” 9. David J.C MacKay: “Bayes method for neural network – theory and application” 10. Erik Hjelman – Boon Kee Low: “Face detection: A survey” WEBSITE 11. - Face detection using neural network 12. - Thông tin tổng quan về phát hiện mặt người 13. - Cơ sở dữ liệu mặt người 14. - Cơ sở dữ liệu test chương trình LỜI CẢM ƠN Em xin được cảm ơn thầy cô, bộ môn Truyền thông và mạng máy tính, Khoa Công nghệ thông tin, Trường Đại Học Bách Khoa Hà Nội. Cô giáo đã nhiệt tình giúp đỡ và hướng dẫn em trong suốt quá trình thực tập cũng như quá trình làm đồ án. Em xin cảm ơn tất cả các thầy cô giáo đã tham gia giảng dạy tại khoa Kỹ sư chất lượng cao. Cảm ơn các thầy cô đã trang bị cho bọn em những kiến thức vững vàng, không chỉ là những môn học liên quan đến công nghệ thông tin mà còn rất nhiều những môn khác nữa, tất cả đã giúp em rất nhiều trong quá trình hoàn thành đồ án. Xin cảm ơn tất cả các anh chị khóa trên cũng như tất cả các bạn bè đã nhiệt tình giúp đỡ em, cung cấp tài liệu, hỗ trợ kiến thức cũng như động viên em trong suốt quá trình làm luận văn. Cuối cùng, em xin được dành lời cảm ơn đặc biệt nhất đến gia đình bố mẹ, chị gái và em trai. Những người đã luôn luôn cạnh em, luôn luôn động viên tinh thần và tin tưởng em trong quá trình làm đồ án cũng như trong cuộc sống. Với đồ án này, em đã cố gắng và làm hêt sức mình với mong muốn có được kết quả tốt. Mặc dù vậy, do khả năng cũng như hạn chế về thời gian, đồ án của em chắc chắn không thể tránh được những thiếu sót, chưa được như ý muốn. Vì vậy, em thật sự rất mong nhận được sự đánh giá, góp ý của tất cả các thầy cô giáo, anh chị, và các bạn đồng khóa. Bởi những lời đánh giá và góp ý đó sẽ là rất quý báu giúp em có thể nâng cao chất lượng cho Đồ án tôt nghiệp của mình. Xin chân thành cảm ơn Mục lục

Các file đính kèm theo tài liệu này:

  • docHệ thống phát hiện khuôn mặt dựa trên mạng neural và phương pháp vân vùng màu da.doc
Tài liệu liên quan