1. Trang chủ
  2. » Luận Văn - Báo Cáo

nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người

67 1,8K 11

Đ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

Thông tin cơ bản

Định dạng
Số trang 67
Dung lượng 3,79 MB

Nội dung

Haar-like Features là giải thuật máy học được áp dụng trong đề tài để trích các đặc trưng của đối tượng cần dò tìm, kết hợp với bộ phân tầng Cascade of Boosted Classifiers nhằm nhận dạn

Trang 1

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGHIÊN CỨU THƯ VIỆN OPENCV

ỨNG DỤNG NHẬN DẠNG KHUÔN MẶT NGƯỜI

MSSV : 1111540

Cần Thơ, 2015 KHOA CNTT & TT

BỘ MÔN TIN HỌC ỨNG DỤNG

Trang 2

LUẬN VĂN TỐT NGHIỆP ĐẠI HỌC

NGHIÊN CỨU THƯ VIỆN OPENCV

ỨNG DỤNG NHẬN DẠNG KHUÔN MẶT NGƯỜI

MSSV : 1111540

Cán bộ phản biện 1.Ths.Huỳnh Phụng Toàn 2.Ks.Phạm Phương Hồng Ngân

Luận văn được bảo vệ tại: Hội đồng chấm luận văn tốt nghiệp Bộ môn Tin học Ứng dụng Khoa CNTT & TT, Trường Đại học Cần Thơ vào ngày 14 tháng 5 năm 2015

Có thể tìm hiểu luận văn tại:

-Trung tâm Học liệu, Trường Đại học Cần Thơ

-Website: http://www.lrc.ctu.edu.vn/

Cần Thơ, 2015 KHOA CNTT & TT

BỘ MÔN TIN HỌC ỨNG DỤNG

Trang 3

LỜI CẢM ƠN

Lời đầu tiên, em xin gửi lời tri ân đến quý Thầy Cô Khoa Công nghệ thông tin & Truyền thông nói chung và Thầy Cô Bộ môn Tin học ứng dụng nói riêng, những người

đã giảng dạy, cung cấp những kiến thức và tạo điều kiện để em thực hiện đề tài

Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến Thầy Ths Nguyễn Đức Khoa người

đã tận tình hướng dẫn, truyền đạt kinh nghiệm, kiến thức và chỉ bảo em trong suốt quá trình thực hiện đề tài

Con xin gửi lời biết ơn sâu sắc và kính trọng đến cha mẹ - gia đình đã giúp con

có được những thành quả ngày hôm nay

Sau cùng, xin chân thành gửi lời cảm ơn đến các bạn bè đã đóng góp ý kiến, giúp

đỡ và động viên tôi trong những lúc khó khăn và tiếp thêm cho tôi động lực để hoàn thành đề tài

Cần thơ, ngày 4 tháng 5 năm 2015

1111540 - Nguyễn Hoàng Phúc

Trang 4

MỤC LỤC

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI 1

1.1 Đặt vấn đề 1

1.2 Một số nghiên cứu trước đây 1

1.3 Phạm vi đề tài 2

1.4 Phương pháp nghiên cứu 3

1.5 Bố cục và nội dung 3

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 4

2.1 Bài toán dò tìm khuôn mặt 4

2.1.1 Định nghĩa bài toán 4

2.1.2 Những yếu tố ảnh hưởng bài toán 4

2.1.3 Các phương pháp dò tìm khuôn mặt 4

2.2 Giới thiệu đặc trưng Haar-Like 5

2.2.1 Đặc trưng Haar-Like 7

2.2.2 Trích đặc trưng Harr-Like từ ảnh 8

2.2.3 Mô hình Cascades of Boosted Classifiers 11

2.2.4 Adaboost 12

2.2.4.1 Tổng quan về Adaboost 12

2.2.4.2 Sơ lược Boosting 12

2.2.4.3 Kỹ thuật Adaboost – nhận dạng đối tượng 14

2.3 Định vị đối tượng 21

2.4 Tổng quan về thư viện OpenCV 22

2.4.1 Tổng quan 22

2.4.2 Cấu trúc và ứng dụng của OpenCV 23

2.4.3 Những đặc trưng của OpenCV 25

2.5 Thư viện Emgu CV 26

2.6 GSMComm 28

CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 29

Trang 5

3.1 Quy trình cơ bản của hệ thống 29

3.2 Phát hiện và nhận dạng đối tượng với đặc trưng Haar-Like 29

3.2.1 Huấn luyện dữ liệu 29

3.2.2 Hệ thống nhận dạng đối tượng 35

3.3 Thực nghiệm hệ thống 36

3.3.1 Huấn luyện dữ liệu 36

3.3.2 Thực nghiệm nhận dạng đối tượng với Emgu CV: 39

KẾT LUẬN VÀ ĐỀ NGHỊ 47

PHỤ LỤC 49

TÀI LIỆU THAM KHẢO 58

Trang 6

DANH MỤC HÌNH

Hình 2.1: Dò tìm khuôn mặt 4

Hình 2.2: Đặc trưng Haar-Like 6

Hình 2.3: Tính toán vùng S dựa trên các vùng trước đó 7

Hình 2.4: Các đặc trưng Haar-Like cơ bản 7

Hình 2.5: Các đặc trưng mở rộng từ đặc trưng Haar-like cơ sở 8

Hình 2.6: Cách tính Integral Image của ảnh 9

Hình 2.7: Cách tính nhanh vùng D với tổng các điểm ảnh trên ảnh 9

Hình 2.8: Cách tính nhanh tổng điểm ảnh D trên ảnh với các đặc trưng xoay 45o 10

Hình 2.9: Cách trích đặc trưng Haar-like 10

Hình 2.10: Cấu trúc phân tầng với N giai đoạn 11

Hình 2.11: Kỹ thuật Boosting 14

Hình 2.12: Nguyên tắc Adaboost 15

Hình 2.13: Kỹ thuật Adaboost 16

Hình 2.14: Lược đồ huấn luyện nhận dạng đối tượng 18

Hình 2.15: Ưu tiên trọng số lớn để phân hoạch 19

Hình 2.16: Adaboost và Cascades of Boosted Classifier 20

Hình 2.17: Dò tìm đối tượng với Haar Like Features - Cascade of Boosted Classifiers 21

Hình 2.18: Thư viện OpenCV 22

Hình 2.19: Lịch sử các phiên bản OpenCV 23

Hình 2.20: Cấu trúc cơ bản của OpenCV 23

Hình 2.21: Các khía cạnh và ứng dụng của OpenCV 25

Hình 2.22 Thư viện Emgu CV 26

Hình 2.23: Cấu trúc của Emgu CV 27

Hình 2.24: Sơ đồ cơ bản hệ thống GSM 28

Hình 3.1: Quy trình hệ thống 29

Hình 3.2: Thư mục chứa ảnh và các tập tin liên quan 30

Trang 7

Hình 3.3: Thu ảnh thông qua Webcam 30

Hình 3.4: Ảnh chứa đối tượng – Positives 31

Hình 3.5: Ảnh không có đối tượng – Negatives 31

Hình 3.6: Đánh dấu vị trí đối tượng và lưu vào tập tin Positive.txt 31

