Chương 1 Tổng quan: Giới thiệu khái quát về đề tài nghiên cứu. Mục tiêu, nhiệm vụ và phạm vi của đề tài.Chương 2 Hệ thống nhận dạng mặt người: Đi sâu vào hướng tiếp cận dựa theo thuật toán học máy AdaBoost. Giới thiệu về các đặc trưng Haarlike của khuôn mặt, cách tính các đặc trưng Haarlike, mô hình cascade of classifiers và cách áp dụng vào bài toán phát hiện mặt người. Tiếp theo giới thiệu về nhận dạng khuôn mặt và tìm hiểu kỹ thuật PCA trong nhận dạng khuôn mặt.Chương 3 Thiết kế hệ thống: Xây dựng một chương trình về phát hiện và nhận dạng mặt người được viết trên nền Visual C ++ của Microsoft, sử dụng thư viện mã nguồn mở OpenCV của Intel trên kit Raspberry Pi. Nêu lên các phân tích, thiết kế về chương trình.Chương 4 Kết quả thực nghiệm: Nêu các kết quả đạt được khi thực thi chương trình, sau đó phân tích các kết quả thực thi được.Chương 5 Kết luận và hướng phát triển: Tóm tắt những kết quả đạt được, những hạn chế và nêu lên các hướng phát triển trong tương lai.
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐIỆN - ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP PHÁT HIỆN VÀ NHẬN DẠNG KHUÔN MẶT Ngành Công Nghệ Kỹ Thuật Điện Tử Viễn Thông Sinh viên: LÊ THANH LONG MSSV: 10917019 NGUYỄN NHƯ TUÂN MSSV: 10917006 TP HỒ CHÍ MINH - 01/2015 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP PHÁT HIỆN VÀ NHẬN DẠNG KHUÔN MẶT Ngành Công Nghệ Kỹ Thuật Điện Tử Viễn Thông Sinh viên: LÊ THANH LONG MSSV: 10917019 NGUYỄN NHƯ TUÂN MSSV: 10917006 Hướng dẫn: ThS HUỲNH THỊ THU HIỀN TP HỒ CHÍ MINH – 01/2015 PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên: Lê Thanh Long Tel: 0978711560 Họ tên: Nguyễn Như Tuân Tel: 0978316364 MSSV:10917019 Email: thanhlong0792@gmail.com MSSV:10917006 Email: tuanspk92@gmail.com Thông tin đề tài Tên đề tài: PHÁT HIỆN VÀ NHẬN DẠNG KHUÔN MẶT Mục đích đề tài: Tìm hiểu, nghiên cứu xây dựng hệ thống nhận dạng khuôn mặt sử dụng nguồn thư viện mở Open CV kit Raspberry pi Đồ án tốt nghiệp thực tại: Bộ môn Điện Tử Viễn Thông, Khoa Điện Điện Tử, Trường Đại học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh Thời gian thực hiện: Từ ngày 20 / 09 /2014 đến 29 /12 /2014 Các nhiệm vụ cụ thể đề tài - Tìm hiểu giải thuật phát nhận dạng khuôn mặt Tìm hiểu phương pháp AdaBoost, Haar-like trích rút đặc trưng PCA Xây dựng thuật toán phát nhận dạng khuôn mặt Áp dụng mã nguồn thư viện mở OpenCV vào thuật toán Tạo môi trường làm việc với mã nguồn OpenCV hệ điều hành Linux Xây dựng chương trình phát nhận dạng khuôn mặt dựa mã nguồn thư viện mở OpenCV thực kit Raspberry pi Lời cam đoan sinh viên Chúng – Lê Thanh Long Nguyễn Như Tuân cam đoan ĐATN công trình nghiên cứu thân hướng dẫn thạc sỹ Huỳnh Thị Thu Hiền Các kết công bố ĐATN trung thực không chép từ công trình khác Tp.HCM, ngày tháng năm 2015 SVTH Lê Thanh Long- Nguyễn Như Tuân Giáo viên hướng dẫn xác nhận mức độ hoàn thành cho phép bảo vệ: …………………………………………………………………………………… Xác nhận Bộ Môn Tp.HCM, ngày tháng 01 năm 2014 Giáo viên hướng dẫn (Ký ghi rõ họ tên học hàm học vị) LỜI CẢM ƠN Sau thời gian dài học tập nghiên cứu, cuối hoàn thành khóa luận tốt nghiệp này, dịp tốt để gửi lời cảm ơn đến người Chúng xin gửi lời cảm ơn sâu sắc đến Th.s Huỳnh Thị Thu Hiền, tận hình hướng dẫn, định hướng cho suốt thời gian thực đề tài Cô cho lời khuyên quý báu giúp hoàn thành tốt khóa luận Chúng xin cảm ơn khoa Điện-Điện tử trường Đại Học Sư phạm Kỹ thuật Tp.HCM, cảm ơn thầy cô khoa tận tình giảng dạy, truyền đạt cho kiến thức quý báu năm học vừa qua, giúp cho có tảng kiến thức vững để thực khóa luận nghiên cứu học tập sau Cuối cùng, xin gửi lời cảm ơn đến tất bạn bè, anh, chị, người giúp đỡ, khích lệ phê bình, góp ý, giúp hoàn thành khóa luận cách tốt Tp.HCM, ngày tháng năm 2015 SVTH Lê Thanh Long- Nguyễn Như Tuân TÓM TẮT Nhận diện mặt người toán xuất cách không lâu , khoảng vài thập niên, có nhiều nghiên cứu Các nghiên cứu ban đầu đơn giản, ảnh đen trắng có khuôn mặt chụp thẳng, sau mở rộng cho ảnh màu, ảnh có nhiều khuôn mặt với nhiều góc độ khác nhau, môi trường xung quanh từ đơn giản đến phức tạp Ngày hệ thống nhận dạng mặt người ứng dụng nhiều lĩnh vực, đặc biệt an ninh bảo mật Nhận dạng mặt người tức đưa thông tin đối tượng đưa vào từ ảnh, hay từ camera quan sát Bước hệ thống nhận dạng mặt người phát khuôn mặt, tức xác định vị trí khuôn mặt ảnh, sau tách khuôn mặt khỏi ảnh để tiến hành nhận dạng Sau xem xét hướng tiếp cận khác nhau, nhóm chọn phương pháp phân tích thành phần PCA phương pháp tiếp cận học máy AdaBoost mô hình Cascade of classifiers Điểm mạnh AdaBoost tốc độ phát khuôn mặt nhanh Kết thử nghiệm cho thấy chương trình đạt độ xác cao với ảnh mặt người chụp trực diện MỤC LỤC DANH MỤC HÌNH DANH MỤC BẢNG DANH SÁCH CÁC THUẬT NGỮ Thuật ngữ Giải thích Classifier (bộ Một phân loại xây dựng theo thuật toán học phân loại) máy đấy, dùng để phân loại đối tượng (khuôn mặt hay khuôn mặt) False alarm Feature Là tỉ lệ nhận dạng sai phân loại (đặc Các thông tin giúp nhận biết đối tượng trưng) Haar-like feature Các đặc trưng đối tượng ảnh Các đặc trưng thường định nghĩa tính toán với tổng điểm ảnh vùng ảnh Hit rate Max false alarm Là tỉ lệ nhận dạng phân loại Đạt tỉ lệ sai phân loại xây dựng thành công, tỉ lệ sai giá trị bé, chấp nhận toán phân loại Strong classifier (bộ Bộ phân loại xây dựng từ nhiều phân loại yếu, có phân loại mạnh) độ xác cao Threshold (ngưỡng) Ngưỡng giá trị ranh giới lớp, giá trị ngưỡng thường chọn từ thực nghiệm Chọn giá trị thích hợp để hợp thành phân loại yếu Weak classifier (bộ Bộ phân loại đơn giản có độ xác khoảng 50% phân loại yếu) 10 Nhận dạng Nhận dạng Nhận Nhận dạng Không Tuân(%) dạng ra nhận dạng Long(%) Lang(%) Phương(% ra(%) ) Tuân 60 10 10 15 Long 15 55 10 10 10 Lang 10 10 55 10 15 Phương 15 10 15 50 10 Người 10 10 10 15 55 CSDL Bảng 4.3: Thống kê kết chương trình điều kiện ngược sáng Nhận dạng Nhận dạng Nhận Nhận dạng Không Tuân(%) dạng ra nhận dạng Long(%) Lang(%) Phương(% ra(%) ) Tuân 30 0 65 Long 35 10 45 Lang 10 20 10 55 Phương 5 10 30 50 Người 10 10 10 15 55 CSDL Bảng 4.4: Thống kê kết chương trình điều kiện ánh sáng mạnh Nhận dạng Nhận dạng Nhận Nhận dạng Không Tuân(%) dạng ra nhận dạng 58 Long(%) Lang(%) Phương(% ra(%) ) Tuân 45 0 50 Long 40 10 40 Lang 0 40 55 Phương 50 45 Người 15 15 10 15 45 CSDL Biểu đồ 4.1: Tỷ lệ nhận dạng điều kiện ánh sáng Từ biểu đồ ta thấy điều kiện ánh sáng có ảnh hưởng lớn đến độ xác thuật toán nhận dạng khuôn mặt Trong điều kiện ánh sáng tốt nhận dạng với độ xác cao Ngược lại với điều kiện thiếu ánh sáng, ngược sáng hay ánh sáng mạnh độ xác thấp Bảng 4.5: Thống kê kết chương trình với số ảnh huấn luyện ảnh cho người Nhận dạng Nhận dạng Nhận Nhận dạng Không Tuân(%) dạng ra nhận dạng Long(%) Lang(%) Phương(% ra(%) ) Tuân 70 5 15 Long 10 65 10 10 Lang 5 65 10 15 Phương 10 5 60 20 Người 15 10 10 10 55 59 CSDL Bảng 4.6: Thống kê kết chương trình với số ảnh huấn luyện 20 ảnh cho người Nhận dạng Nhận dạng Nhận Nhận dạng Không Tuân(%) dạng ra nhận dạng Long(%) Lang(%) Phương(% ra(%) ) Tuân 85 5 Long 90 0 Lang 80 10 Phương 5 85 Người 10 10 10 65 CSDL 60 Biểu đồ 4.2: Tỷ lệ nhận dạng với số lượng ảnh đào tạo khác Từ biểu đồ ta thấy số lượng ảnh huấn luyện tư điều kiện khác ảnh hưởng đến độ xác thuật toán nhận dạng khuôn mặt Với số lượng ảnh huấn luyện nhận dạng với độ xác thấp so với số lượng ảnh huấn luyện nhiều tư khác Qua ta rút kết luận để tăng độ xác phương pháp nhận dạng, ta cần tiến hành nhận dạng điều kiện ánh sáng tốt, sử dụng camera có độ phân giải cao Đồng thời số lượng chất lượng ảnh huấn luyện cho sở liệu yếu tố ảnh hưởng lớn đến kết nhận dạng 61 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN Sau thời gian tìm hiểu nghiên cứu đề tài: “Phát nhận dạng khuôn mặt”, thực đề tài theo dự kiến Trong trình tìm hiểu lý thuyết kỹ thuật phát nhận dạng khuôn mặt, xây dựng chương trình sử dụng thư viện mã nguồn mở OpenCV kit Raspberry pi, thu kết ban đầu sau: • Nắm phương pháp phát nhận dạng khuôn mặt • Biết cách sử dụng thư viện có sẵn mã nguồn thư viện mở OpenCV • Xây dựng thành công chương trình nhận dạng khuôn mặt sử dụng mã nguồn thư viện mở OpenCV kit Raspberry pi Trong thời gian nghiên cứu tìm hiểu xây dựng chương trình phát nhận dạng khuôn mặt theo yêu cầu Ngoài nhóm tiếp thu nhiều kiến thức thức hữu ích khác nhận dạng khuôn mặt ứng dụng kit Raspberry pi Về chương trình, chương trình đạt kết tốt, thời gian phát nhận dạng nhanh (tùy thuộc vào chất lượng loại camera độ tương thích camera với kit Raspberry pi) Đối với khuôn mặt thẳng góc với webcam, điều kiện ánh sáng tốt, không ngược sáng nhận phát nhận dạng xác Tuy nhiên khuôn mặt nghiêng 20 hay điều kiện ánh sáng yếu chương trình gần phát nhận dạng khuôn mặt Nhược điểm lớn mà nhóm chưa cải thiện tốc độ quay camera chậm nên dẫn đến độ trễ lớn tải ảnh 62 5.2 HƯỚNG PHÁT TRIỂN Mặc dù đồ án hoàn thành kiến thức hạn chế tránh khỏi sai sót, cố gắng phát triển thêm để ứng dụng hoàn thiện tốt hơn, có khả ứng dụng cao thực tiễn Nhóm nhận thấy phát triển thêm tính sau: - Cải thiện tốc độ quay camera Có thể lưu trữ thông tin trình nhận dạng vào thiết bị lưu trữ Ứng dụng hệ thống nhận dạng khuôn mặt thực tiễn điều khiển thiết bị, robot,… 63 PHỤ LỤC MÃ NGUỐN CHƯƠNG TRÌNH #include #include #include #include #include #include "opencv2/core/core.hpp" "opencv2/contrib/contrib.hpp" "opencv2/highgui/highgui.hpp" "opencv2/imgproc/imgproc.hpp" "opencv2/objdetect/objdetect.hpp" "/home/pi/pierre/libfacerec-0.04/include/facerec.hpp" #include #include #include #include "time.h" using namespace cv; using namespace std; // so nguoi dua vao huan luyen+ id cua moi nguoi #define MAX_PEOPLE #define TUAN 64 #define LANG #define LONG #define PHUONG #define TRACE #define DEBUG_MODE #define DEBUG if (DEBUG_MODE==1) // load thuat toan haar-cascades string glasses_cascade_name = "/usr/share/opencv/haarcascades/haarcascade_eye_tree_eyeglasses.xml"; string eyes_cascade_name = "/usr/share/opencv/haarcascades/haarcascade_eye.xml"; CvPoint Myeye_left; CvPoint Myeye_right; CascadeClassifier eyes_cascade; CascadeClassifier glasses_cascade; // ten cua nguoi string people[MAX_PEOPLE]; int nbSpeak[MAX_PEOPLE]; int bHisto; // so buc anh duoc hoc voi mot nguoi int nPictureById[MAX_PEOPLE]; ///////////////////////////////////////////////// // trace if TRACE==1 ///////////////////////////////////////////////// void trace(string s) { if (TRACE==1) { cout[...]... liệu hay không và cho đầu ra là thông tin liên quan đến người được nhận dạng Hình 1.1: Tổng quan về một hệ thống nhận dạng khuôn mặt 1.2.2 Nhiệm vụ của đề tài - Tìm hiểu các giải thuật phát hiện và nhận dạng khuôn mặt • Các giải thuật phát hiện khuôn mặt • Các giải thuật nhận dạng khuôn mặt • Chọn ra giải thuật và phương pháp tối ưu - Xây dựng thuật toán phát hiện và nhận dạng khuôn mặt - Áp dụng mã... phương pháp nhận dạng khuôn mặt Phương pháp phát hiện khuôn mặt bằng AdaBoost và Haar-like Nhận dạng khuôn mặt bằng phương pháp phân tích thành phần chính - PCA Mã nguồn thư viện mở OpenCV Phần cứng kit Raspberry pi 1.3.2 Phạm vi đề tài Trong đề tài này, chúng tôi tập trung vào việc xác định khuôn mặt từ webcam Từ đó theo dõi và xử lý khuôn mặt được phát hiện Sau đó nhận dạng xem khuôn mặt đó là ai... cách rộng rãi thì nhận dạng mặt người vẫn còn nhiều thách thức So với nhận dạng vân tay và mống mắt, nhận dạng mặt có nguồn dữ liệu phong phú hơn và ít đòi hỏi sự tương tác có kiểm soát hơn Bài toán nhận dạng mặt người còn nhiều thách thức nên hàng năm trong và ngoài nước vẫn có nhiều nghiên cứu về các phương pháp nhận dạng mặt người Có hai phương pháp nhận dạng phổ biến hiện nay là nhận dạng dựa trên... nhiệm vụ và phạm vi của đề tài Chương 2 Hệ thống nhận dạng mặt người: Đi sâu vào hướng tiếp cận dựa theo thuật toán học máy AdaBoost Giới thiệu về các đặc trưng Haar-like của khuôn mặt, cách tính các đặc trưng Haar-like, mô hình cascade of classifiers và cách áp dụng vào bài toán phát hiện mặt người Tiếp theo giới thiệu về nhận dạng khuôn mặt và tìm hiểu kỹ thuật PCA trong nhận dạng khuôn mặt Chương... thiết bị phát hiện và nhận dạng - khuôn mặt người Giúp giảm giá thành cho công tác bảo vệ và bảo mật Tạo tiền đề cho việc xây dựng cơ sở dữ liệu nhận dạng đối tượng một cách tự động thông qua khuôn mặt 1.6 CẤU TRÚC ĐỒ ÁN Với mục tiêu chính là tìm hiểu giải thuật AdaBoost, các đặc trưng Haar-like, mô hình Cascade of Classifiers, kỹ thuật PCA đồng thời áp dụng vào bài toán phát hiện và nhận dạng mặt người... cài đặt và mô phỏng thuật toán AdaBoost, Haar-like kết hợp với trích rút đặc trưng PCA 1.5 Ý NGHĨA KHOA HỌC VÀ THỰC TIỄN 1.5.1 Ý nghĩa khoa học - Nghiên cứu việc phát hiện và nhận dạng khuôn mặt Nghiên cứu về phương pháp phát hiện khuôn mặt AdaBoost và Haar-like Nghiên cứu về phương pháp phân tích thành phần chính PCA trong việc - nhận dạng khuôn mặt Ứng dụng thành công các phương pháp xử lý ảnh vào thực... bé hơn và được lượng tử hóa thành tập các mẫu có giới hạn Sau đấy thống kê các vùng đã được chiếu để mã hóa diện mạo cục bộ Nếu xác xuất lớn hơn xác xuất đạt được lớn hơn xác xuất tiền nghiện thì kết luận có khuôn mặt người Hướng tiếp cận này còn cho phép xác định các khuôn mặt bị xoay hoặc góc nhìn nghiêng 2.2 KỸ THUẬT PHÁT HIỆN VÀ NHẬN DẠNG KHUÔN MẶT 2.2.1 Phát hiện khuôn mặt dựa vào AdaBoost và Haar-like... nguồn thư viện mở OpenCV vào thuật toán - Tạo môi trường làm việc với mã nguồn OpenCV trên hệ điều hành Linux - Xây dựng chương trình phát hiện và nhận dạng khuôn mặt dựa trên mã nguồn thư viện mở Open CV và được thực hiện trên Kit Raspberry pi 12 1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU 1.3.1 Đối tượng nghiên cứu Đối tượng nghiên cứu bao gồm: - Lý thuyết về phát hiện và nhận dạng khuôn mặt Các vấn đề liên quan... cứu chúng tôi chọn đề tài: Phát hiện và nhận dạng khuôn mặt dựa trên đặc trưng Haar-like và phương pháp phân tích thành phần chính PCA viết bằng ngôn ngữ C++ được thực hiện kit Raspberry pi 11 1.2 MỤC TIÊU VÀ NHIỆM VỤ 1.2.1 Mục tiêu của đề tài Mục tiêu của đề tài là xây dựng một hệ thống nhận dạng mặt người online với đầu vào là ảnh khuôn mặt người, hệ thống sẽ xử lý và tìm kiếm xem người này có... Viterbi chuẩn và các thuật toán Baum-Welch Sau khi huấn luyện xong, dựa vào xác suất để xác định một quan sát thuộc lớp nào Hình 2.5: Các vector quan sát để huấn luyện cho HMM Hình 2.6: Các trạng thái ẩn 29 Đối với bài toán phát hiện và nhận dạng mặt người, ta chia khuôn mặt thành các vùng khác nhau như đầu, mắt, mũi, miệng, và cằm Có thể nhận dạng một mẫu khuôn mặt người bằng cách thực hiện tiến trình ... ngang thẳng đứng định nghĩa sau: HI(x) = 112Equation Chapter Section 1222* MERGEFORMAT (.) VI(y) = 323* MERGEFORMAT (.) Dựa biểu đồ hình chiếu ngang, xét biểu đồ biến thiên HI hai ông tìm hai cực... đen vùng trắng công thức sau: f(x) = Tổngvùng đen(pixel) - Tổngvùng trắng(pixel) 424* MERGEFORMAT (.) 52Equation Section (Next)612Equation Chapter Section Sử dụng giá trị này, so sánh với giá