NGHIÊN cứu các kỹ THUẬT PHÁT HIỆN mặt NGƯỜI và ỨNG DỤNG

30 1K 4
NGHIÊN cứu các kỹ THUẬT PHÁT HIỆN mặt NGƯỜI và ỨNG DỤNG

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CNTT  BÁO CÁO THỰC TẬP TỐT NGHIỆP ĐỀ TÀI : NGHIÊN CỨU CÁC KỸ THUẬT PHÁT HIỆN MẶT NGƯỜI ỨNG DỤNG Giáo viên hướng dẫn : Tiến sĩ Phạm Văn Hà Sinh viên: Lê Thanh Nghị Lớp: Khoa học máy tính – Khóa Mã sinh viên: 054 106 0137 Hà Nội, ngày 14 tháng 03 năm 2014 Khoa CNTT Nghiên cứu kỹ thuật phát mặt người LỜI NÓI ĐẦU Công nghệ thông tin ứng dụng lĩnh vực sống Với hệ thống máy tính, làm nhiều việc, tiết kiện thời gian công sức Điển công việc nhận dạng mặt người Ngày xưa, muốn tìm kiếm kẻ tình nghi siêu thị hay sân bay, nhân viên an ninh phải tìm kiếm hình camera theo dõi Ngày nay, công việc làm tự động nhờ hệ thống nhận dạng mặt người Phát mặt người ảnh phần quan trọng hệ thống nhận dạng mặt người đó, giải tốt việc phát hiên mặt người giúp tiết kiệm thời gian nâng cao độ xác việc nhận dạng khuôn mặt Phát mặt người toán nhận dạng đơn giản, hệ thống cần phân loại đối tượng đưa vào có phải mặt người hay mặt người Ở mức độ cao hơn, sau phát khuôn mặt, khuôn mặt so sánh với khuôn mặt có liệu để nhận dạng xem khuôn mặt (thường áp dụng nhận dạng khuôn mặt người tiếng tội phạm bị truy nã) Bài toán phát mặt người bắt đầu nghiên cứu từ năm 1990s, có nhiều công trình nghiên cứu phát khuôn mặt ảnh, nhiên nay, nhà khoa học không ngừng tìm hướng tiếp cận mới, thuật toán nhằm nâng cao hiệu suất việc phát khuôn mặt việc nhận dạng mặt người Sau thời gian dài học tập nghiên cứu, cuối em hoàn thành đề tài này, dịp tốt để em gửi lời cảm ơn đến người Em xin gửi lời cảm ơn sâu sắc đến T.S Phạm Văn Hà tận tình hướng dẫn, định hướng cho em suốt thời gian thực đề tài Thầy cho em lời khuyên quý báu giúp em hoàn thành tốt khóa luận Em xin chân thành cảm ơn! SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Tóm tắt Mục tiêu đề ra: - Tìm hiểu giải thuật adaboost, đặc trưng haar-like, mô hình Cascade of - Classifiers Áp dụng vào toán phát mặt người ảnh Báo cáo thực tập trình bày bốn chương với bố cục sau: Chương 1: Tổng quan phương pháp xác định mặt người : Giới thiệu tổng quan toán xác định mặt người ảnh, ứng dụng khó khăn toán, đồng thời xác định phạm vi đề tài Chương 2: Các phương pháp xác định mặt người : Nêu chi tiết toán phát mặt người, hướng tiếp cận giải toán, nghiên cứu thành đạt nhà nghiên cứu toán xác định mặt người Chương 3: Cơ sở lý thuyết : Đ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 đặc trưng haar-like khuôn mặt, cách tính đặc trưng haar-like Tiếp theo giới thiệu mô hình cascade of classifiers cách áp dụng vào toán phát mặt người ảnh Chương 4: Xây dựng ứng dụng : Xây dựng chương trình demo phát mặt người ảnh Nêu lên phân tích – thiết kế chương trình Cuối kết luận hướng phát triển: Tóm tắt kết đạt được, hạn chế nêu lên hướng phát triển tương lai SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Mục Lục LỜI NÓI ĐẦU Tóm tắt Mục Lục .4 Danh sách hình vẽ Danh sách từ viết tắt/từ tiếng Anh sử dụng báo cáo CHƯƠNG 1: TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI 1.1Giới thiệu phương pháp xác định mặt người ảnh 1.2 Định nghĩa toán xác định mặt người 1.3Những khó khăn thách thức toán xác định mặt người 1.4Các ứng dụng xác định mặt người 1.5Xác định phạm vi đề tài .8 CHƯƠNG 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI CHƯƠNG 3: CƠ SỞ LÝ THUYẾT 10 3.1 Tổng quan Adaboost 10 3.1.1 Adaboost 11 3.1.2 Thuật toán Adaboost: .12 3.2Các đặc trưng Haar-like .14 3.3 Cascade of Classifiers .17 3.4 Cascade of boosting classfiers 18 CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG .20 4.1 Sơ lược OpenCV 20 4.2 Tổng quan hệ thống xác định mặt người ảnh .21 4.3 Phân tích thiết kế hệ thống phát mặt người 21 4.3.1 Phân tích 21 4.3.2 Thiết kế hệ thống 22 4.3.3 Thiết kế giao diện 23 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người 4.4 Demo chương trình 26 Đánh giá, kết luận hướng phát triển 28 Tài liệu tham khảo: .30 Danh sách hình vẽ STT 10 11 12 13 14 15 16 Tên Hình 3.1: Boosting Hình 3.2: Sơ đồ khối xây dựng phân loại Hình 3.3: đặc trưng Haar-like Hình 3.4: Các đặc trưng mở rộng đặc trưng Haar-like sở Hình 3.5: Cách tính Integral Image ảnh Hình 3.6: Ví dụ cách tính nhanh tổng điểm ảnh vùng D ảnh Hình 3.7: Ví dụ cách tính nhanh tổng điểm ảnh vùng D ảnh Hình 3.8: Huấn luyện cascade N lớp Hình 3.9: Cascade of boosting classifiers Hình 4.1 : Cấu trúc OpenCV Hình 4.2: Tổng quan hệ thống phát mặt người ảnh Hình 4.3: Biểu đồ ngữ cảnh hệ thống Hình 4.4: Sơ đồ khối chương trình Hình 4.5: Biểu đồ phân rã chức Hình 4.5: Giao diện chương trình demo Hình 4.6: Chạy thử chương trình Trang 11 13 14 15 16 16 16 18 18 20 21 21 22 23 24 27 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Danh sách từ viết tắt/từ tiếng Anh sử dụng báo cáo Từ viết tắt/từ tiếng Anh picBox txtNotice btnBrowse btnDetect Từ đầy đủ Picturebox Textbox “Notice” button Browse button detect Classifier False alarm Feature Haar-like feature Nghĩa tiếng Việt Đối tượng khung ảnh Đối tượng textbox Đối tượng nút “Duyệt ảnh” Đối tượng nút “Thực hiện” Một phân loại xây dựng theo thuật toán học máy đấy, dùng để phân loại đối tượng (khuôn mặt hay khuôn mặt) Là tỉ lệ nhận dạng sai phân loại Đặc trưng Là thông tin giúp nhận biết đối tượng 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 Là tỉ lệ nhận dạng phân loại Max false alarm Đạ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 Threshold Weak classifier Bộ phân loại mạnh phân loại xây dựng từ nhiều phân loại yếu, có độ xác cao 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 Bộ phân loại yếu Là phân loại đơn giản có độ xác khoảng SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người 50% CHƯƠNG 1: TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI 1.1 Giới thiệu phương pháp xác định mặt người ảnh Trong nhiều năm qua, có nhiều công trình nghiên cứu toán nhận dạng mặt người Các nghiên cứu từ toán đơn giản, từ việc nhận dạng mặt người ảnh đen trắng mở rộng cho ảnh mầu có nhiều mặt người ảnh Đến toán xác định mặt người mở rộng với nhiều miền nghiên cứu 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 mặt người ảnh phần hệ thống nhận dạng mặt người Các hệ thống nhận dạng khuôn mặt bắt đầu xây dựng từ năm 1970, nhiên hạn chế luật xác định mặt người nên áp dụng số ứng dụng nhận dạng thẻ cước Nó phát triển mạnh mẽ từ năm 1990 có tiến công nghệ video ngày ứng dụng xác định mặt người trở nên phổ biến sống 1.2 Định nghĩa toán xác định mặt người Xác định khuôn mặt người kỹ thuật máy tính để xác định vị trí kích thước khuôn mặt người ảnh Kỹ thuật nhận biết đặc trưng khuôn mặt bỏ qua thứ khác như: tòa nhà, cối, thể … 1.3 Những khó khăn thách thức toán xác định mặt người Việc xác định khuôn mặt người có khó khăn định như: • Hướng (pose) khuôn mặt máy ảnh, như: nhìn thẳng, nhìn nghiêng hay nhìn từ xuống Cùng ảnh có nhiều khuôn mặt tư khác • Sự có mặt chi tiết đặc trưng riêng 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 khuôn mặt, như: vui, buồn, ngạc nhiên, … SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt ngườiMặt người bị che khuất đối tượng khác có ảnh Sự biểu cảm khuôn mặt : biểu cảm làm thay đổi đáng kể đặc trưng thông số khuôn mặt, ví dụ khuôn mặt người khác người cười, tức giận hay sợ hãi … 1.4 Các ứng dụng xác định mặt người Xác định mặt người thường phần hệ thống (facial recognition system) Nó thường dùng giám sát video, giao tiếp người máy quản lý sở liệu ảnh… Các ứng xác định mặt người kể đến là: • • • • 1.5 Xác minh tội phạm Camera chống trộm Bảo mật Lưu trữ khuôn mặt Xác định phạm vi đề tài Trong đề tài này, em tập trung vào việc xác định khuôn mặt ảnh Từ lưu khuôn mặt tìm vào CSDL để phục vụ cho mục đích khác ( chẳng hạn nhận dạng mặt người ghép khuôn mặt vào ảnh khác … ) Do điều kiện khó khăn nêu ( mục chương 1) em xin đưa giả định rành buộc sau để giảm độ phức tạp toán: • Các khuôn mặt chụp thẳng góc nghiêng không đáng kể (bé 10o) • Phông ảnh không phức tạp • Ảnh chụp điều kiện ánh sáng bình thường SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người CHƯƠNG 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI Dựa vào tính chất phương pháp xác định mặt người ảnh, phương pháp chia thành bốn loại chính, tương ứng với bốn hướng tiếp cận khác Ngoài có nhiều nghiên cứu mà phương pháp xác định mặt người không dựa vào hướng mà có liên quan đến nhiều hướng • Hướng tiếp cận dựa tri thức: Dựa vào thuật toán, mã hóa đặc trưng quan hệ đặc trưng khuôn mặt thành luật Đây hướng tiếp cận theo kiểu top-down • Hướng tiếp cận dựa đặc trưng không thay đổi: Xây dựng thuật toán để tìm đặc trưng khuôn mặt mà đặc trưng không thay đổi tư khuôn mặt hay vị trí đặt camera thay đổi • Hướng tiếp cận dựa so sánh khớp mẫu: Dùng mẫu chuẩn khuôn mặt (các mẫu chọn lưu trữ) để mô tả khuôn mặt hay đặc trưng khuôn mặt (các mẫu chọn tách biệt theo tiêu chuẩn tác giả đề để so sánh) Phương pháp dùng để xác định vị trí hay dò tìm khuôn mặt ảnh • Hướng tiếp cận dựa diện mạo: Trái ngược với hướng tiếp cận dựa khuôn mẫu, mô hình (hay mẫu) học từ tập ảnh huấn luyện mà thể tính chất tiêu biểu xuất mặt người ảnh Sau hệ thống (mô hình) xác định mặt người Phương pháp biết đến với tên gọi tiếp cận theo phương pháp học máy SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người CHƯƠNG 3: CƠ SỞ LÝ THUYẾT 3.1 Tổng quan Adaboost Học theo Adaboost cách hướng tiếp cận dựa diện mạo, Viola Jones dùng AdaBoost kết hợp cascade để xác định khuôn mặt người [17] với đặc trưng dạng Haar wavelet-like Tốc độ xử lý nhanh tỷ lệ xác 80% ảnh xám Thuật toán học máy Adaboost phát triển thuật toán boosting, bọn em trình bày chút thuật toán boosting trước trình bày Adaboost Tiếp cận Boosting Về lịch sử, boosting bắt nguồn từ câu hỏi tiếng đưa bời Kearns vào năm 1989 : “Liệu tạo strong classifier từ tập phân loại yếu?” Năm 1990, Robert Schapire đưa thuật toán boosting đầu tiên, tiếp đến năm 1993 Drucker, Schapire Simard kiểm nghiệm trong chương trình nhận dạng ( OCR application ) Freund tiếp tục nghiên cứu Schaprire, đến năm 1995 ông với Schapire phát triển boosting thành adaboost Như vậy, nguyên lý boosting kết hợp weak classifiers thành strong classifier Trong đó, weak classifier phân loại đơn giản cần có độ xác 50% Bằng cách này, nói phân loại “boost” Để hiểu cách hoạt động thuật toán boosting, ta xét toán phân loại lớp (mẫu cần nhận dạng thuộc hai lớp) với D tập huấn luyện gồm có n mẫu Trước tiên, chọn ngẫu nhiên n1 mẫu từ tập D (n1Ftarget • i = i+1; • Huấn luyện phân loại hi từ tập Pi Ni với detection rate d max false alarm f Thêm hi vào phân lớp • Dùng phân lớp có để tính Fi: Duyệt qua N mẫu negative tìm đủ n mẫu mà phân lớp có phân loại sai ( • N := • Nếu Fi >Ftarget N = { số mẫu sai stage phân loại sai } P = { số mẫu positive mà stage phân loại dúng } Minh họa thuật toán cascade training: stage …… N N-1 hitrate = hN h h 1-f 1-f 1-f h falsealarms = fN 1-f Input pattern classified as a non-object Hình 3.8: Huấn luyện cascade N lớp Hình 3.8 minh họa huấn luyện cascade gồm N stages Ở stage, weak classifier tương ứng huấn luyện cho độ xác h false alarm f 3.4 Cascade of boosting classfiers Cascade of boosting classifiers mô hình cascade of classifiers với classifier xây dựng Adaboost sử dụng haar-like 18 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Y I N Y N N Y N C L A S S NON-CLASS Hình 3.9: Cascade of boosting classifiers Viola Jones sử dụng thành công cascade of boosting classifiers cho toán nhận dạng mặt người Với tập huấn luyện gồm 4196 hình mặt người đưa ảnh grayscale kích thước 24x24 9500 hình background, hai ôngđã xây dựng cấu trúc cascade tree gồm 38 stage với tổng cộng 6060 đặc trưng haar-like Thực nghiệm cho thấy classifier stage sử dụng đặc trưng loại khoảng 50% mẫu background (không phải mặt người) có độ xác d = 100% Classifier stage thứ sử dụng 10 đặc trưng loại 80% mẫu background với độ xác 100% Hệ thống so sánh với hệ thống Rowley-Baluja-Kanade (sử dụng mạng neural), Schneiderman-Kanade (sử dụng phương pháp thống kê), cho thấy tỉ lệ nhận dạng ngang nhau, hệ thống Viola Jones chạy nhanh đến 15 lần so với hệ thống RowleyBaluja-Kanade nhanh 600 lần hệ thống Schneiderman-Kanade Lý mà cấu trúc cascade đạt tốc độ nhận dạng nhanh nhờ sớm loại bỏ mẫu background đơn giản (thường có số lượng lớn nhiều so với mẫu chứa object – mẫu chưa khuôn mặt cần tiến hành nhận dạng) Bên cạnh đó, hệ thống Viola Jones đạt độ xác cao nhờ vào thuật toán cascade training, nhận dạng huấn luyện AdaBoost với đặc trưng Haar-like mô tả tốt thông tin đối tượng, với cách Integral Image tính nhanh đặc trưng, không làm giảm tốc độ nhận dạng hệ thống Như vậy, mô hình Cascade of Boosted Classifiers thật cách tiếp cận tốt tốc độ lẫn khả nhận dạng, phù hợp với nhận dạng mặt người 19 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG Phát mặt người ảnh có nhiều ứng dụng sống, nhiên, này, bọn em xây dựng chương trình nhỏ để minh họa cho lý thuyết Cụ thể chương trình phát mặt người ảnh viết visual c ++ Microsoft, sử dụng thư viện mã nguồn mở OpenCV Intel 4.1 Sơ lược OpenCV Open CV thư viện mã nguồn mở intel thị giác máy tính Nó cung cấp mã nguồn bao gồm hàng trăm hàm, lớp dựa thuật toán xử lý ảnh Computer vision dùng ngôn ngữ C/C++ Open CV thể đa dạng trí tuệ nhân tạo Được ứng dụng nhiều toán nhận dạng mặt, dò tìm mặt, phát mặt, lọc Kalman, … Cấu trúc tổng quan OpenCV bao gồm phần phần hình vẽ CV MLL HighGUI Các hàm xử lý ảnh giải thuật thị giác máy tính Các thuật toán học máy, bao gồm phân cụm, phân loại thống kê Các hàm thủ tục làm việc với file ảnh file video CXCORE Các cấu trúc liệu bản, cấu trúc XML, hàm đồ họa … Hình 4.1 : Cấu trúc OpenCV Phần CV bao gồm thư viện xử lý ảnh giải thuật thị giác máy tính ML thư viện thuật toán học máy, bao gồm nhiều phân cụm phân loại thống kê HighGUI chứa đựng thủ tục vào ra, chức lưu trữ đọc file ảnh video Phần thứ 4, Cxcore chứa đựng cấu trúc liệu ( ví dụ cấu trúc XML, liệu …) Phần cuối 20 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người CvAux, phần bao gồm thư viện cho việc phát hiện, theo dõi nhận dạng đối tượng (khuôn mặt, mắt …) 4.2 Tổng quan hệ thống xác định mặt người ảnh Ước lượng đặc trưng Tính đặc trưng nhanh từ nhiều tỉ lệ Ảnh Các hàm Haar Integral Image gốc Cấu trúc phân tầng (Cascade of classifier) I C1 Y C2 N N Cn N NON-CLASS Y C L A S S Số lượng lớn đặc trưng Một tập nhỏ đặc trưng Chọn đặc trưng Điều chỉnh thông số Adaboost Quyết định kết Hình 4.2: Tổng quan hệ thống phát mặt người ảnh Về bản, từ ảnh gốc ban đầu, hệ thống chia ảnh thành vô số vùng nhỏ để tính đặc trưng, sau đưa đặc trưng Tiếp theo, chương trình xác định vùng khả quan (các ứng viên) khuôn mặt, cuối ứng viên đưa vào phân loại để tiến hành xác định ứng viên mặt người 4.3 Phân tích thiết kế hệ thống phát mặt người 4.3.1 Phân tích Nhiệm vụ chương trình dò tìm khuôn mặt từ ảnh 21 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Capture ảnh HỆ THỐNG PHÁT HIỆN MẶT NGƯỜI TRONG ẢNH NGƯỜI DÙNG Hình 4.3: Biểu đồ ngữ cảnh hệ thống Như chức chương trình bao gồm: • Đọc file ảnh • Phát nhiều khuôn mặt có ảnh 4.3.2 Thiết kế hệ thống Với chức trên, chương trình chia thành thành phần chính: Phần xử lý đầu vào, phần phát khuôn mặt phần xử lý đầu Đầu vào (ảnh) Phát nhanh khuôn mặt Hình 4.4: Sơ đồ khối chương trình a.Xử lý đầu vào Chương trình nhận đầu vào file ảnh, video webcam, nhiên, việc phát khuôn mặt thực ảnh, đó, với đầu vào webcam hay file video, ta phải chuyển thành ảnh tĩnh xử lý ảnh 22 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người tĩnh Sau có ảnh đầu vào chuyển ảnh cho giai đoạn xử lý tiếp theo, phát khuôn mặt có ảnh b.Phát khuôn mặt Phần xử lý nghiệp vụ hệ thống Sau có ảnh truyền vào, hệ thống thực chức phát khuôn mặt có ảnh Việc phát khuôn mặt thực nhanh thuật toán Adaboost thông qua hàm cvHaarDetectObjects() OpenCV Hàm thực việc phát đối tượng dựa đặc trưng haar-like, cụ thể nhờ vào Cascade truyền vào cho hàm Bộ Cascade xây dựng theo dạng (tree-node) huấn luyện từ trước Việc huấn luyện Cascade thực từ liệu thu thập để phục vụ cho trình nhận dạng Ví dụ, muốn nhận dạng người A, ta thu thập ảnh khuôn mặt người A với nhiều tư thế, góc chụp điều kiện chụp khác nhau, sau cho nhận dạng học theo thuật toán Cascade training Tuy nhiên việc nhận dạng khuôn mặt công việc khó tốn nhiều thời gian, đó, em không thực khóa luận HỆ THỐNG PHÁT HIỆN MẶT NGƯỜI TRONG ẢNH 1.Xử lý đầu vào 2.Phát nhanh khuôn mặt Adaboost 1.1 Capture ảnh Xử lý đầu 3.1 Lưu ảnh vào thư mục thích hợp máy 3.2.Lưu ảnh vào CSDL Hình 4.5: Biểu đồ phân rã chức 4.3.3 Thiết kế giao diện Dưới hình ảnh giao diện mà em sử dụng 23 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Hình 4.6: Giao diện chương trình demo Nó gồm có khung ảnh (picture box), textbox lưu cho biết đường dẫn ảnh, button “duyệt ảnh” để tìm ảnh “thực hiện” để phát mặt người ảnh, nhãn Thông báo (labText) biết có khuôn mặt phát Về nội dung mã nguồn button //Nút Duyệt ảnh private: System::Void btnBrowse_Click(System::Object^ sender, System::EventArgs^ e) { Stream^ myStream; OpenFileDialog^ openFileDialog1 = gcnew OpenFileDialog; openFileDialog1->InitialDirectory = " \\Anh"; openFileDialog1->Filter = "Images files (*.jpeg)|*.png|All files (*.*)|*.*"; openFileDialog1->FilterIndex = 2; openFileDialog1->RestoreDirectory = true; if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK ) { if ( (myStream = openFileDialog1->OpenFile()) != nullptr ) { // Insert code to read the stream here FilePath = openFileDialog1->FileName; picBox->Load(FilePath); 24 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người txtNotice->Text=FilePath; //picBox->BackgroundImage = System::Drawing::Image::FromFile(FilePath); // Dung cau lenh o tren thi anh co the ko duoc vua man hinh myStream->Close(); } } } Khi nhấp chuột vào nút Duyệt ảnh cửa sổ cho phép người dùng tìm đến ảnh Sau chọn ấn OK load ảnh vào picturebox (em đặt picBox) đường dẫn hiển thị lên textbox (em đặt txtNotice) Vì em để thuộc tính Size mode picBox Stretch nên tự động chỉnh ảnh cho lấp đầy kích thước picBox //Nút Thực private: System::Void butDetec_Click(System::Object^ sender, System::EventArgs^ e) { // Khởi tạo CvHaarClassifierCascade * pCascade = 0; //con trỏ nhận diện nằm giữ data file XML CvMemStorage * pStorage = 0; // Khởi tạo nhớ đệm CvSeq * pFaceRectSeq; int i; System::String ^ str = txtNotice->Text; char* str2 = (char*)Marshal::StringToHGlobalAnsi(str).ToPointer(); IplImage * pInpImg = cvLoadImage(str2,CV_LOAD_IMAGE_COLOR); pStorage = cvCreateMemStorage(0); pCascade = (CvHaarClassifierCascade *)cvLoad((" \\faceDetec\\haarcascade_frontalface_alt2.xml"),0,0,0); /*if (!pStorage || !pCascade ) { printf("Khoi tao that bai: %s \n", (!pInpImg)? "khong the load file hinh anh" : (!pCascade)? "khong the load file xml " "kiem tra dung duong dan":"sai duong dan"); exit(-1); }*/ //Nhận dạng mặt ảnh pFaceRectSeq = cvHaarDetectObjects( pInpImg, pCascade, pStorage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(0,0)); //Vẽ hình chủ nhật xung quanh khuôn mặt for (i=0;itotal:0);i++) { CvRect * r = (CvRect*)cvGetSeqElem(pFaceRectSeq,i); CvPoint pt1 = {r->x,r->y}; CvPoint pt2 = {r->x + r->width,r->y + r->height}; cvRectangle(pInpImg,pt1,pt2,CV_RGB(255,0,0),3,4,0); } 25 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người //hiển thị nhận dạng picBox->Image = gcnew //replacement of cvShowImage System::Drawing::Bitmap(pInpImg->width,pInpImg- >height,pInpImg->widthStep, System::Drawing::Imaging::PixelFormat::Format24bppRgb, (System::IntPtr) pInpImg->imageData); picBox->Refresh(); labText->Text = ("Thông báo: Có "+ i + " khuôn mặt!"); //cvWaitKey(0); //Giải phóng nhớ cvReleaseImage(&pInpImg); if (pCascade) cvReleaseHaarClassifierCascade(&pCascade); if (pStorage) cvReleaseMemStorage(&pStorage); } Khi nhấp chuột vào nút Thực khởi tạo biến cần dùng Sau đó, ảnh từ picBox tệp xml nhận diện mặt người “ haarcascade_frontalface_alt2.xml” OpenCV nạp vào Phương thức quan trọng “cvHaarDetectObjects()” Đây phương thức định muốn phát đối tượng (pStorage) (pCascade), từ ảnh (pInpImg), kích thước nhỏ (mặc định (0,0)) Còn CV_HAAR_CANNY_PRUNING cờ, giúp bỏ qua vùng khả khuôn mặt để tìm nhanh Nó dùng phương pháp tìm biên Canny (Canny Edge Detector) để phát vùng bỏ qua Nếu thay cờ giá trị làm chậm tốc độ tính toán tăng độ xác Nếu phát cho chạy biến i để khuông khuôn mặt hình chữ nhật đỏ Sau hiển thị ảnh qua xử lý lên picBox thông báo tìm khuôn mặt labText 4.4 Demo chương trình Sau debug, em chọn ảnh nút “Duyệt ảnh” sau ấn “Thực hiện” để gọi đến phương thức xác định mặt người ảnh Nếu tìm thấy khuông mặt người hình chữ nhật viền đỏ Kết ví dụ sau: 26 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Hình 4.7: Chạy thử chương trình 27 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Đánh giá, kết luận hướng phát triển a Đánh giá kết quả: Về kết quả: Chương trình đạt yêu cầu phát mặt người ảnh Tuy nhiên, số hạn chế sau: - Chưa áp dụng với ảnh đen trắng - Khó phát ảnh nghiêng - Hiệu suất chưa cao, nhiều false positive - Tốc độ chậm - Chưa thử với camera video b Kết luận Trên sở nghiên cứu toán phát mặt người ảnh Đặc biệt thuật toán Adaboost, đặc trưng haar-like mô hình Cascade of Classifier Em áp dụng thành công mô hình Cascade of Classfier vào toán phát mặt người ảnh Tuy kết đạt chưa cao, bước đầu để phát triển toán nhận dạng mặt (face recognition) người sau Bên cạnh đó, trình xây dựng chương trình demo, em tìm hiểu thư viện mã nguồn mở OpenCV, qua biết cách sử dụng số hàm thư viện OpenCV Về chương trình demo, sau thử nghiệm với tập ảnh lớn Chương trình đạt kết tốt, thời gian phát nhanh ảnh mặt người chụp thẳng, chất lượng ảnh tốt (chụp máy kĩ thuật số), nhiên ảnh chụp nghiêng hay ảnh có mầu sắc tối chương trình gần phát khuôn mặt ảnh c Hướng phát triển Có nhiều hướng phát triển cho chương trình này, phát triển mặt ứng dụng mặt thuật toán (để cải thiện hiệu phát mặt người) Có thể xây dựng ứng dụng cần đến phát mặt người mà không cần nhận dạng Ví dụ hệ thống ghép hình, ghép khuôn mặt phát vào ảnh khác (chẳng hạn ghép khuôn mặt người sử dụng cho khuôn mặt người tiếng) Ngoài phát triển chương trình theo hướng nhận dạng khuôn mặt, xây dựng hệ thống để học đặc trưng người cần nhận dạng Khi thực hiện, ta đưa qua ảnh qua chương trình phát mặt 28 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người người để phát nhanh khuôn mặt có ảnh, sau so sách khuôn mặt với khuôn mặt mà chương trình “học” từ trước, so sánh đặc trưng hai khuôn mặt, trùng đưa thông tin khuôn mặt nhận dạng Một hướng mà em nghĩ đến phát cảm xúc người Bằng cách sử dụng mạng nơ ron, ta cho máy học liệu mẫu cảm xúc người sau áp dụng vào thực tế 29 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người Tài liệu tham khảo: Website tài liệu tham khảo mã nguồn mở Opencv: http://opencv.willowgarage.com/documentation/ http://opencv.willowgarage.com/wiki http://en.wikipedia.org/wiki/Adaboost Những thắc mắc code c++ tham khảo ý kiến tại: http://diendan.congdongcviet.com/ http://stackoverflow.com/ http://codeproject.com/ Các tài liệu tham khảo khác: - PHÁT HIỆN MẶT NGƯỜI TRONG ẢNH ỨNG DỤNG – Lê Mạnh Tuấn – Khóa luận tốt nghiệp - ĐH Chính quy (ĐHCN - ĐHQGHN) PHÁT HIỆN KHUÔN MẶT VỚI THUẬT TOÁN ADABOOST – ĐỒ ÁN MÔN HỌC KỸ THUẬT TRÍ TUỆ NHÂN TẠO – Trần Trung Kiên – Vạn Duy Thanh Long (ĐHKHTN) Tổng quan phương pháp xác định khuôn mặt người - Phạm ThếBảo, Nguyễn Thành Nhựt, Cao Minh Thịnh, Trần Anh Tuấn, Phan Phúc Doãn … 30 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà ... miền nghiên cứu 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 mặt người ảnh phần hệ thống nhận dạng mặt người Các hệ thống nhận dạng khuôn mặt. .. dạng mặt người 19 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiên cứu kỹ thuật phát mặt người CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG Phát mặt người ảnh có nhiều ứng. .. Khoa CNTT Nghiên cứu kỹ thuật phát mặt người CHƯƠNG 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI Dựa vào tính chất phương pháp xác định mặt người ảnh, phương pháp chia thành bốn loại chính, tương ứng với

Ngày đăng: 20/04/2017, 23:05

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • Tóm tắt

  • Mục Lục

  • Danh sách hình vẽ

  • Danh sách từ viết tắt/từ tiếng Anh sử dụng trong báo cáo

  • CHƯƠNG 1: TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI

    • 1.1 Giới thiệu về các phương pháp xác định mặt người trong ảnh

    • 1.2 Định nghĩa bài toán xác định mặt người.

    • 1.3 Những khó khăn và thách thức đối với bài toán xác định mặt người.

    • 1.4 Các ứng dụng của xác định mặt người.

    • 1.5 Xác định phạm vi đề tài.

    • CHƯƠNG 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶT NGƯỜI

    • CHƯƠNG 3: CƠ SỞ LÝ THUYẾT

      • 3.1 Tổng quan về Adaboost

        • 3.1.1 Adaboost

        • 3.1.2 Thuật toán Adaboost:

        • 3.2 Các đặc trưng Haar-like

        • 3.3 Cascade of Classifiers

        • 3.4 Cascade of boosting classfiers

        • CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG

          • 4.1 Sơ lược về OpenCV

          • 4.2 Tổng quan về một hệ thống xác định mặt người trong ảnh

          • 4.3 Phân tích thiết kế hệ thống phát hiện mặt người

            • 4.3.1 Phân tích

            • 4.3.2 Thiết kế hệ thống

Tài liệu cùng người dùng

Tài liệu liên quan