Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 30 trang
THÔNG TIN TÀI LIỆU
Cấu trú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
4.3.3 Thiết kế giao diện
4.4 Demo chương trình
Đánh giá, kết luận và hướng phát triển
Tài liệu tham khảo:
Nội dung
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ÊNCỨUCÁCKỸTHUẬTPHÁTHIỆNMẶTNGƯỜIVÀỨNGDỤ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êncứukỹthuậtphátmặtngười LỜI NÓI ĐẦU Công nghệ thông tin ứngdụ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ặtngườ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ặtngườiPhátmặtngười ảnh phần quan trọng hệ thống nhận dạng mặtngười đó, giải tốt việc pháthiênmặtngười giúp tiết kiệm thời gian nâng cao độ xác việc nhận dạng khuôn mặtPhátmặtngườ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ặtngười hay mặtngườ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ặtngười tiếng tội phạm bị truy nã) Bài toán phátmặtngười bắt đầu nghiêncứu từ năm 1990s, có nhiều công trình nghiêncứuphá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ặtngườ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êncứukỹthuậtphátmặtngườ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átmặtngườ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ặtngười : Giới thiệu tổng quan toán xác định mặtngười ảnh, ứngdụ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ặtngười : Nêu chi tiết toán phátmặt người, hướng tiếp cận giải toán, nghiêncứu thành đạt nhà nghiêncứu toán xác định mặtngườ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átmặtngười ảnh Chương 4: Xây dựngứngdụng : Xây dựng chương trình demo phátmặtngườ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êncứukỹthuậtphátmặtngườ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ẶTNGƯỜI 1.1Giới thiệu phương pháp xác định mặtngười ảnh 1.2 Định nghĩa toán xác định mặtngười 1.3Những khó khăn thách thức toán xác định mặtngười 1.4Các ứngdụng xác định mặtngười 1.5Xác định phạm vi đề tài .8 CHƯƠNG 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶTNGƯỜ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 ỨNGDỤNG .20 4.1 Sơ lược OpenCV 20 4.2 Tổng quan hệ thống xác định mặtngười ảnh .21 4.3 Phân tích thiết kế hệ thống phátmặtngườ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êncứukỹthuậtphátmặtngườ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átmặtngườ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êncứukỹthuậtphátmặtngườ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êncứukỹthuậtphátmặtngười 50% CHƯƠNG 1: TỔNG QUAN VỀ CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶTNGƯỜI 1.1 Giới thiệu phương pháp xác định mặtngười ảnh Trong nhiều năm qua, có nhiều công trình nghiêncứu toán nhận dạng mặtngườiCácnghiêncứu từ toán đơn giản, từ việc nhận dạng mặtngười ảnh đen trắng mở rộng cho ảnh mầu có nhiều mặtngười ảnh Đến toán xác định mặtngười mở rộng với nhiều miền nghiêncứu nhận dạng khuôn mặt, định vị khuôn mặt, theo dõi mặtngười hay nhận dạng cảm xúc mặt người… Phátmặtngười ảnh phần hệ thống nhận dạng mặtngườiCá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ặtngười nên áp dụng số ứngdụ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 ứngdụng xác định mặtngười trở nên phổ biến sống 1.2 Định nghĩa toán xác định mặtngười Xác định khuôn mặtngườikỹthuật máy tính để xác định vị trí kích thước khuôn mặtngườ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ặtngười Việc xác định khuôn mặtngườ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êncứukỹthuậtphátmặtngười • Mặtngườ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ặtngười khác người cười, tức giận hay sợ hãi … 1.4 Cácứngdụng xác định mặtngười Xác định mặtngườ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ặtngườ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ặtngườ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êncứukỹthuậtphátmặtngười CHƯƠNG 2: CÁC PHƯƠNG PHÁP XÁC ĐỊNH MẶTNGƯỜI Dựa vào tính chất phương pháp xác định mặtngườ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êncứu mà phương pháp xác định mặtngườ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ựngthuậ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ặtngười ảnh Sau hệ thống (mô hình) xác định mặtngườ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êncứukỹthuậtphátmặtngườ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ặtngườ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êncứ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êncứukỹthuậtphátmặtngườ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ặtngười Với tập huấn luyện gồm 4196 hình mặtngườ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ặtngười 19 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiêncứukỹthuậtphátmặtngười CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNGDỤNGPhátmặtngười ảnh có nhiều ứngdụ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átmặtngườ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 ứngdụ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ácthuậ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êncứukỹthuậtphátmặtngườ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ặtngườ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átmặtngườ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ặtngười 4.3 Phân tích thiết kế hệ thống phátmặtngườ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êncứukỹthuậtphátmặtngười Capture ảnh HỆ THỐNG PHÁTHIỆNMẶTNGƯỜI TRONG ẢNH NGƯỜIDÙ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êncứukỹthuậtphátmặtngườ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ặtngườ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ÁTHIỆNMẶTNGƯỜ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êncứukỹthuậtphátmặtngườ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átmặtngười ảnh, nhãn Thông báo (labText) biết có khuôn mặtphá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êncứukỹthuậtphátmặtngườ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ườidù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êncứukỹthuậtphátmặtngườ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ặtngườ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ặtngười ảnh Nếu tìm thấy khuông mặtngườ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êncứukỹthuậtphátmặtngườ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êncứukỹthuậtphátmặtngườ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átmặtngườ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êncứu toán phátmặtngườ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átmặtngườ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ặtngườ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ứngdụngmặtthuật toán (để cải thiện hiệu phátmặt người) Có thể xây dựngứngdụng cần đến phátmặtngười mà không cần nhận dạng Ví dụ hệ thống ghép hình, ghép khuôn mặtphát vào ảnh khác (chẳng hạn ghép khuôn mặtngười sử dụng cho khuôn mặtngườ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átmặt 28 SVTH: Lê Thanh Nghị - MSV: 0541060137 GVHD: T.S Phạm Văn Hà Khoa CNTT Nghiêncứukỹthuậtphátmặtngườingườ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êncứukỹthuậtphátmặtngườ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ÁTHIỆNMẶTNGƯỜI TRONG ẢNH VÀỨNGDỤNG – Lê Mạnh Tuấn – Khóa luận tốt nghiệp - ĐH Chính quy (ĐHCN - ĐHQGHN) PHÁTHIỆ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ặtngườ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