Hình 3.7: Ghi nhận ảnh không có đối tượng vào tập tin Negatives.txt 32

Hình 3.8: Gói thư viện tạo vectơ với Positives 33

Hình 3.9: Cấu trúc phân tầng tập tin Xml 34

Hình 3.10: Đánh dấu vị trí đối tượng 36

Hình 3.11: Lưu ảnh không đối tượng 36

Hình 3.12: Tạo file vectơ 37

Hình 3.13: Các bước huấn luyện 37

Hình 3.14: Các Stage (tầng) được tạo ra 38

Hình 3.15: File Xml sau khi ghép lại 38

Hình 3.16: Giao diện chương trình 43

Hình 3.17: Nhận dạng đối tượng 43

Hình 3.18: Chụp ảnh đối tượng 44

Hình 3.19: Thanh trackbar 45

Hình 3.20: Lưu thành công video 45

Hình 3.21: Kết nối và gửi tin nhắn 46

Trang 8

DANH MỤC KÝ HIỆU VÀ VIẾT TẮT

AdaBoost Adaptive Boost

GSMComm Global System for Mobile Communications

OpenCV Open Source Computer Vision Library

Trang 9

TÓM TẮT

Tóm Tắt: Luận văn này sẽ tìm hiểu về OpenCV - thư viện xử lý ảnh mã nguồn mở và

các giải thuật để nhận dạng, phát hiện đối tượng trên thời gian thực Các giải thuật máy

