tìm hiểu kĩ thuật và ứng dụng opencv trong bài toán phát hiện, theo dõi khuôn mặt

41 1.5K 5
tìm hiểu kĩ thuật và ứng dụng opencv trong bài toán phát hiện, theo dõi khuôn mặt

Đ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

tìm hiểu kĩ thuật và ứng dụng opencv trong bài toán phát hiện, theo dõi khuôn mặt

HỌC VIỆN THUẬT QUÂN SỰ KHOA CÔNG NGHỆ THÔNG TIN oOo LÊ QUÝ ĐA KHÓA: 8 HỆ: KỸ SƯ TIN HỌC BÁO CÁO THỰC TẬP TỐT NGHIỆP NGÀNH CÔNG NGHỆ THÔNG TIN MÃ SỐ: 01.01 ĐỀ TÀI: TÌM HIỂU THUẬT ỨNG DỤNG OPENCV TRONG BÀI TOÁN PHÁT HIỆN, THEO DÕI KHUÔN MẶT Cán bộ hướng dẫn: Ts. Vũ Tất Thắng Hà Nội, 2013 B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 2 Lời cảm ơn Đầu tiên, em xin được gửi lời cảm ơn chân thành đến các thầy cô trong khoa Công nghệ Thông tin nhà trường đã giúp đỡ giới thiệu em đến thực tập lại Công ty phần mềm iSolar. Để hoàn thành được khóa thực tập này, đó là sự giúp đỡ nhiệt tình hết sức tạo điều kiện của các thầy cô nhà trường, giúp em củng cố được những kiến thức còn thiếu sót cũng như các năng làm việc thực tế, cách giải quyết vấn đề… Đồng thời, em cũng xin gửi lời cám ơn đến thầy Nguyễn Việt Hùng đã giúp đỡ em không chỉ về mặt kiến thức, năng lập trình mà còn là người truyền động lực cho em, giúp em hoàn thành tốt giai đoạn thực tập tốt nghiệp trong suốt thời gian qua. Em xin gửi lời cám ơn sâu sắc đến Công ty phần mềm iSolar đã tạo mọi điều kiện thuận lợi giúp em cũng như các sinh viên khác hoàn thành tốt giai đoạn thực tập tốt nghiệp tại đây. Đồng thời em cũng xin gửi lời cám ơn chân thành tới TS. Vũ Tất Thắng anh Nguyễn Hoàng Anh – những người đã nhiệt tình giúp đỡ em củng cố kiến thức cũng như giải đáp những khúc mắc cũng như cung cấp cho chúng em các thiết bị cần thiết một môi trường làm việc năng động, đó là những nguồn động lực lớn nhất giúp em có thể có thêm động lực để hoàn thành tốt khóa thực tập này cũng như các nhiệm vụ được giao. Em xin cảm ơn Nhà Trường đặc biệt các thầy cô trong khoa Công nghệ Thông tin, những người mà hàng ngày vẫn tạo điều kiện giúp đỡ chúng em học tập bảo ban chúng em. Sinh viên thực hiện Lê Quý Đa B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 3 Contents Lời cảm ơn 2 Mở đầu 5 A. Giới thiệu đơn vị thực tập 6 1. Địa chỉ cơ quan thực tập 6 2. Giới thiệu về cơ quan thực tập 6 B. Nội dung 8 Chương 1. Tổng quan về phương pháp xác định mặt người 8 1. Giới thiệu bài toán xác định mặt người trong ảnh 8 2. Định nghĩa bài toán xác định mặt người 8 3. Những khó khăn thách thức đối với bài toán xác định mặt người 8 4. Các ứng dụng của xác định mặt người 9 Xác minh tội phạm. 9 Camera chống trộm. 9 Bảo mật. 9 Lưu trữ khuôn mặt 9 Các ứng dụng khác 9 Các phương pháp chính để xác định mặt người 10 5. Xác định phạm vi báo cáo 11 Chương 2. Cơ sở lý thuyết 12 1. Tổng quan về Adaboost 12 1.1. Tiếp cận Bootsting 12 1.2. Adaboost 13 1.3. Cascade of Classifiers 17 1.4. Cascade of boosting Classifiers 18 1.5. Đặc trưng Haar-Like 19 2. Sơ lược về OpenCV 22 2.1. Tổng quan OpenCV 22 2.2. Một vài cấu trúc kiểu dữ liệu cơ bản OpenCV 23 Chương 3. Xây dựng ứng dụng 34 1. Tổng quan về hệ thống phát hiện mặt người trong ảnh 34 2. Phân tích 34 2.1. Thiết kế hệ thống 35 2.2. Xử lý đầu vào: 35 2.3. Phát hiện khuôn mặt 36 2.4. Xử lý đầu ra. 36 B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 4 2.5. Thiết kế cơ sở dữ liệu 37 2.6. Thiết kế chương trình 38 Kết luận hướng phát triển 40 1. Kết luận 40 2. Hướng phát triển 40 Tài liệu tham khảo 41 B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 5 Mở đầu Công nghệ thông tin đang được ứng dụng trong mọi lĩnh vực của cuộc sống. Với một hệ thống máy tính, chúng ta có thể làm được rất nhiều việc, tiết kiện thời gian công sức. Điển hình như công việc nhận dạng mặt người. Ngày xưa, muốn tìm kiếm một kẻ tình nghi trong siêu thị hay sân bay, các nhân viên an ninh phải tìm kiếm trên từng màn hình camera theo dõi. Ngày nay, công việc đấy đã được làm tự động nhờ các hệ thống nhận dạng mặt người. Phát hiện mặt người trong ảnh là một phần quan trọng của hệ thống nhận dạng mặt người đó, giải quyết tốt việc phát hiên mặt người sẽ giúp tiết kiệm thời gian nâng cao độ chính xác của việc nhận dạng khuôn mặt. Phát hiện mặt người cũng là một bài toán nhận dạng đơn giản, hệ thống chỉ cần phân loại đối tượng đưa vào có phải mặt người hay không phải mặt người. Ở mức độ cao hơn, sau khi đã phát hiện được khuôn mặt, các khuôn mặt đó sẽ được so sánh với các khuôn mặttrong dữ liệu để nhận dạng xem khuôn mặt đấy là của ai (thường áp dụng trong nhận dạng khuôn mặt của người nổi tiếng hoặc của tội phạm đang bị truy nã). Bài toán phá hiện mặt người được bắt đầu nghiên cứu từ những năm 1990s, đã có rất nhiều công trình nghiên cứu về phát hiện khuôn mặt trong ảnh, tuy nhiên cho đến nay, các nhà khoa học vẫn không ngừng tìm các hướng tiếp cận mới, các thuật toán mới nhằm nâng cao hiệu suất của việc phát hiện khuôn mặt cũng như việc nhận dạng mặt người. 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, đồng thời áp dụng vào bài toán phát hiện mặt người trong ảnh, khóa luân được trình bầy trong bốn chương với bố cục như sau: Chương 1: Tổng quan về các phương pháp xác định mặt người : Giới thiệu tổng quan về bài toán xác định mặt người trong ảnh, các ứng dụng những khó khăn của bài toán, đồng thời xác định phạm vi của đề tài. Chương 2: Cơ sở lý thuyết : 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. Tiếp theo là giới thiệu về OpenCV. Chương 3: Xây dựng ứng dụng : Xây dựng một chương trình demo về phát hiện mặt người trong ảnh, theo dõi đối tượng từ camera laptop. Nêu lên các phân tích – thiết kế về chương trình. Cuối cùng là kết luận hướng phát triển: Tóm tắt những kết quả đạt được, những hạn chế nêu lên các hướng phát triển trong tương lai. B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 6 A. Giới thiệu đơn vị thực tập 1. Địa chỉ cơ quan thực tập  Công ty TNHH giải pháp sáng tạo nghiên cứu tiên tiến Nhất Thái Dương (iSolar).  Địa chỉ: o Phòng 307 Nhà 2B, Viện khoa học Việt Nam 18 Hoàng Quốc Việt, Cầu Giấy, Hà Nội Điện thoại: 0437918026 o Khu công nghệ cao Hòa Lạc, Hà Nội, Việt Nam Điện thoại: 04 3791 8026  Email: info@isolar.vn  Website: http://isolar.vn 2. Giới thiệu về cơ quan thực tập Công ty phần mềm Isolar hay công ty TNHH giải pháp sáng tạo nghiên cứu tiên tiến Nhất Thái Dương được thành lập ngày 4 tháng 5 năm 2011. Là một trong những công ty luôn đi đầu về các giải pháp công nghệ với mục tiêu đáp ứng các nhu cầu của cuộc sống. Từng bước phấn đấu trở thành một trong những doanh nghiệp hàng đầu Việt Nam tiến dần ra Thế giới.Các lĩnh vực hoạt động chính của Isolar:  Speech Processing: Isolar đã nhiều năm làm việc trong lĩnh vực nhận dạng, tổng hợp, nâng cao chất lượng… tiếng nói, nghiên cứu triển khai hệ thống Speech translation, server TTS, hệ thống chuyển báo viết thành báo nói…  Meeting: Cung cấp các giải pháp truyền thông đa phương tiện thế hệ mới, với chi phí thấp, sở hữu chuẩn nén hình ảnh độc quyền mới nhất với khả năng nén gấp 4 lần chuẩn khác giảm tới 10 lần băng thông.  Education: Đi đầu trong việc xây dựng các giải pháp giáo dục tiên tiến, triển khai nhiều dự án tin học để nâng cao chất lượng đào tạo. Điểm hình như hệ thống học máy, hệ thống e – learning, e – contact, thi trắc nghiệm trực tuyến… nhiều các dự án trọng điểm khác.  Security: Isolar cung cấp các giải pháp, ứng cứu chống lại các mối đe dọa bảo mật của các doanh nghiệp. B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 7 B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 8 B. Nội dung Chương 1. Tổng quan về phương pháp xác định mặt người 1. Giới thiệu bài toán xác định mặt người trong ảnh 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 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 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. 2. Định nghĩa bài toán xác định mặt người Xác định khuôn mặt người là một kỹ thuật máy tính để xác định các vị trí kích thước của các khuôn mặt người trong các ảnh bất kì. Kỹ thuật này nhận biết các đặc trưng của khuôn mặt bỏ qua những thứ khác như: tòa nhà, cây cối, cơ thể … 3. Những khó khăn thách thức đối với bài toán xác định mặt người Việc xác định khuôn mặt người có những khó khăn nhất định như:  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.  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. B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 9  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 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. Các ứng dụng của xác định mặt người Xác định mặt người thường là một phần của một hệ thống (facial recognition system). Nó thường được dùng trong giám sát video, giao tiếp người máy quản lý cơ sở dữ liệu ảnh… Các ứng cơ bản của xác định mặt người có thể kể đến là: Xác minh tội phạm. Dựa vào ảnh của một người, nhận dạng xem người đấy có phải là tội phạm hay không bằng cách so sách với các ảnh tội phạm đang được lưu trữ. Hoặc có thể sử dụng camera để phát hiện tội phạm trong đám đông. Ứng dụng này giúp cơ quan an ninh quản lý con người tốt hơn. Camera chống trộm. Các hệ thống camera sẽ xác định đâu là con người theo dõi xem con người đó có làm gì phạm pháp không, ví dụ như lấy trộm đồ, xâm nhập bất hợp pháp vào một khu vực nào đó. Bảo mật. Các ứng dụng về bảo mật rất đa dạng, một trong số đó là công nghệ nhận dạng mặt người của laptop, công nghệ này cho phép chủ nhân của máy tính chỉ cần ngồi trước máy là có thể đăng nhập được. Để sử dụng công nghệ này, người dùng phải sử dụng một webcam để chụp ảnh khuôn mặt của mình cho máy “học” thuộc các đặc điểm của khuôn mặt giúp cho quá trình đăng nhập sau này. Lưu trữ khuôn mặt Xác định mặt người có thể được ứng dụng trong các trạm rút tiền tự động (ATM) để lưu trữ khuôn mặt của người rút tiền. Hiện nay có những người bị người khác lấy trộm thẻ ATM mã PIN, bị rút tiền trộm, hoặc có những chủ tài khoản đi rút tiền nhưng lại báo với ngân hàng là bị mất thẻ bị rút tiền trộm. Nếu lưu trữ được khuôn mặt của người rút tiền, ngân hàng có thể đối chứng xử lý dễ dàng hơn. Các ứng dụng khác  Điều khiển vào ra: văn phòng, công ty, trụ sở, máy tính, Palm, …. Kết hợp thêm vân tay mống mắt. Cho phép nhân viên được ra vào nơi cần thiết. B á o c á o t h ự c t ậ p tố t n g h i ệ p T r a n g | 10  An ninh sân bay, xuất nhập cảnh (hiện nay cơ quan xuất nhập cảnh Mỹ đã áp dụng ). Dùng camera quan sát để xác thực người nhập cảnh kiểm tra xem người đấy có phải là tội phạm hay phần tử khủng bố không.  Tìm kiếm tổ chức dữ liệu liên quan đến con người thông qua khuôn mặt người trên nhiều hệ cơ sở dữ liệu lưu trữ thật lớn, như internet, các hãng truyền hình, …. Ví dụ: tìm các đoạn video có tổng thống Bush phát biểu, tìm các phim có diễn viên Lý Liên Kiệt đóng, tìm các trận đá bóng có Ronaldo đá, …  Kiểm tra trạng thái người lái xe có ngủ gật, mất tập trung hay không, hỗ trợ thông báo khi cần thiết.  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. Các phương pháp chính để xác định mặt người Dựa vào tính chất của các phương pháp xác định mặt người trên ảnh, các phương pháp này được chia thành bốn loại chính, tương ứng với bốn hướng tiếp cận khác nhau. Ngoài ra cũng có rất nhiều nghiên cứu mà phương pháp xác định mặt người không chỉ dựa vào một hướng mà có liên quan đến nhiều hướng.  Hướng tiếp cận dựa trên tri thức: Dựa vào các thuật toán, mã hóa các đặc trưng quan hệ giữa các đặc trưng của khuôn mặt thành các luật. Đây là hướng tiếp cận theo kiểu top-down.  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 của khuôn mặt mà các đặc trưng này không thay đổi khi tư thế khuôn mặt hay vị trí đặt camera 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 (các mẫu này đã được chọn 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.  Hướng tiếp cận dựa trên diện mạo: Trái ngược 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ệ [...]... các file ảnh video  Phát hiện các nhiều khuôn mặttrong bức ảnh, video, webcam  Lưu ảnh khuôn mặt được phát hiện vào csdl 2.1 Thiết kế hệ thống Với các chức năng ở trên, chương trình được chia thành thành 3 phần chính: Phần xử lý đầu vào, phần phát hiện khuôn mặt phần xử lý đầu ra Đầu vào (ảnh, video hoặc webcam) Phát hiện nhanh khuôn mặt bằng Adaboost Có khuôn mặt Lưu khuôn mặt vào CSDL 2.2.Xử... các thuật toán về xử lý ảnh cũng như Computer vision dùng ngôn ngữ C/C++ Open CV thể hiện sự đa dạng của trí tuệ nhân tạo Được ứng dụng nhiều trong các bài toán nhận dạng mặt, dò tìm mặt, phát hiện mặt, lọc Kalman, … Cấu trúc tổng quan của OpenCV bao gồm 5 phần chính 4 trong 5 phần đó được chỉ ra trong hình vẽ dưới CV MLL HighGUI Các hàm về xử lý ảnh giải thuật về thị giác máy tính Các thuật toán. .. các khuôn mặttrong ảnh 2.3 .Phát hiện khuôn mặt Phần này xử lý chính nghiệp vụ của hệ thống Sau khi có ảnh truyền vào, hệ thống sẽ thực hiện chức năng phát hiện khuôn mặttrong ảnh Việc phát hiện khuôn mặt được thực hiện nhanh bằng thuật toán adaboost thông qua hàm cvHaarDetectObjects() của OpenCV Hàm này thực hiện việc phát hiện đối tượng dựa trên các đặc trưng haar-like, cụ thể là nhờ vào một... Xây dựng ứng dụng Phát hiện mặt người trong ảnh có nhiều ứng dụng trong cuộc sống, tuy nhiên, trong khóa luận này, tác giả chỉ xây dựng một chương trình nhỏ để minh họa cho các lý thuyết ở trên Cụ thể đấy là một chương trình phát hiện mặt người trong ảnh đượ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 1 Tổng quan về hệ thống phát hiện mặt người trong ảnh... 11 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 5 Xác định phạm vi báo cáo Trong đề tài này, tác giả tập trung vào việc xác định khuôn mặt trong ảnh, video hoặc webcam Từ đấy lưu khuôn mặt tìm được vào CSDL để phục vụ cho các mục đích khác ( chẳng hạn như nhận dạng mặt người hoặc ghép khuôn mặt vào bức ảnh khác … ) B á o c... khuôn mặt đã được phát hiện trên bức ảnh, đồng thời tách các riêng khuôn mặt lưu vào cơ sở dữ liệu Đối với đầu vào là các file video hoặc webcam Các khuôn mặt sẽ được tách ra lưu lại thành các file ảnh riêng rẽ, được đánh số thứ tự theo tên file video Ví dụ như file video test.avi thì ảnh các khuôn mặt phát hiện được sẽ được đánh số theo thứ tự như sau: test.avi_1.jpg, test.avi_2.jpg … ... quan về Adaboost Học theo adaboost là một cách trong hướng tiếp cận dựa trên 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ác đặc trưng dạng Haar wavelet-like Tốc độ xử lý khá nhanh tỷ lệ chính xác hơn 80% trên ảnh xám Thuật toán học máy Adaboost được phát triển thuật toán boosting, do đó tác giả sẽ trình bầy một chút về thuật toán boosting trước khi... cũng như đọc các file ảnh video Phần thứ 4, Cxcore chứa đựng các cấu trúc dữ liệu cơ bản ( ví dụ như cấu trúc XML, các cây dữ liệu …) Phần cuối cùng là CvAux, phần này bao gồm các 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 …) B á o c á o t h ự c t ậ p t ố t n g h i ệ p T r a n g | 23 2.2 Một vài cấu trúc kiểu dữ liệu cơ bản OpenCV OpenCV có vài data type cơ sở Đơn... phát hiện mặt ng ời trong ảnh Về cơ bản, từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành vô số vùng nhỏ để tính các đặc trưng, sau đấy đưa các đặc trưng Tiếp theo, chương trình sẽ xác định các vùng khả quan (các ứng viên) có thể là khuôn mặt, cuối cùng các ứng viên này sẽ được đưa vào một bộ phân loại để tiến hành xác định ứng viên nào là mặt người 2 Phân tích Nhiệm vụ chính của chương trình là dò tìm. .. Tuy nhiên việc nhận dạng khuôn mặt là một công việc khó tốn nhiều thời gian, do đó, tác giả không thực hiện nó trong khóa luận của mình 2.4 Xử lý đầu ra Khuôn mặt sau khi được phát hiện sẽ được tách ra khỏi bức ảnh lưu dưới dạng ảnh bitmap với phần mở rộng là *.jpg Đối với đầu vào là các file ảnh, dữ liệu đầu ra cũng là file ảnh đấy nhưng có lưu vị trí khuôn mặt đã được phát hiện trên bức ảnh,

Ngày đăng: 16/05/2014, 01:43

Từ khóa liên quan

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

Tài liệu liên quan