Nghiên cứu và xây dựng hệ thống nhận dạng dựa trên thuật giải ADABOOST
Báo cáo môn Lý Thuyết Nhận Dạng BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI - Khoa Công Nghệ Thông Tin - Báo cáo bài tập lớn môn Lý thuyết nhận dạng GV hướng dẫn: Th.s Trần Hùng Cường Sinh viên thực hiện: Nhóm 5 - Lớp KHMT2 - K3 Thành viên trong nhóm: 1. Nguyễn Thành Trung 2. Nguyễn Tuấn Dương 3. Nguyễn Huy Thiện 4. Nguyễn Văn Tín 5. Trương Thị Phượng Hà nội ngày .tháng 6 năm 2011 Nhóm 9 Page 1 Báo cáo môn Lý Thuyết Nhận Dạng Nhận xét của giáo viên . Hà Nội, ngày tháng năm 2011 Giáo viên Ths. Trần Hùng Cường Nhóm 9 Page 2 Báo cáo môn Lý Thuyết Nhận Dạng Mục lục Nhận xét của giáo viên 2 Mục lục .3 Lời nói đầu .4 Chương II. Thuật giải Adaboost 9 Chương III: Xây dựng chương trình 24 Kết luận 31 Tài liệu tham khảo 32 Nhóm 9 Page 3 Báo cáo môn Lý Thuyết Nhận Dạng Lời nói đầu Trong nhiều năm qua, có rất nhiều công trình nghiên cứu về bài toán nhận dạng mặt người. Các nghiên cứu đi từ bài toán đơn giản, từ việc nhận dạng một mặt người trong ảnh đen trắng cho đến mở rộng cho ảnh mầu và có nhiều mặt người trong ảnh. Đến nay các bài toán xác định mặt người đã mở rộng với nhiều miền nghiên cứu như nhận dạng khuôn mặt, định vị khuôn mặt, theo dõi mặt người hay nhận dạng cảm xúc mặt người… Phát hiện mặt người trong ảnh là phần đầu tiên của một hệ thống nhận dạng mặt người. Các hệ thống nhận dạng khuôn mặt được bắt đầu xây dựng từ những năm 1970, tuy nhiên do còn hạn chế về các luật xác định mặt người nên chỉ được áp dụng trong một số ứng dụng như nhận dạng thẻ căn cước. Nó chỉ được phát triển mạnh mẽ từ những năm 1990 khi có những tiến bộ trong công nghệ video và ngày nay thì các ứng dụng của xác định mặt người đã trở nên phổ biến trong cuộc sống. Bài toán xác định 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 khuôn mặt trong ảnh bất kỳ (ảnh kỹ thuật số). Kỹ thuật này nhận biết các đặc trưng khuôn mặt và bỏ qua những thứ khác như: toà nhà, cây cối cơ thể. Chương trình xác định vị trí khuôn mặt người trong bài viết này sử dụng hướng tiếp cận dựa trên mạo, sử dụng bộ phân loại mạnh AdaBoost là sự kết hợp của các bộ phân loại yếu dựa trên các đặt trưng Haar-like để xác định khuôn mặt. Mã nguồn được dựa trên thư viện mã nguồn mở OpenCV của Intel để cài đặt. Nhóm 9 Page 4 Báo cáo môn Lý Thuyết Nhận Dạng Chương I: Tổng quan về xác định mặt người Giới thiệu chung 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, xám đến ảnh màu như ngày hôm nay.Các nghiên cứu đi từ bài toán đơn giản, mỗi ảnh chỉ có một khuôn mặt người nhìn thẳng vào thiết bị thu hình và đầu ở tư thế thẳng đứng trong ảnh đen trắng.Cho đế ngày hôm nay bài toán mở rộng cho ảnh màu, có nhiều khuôn mặt trong cùng một ảnh, có nhiều tư thế thay đổi trong ảnh. Không những vậy mà còn mở rộng cả phạm vi từ môi trường xung quanh khá đơn giản (trong phòng thí nghiệm) cho đến môi trường xung quanh rất phức tạp (như trong tự nhiên) nhằm đáp ứng nhu cầu thật sự và rất nhiều của con người. 1. Định nghĩa bài toán xác định mặt người Xác định khuôn mặt(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 người 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ể , . 2. Ứng dụng của phương pháp xác đinh mặt người Có nhiều ứng dụng đã được và đang thiết kế như: • Hệ thống tương tác giữa người máy giúp người bị tật hoặc khiếm khuyết có thể trao đổi. Những người dùng ngôn ngữ tay có thể giao tiếp với những người bình thường , . Nhóm 9 Page 5 Báo cáo môn Lý Thuyết Nhận Dạng • Fan phân đoạn ảnh màu để tìm cạnh thông qua thuật toán tăng vùng để xác định các ứng viên. Dùng đặc tính hình ellipse của khuôn mặt người để xác định ứng viên nào khuôn mặt người . • Jin xây dựng một bộ lọc để xác định ứng viên khuôn mựt người theo màu da người . Từ ứng viên này tác giả xác định khuôn mặt người theo hình dáng khuôn mặt và các quan hệ đặc trưng về thành phần khuôn mặt , với mắt phải được chọn làm gốc tọa độ để xét quan hệ. Tỷ lệ chính xác cho khuôn mặt chụp thẳng trên 80% • Tương lai sẽ phát triển các loại thẻ thông minh có tích hợp sẵn đặc trưng của người dùng trên đó, khi bất cứ người dùng khác dùng để truy cập hay xử lý tại các hệ thống sẽ được yêu cầu kiểm tra các đặc trưng khuôn mặt so với thẻ để biết nay có phải là chủ thẻ hay không. • Hãng máy chụp hình Canon đã ứng dụng bài toán xác định khuôn mặt người vào máy chụp hình thế hệ mới để cho kết quả hình ảnh đẹp hơn, nhất là khuôn mặt người. Khuôn mặt của con người có những kết cấu riêng biệt mà có thể dùng để phân lợi so với các đối tượng khác. Dựa vào mức độ cân xứng của khuôn mặt người để xác định khuôn mặt người. Tùy theo mỗi phương pháp mỗi thuật toán mà có cách xác định khác nhau. 3. Việc xác định khuôn mặt người có những khó khăn nhất định như: Mặc dù có rất nhiều cách để xác định mặt người tùy nhiên quá trình thực hiện lại gặp phải những khó khăn sau : • Hướng (pose) của khuôn mặt đối với máy ảnh, như: nhìn thẳng, nhìn nghiêng hay nhìn từ trên xuống. Cùng trong một ảnh có thể có nhiều khuôn mặt ở những tư thế khác nhau. Nhóm 9 Page 6 Báo cáo môn Lý Thuyết Nhận Dạng • Sự có mặt của các chi tiết không phải là đặc trưng riêng của khuôn mặt người, như: râu quai nón, mắt kính, …. • Các nét mặt (facial expression) khác nhau trên khuôn mặt, như: vui, buồn, ngạc nhiên, …. • Mặt người bị che khuất bởi các đối tượng khác có trong ảnh. • Sự biểu cảm của khuôn mặt : sự biểu cảm có thể làm thay đổi đáng kể các đặc trưng và thông số của khuôn mặt, ví dụ như khuôn mặt của cùng một người sẽ rất khác khi người đấy cười, tức giận hay sợ hãi … 4. Phạm vi đề tài Tập trung xác định khuôn mặt người và lưu vào CSDL. Do có nhiều khó khăn khi xác định khuôn mặt nên để bài toán được chính xác và giảm độ phức tạp thì cần những phạm vi yêu cầu sau • Các khuôn mặt được chụp thẳng hoặc góc nghiêng không đáng kể (bé hơn 10 o ) • Phông nền của ảnh không quá phức tạp • Ảnh được chụp trong điều kiện ánh sáng bình thường. • Đối với video hoặc webcam, do có thể tách thành các xử lý trên ảnh nên với những video phức tạp hay webcam quá kém, chương trình sẽ không thực hiện được tốt nhất có thể. Nhóm 9 Page 7 Báo cáo môn Lý Thuyết Nhận Dạng • 5. Các phương pháp Có nhiều nghiên cứu tìm phương pháp xác định khuôn mặt người, từ ảnh xám đến ngày nay là ảnh màu. Dựa vào các tính chất của các phương pháp xác định mặt người trên ảnh, có thể chia thành bốn loại chính, tương ứng với các hướng tiếp cận khác nhau. Một phương pháp có thể sử dụng nhiều hướng tiếp cận, tùy mỗi hoàn cảnh. • Hướng tiếp cận dựa trên tri thức: Hướng tiếp cận top-down, dựa trên các thuật toán, mã hóa các đặc trưng và quan hệ giữa các đặc trưng của khuôn mặt thành các luật. • Hướng tiếp cận dựa trên đặc trưng không thay đổi: Xây dựng các thuật toán tìm các đặc trưng mô tả cấu trúc khuôn mặt mà các đặc trưng này không thay đổi khi tư thế khuôn mặt , vị trí đặt camera thay đổi hoặc điều kiện ánh sáng thay đổi. • Hướng tiếp cận dựa trên so sánh khớp mẫu: Dùng các mẫu chuẩn của khuôn mặt người (các mẫu này được chọn lựa và lưu trữ ) để mô tả các khuôn mặt hay các đặc trưng của khuôn mặt ( các mẫu này được chọn tách biệt theo tiêu chuẩn đã được các tác giả đề ra để so sánh ). Phương pháp này có thể dùng để xác định vị trí hay dò tìm khuôn mặt trên ảnh. Các mối tương quan giữa dữ liệu ảnh đưa vào và các mẫu dùng để xác định khuôn mặt người. • Hướng tiếp cận dựa trên diện mạo: Trái ngược hẳn với hướng tiếp cận dựa trên khuôn mẫu , các mô hình ( hay các mẫu) sẽ được học từ một tập ảnh huấn luyện mà thể hiện tính chất tiêu biểu của sự xuất hiện của mặt người trong ảnh. Sau đó hệ thống (mô hình) sẽ xác định mặt người. Phương pháp này còn được biết đến với tên gọi tiếp cận theo các phương pháp học máy. Nhóm 9 Page 8 Báo cáo môn Lý Thuyết Nhận Dạng Chương II. Thuật giải Adaboost A. Tổng quan Học theo Adaboost là một hướng tiếp cận dựa trên diện mạo, Viola và Jones dùng Adaboost kết hợp cascade of classifiers để để tăng tốc độ phát hiện khuôn mặt trong ảnh với các đặc trưng dạng Haar wavelet-like . Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80% trên ảnh xám. Ngoài ra Schneiderman và Kanade dùng wavelet để trích đặc trưng, sau đấy cũng xây dựng hệ thống học với Adaboost, dựa trên xác suất để xác định khuôn mặt người. Tỷ lệ chính xác trên của phương pháp này lên đến 90%. • Hướng tiếp cận diện mạo Hướng tiếp cận dựa trên diện mạo áp dụng các kỹ thuật theo hướng xác suất thống kê và học máy để tìm những đặc tính liên quan của khuôn mặt và không phải là khuôn mặt. Các đặc tính đã được học ở trong hình thái các mô hình phân bố hay các tham số của một hàm số nên có thể dùng các đặc tính này để xác định khuôn mặt người. Đồng thời, bài toán giảm số chiều thường được quan tâm để tăng hiệu quả tính toán cũng như hiệu quả xác định. Thuật toán học máy Adaboost được phát triển thuật toán Boosting • Thuật toán Boosting Về lịch sử, boosting bắt nguồn từ câu hỏi nổi tiếng được đưa ra bời Kearns vào năm 1989 : “Liệu có thể tạo ra một strong classifier từ một tập các bộ phân loại yếu?”. Năm 1990, Robert Schapire đưa ra thuật toán boosting đầu tiên, tiếp đến năm 1993 thì nó được Drucker, Schapire và Simard kiểm nghiệm trong trong các chương trình nhận dạng ( OCR application ). Freund đã tiếp tục các nghiên cứu của Nhóm 9 Page 9 Báo cáo môn Lý Thuyết Nhận Dạng Schaprire, và đến năm 1995 thì ông cùng với Schapire phát triển boosting thành adaboost. Như vậy, nguyên lý cơ bản của boosting là sự kết hợp các weak classifiers thành một strong classifier. Trong đó, weak classifier là các bộ phân loại đơn giản chỉ cần có độ chính xác trên 50%. Bằng cách này, chúng ta nói bộ phân loại đã được “boost”. Để hiểu cách hoạt động của thuật toán boosting, ta xét một bài toán phân loại 2 lớp (mẫu cần nhận dạng chỉ thuộc một trong hai lớp) với D là tập huấn luyện gồm có n mẫu. Trước tiên, chúng ta sẽ chọn ngẫu nhiên ra n1 mẫu từ tập D (n1<n) để tạo tập D1. Sau đó, chúng ta sẽ xây dựng weak classifier đầu tiên C1 từ tập D1. Tiếp theo, chúng ta xây dựng tập D2 để huấn luyện bộ phân loại C2. D2 sẽ được xây dựng sao cho một nửa số mẫu của nó được phân loại đúng bởi C1 và nửa còn lại bị phân loại sai bởi C1. Bằng cách này, D2 chứa đựng những thông tin bổ sung cho C1. Bây giờ chúng ta sẽ xây huấn luyện C2 từ D2. Tiếp theo, chúng ta sẽ xây dựng tập D3 từ những mẫu không được phân loại tốt bởi sự kết hợp giữa C1 và C2: những mẫu còn lại trong D mà C1 và C2 cho kết quả khác nhau. Như vậy, D3 sẽ gồm những mẫu mà C1 và C2 hoạt động không hiệu quả. Sau cùng, chúng ta sẽ huấn luyện bộ phân loại C3 từ D3. Bây giờ chúng ta đã có một strong classifier: sự kết hợp C1, C2 và C3. Khi tiến hành nhận dạng một mẫu X, kết quả sẽ được quyết định bởi sự thỏa thuận của 3 bộ C1, C2 và C3: Nếu cả C1 và C2 đều phân X vào cùng một lớp thì lớp này chính là kết quả phân loại của X; ngược lại, nếu C1 và C2 phân X vào 2 lớp khác nhau, C3 sẽ quyết định X thuộc về lớp nào Nhóm 9 Page 10