học được áp dụng kết hợp với thư viện Emgu (nền tảng từ OpenCv được triển khai trên ngôn ngữ C#) để xây dựng ứng dụng phát hiện đối tượng (đối tượng cụ thể là khuôn mặt người) Haar-like Features là giải thuật máy học được áp dụng trong đề tài để trích các

đặc trưng của đối tượng cần dò tìm, kết hợp với bộ phân tầng Cascade of Boosted Classifiers nhằm nhận dạng, phát hiện đối tượng trên mặt phẳng ảnh thông qua giải thuật Adaboost để phân lớp Đề tài đã thu thập 6000 ảnh (trong đó: 1500 ảnh có đối tượng,

4500 ảnh không có đối tượng) Ứng dụng sẽ thực thi phát hiện, khoanh vùng, lưu ảnh đối tượng hoặc lưu lại đoạn phim khi đối tượng bị nhận dạng Sử dụng hệ thống GSM

để gửi tin nhắn SMS vào điện thoại nhằm báo cáo về thời gian đối tượng bị phát hiện, đồng thời phát ra tín hiệu báo động

Abstract: The purpose of this research is study about OpenCV – the open source image

processing library and algorithms to identify and detect objects in real time The machine learning algorithms are applied in conjunction with Emgu library (which is derived from OpenCv and deployed on the C# language) to create object-detecting applications (the specific objects are human faces) Haar-like Features - a machine learning algorithm is applied in the study for extracting features of the object to be detected, combined with Boosted Cascade of Classifiers to identify, detect objects on the image plane via algorithms AdaBoost for classification A total of 6,000 photos (1,500 contained object images and 4,500 did not contain object images) were collected for study The application will discover, zone, and save images or clips whenever the objects are identified The use of GSM system is to send an SMS to a cellphone to report the time that the objects are detected, and to give an alarm

Từ khoá (Keyword): Haar-Like feature, Adaboost, Cascade of Booted Classsifier, nhận dạng đối tượng, Emgu, OpenCV

Trang 10

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI

1.1 Đặt vấn đề

Trong thời kỳ phát triển mạnh mẽ của công nghệ thông tin, con người đang dần

áp dụng các ứng dụng khoa học máy tính để phục vụ các công việc hằng ngày Trong

đó, những ứng dụng bảo mật an ninh dựa vào hệ thống thị giác máy tính để thực hiện việc phát hiện, nhận dạng xuất hiện ngày càng nhiều với những đối tượng ngày càng phong phú, đa dạng Hiện nay, các ứng dụng nhận dạng khuôn mặt được xây dựng và phát triển trên rất nhiều thiết bị cũng như hệ thống nhằm giúp con người thuận tiện hơn trong việc quản lý, bảo mật, giám sát hoặc tìm kiếm Các ứng dụng nhận diện khuôn mặt, nụ cười trong máy ảnh hoặc smartphone dần trở nên quen thuộc với mọi người

Nhận thấy sự cần thiết trong nghiên cứu nhằm giúp con người dễ dàng quản lý

và an tâm hơn trong việc bảo vệ tài sản, kèm theo đó là tiền đề cho việc phát triển và nghiên cứu nâng cao về hệ thống thị giác máy tính, ứng dụng nhận dạng đối tượng Đề

tài với tên gọi: “Nghiên cứu thư viện Opencv – Ứng dụng nhận dạng khuôn mặt người”

được thực hiện với mong muốn khai thác những khía cạnh về phát hiện và nhận dạng đối tượng Có thể nói, đây là hướng nghiên cứu nhằm phục vụ tốt nhu cầu của xã hội hiện nay

1.2 Một số nghiên cứu trước đây

Có rất nhiều nghiên cứu sử dụng các phương pháp khác nhau để giải quyết bài toán nhận dạng khuôn mặt, hai cách phổ biến nhất là nhận dạng dựa trên các phần tử của khuôn mặt (Feature based face recognition) và nhận dạng dựa trên xét tổng thể của khuôn mặt (Appearance based face recognition) Nhìn chung, các phương pháp đều có

ưu nhược điểm nhằm giải quyết bài toán nhận dạng mặt người [2,tr.1-2]

 Những năm 1960, Woody Bledsoe, Helen Chan Wolf, và Charles Bisson đã cho

ra đời hệ thống nhận dạng khuôn mặt bán tự động đầu tiên Hệ thống yêu cầu người quản trị xác định vị trí các đặc trưng như: mắt, tai, mũi và miệng trên các tấm ảnh Sau đó, hệ thống sẽ tính khoảng cách và tỷ lệ đến một điểm tham chiếu chung Cuối cùng là so sánh với kho dữ liệu lưu trữ

 Năm 1970, Goldstein, Harmon và Lesk sử dụng 21 dấu hiệu chủ quan như: màu tóc và độ dày môi để nhận dạng tự động Giống như ở giải pháp trước, các phép

đo và các vị trí được tính bằng tay nên đòi hỏi nhiều thời gian

 Năm 1988, Kirby và Sirovich áp dụng phương pháp phân tích thành phần chính (PCA), phương pháp này sử dụng chuẩn đại số tuyến tính cho vấn đề nhận dạng

Trang 11

khuôn mặt Đây được coi là cột mốc quan trọng vì nó cho thấy ít hơn một trăm giá trị cần thiết để nhận dạng một khuôn mặt được chuẩn hoá

 Năm 1991, Turk và Pentland sử dụng thuật toán eigenfaces để nhận dạng khuôn mặt tự động trên thời gian thực Dù phương pháp này một phần nào bi hạn chế bởi yếu tố môi trường nhưng nó cũng góp phần đáng kể cho sự phát triển của công nghệ nhận dạng khuôn mặt

 Năm 2001, Paul Viola và Michael J.Jones đã cho ra đời đặc trưng Haar-Like, đó

là những đặc trưng ảnh số cũng với phương pháp tích phân ảnh (integral images)

để nâng cao khả năng rút trích đặc trưng trên thời gian thực

 Tháng 7-2003, Trần Phước Long và Nguyễn Văn Lượng dùng mạng Neural để

dò tìm khuôn mặt trên ảnh, kết hợp phương pháp phân tích thành phần chính và biến đổi Cosine rời rạc để rút ra Vector đặc trưng làm đầu vào cho hai bộ nhận dạng SVM và HMM Hệ thống tiếp cận từ các phương pháp học mạnh, nhưng nhiều trường hợp tối ưu cần thử nghiệm nhiều lần với nhiều bộ tham số khác nhau

 Năm 2005, Trần Lê Hồng Dũ sử dụng các đặc trưng lòi lõm để phát hiện khuôn mặt trên ảnh nhưng còn hạn chế về độ sáng, quan hệ hình học và các đặc trưng cùng mức

 Năm 2007, Lê Hồng Chuyên đã sử dụng mạng Neural để phát hiện khuôn mặt trên ảnh Hệ thống đã nhận dạng được những khuôn mặt ở các tư thế: thẳng đứng, không thẳng đứng hoặc bị che mất một phần Nhưng kết quả dò tìm không cao trong môi trường ảnh có nhiều người

 Năm 2013, Mã Trường Thành thực hiện đề tài “Điều khiển Robot Pioneer

P3-DX bám sát đối tượng” đã sử dụng đặc trưng Haar-Like, bộ phân tầng Cascades

of Boosted Classifiers và thuật toán Adaboost để nhận dạng đối tượng

 Năm 2013, Châu Ngân Khánh đã sử dụng đặc trưng Haar-Like, bộ phân tầng Cascades of Boosted Classifiers và thuật toán Adaboost để nhận dạng đối tượng bằng cách so khớp SIFT Nhưng cơ sở dữ liệu không bao quát được hết sự thay đổi của khuôn mặt con người trên thời gian thực

1.3 Phạm vi đề tài

Đề tài tập trung nghiên cứu gói thư viện mã nguồn mở OpenCV để giải quyết bài toán quan sát, phát hiện và nhận dạng đối tượng theo thời gian thực bằng đặc trưng Haar-Like Features – Cascades of Boosted Classifiers

Triển khai nghiên cứu bằng việc thu thập ảnh, huấn luyện và giải quyết bài toán thực tế về nhận dạng khuôn mặt người với các tác vụ cơ bản như: lưu hoạt động của đối tượng dưới dạng ảnh và video thông qua Webcam; thực hiện tác vụ chống trộm với nhiều hình thức khác nhau (đề xuất thông qua tin nhắn và báo động tại chỗ)

Trang 12

1.4 Phương pháp nghiên cứu

 Nghiên cứu gói thư viện OpenCv – cụ thể là gói thư viện Emgu với ngôn ngữ được sử dụng là C# (C Sharp)

 Sử dụng các hàm trong thư viện OpenCV bằng việc kết hợp đặc trưng Like với thuật toán Adaboost và mô hình Cascades of Boosted Classifiers để thực hiện dò tìm đối tượng trên mặt phẳng ảnh theo thời gian thực để triển khai giải quyết bài toán đặt ra

Haar-1.5 Bố cục và nội dung

Luận văn sẽ thực hiện nghiên cứu về việc phát hiện nhận dạng mặt người với

OpenCV (cụ thể là phiên bản C# – EmguCV) với những nội dung sau:

CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI

Giới thiệu tổng quan về đề tài, xác định vấn đề, bối cảnh và nội dung bài toán cần giải quyết Trình bày về lịch sử giải quyết vấn đề, các nghiên cứu và thành quả của những người đi trước trong cùng lĩnh vực, phạm vi và phương pháp nghiên cứu đề tài

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

Giới thiệu về bài toán dò tìm khuôn mặt, đặc trưng Haar-Like Features, thuật toán AdaBoost và bộ phân tầng Cascade of Boosted Classifier Tổng quan về gói thư viện OpenCV để nghiên cứu về nhận dạng mặt người, thư viện Emgu nền tảng của OpenCV trên nền ngôn ngữ C# và hệ thống gửi tin nhắn GSMComm

CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU

Thể hiện cách giải quyết bài toán thông qua hệ thống thực nghiệm Xây dựng một

bộ huấn luyện nhằm nhận dạng khuôn mặt người trên mặt phẳng ảnh Nêu lên các thiết

kế về chương trình và trình bày về thực nghiệm chương trình kèm theo hướng dẫn

Trang 13

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Bài toán dò tìm khuôn mặt

2.1.1 Định nghĩa bài toán

Dò tìm, xác định mặt người là một kỹ thuật máy tính dùng để xác định kích thước

và vị trí của các khuôn mặt trong ảnh, video hay từ camera Kỹ thuật này nhận biết các đặc trưng của khuôn mặt bỏ qua các yếu tố ngoại cảnh khác như cây cối, nhà cửa v.v

Hình 2.1: Dò tìm khuôn mặt

2.1.2 Những yếu tố ảnh hưởng bài toán

Có nhiều yếu tố ảnh hưởng đến việc nhận dạng đối tượng như [1,tr.7]:

- Tư thế, góc chụp: hướng của khuôn mặt trong ảnh có thể thay đổi nhiều do vị trí

của máy ảnh, camera, webcam, v.v, như nhìn thẳng, nhìn nghiêng, hay nhìn từ trên xuống Với các tư thế khác nhau các thành phần trên khuôn mặt như mắt, mũi, miệng có thể bị khuất một phần hoặc thậm chí khuất hết

- Sự xuất hiện hoặc thiếu một số thành phần: 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ư mắt kính, râu, v.v Vấn đề này càng làm cho bài toán trở nên khó hơn rất nhiều

- Sự che khuất: mặt người có thể bị che khuất bởi các đối tượng khác

- 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 một người sẽ rất khác khi người đó cười, tức giận hay sợ hãi, v.v

- Sự phức tạp của hình nền: hình nền phức tạp sẽ khiến việc xác định khuôn mặt

trở nên khó khăn

- Điều kiện của ảnh: ảnh được chụp trong các điều kiện khác nhau về: chiếu sáng,

về tính chất (máy ảnh kỹ thuật số, webcam, v.v) ảnh hưởng rất nhiều đến chất lượng ảnh khuôn mặt

2.1.3 Các phương pháp dò tìm khuôn mặt

Có bốn phương pháp xác định khuôn mặt trên ảnh, tương ứng với bốn hướng tiếp cận khác nhau [1,tr.7-8]:

Trang 14

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 và

quan hệ giữa các đặc trưng của khuôn mặt thành các luật Những luật này thường là các mối quan hệ giữa các thành phần trên khuôn mặt Trong hướng tiếp cận này, các luật sẽ phụ thuộc rất lớn vào tri thức của những tác giả nghiên cứu Một vấn đề phức tạp khác khi dùng hướng tiếp cận này là làm sao chuyển từ tri thức con người sang các luật một cách hiệu quả Nếu các luật quá chi tiết thì khi dò tìm khuôn mặt sẽ có thể sót các đối tượng, vì những đối tượng này không thỏa tất cả các luật được đưa ra Nhưng các luật quá tổng quát thì có thể gây ra nhận dạng lầm một vùng nào đó không phải khuôn mặt mà lại dò tìm là khuôn mặt;

Hướng tiếp cận dựa trên đặc trưng bất biến: 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 phụ thuộc tư thế khuôn mặt hay vị trí đặt máy ảnh, camera (webcam) thay đổi, điều kiện chiếu sáng, và các khó khăn khác Vấn đề của các thuật toán theo hướng tiếp cận này là cần phải điều chỉnh cho phù hợp điều kiện ánh sáng, nhiễu, và bị che khuất… đôi khi bóng của đối tượng

sẽ tạo thêm cạnh mới, mà cạnh này lại rõ hơn cạnh thật sự của nó, vì thế nếu dùng cạnh để xác định đối tượng sẽ gặp khó khăn;

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 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) Các mẫu này được dùng để phát hiện khuôn mặt bằng cách quét nó qua ảnh và tính toán giá trị tương đồng cho mỗi vị trí Việc xuất hiện khuôn mặt tại

vị trí nào đó trong ảnh phụ thuộc vào giá trị tương đồng của điểm đó so với mẫu chuẩn Hướng tiếp cận này có lợi thế là rất dễ cài đặt, nhưng không đạt hiệu quả khi

tỷ lệ, tư thế, và hình dáng thay đổi;

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 so sánh

khớp 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 Nói cách khác, các thuật toán dùng các kỹ thuật phân tích thống kê và máy học để xấp xỉ một hàm phân lớp tuyến tí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

2.2 Giới thiệu đặc trưng Haar-Like

Đặc trưng Haar-Like của Viola và Jones là những đặc trưng ảnh số được sử dụng trong nhận dạng đối tượng Những đặc trưng cơ bản Haar-Like thường dùng để dò tìm khuôn mặt, do đó Haar-Like là sự lựa chọn phù hợp cho mục đích nhận dạng nhanh chóng và chính xác trong thời gian thực [7,tr.27-40]

Trong lịch sử, hầu như các tương tác nhận dạng đều làm việc trên cường độ sáng tối của ảnh, cụ thể là làm việc trên từng điểm (pixel) trong ảnh, đòi hỏi người dùng phải

Trang 15

làm việc trên mức độ tính toán lớn Để giải quyết được bài toán “tính toán lớn trên từng điểm ảnh”, Viola và Jones đã phát triển và điều chỉnh ý tưởng sử dụng những đặc trưng

cơ bản Haar-Like với việc dùng những hình chữ nhật lân cận tại một địa điểm cụ thể trong cửa sổ dò tìm nhằm thực hiện việc phát hiện đối tượng Song đó, tính năng phổ biến của Haar-Like để dò tìm đối tượng là tập hợp của các hình chữ nhật liền kề và định

vị vị trí của các hình chữ nhật liên quan được xác định nhằm mục đích là bao quanh đối tượng cần tìm trên cửa sổ phát hiện đối tượng

Đặc trưng Haar-Like sẽ được trích bằng cách: di chuyển cửa số kích thước trên ảnh và được tính toán cụ thể trên từng vùng ảnh nhỏ, sau đó được so sánh với một ngưỡng học được phân biệt là không phải đối tượng từ đối tượng đó trên ảnh Ưu điểm chính của việc trích đặc trưng Haar-Like so với hầu hết cách trích đặc trưng khác là tốc

độ tính toán Do sử dụng cách tính tích phân ảnh (integral images) nên đặc trưng

Haar-Like có thể trích bất kì kích thước nào trong thời gian liên tục

Đặc trưng Haar-Like sẽ phản ánh sự tương phản giữa các mối liên hệ của đối tượng mà Haar-Like trích đặc trưng Những đối tượng cần dò và phát hiện có thể được

xác định bởi một bộ những đặc trưng này thông qua những liên hệ không gian giữa

chúng

Hình 2.2: Đặc trưng Haar-Like

Để có thể huấn luyện bộ phân lớp (Classifier), Viola-Jones đã sử dụng việc phân

tầng với các bộ phân lớp được nâng cao dần, được huấn luyện với vài trăm các mẫu đối

tượng cần dò và phát hiện Chúng sử dụng những mẫu có đối tượng trong ảnh (những mẫu này có thể co giãn với kích thước 20x20) – được gọi là mẫu khẳng định (Positive)

và những mẫu không có đối tượng cần phát hiện – gọi là mẫu phủ định (Negative) Song

đó, bộ phân lớp sẽ làm nhiệm vụ là xuất ra giá trị một nếu vùng đó giống như đối tượng

mà chúng ta quan tâm và ngược với đối tượng không phải đối tượng cần tìm thì bộ phân

lớp sẽ trả về giá trị không Chúng ta sẽ di chuyển cửa sổ tìm kiếm dọc theo ảnh nhằm

mục đích và xác định trên từng vị trí bởi việc sử dụng bộ phân lớp để tìm kiếm đối tượng trong toàn bộ bức ảnh thu được từ Camera Bên cạnh đó, đối với trường hợp tìm kiếm

Trang 16

những đối tượng chưa biết cụ thể kích thước, chúng ta cần phải có một thuật toán quét qua ảnh trong nhiều lần với tỷ lệ co giãn khác nhau để tìm được đối tượng mà chúng ta quan tâm

- Ảnh tích phân (Integral image):

Để nâng cao khả năng rút trích đúng, chính xác và nhanh chóng những đặc trưng Haar – Like, Viola và Jones đã sử dụng ảnh tích phân Đây là ảnh đã được xử lý trước nhằm tăng cường khả năng rút trích

Tại mỗi điểm (i, j) trong ảnh gốc, chúng ta tính tổng giá trị tất cả những điểm ảnh phía bên trái và ở trên so với điểm (i, j):

Hình 2.3: Tính toán vùng S dựa trên các vùng trước đó

Hình 2.4: Các đặc trưng Haar-Like cơ bản

Ngoài 4 đặc trưng cơ bản trên, để xác định các góc cạnh và cụ thể là các đường cong thì rất khó để xác định chính xác Do đó, với bài toán khó như nhận dạng mặt người

thì Viola và Jones đã mở rộng ra 3 tập (nhóm) đặc trưng sau :

Trang 17

1 Đặc trưng cạnh (edge features):

2 Đặc trưng đường (line features):

3 Đặc trưng xung quanh tâm (center-surround features):

Hình 2.5: Các đặc trưng mở rộng từ đặc trưng Haar-like cơ sở

2.2.2 Trích đặc trưng Harr-Like từ ảnh

Đặc trưng Haar-like sẽ diễn đạt được tri thức về các đối tượng trong ảnh (bởi vì

nó biểu diễn mối liên hệ giữa các bộ phận của đối tượng), điều mà bản thân từng điểm

ảnh không diễn đạt được – dựa trên việc co giãn của khung cửa sổ tìm kiếm Để tính giá trị các đặc trưng Haar-Like, ta tính sự chênh lệch giữa tổng của các pixel của các vùng đen và các vùng trắng như trong công thức:

thực(run-time) trực tiếp từ Camera (hay Webcam trên Laptop) Do đó Viola và Jones đề

xuất một khái niệm gọi là “tích phân ảnh” (Integral Image) để tính toán nhanh cho các

đặc trưng cơ bản của Haar-like

Tuy rằng “tích phân ảnh” đã chinh phục nhiều nhà nghiên cứu trên cộng đồng

thị giác máy tính, nhưng để tính toán cho các đặc trưng có góc xoay 45o thì việc tính toán từ các đặc trưng trên sẽ rất khó Do vậy, Lienhart đã kế thừa Viola-Jones trong khái

niệm tích phân ảnh và phát triển nhằm đưa ra thêm khái niệm RSAT – Rotated Summed

(2.1)

Trang 18

Area Table Tích phân ảnh được định nghĩa bằng một mảng 2 chiều với kích thước bằng

với kích thước ảnh cần tính

Mỗi phần tử của mảng trong đạo hàm ảnh được tính bằng cách tính tổng của điểm ảnh phía trên (dòng-1) và bên trái (cột-1) của nó Bắt đầu từ vị trí trên, bên trái đến vị trí dưới, bên phải của ảnh, để thực hiện tính toán nhanh chóng – chúng đơn thuần chỉ dựa trên phép cộng số nguyên đơn giản

𝑃(𝑥, 𝑦) = ∑ 𝑖(𝑥′, 𝑦′)

𝑥 ′ ≤𝑥,𝑦 ′ ≤𝑦

Hình 2.6: Cách tính Integral Image của ảnh

Sau khi đã tính được tích phân ảnh, việc tính tổng điểm ảnh của một vùng bất kỳ nào đó trên ảnh thực hiện rất đơn giản theo cách sau:

 Tính toán với các đặc trưng căn bản:

Hình 2.7: Cách tính nhanh vùng D với tổng các điểm ảnh trên ảnh

Trang 19

 Sử dụng RSAT – tính toán đặc trưng xoay

Hình 2.8: Cách tính nhanh tổng điểm ảnh D trên ảnh với các đặc trưng xoay 45 o

Với các đặc trưng Haar-like xoay 45o của tích phân ảnh tại một điểm (x, y) được tính theo công thức (Lienhart):

Sum (D ) = P4 - P2 – P3 + P1

Do cách tính là sự kết hợp giữa các phép toán cộng (+), trừ (-) nên độ phức tạp cho mỗi phép toán là O(1)  Tốc độ tính toán với các điểm trên ảnh nhanh hơn  Áp dụng tốt cho các bài toán tính theo thời gian thực

Hình 2.9: Cách trích đặc trưng Haar-like

RSAT(x,y)

B A C

P2 P4

P1 P3

Trang 20

2.2.3 Mô hình Cascades of Boosted Classifiers

Ta thấy trong quá trình huấn luyện, bộ phân loại phải duyệt qua tất cả các đặc trưng của các mẫu trong tập huấn luyện dẫn đến tốn rất nhiều thời gian Tuy nhiên, trong các mẫu đưa vào, không phải mẫu nào cũng thuộc loại khó nhận dạng, có những mẫu

nền rất dễ nhận ra (ta gọi đây là những mẫu đơn giản) Đối với những mẫu này, ta chỉ

cần xét một hay vài đặc trưng đơn giản là có thể nhận diện được chứ không cần xét tất

cả các đặc trưng Nhưng đối với các bộ phân loại thông thường thì cho dù mẫu cần nhận dạng là dễ hay khó thì nó vẫn sẽ xét tất cả các đặc trưng mà nó rút ra được trong quá trình học Do đó, chúng tốn thời gian xử lý một cách không cần thiết

Cấu trúc phân tầng (Cascade of Classifiers) được xây dựng chính là nhằm rút ngắn thời gian xử lý, giảm thiểu nhận dạng lầm (false alarm) cho bộ phân loại Cascade tree gồm nhiều stage (hay còn gọi là layer), mỗi stage của cây sẽ là một stage classifier Một mẫu để được phân loại là đối tượng thì nó cần phải đi qua hết tất cả các stages của cây Các stage classifiers ở stage sau được huấn luyện bằng những mẫu không có đối tượng (negative) mà stage classifier trước nó nhận dạng sai, tức là nó sẽ tập trung học

từ các mẫu nền khó hơn, do đó sự kết hợp các stage classifiers này lại sẽ giúp bộ phân loại có false alarm thấp Với cấu trúc này, những mẫu nền dễ nhận diện sẽ bị loại ngay

từ những stages đầu tiên, giúp đáp ứng tốt nhất đối với độ phức tạp gia tăng của các mẫu

đưa vào, đồng thời giúp rút ngắn thời gian xử lý

- Minh họa thuật toán Cascade training:

Hình 2.10: Cấu trúc phân tầng với N giai đoạn

Hình trên minh họa huấn luyện của một tầng (cascade) gồm N giai đoạn (stages)

Ở mỗi giai đoạn, bộ phân lớp yếu tương ứng sẽ được huấn luyện sao cho độ chính xác

của nó là h và false alarm bằng f (tỷ lệ nhận dạng lầm)

Trang 21

- Thuật toán Cascade training:

2.2.4 Adaboost

2.2.4.1 Tổng quan về Adaboost

Với hướng tiếp cận dựa trên diện mạo chính là cách mà chúng ta cho dữ liệu học theo Adaboost, Viola và Jones đã dùng AdaBoost kết hợp với cascade để xác định đối tượng, mà cụ thể là khuôn mặt người với việc sử dụng trích các đặc trưng dạng Haar-

like Có được tốc độ xử lý nhanh (như trình bày ở trên) và tỷ lệ chính xác hơn 80% trên

ảnh xám

Adaboost, thuật toán máy học được phát triển dựa trên nền tảng thuật toán máy học Boosting

2.2.4.2 Sơ lược Boosting

Kearns người đã khơi nguồn cho giải thuật Boosting với câu hỏi nổi tiếng: “Liệu

có thể tạo ra một bộ phân lớp mạnh hơn từ một tập các bộ phân lớp yếu” Năm 1990,

Robert Schapiređưa ra thuật toán boosting đầu tiên Sau đó, được phát triển, áp dụng, kiểm nghiệm vào những năm 1993 trong các chương trình nhận dạng do Drucker, Schapire và Simard thực hiện Yoav Freund đã cùng Robert Schaprire tiếp tục nghiên

1 Gọi:

F là giá trị false alarm

d là độ chính xác của weak classifier ở mỗi stage

F target: Giá trị max false alarm

P, N là số lượng mẫu positive và negative

P i , N i là tập positive và negative cho bộ phân lớp ở tầng thứ i

F i , D i : Giá trị false alarm và độ chính xác của cascade trước khi đến tầng thứ i

2 Khởi tạo i=0; F0=1.0; D0 = 1.0

N = { số mẫu sai ở stage hiện tại phân loại sai }

P = { số mẫu positive mà stage hiện tại phân loại dúng }

Trang 22

cứu và phát triển, và đến năm 1995 thì ông cùng với Schapire phát triển boosting thành AdaBoost

Dựa vào câu nói của Kearns đã cho ta có thể biết được nguyên lý hoạt động cơ

bản của Boosting là sự kết hợp bộ phân lớp yếu (weak classifier) thành một phân lớp mạnh hơn (strong classifier) Với những gì mà Freund và Schaprire đã phát triển thì bộ

phân lớp yếu chỉ cần có độ chính xác trên 50% là có thể áp dụng “boost” được

Để 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

Trang 23

Hình 2.11: Kỹ thuật Boosting

2.2.4.3 Kỹ thuật Adaboost – nhận dạng đối tượng

AdaBoost (Adaptive Boost) là một bộ phân loại mạnh phi tuyến phức dựa trên hướng tiếp cận boosting được Freund và Schapire đưa ra vào năm 1995 Adaboost hoạt

động trên nguyên tắc kết hợp tuyến tính các phân lớp yếu (weak classifier) dựa trên dữ liệu đầu vào là các đặc trưng Haar- Like để hình thành một phân lớp mạnh hơn (strong classifier)

Adaboost thực hiện sử dụng một trọng số (weight) để đánh dấu các mẫu khó

nhận dạng khi kết hợp các bộ phân lớp yếu Trong quá trình huấn luyện, cứ mỗi phân

lớp yếu (weak classifier) được xây dựng thì thuật toán sẽ tiến hành cập nhật lại trọng số

để chuẩn bị cho việc xây dựng phân lớp yếu (weak classifier) tiếp theo Theo nguyên

tắc: “tăng trọng số của các mẫu bị nhận dạng sai và giảm trọng số của các mẫu được

nhận dạng đúng bởi phân lớp yếu (weak classifier) vừa xây dựng” Bằng cách này,

phân lớp yếu sau có thể tập trung vào các mẫu mà các phân lớp yếu trước đó chưa thực hiện tốt Sau cùng, các phân lớp yếu sẽ được kết hợp tùy theo mức độ ‘tốt’ của chúng

để tạo nên một phân lớp mạnh hơn

Trang 24

Hình 2.12: Nguyên tắc Adaboost

Ý tưởng chính của Boosting là thực hiện lặp lại nhiều lần quá trình học của bộ phân lớp yếu nghĩa là tập trung học lại các phần tử bị phân lớp sai Tại mỗi giai đoạn

(stages) của Cascades of Boosted Classifiers được huấn luyện là một Adaboost

Các weak classifiers hk(x) là các bộ phân loại yếu được lấy từ việc trích các đặc

trưng Haar-like, được biểu diễn như sau:

fk: giá trị của đặc trưng Haar-like; (2.1)

pk: hệ số quyết định chiều của bất phương trình (a parity indicating the direction of the inequality sign)

Bộ phân lớp mạnh ℎ𝑚ạ𝑛ℎ(𝑥) được tạo ra bằng cách kết hợp tuyến tính N bộ phân loại yếu (2.7) Vấn đề cốt lõi là thực hiện chọn các trọng số α1,…,αn thích hợp

ℎ𝑚ạ𝑛ℎ(𝑥) = 𝑠𝑖𝑔𝑛 ∑ 𝛼𝑘 ℎ𝑘𝑦ế𝑢(𝑥)

𝑁

𝑘=1Công thức trên (2.7) có thể diễn giải như sau: Nếu giá trị đặc trưng của mẫu cho

bởi hàm đánh giá của bộ phân loại vượt qua một ngưỡng θ cho trước thì mẫu đấy là đối

tượng (gọi là object : đối tượng cần nhận dạng ), ngược lại thì mẫu là background (không phải là đối tượng)

(2.7)

(2.8)

Trang 25

Các mẫu thử vừa bị phân

loại sai sẽ được tăng độ

lớn trọng số

Bộ phân lớp yếu

h2(x)

Bộ phân lớp yếu h3(x)

Tiếp tục đánh trọng số lớn hơn cho các mẫu thử vừa bị phân loại sai ở bước 2

Trang 26

- Thuật toán AdaBoost:

1 Cho một tập gồm n mẫu có đánh dấu (x1,y1), (x2,y2),… (xn,yn) với xk ∈ (xk1, xk2,

… , xkm) là vector đặc trưng và yk ∈ (-1, 1) là nhãn của mẫu (1 ứng với object,

-1 ứng với background)

2 Khởi tạo trọng số ban đầu cho tất cả các mẫu: với m là số mẫu đúng (ứng với

object và y = 1) và l là số mẫu sai (ứng với background và y = -1)

𝑤1,𝑘 = 1

2𝑚,

12𝑙

3 Xây dựng T weak classifiers

Lặp t = 1, …, T

 Với mỗi đặc trưng trong vector đặc trưng, xây dựng một weak classifier

hj với ngưỡng θj và lỗi εj

𝑍𝑡: Hệ số dùng để đưa 𝑊𝑡+1 về đoạn [0,1] (normalization factor)

4 Strong classifier được xây dựng :

𝐻(𝑥) = 𝑑ấ𝑢 (∑ ∝𝑡 ℎ𝑡(𝑥)

𝑇

𝑡=1

)

Trang 27

Sơ đồ khối:

Hình 2.14: Lược đồ huấn luyện nhận dạng đối tượng

Quá trình huấn luyện bộ phân loại được thực hiện bằng một vòng lặp mà ở mỗi bước lặp, thuật toán sẽ chọn ra weak classifier ht thực hiện việc phân loại với lỗi εt nhỏ

nhất (do đó sẽ là bộ phân loại tốt nhất) để bổ sung vào strong classifier Mỗi khi chọn

được một bộ phân loại ht, Adaboost sẽ tính giá trị αt theo công thức 2.10, αt cũng được chọn trên nguyên tắc làm giảm thiểu giá trị lỗi εt

Hệ số αt nói lên mức độ quan trọng của ht:

 Trong công thức của bộ phân loại H(x):

𝐻(𝑥) = 𝑑ấ𝑢 (∑ ∝𝑡 ℎ𝑡(𝑥)

𝑇

𝑡=1

)

Tất cả các bộ phân loại ht đều có đóng góp vào kết quả của bộ phân loại H(x),

và mức độ đóng góp của chúng phụ thuộc vào giá trị αt tương ứng: ht với αt càng lớn thì

nó càng có vài trò quan trọng trong H(x)

Khởi tạo tập đặc trưng ban đầu

Xác định các đặc trưng trong từng mẫu, xây dựng các bộ phân loại

yếu tương ứng

Đặc trưng haar-like

Tính toán giá trị lỗi cho mỗi đặc trưng

(false alarm)

Xác định ngưỡng

Chọn weak classifier h t có giá trị lỗi bé nhất ε t

Lưu weak classifier được chọn

False alarm ≤ max false alarm

Trang 28

Giá trị αt tỉ lệ nghịch với εt Bởi vì ht được chọn với tiêu chí đạt εt nhỏ nhất, do

đó nó sẽ đảm bảo giá trị αt lớn nhất

Sau khi tính được giá trị αt, Adaboost tiến hành cập nhật lại trọng số của các mẫu: tăng trọng số các mẫu mà ht phân loại sai, giảm trọng số các mẫu mà ht phân loại đúng Bằng cách này, trọng số của mẫu phản ánh được mức độ khó nhận dạng của mẫu đó và

ht+1 sẽ ưu tiên học cách phân loại những mẫu này

Hình 2.15: Ưu tiên trọng số lớn để phân hoạch [https://alliance.seas.upenn.edu/~cis520/wiki/index.php?n=lectures.boosting]

Trang 29

Vòng lặp xây dựng strong classifier sẽ dừng lại sau T lần lặp Trong thực tế cài

đặt (thư viện OpenCV của Intel), người ta ít sử dụng giá trị T vì không có công thức nào

đảm bảo tính được giá trị T tối ưu cho quá trình huấn luyện Thay vào đó, người ta sử

dụng giá trị max false positive hay max false alarm (tỉ lệ nhận dạng sai tối đa các mẫu background) Tỉ lệ này của bộ phân loại cần xây dựng không được phép vượt quá giá trị này Khi đó, qua các lần lặp, false alarm của strong classifier Ht(x) xây dựng được (tại

lần lặp thứ t) sẽ giảm dần, và vòng lặp kết thúc khi tỉ lệ này thấp hơn max false alarm

Phương pháp Adaboost (Adaptive boost): là một cải tiến của hướng tiếp cận

boosting, sử dụng khái niệm trọng số (weight) để đánh dấu các mẫu khó nhận dạng trong quá trình huấn luyện, mẫu càng khó trọng số càng cao

- Kết hợp huấn luyện Adaboost và phân tầng Cascades of Boosted Classifiers với

các đặc trưng được trích từ Haar - Like

Hình 2.16: Adaboost và Cascades of Boosted Classifier

Trang 30

2.3 Định vị đối tượng

Mô hình dò tìm đối tượng [1,tr.25]:

Hình 2.17: Dò tìm đối tượng với Haar Like Features - Cascade of Boosted Classifiers

Trong sơ đồ trên (Hình 2.17), từ ảnh gốc tính nhanh giá trị của đặc trưng

Haar-Like nhờ vào tích phân ảnh (Intergral Image), kết quả tính được sẽ được đưa qua bộ

điều chỉnh AdaBoost để loại bỏ bớt các đặc trưng không cần thiết nhằm làm giảm số

lượng các đặc trưng Các đặc trưng còn lại (các đặc trưng được chọn) sẽ được đưa qua

bộ phân lớp để quyết định xem có phải mặt người hay không

Ảnh gốc

AdaBoost

Bước N

Tính nhanh các đặc trưng (Đặc trưng hình chữ nhật)

Tính các đặc trưng

Chọn các đặc trưng

Phân lớp mạnh

Cập nhật trọng số Các đặc trưng Haar-Like

Quyết định kết quả

Trang 31

Cấu trúc cascade đạt tốc độ nhận dạng nhanh chính là nhờ sớm loại bỏ được các mẫu sai (background) đơn giản (thường có số lượng lớn hơn nhiều so với các mẫu đúng (object) – các 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 của Viola và Jones cũng đạt được độ chính xác khá cao nhờ vào thuật toán cascade training, các bộ nhận dạng được huấn luyện bằng AdaBoost với đặc trưng Haar-Like

mô tả tốt thông tin đối tượng, cùng với cách tính tích phân ảnh (Integral Image) tính nhanh các đặc trưng, không làm giảm tốc độ nhận dạng của hệ thống

Như vậy, mô hình Haar Like Features - Cascade of Boosted Classifiers thật sự

là một cách tiếp cận tốt cả về tốc độ lẫn khả năng nhận dạng, rất phù hợp với bài toán định vị mặt người

2.4 Tổng quan về thư viện OpenCV

2.4.1 Tổng quan

OpenCV (Open Source Computer Vision Library) là thư viện mã nguồn mở về

thị giác máy tính và ngôn ngữ máy học của Intel Được giới thiệu tháng 01 năm 1999

và đến tháng 2006 phiên bản 1.0 được ra đời

Hình 2.18: Thư viện OpenCV

Gói thư viện gồm hơn 500 hàm và trên 2500 thuật toán tối ưu được viết bằng ngôn ngữ C/C++ tương thích với các hệ điều hành Windows, Linux, Android…Các thuật toán này có thể được sử dụng để phát hiện, nhận dạng khuôn mặt, theo dõi chuyển động con người trên thời gian thực OpenCV đưa ra một hệ thống đơn giản, dễ sử dụng giúp mọi người tiếp cận xây dựng ứng dụng một cách nhanh chóng và nâng cao hiệu quả tính toán Từ lúc ra đời đến nay OpenCV đã thu hút rất nhiều nhà nghiên cứu phát triển, trong đó có các công ty lớn như: Google, Yahoo, Microsoft, IBM, Sony…và nhiều cộng đồng mạng được thành lập cho việc tham khảo và tra cứu

Trang 32

Rất nhiều phiên bản ra đời góp phần to lớn vào công cuộc phát triển của cộng đồng thị giác máy tính Những phiên bản sau này được bổ sung nhiều hơn các giải thuật đáp ứng được nhu cầu thực tại, phiên bản 3.0 RC1 được phát hành ngày 24-04-2015 là phiên bản mới nhất, hỗ trợ trên Windows, Linux/Mac và iOS

Hình 2.19: Lịch sử các phiên bản OpenCV

https://www.safaribooksonline.com/library/view/learning-opencv/9780596516130/ch01s04.html

2.4.2 Cấu trúc và ứng dụng của OpenCV

Cấu trúc của OpenCV gồm có năm phần chính [7,tr.12-14]:

Hình 2.20: Cấu trúc cơ bản của OpenCV

Trong đó:

- Phần CV&CVAUX bao gồm các thư viện cơ bản về xử lý ảnh và các giải thuật về

thị giác máy tính Phần này sẽ thực hiện hỗ trợ các chức năng cấp cao (nhận dạng đối

bộ phân cụm, phân loại thống kê

HighGUI

Các hàm và thủ tục làm việc với file ảnh

và file video

IPP

Mã lệnh tối ưu cho Intel CPUs

Trang 33

tượng, hiệu chỉnh Camera/Webcam), xử lý, phân tích các chuyển động Trong đó thì nội dung CV sẽ là các phương thức, hàm xử lý đã ổn định, còn CVAUX sẽ gồm các chức năng thử nghiệm để đưa vào phiên bản kế tiếp Phần CVAUX này bao gồm các thư viện cho việc phát hiện, theo dõi và nhận dạng đối tượng (khuôn mặt, mắt …);

- Phần MLL là bộ thư viện về các thuật toán học máy, bao gồm rất nhiều bộ phân cụm

và phân loại thống kê;

- Phần HighGUI chứa đựng những thủ tục vào ra, các chức năng về lưu trữ cũng như

đọc các file ảnh và video;

- Phần CxCore dùng để tổ chức dữ liệu cơ sở, thực hiện các thuật toán (các phép tính

– các phép tính ma trận), hỗ trợ tài liệu XML, các thao tác cơ bản, vẽ, chú thích;

- Phần cuối cùng IPP là module thương mại cung cấp các đoạn mã mở rộng đã được

tối ưu hóa cho các phần cứng của Intels giúp tăng tốc trong xử lý các ứng dụng lớn

Đi kèm gói thư viện là tài liệu hướng dẫn thể hiện các chức năng của OpenCV, các chức năng tập trung vào thu thập, xử lí ảnh và các thuật toán phân tích dữ liệu ảnh bao gồm:

 Truy xuất ảnh và phim: đọc ảnh số từ camera, từ file, ghi ảnh và phim;

 Cấu trúc dữ liệu ảnh số và các dữ liệu hỗ trợ cần thiết: ma trận, vector, chuỗi, xâu

và cây;

 Xử lí ảnh căn bản: các bộ lọc có sẵn, tìm chi tiết cạnh, góc, chỉnh đổi màu, phóng

to thu nhỏ, và hiệu chỉnh Histograms;

 Xử lí cấu trúc: tìm viền, nhận chuyển động, thay đổi trong không gian 3D, đối chiếu

bản mẫu, xấp xỉ các đơn vị hình học cơ sở - mặt phẳng, đa giác, ellipse, đường thẳng;

 Phân tích dữ liệu ảnh: nhận dạng đối tượng - thực thể, theo dõi các chi tiết và phân

tích chuyển động;

 Tạo giao diện đơn giản: hiển thị ảnh, thao tác bàn phím, chuột, thanh trượt để chỉnh

thông số (nếu cần thiết các bạn có thể tự tạo thêm các phím điều khiển thông qua thao tác chuột, hoặc tích hợp thêm các thư viện về giao diện như wxWidgets);

 Chức năng vẽ, chú thích lên ảnh: Chức năng này thường áp dụng cho các bài toán

nhận dạng mặt người trong ảnh Hiện nay thấy rõ nhất là các chức năng trên ứng dụng mạng xã hội Facebook

Ngày đăng: 12/01/2016, 19:55

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Châu Ngân Khánh. Nhận dạng mặt người sử dụng giải thuật Haar Like Features – Cascade of Boosted Classifiers và các đặc trưng SIFT. Luận văn thạc sĩ. Khoa Công Nghệ thông tin và truyền thông, Đại học Cần Thơ, 2013 Sách, tạp chí
Tiêu đề: Nhận dạng mặt người sử dụng giải thuật Haar Like Features – Cascade of Boosted Classifiers và các đặc trưng SIFT
[6] Lê Hồng Chuyên. Tìm hiểu một số phương pháp phát hiện khuôn mặt trong ảnh. Khoá luận tốt nghiệp. Khoa Công nghệ thông tin, Đại học Dân lập Hải Phòng, 2007 Sách, tạp chí
Tiêu đề: Tìm hiểu một số phương pháp phát hiện khuôn mặt trong ảnh
[7] Mã Trường Thành. Điều khiển Robot Pioneer P3-DX bám sát đối tượng. Luận văn Thạc sĩ. Khoa Công nghệ thông tin &amp; Truyền thông - Trường Đại học Cần Thơ, 2013 Sách, tạp chí
Tiêu đề: Điều khiển Robot Pioneer P3-DX bám sát đối tượng
[10] R. Lienhart, J. Maydt (2002). An Extended Set of Haar-like Features for Rapid Object Detection. Intel Labs, Intel Corporation, Santa Clara, CA 95052, USA Sách, tạp chí
Tiêu đề: An Extended Set of Haar-like Features for Rapid Object Detection
Tác giả: R. Lienhart, J. Maydt
Năm: 2002
[11] Tạ Minh Lễ. Nghiên cứu khả năng ứng dung thư viện xử lý ảnh OpenCV vào thư viện mã nguồn mở Android. Khoa Công nghệ, Đại học Cần Thơ, 2012 Sách, tạp chí
Tiêu đề: Nghiên cứu khả năng ứng dung thư viện xử lý ảnh OpenCV vào thư viện mã nguồn mở Android
[12] Trần Phước Long, Nguyễn Văn Lượng. Nhận dạng người dựa vào thông tin khuôn mặt xuất hiện trên ảnh. Luận văn Đại học. Khoa Công nghệ thông tin, Đại học Khoa học tự nhiên, Tp. Hồ Chí Minh, Việt Nam, 2003 Sách, tạp chí
Tiêu đề: Nhận dạng người dựa vào thông tin khuôn mặt xuất hiện trên ảnh
[13] Trần Lê Hồng Dũ. Phát hiện khuôn mặt dựa trên đặc trưng lòi lõm. Luận văn Thạc sĩ. Khoa Công nghệ thông tin, Đại học Khoa học tự nhiên, Tp. Hồ Chí Minh, Việt Nam, 2005 Sách, tạp chí
Tiêu đề: Phát hiện khuôn mặt dựa trên đặc trưng lòi lõm
[8] Mahdi Rezaei. Create a Cascade of Haar-Like Classifiers: Step by Step Khác
[9] P. Viola and M. Jones (2001). Robust Real-time Object Detection. International Journal of Computer Vision Khác
[14] Trần Quang Hợp, Lương Đình Lưu, Phạm Duy Khánh. Bài toán phát hiện mặt người trong ảnh Khác

HÌNH ẢNH LIÊN QUAN

Hình 2.2: Đặc trưng Haar-Like - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.2 Đặc trưng Haar-Like (Trang 15)
Hình 2.9: Cách trích đặc trưng Haar-like - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.9 Cách trích đặc trưng Haar-like (Trang 19)
Hình 2.10: Cấu trúc phân tầng với N giai đoạn - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.10 Cấu trúc phân tầng với N giai đoạn (Trang 20)
Hình 2.11: Kỹ thuật Boosting - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.11 Kỹ thuật Boosting (Trang 23)
Hình 2.13: Kỹ thuật Adaboost - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.13 Kỹ thuật Adaboost (Trang 25)
Sơ đồ khối: - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Sơ đồ kh ối: (Trang 27)
Hình 2.15: Ưu tiên trọng số lớn để phân hoạch  [https://alliance.seas.upenn.edu/~cis520/wiki/index.php?n=lectures.boosting] - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.15 Ưu tiên trọng số lớn để phân hoạch [https://alliance.seas.upenn.edu/~cis520/wiki/index.php?n=lectures.boosting] (Trang 28)
Hình 2.16: Adaboost và Cascades of Boosted Classifier - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.16 Adaboost và Cascades of Boosted Classifier (Trang 29)
Hình 2.17: Dò tìm đối tượng với Haar Like Features - Cascade of Boosted Classifiers - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.17 Dò tìm đối tượng với Haar Like Features - Cascade of Boosted Classifiers (Trang 30)
Hình 2.18: Thư viện OpenCV - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.18 Thư viện OpenCV (Trang 31)
Hình 2.20: Cấu trúc cơ bản của OpenCV  Trong đó: - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.20 Cấu trúc cơ bản của OpenCV Trong đó: (Trang 32)
Hình 2.19: Lịch sử các phiên bản OpenCV - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.19 Lịch sử các phiên bản OpenCV (Trang 32)
Hình 2.21: Các khía cạnh và ứng dụng của OpenCV - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.21 Các khía cạnh và ứng dụng của OpenCV (Trang 34)
Hình 2.23: Cấu trúc của Emgu CV - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 2.23 Cấu trúc của Emgu CV (Trang 36)
Hình 3.6: Đánh dấu vị trí đối tượng và lưu vào tập tin Positive.txt - nghiên cứu thư viện opencv ứng dụng nhận dạng khuôn mặt người
Hình 3.6 Đánh dấu vị trí đối tượng và lưu vào tập tin Positive.txt (Trang 40)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w