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

Ứng dụng tính toán đa dụng trên các bộ xử lý đồ họa trong nhận dạng khuôn mặt

84 19 0

Đ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 84
Dung lượng 2,39 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứng dụng tính toán đa dụng trên các bộ xử lý đồ họa trong nhận dạng khuôn mặt Ứng dụng tính toán đa dụng trên các bộ xử lý đồ họa trong nhận dạng khuôn mặt Ứng dụng tính toán đa dụng trên các bộ xử lý đồ họa trong nhận dạng khuôn mặt luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

Trang 1

ỨNG DỤNG TÍNH TOÁN ĐA DỤNG TRÊN CÁC BỘ XỬ LÝ

ĐỒ HỌA TRONG NHẬN DẠNG KHUÔN MẶT

Chuyên ngành : Kỹ thuật máy tính và truyền thông

LUẬN VĂN THẠC SĨ KỸ THUẬT

KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG

NGƯỜI HƯỚNG DẪN KHOA HỌC :

TS NGUYỄN THỊ OANH

Hà Nội – 2013

Trang 2

Lời cam đoan

Tôi xin cam đoan :

1 Luận văn này cho đến nay chưa hề được bảo vệ ở bất kì một hội đồng bảo vệ luận văn thạc sĩ nào trên toàn quốc cũng như nước ngoài cho đến nay chưa hề được công bố trên bất kì phương tiện thông tin nào

2 Những nội dung trong luận văn này là do tôi thực hiện dưới sự hướng dẫn trực tiếp của TS Nguyễn Thị Oanh 1

3 Mọi tham khảo dùng trong luận văn đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố

4 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá, tôi xin chịu hoàn toàn trách nhiệm

Hà nội, ngày 18 tháng 3 năm 2013

Tác giả Đặng Minh Thái

Trang 3

MỤC LỤC

Trang Phụ Bìa 1

Lời cam đoan 4

Danh mục các thuật ngữ kí hiệu 5

Danh mục các bảng, đồ thị 5

Danh sách các hình vẽ 6

MỞ ĐẦU 8

Chương I Tổng quan về dò tìm khuôn mặt 10

1 Giới thiệu về bài toán xác định mặt người trong ảnh và các ứng dụng 10

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

3 Các phương pháp xác định mặt người 11

4 Vấn đề hiệu năng trong bài toán nhận dạng khuôn mặt 12

5 Cách tiếp cận của luận văn trong việc tăng cường hiệu năng 13

6 Tổ chức luận văn 13

Chương II Kỹ thuật dò tìm khuôn mặt 15

1 Giới thiệu các nghiên cứu dò tìm khuôn mặt người 15

1.1 Hướng tiếp cận dựa trên tri thức 15

1.2 Hướng tiếp cận dựa trên đặc trưng không thay đổi 17

1.3 Hướng tiếp cận dựa trên so sánh khớp mẫu 20

1.4 Hướng tiếp cận dựa trên diện mạo 24

2 Giới thiệu về thư viện OpenCV 26

3 Dò tìm khuôn mặt trên OpenCV 28

3.1 Các đặc trưng Haar-Like 29

3.2 Sơ lược về Boosting 31

3.3 Giới thiệu về Adaboost 33

3.4 Thác phân loại (Cascade of classifier) 36

Chương III Tính toán song song trên các kiến trúc đa lõi/ nhiều lõi với OpenCL 41

1 Giới thiệu về tính toán không đồng nhất (Heterogeneous computing) 41

1.1 Giới thiệu GPU 42

1.2 Giới thiệu tính toán GPU (GPGPU) 43

1.3 So sánh cấu trúc của CPU và GPU 44

2 Giới thiệu OpenCL 47

2.1 Lịch sử của OpenCL 49

2.2 Mô hình của OpenCL 50

2.3 Ngôn ngữ của OpenCL 54

2.4 Biên dịch trong OpenCL 54

2.5 Tổng hợp OpenCL 55

2.6 Các hướng mở rộng của OpenCL 57

Trang 4

Chương IV.Song song hóa giải thuật phát hiện vùng da với OpenCL 59

1 Giới thiệu bài toán phát hiện vùng da 59

2 Các phương pháp phát hiện vùng da 62

3 Giải thuật phát hiện vùng da 69

4 Kết quả dò tìm vùng da dùng OpenCL 72

Chương V Tích hợp, thử nghiệm và đánh giá 75

1 Tích hợp ứng dụng 75

2 Kết quả 76

3 Đánh giá 77

Kết luận và hướng phát triển 79

Tài liệu tham khảo 80

Trang 5

Danh mục các thuật ngữ kí hiệu

Face detection Dò tìm khuôn mặt

OpenCV Thư viện được dùng trong giao tiếp người máy Haar-Like Đặc trưng của ảnh hay được dùng để dò tìm mặt Boosting 1 siêu thuật toán về quá trình học của máy

Adaboost 1 loại siêu thuật toán Boosting

Cascade of classifier Thác phân loại

CPU Bộ xử lý trung tâm

GPU Bộ xử lý đồ họa

GPGPU Tính toán dùng GPU

OpenCL Một ngôn ngữ tính toán

Skin detection Dò tìm vùng da

MIMD Nhiều mã lệnh, nhiều dữ liệu

SIMD Một mã lệnh chạy nhiều dữ liệu

Trang 6

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

Hình 7 : Sơ lược ứng dụng của OpenCV

Hình 8 : Mô hình chạy ứng dụng OpenCV

Hình 9 : 4 đặt trưng Haar-like cơ bản

Hình 10 : Các đặc trưng mở rộng của các đặc trưng Haar-like cơ sở Hình 11 : Cách tính ảnh tích phân của ảnh

Hình 12 : Ví dụ cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh Hình 13 : Ví dụ cách tính nhanh tổng điểm ảnh của vùng D

Hình 14 : Boosting

Hình 15 : Thác phân loại gồm N bước

Hình 16 : Hệ thống tính toán không đồng nhất

Hình 17 : Sự kết hợp của CPU và GPU

Hình 18 : So sánh sự khác nhau phần cứng CPU và GPU

Hình 19 : So sánh khả năng tính toán của CPU và GPU

Hình 20 : OpenCL là ngôn ngữ của tính toán phân tán

Hình 21 : Các hãng sản xuất phần cứng chạy OpenCL

Hình 22 : Lịch sử OpenCL

Hình 23 : Tổ chức Khronos

Hình 24 : Dữ liệu song song

Hình 25 : Cấu trúc nền tảng của OpenCL

Hình 26 : N chiều của các work-items

Trang 7

Hình 27 : Mô hình thực thi OpenCL

Hình 28 : Mô hình bộ nhớ OpenCL

Hình 29 : Quá trình biên dịch OpenCL

Hình 30 : Quá trình chạy OpenCL

Hình 31 : OpenCL chạy trên phần cứng GPU

Hình 32 : OpenCL chạy trên phần cứng GPU của Nvidia và AMD Hình 33 : OpenCL chạy trên CPU của AMD and Intel

Hình 34 : Vị trí của dò tìm khuôn mặt

Hình 35 : Một ví dụ về không gian màu da

Hình 36 : Không gian màu RGB

Hình 37 : Biên phân phối

Hình 38 : Mô hình màu da

Hình 39 : Mô hình không phải màu da

Hình 40 : Sơ đồ giải thuật dò tìm vùng da

Hình 41 : Kết quả khi thuật toán dò tìm vùng da

Hình 42: Kết quả chạy dò tìm vùng da với đầu vào dùng Webcam Hình 43 : Sơ đồ thuật toán hệ thống

Hình 44 : Sơ đồ thuật toán hệ thống không dùng phần cứng đồ họa và OpenCL

Hình 45: Sơ đồ khối ứng dụng thông thường dò tìm mặt bằng OpenCV

Trang 8

MỞ ĐẦU a) Lý do chọn đề tài

Nhận dạng khuôn mặt người là một kĩ thuật rất phát triển trong thời gian qua

Nó là kĩ thuật quan trọng trong giao tiếp người và máy tính Có rất nhiều nghiên cứu và phương pháp để nhận dạng mặt người và vấn đề về hiệu năng của hệ thống

dò tìm mặt người trở nên rất quan trọng trong các ứng dụng chạy thời gian thực

Ngày nay tính toán đa dụng trở nên rất phổ biến vì tính hiệu quả trong việc tăng tốc các ứng dụng Với sự phát triển của các phần cứng đồ họa ngày nay, phần cứng đồ họa không chỉ là thiết bị trợ giúp quá trình hiển thị mà nó còn là một thiết

bị rất mạnh mẽ trong tính toán

Vì vậy nếu áp dụng được tính toán đa dụng, tính toán song song chạy trên các phần cứng đồ họa vào bài toán nhận dạng khuôn mặt thì nó sẽ làm tăng tốc đáng

kể tốc độ của ứng dụng dò tìm mặt người Đó cũng là lí do em muốn chọn đề tài

“Ứng dụng tính toán đa dụng trên các bộ xử lý đồ họa trong nhận dạng khuôn mặt “ ( "Applying GPGPU in face detection”)

b) Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu

Mục đích nghiên cứu của luận văn là ứng dụng các tính toán song song nhằm nâng cao tốc độ dò tìm mặt người Luận văn sẽ xây dựng ứng dụng mới để tăng tốc

dò tìm khuôn mặt

 Nghiên cứu các thuật toán dò tìm khuôn mặt, đưa ra thuật toán cho ứng dụng

 Giới thiệu ngôn ngữ tính toán song song và các ứng dụng

 Áp dụng tính toán song song vào ứng dụng

 So sánh kết quả đạt được để thấy được hiệu quả của tính toán song song

c) Tóm tắt cô đọng các nội dung chính và đóng góp mới của tác giả

Luận văn sẽ trình bày tổng quát về kĩ thuật dò tìm mặt người sau đó giới thiệu về ngôn ngữ OpenCL ứng dụng trong tính toán song song Từ đó sẽ áp dụng tính toán song song để tăng tốc quá trình dò tìm khuôn mặt Kết quả sẽ được phân tích và đánh giá về độ tăng tốc của hệ thống khi áp dụng phương pháp này Tác giả

Trang 9

muốn giới thiệu ứng dụng của tính toán đa dụng vào bài toán dò tìm khuôn mặt nói riêng và các ứng dụng nói chung

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

Lý thuyết : Dựa trên phân tích các nghiên cứu về dò tìm khuôn mặt trước đây

và nghiên cứu các ứng dụng mới của tính toán đa dụng trên các bộ xử lý đồ họa Thực nghiệm : Xây dựng ứng dụng và so sánh các thông số của ứng dụng mới dùng tính toán đa dụng với ứng dụng không dùng tính toán đa dụng

Trang 10

Chương I Tổng quan về dò tìm khuôn mặt

1 Giới thiệu về bài toán xác định mặt người trong ảnh và các ứng dụng

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

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í và 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 và bỏ qua những thứ khác như: tòa nhà, cây cối, cơ thể …

Dò tìm mặt người là đầu vào của rất nhiều các hệ thống xử lý khuôn mặt như nhận dạng khuôn mặt, dò theo khuôn mặt, biểu cảm khuôn mặt, lấy các đặc trưng khuôn mặt, phân loại giới tính, mỹ phẩm kĩ thuật số, hệ thống sinh trắc học Thêm nữa hầu hết các thuật toán dò tìm khuôn mặt có thể được mở rộng để dò tìm các đối tượng khác như ôtô, người đi bộ, và các dấu hiệu,…

Xác định mặt người thường là một phần của một hệ thống nhận dạng mặt người (facial recognition system) Nó thường được dùng trong giám sát video, giao tiếp người máy và quản lý cơ sở dữ liệu ảnh… Các ứng dụng cơ bản của xác định mặt người có thể kể đến là:

Trang 11

- Camera giám sát

- An ninh bảo mật

- Giao tiếp giữa người và máy tính

- Quản lý cơ sở dữ liệu ảnh

- Máy ảnh kĩ thuật số chức năng tự động nhận dạng mặt người

- Tiết kiệm năng lượng

2 Những khó khăn và 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, …

 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 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 …

 Mặt người bị che khuất bởi các đối tượng khác có trong ảnh

 Điều kiện của ảnh : Ảnh được chụp trong các điều kiện khác nhau về chiếu sang, tính chất camera ảnh hưởng rất nhiều đến chất lượng ảnh để xác định khuôn mặt

3 Các phương pháp 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

Trang 12

 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 Đây là hướng tiếp cận theo hướng (top-down) từ tổng quan đến chi tiết

 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 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) 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ệ 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

4 Vấn đề hiệu năng trong bài toán nhận dạng khuôn mặt

Có một số các đại lượng để đánh giá hiệu năng của hệ thống dò tìm khuôn mặt như :

 Số frame dò được khuôn mặt trong 1 giây

 Tỉ lệ đúng sai khi dò tìm khuôn mặt

 Số lượng các phân loại,số lượng các đặc trưng

 Số các ảnh huấn luyện, thời gian huấn luyện

 Độ chính xác và bộ nhớ yêu cầu

Thêm nữa các báo cáo về hiệu năng còn phụ thuộc vào một định nghĩa đâu là kết quả đúng

Trang 13

Các phương pháp dò tìm khuôn mặt ngày nay có thể thực hiện thời gian thực nhưng vẫn có rất nhiều yếu tố để tăng thêm độ chính xác Khuôn mặt dò được trả lại với vài pixel (khoảng 5 pixel) ngoài vị trí khuôn mặt, có ý nghĩa quan trọng như một ảnh khuôn mặt được tiêu chuẩn hóa 21 x 21 pixel Các kết quả phải cân bằng giữa tốc độ, độ ổn định và tính chính xác, nó có thể làm giảm hiệu suất của bất kì các ứng dụng sinh trắc học nào bằng cách sử dụng dữ liệu của các khuôn mặt đã dò được Một vài thuật toán được đưa ra để có thể xác định vị trí khuôn mặt và lấy các đặc trưng khuôn mặt tốt hơn khi mà độ phân giải ảnh khuôn mặt đủ cao

5 Cách tiếp cận của luận văn trong việc tăng cường hiệu năng

Luận văn tiếp cận theo hướng tìm phương pháp để tăng cường hiệu năng của nhận dạng khuôn mặt thông qua tăng tốc quá trình tiền xử lý, hay hạn chế phạm vi nhận dạng để tăng cường hiệu năng cho bài toán dò tìm khuôn mặt

Một số bức ảnh có vùng khuôn mặt rất ít, nhưng để xét nhận dạng khuôn mặt, các thuật toán dò tìm phải quét hết vùng không gian của bức ảnh, điều này sẽ làm tăng thời gian xử lý, tốn hiệu năng và bộ nhớ của hệ thống Luận văn đưa ra phương

án thực hiện tiền xử lý ảnh để thu hẹp phạm vi để nhận dạng khuôn mặt Luận văn

đã lựa chọn cách để thu hẹp phạm vi nhận dạng bằng cách nhận dạng vùng da người

và xác định các vùng này để thuật toán nhận dạng khuôn mặt chỉ chạy trên các vùng ảnh mà ta vừa tách được

Hình 1 : Ảnh có khuôn mặt

6 Tổ chức luận văn

Luận văn được tổ chức theo cấu trúc như sau:

Trang 14

Phần 1: Giới thiệu tổng quan về kỹ thuật nhận dạng khuôn mặt người, các nghiên cứu và giới thiệu về thư viện OpenCV

Phần 2: Giới thiệu về ngôn ngữ lập trình song song OpenCL và các ứng dụng Phần 3: Giới thiệu về nhận dạng vùng da trên ảnh và ứng dụng OpenCL vào thuật toán đó

Phần 4: Tích hợp, chạy thử , kiểm nghiệm đánh giá kết quả

Trang 15

Chương II Kỹ thuật dò tìm khuôn mặt

1 Giới thiệu các nghiên cứu dò tìm khuôn mặt người

1.1 Hướng tiếp cận dựa trên tri thức

Trong hướng tiếp cận này, các phương pháp xác định mặt người được xây dựng dựa vào các luật, các luật này phụ thuộc vào tri thức của các tác giả nghiên cứu về bài toán xác định khuôn mặt Dễ dàng xây dựng các luật cơ bản để mô tả các đặc trưng của khuôn mặt và các quan hệ tương ứng Ví dụ, một khuôn mặt thường

có hai mắt đối xứng qua trục thẳng đứng giữa khuôn mặt và có một mũi một miệng Các quan hệ đặc trưng có thể là quan hệ về vị trí và khoảng cách tương đối Khó khăn của hướng tiếp cận này đó là làm thế nào để chuyển các tri thức của con người

về khuôn mặt sang các luật cho máy tính một cách hiệu quả Nếu các luật này quá chi tiết, chặt chẽ thì sẽ có thể xác định thiếu các khuôn mặt có trong ảnh, nhưng nếu các luật quá tổng quát thì sẽ dẫn đến xác định sai khu vực không phải là khuôn mặt thành khuôn mặt Ngoài ra cũng khó để mở rộng phạm vi của bài toán để xác định các khuôn mặt có nhiều tư thế khác nhau

Các nghiên cứu :

Có nhiều cách để xây dựng chương trình xác định mặt người theo hướng tiếp cận dựa trên tri thức Thông thường chương trình sẽ được xây dựng theo hướng dựa vào một phương pháp nào đấy chọn ra các ứng viên trong bức ảnh trước, sau đó sẽ

áp dụng các luật để xác định ứng viên nào là khuôn mặt, ứng viên nào không phải là khuôn mặt Quá trình này có thể được áp dụng nhiều lần để giảm sai sót

Trang 16

Hình 2: Phương pháp của Yang và Huang xác định khuôn mặt điển hình theo hướng tiếp cận từ tổng thể đến chi tiết

Yang và Huang [14] đã sử dụng hướng tiếp cận dựa trên tri thức để xác định khuôn mặt Hệ thống của hai tác giả bao gồm ba mức luật Đầu tiên các ông sử dụng một khung cửa sổ để quét trên bức ảnh và thông qua một số tập luật để xác định các ứng viên có thể là mặt người, ví dụ như tìm phần trung tâm của khuôn mặt (phần tối hơn trong hình 2) Tiếp theo, dùng một tập luật để mô tả tổng quát hình dáng khuôn mặt, lọc các ứng viên ở mức một thành một tập các ứng viên mới có xác suất là khuôn mặt cao hơn Cuối cùng, các ông lại dùng một tập luật khác để xem xét ở mức chi tiết các đặc trưng khuôn mặt ( có thể là đặc trưng về mắt, mũi, miệng … ), từ đó lọc ra các ứng viên chính xác nhất Có thể nói cách làm của hai ông là một cách làm mịn dần để đạt được kết quả tốt nhất, mặc dù tỷ lệ chính xác chưa cao, nhưng đây là tiền đề cho nhiều nghiên cứu sau này

Có rất nhiều công trình nghiên cứu sử dụng phương pháp chiếu để xác định khuôn mặt Kotropoulos và Pitas [21] đưa ra một phương pháp gần tương tự với Yang và Huang Đầu tiên, các vùng của khuôn mặt được định vị bởi phương pháp chiếu đã được Kanade [15] sử dụng thành công để xác định biên của khuôn mặt Với I(x,y) là giá trị xám của một điểm trong ảnh có kích thước m x n ở tại vị trí (x,y), các hàm để chiếu ảnh theo phương ngang và thẳng đứng được định nghĩa như sau: HI(x) = và VI(y) = Dựa trên biểu đồ hình chiếu ngang, khi xét biểu đồ biến thiên của HI hai ông tìm được hai cực tiểu địa phương tương ứng với hai đỉnh đầu bên trái và bên phải của khuôn mặt Còn theo hình chiếu dọc, xét biến thiên và tìm cực tiểu địa phương của VI cũng cho ta các vị trí của miệng, đỉnh mũi và hai mắt Các đặc trưng này đủ để xác định khuôn mặt

Hình 3 cho một ví dụ về cách xác định như trên Cách xác định này có tỷ lệ xác định chính xác là 86.5% cho trường hợp chỉ có một khuôn mặt thẳng trong ảnh

và hình nền không phức tạp Nếu hình nền phức tạp như hình 3.b thì rất khó tìm Còn nếu ảnh có nhiều khuôn mặt (hình 3.c) thì sẽ không xác định được

Trang 17

Hình 3: Phương pháp chiếu:

(a) Ảnh chỉ có một khuôn mặt và hình nền đơn giản;

(b) Ảnh chỉ có một khuôn mặt và hình nền phức tạp;

(c) Ảnh có nhiều khuôn mặt

1.2 Hướng tiếp cận dựa trên đặc trưng không thay đổi

Tiếp cận dựa trên các đặc trưng không thay đổi là tiếp cận theo kiểu từ chi tiết đến tổng thể Dựa trên thực tế, chúng ta cố gắng tìm ra những đặc điểm không thay đổi của khuôn mặt khi ở các tư thế khác nhau và các điều kiện môi trường như ánh sáng khác nhau Đã có rất nhiều nghiên cứu về hướng tiếp cận này, các đặc điểm không thay đổi được tìm thấy như lông mày, mắt, mũi, miệng hay các đường viền trên tóc … Trên cơ sở các đặc trưng này, các nhà nghiên cứu xây dựng lên một mô hình thống kê mô tả quan hệ của các đặc trưng và từ đó xác định sự xuất hiện của khuôn mặt trong bức ảnh Khó khăn của hướng tiếp cận này đó là phải mô tả các đặc trưng không thay đổi và quan hệ giữa chúng phù hợp với điều kiện ánh sáng, độ nhiễu hay bị che khuất

a Các đặc trưng của khuôn mặt

Có rất nhiều nghiên cứu về các đặc trưng của khuôn mặt Có thể dựa vào các đặc trưng như hai mắt, hai lỗ mũi, miệng, phần nối giữa mũi và miệng … hoặc dựa vào đường viền của khuôn mặt

Leung [43] đã đưa ra một mô hình xác suất để xác định khuôn mặt trong ảnh

có hình nền phức tạp dựa trên việc tìm kiếm các đặc trưng không thay đổi của khuôn mặt trong ảnh, sau đó dùng đồ thị ngẫu nhiên để xác định khuôn mặt Tư

Trang 18

tưởng của phương pháp này đó là xem bài toán xác định khuôn mặt như là bài toán tìm kiếm với mục tiêu là tìm thứ tự các đặc trưng không thay đổi của khuôn mặt Dùng năm đặc trưng (hai mắt, hai lỗ mũi, phần nối giữa mũi và miệng) để mô tả một khuôn mặt Đồng thời tính quan hệ khoảng cách cho tất cả các cặp đặc trưng (như mắt trái, mắt phải), sau đấy dùng phân bố Gauss để mô hình hóa Một mẫu khuôn mặt được đưa ra thông qua trung bình tương ứng cho một tập đa hướng, đa tỷ

lệ của bộ lọc đạo hàm Gauss Từ một ảnh, các đặc trưng của ứng viên được xác định bằng cách so khớp từng điểm ảnh khi lọc tương ứng với vector mẫu Hai ứng viên có đặc trưng đứng đầu sẽ được chọn để tìm kiếm cho các đặc trưng khác của khuôn mặt Từ các đặc trưng không thay đổi, các đặc trưng khác sẽ được xác định thông qua sự đánh giá xác suất khoảng cách giữa các đặc trưng, hơn nữa phương sai của phép thống kê này có thể được tính toán trước để xác định các đặc trưng với xác suất lớn Tỷ lệ chính xác của phương pháp này là 86%

Bên cạnh tính khoảng cách liên quan để mô tả quan hệ giữa các đặc trưng như Leung Kendall, Mardia và Dryden [9] dùng lý thuyết xác suất thống kê về hình dáng Dùng hàm mật độ xác suất (Probility Density Function - PDF) qua N điểm đặc trưng, tương ứng (xi, yi) là đặc trưng thứ i với giả sử là phân bố Gauss có 2N-chiều Các tác giả áp dụng phương thức cực đại khả năng (Maximum-Likelihood - ML) để xác định vị trí khuôn mặt Một thuận lợi của phương pháp này là các khuôn mặt bị che khuất vẫn có thể xác định được Hạn chế phương pháp này đó là không xác định được nhiều khuôn mặt trong cùng một ảnh

Không dùng phương pháp xác suất, Sirohey [39] đưa một phương pháp khác xác định khuôn mặt từ một ảnh có hình nền phức tạp Phương pháp dựa trên cạnh Dùng phương pháp Canny và heuristics loại bỏ các cạnh để còn lại duy nhất một đường bao xung quanh khuôn mặt Một hình ellipse dùng để bao khuôn mặt, tách biệt vùng đầu và hình nền Tỷ lệ chính xác của thuật toán là 80%

Graf [8] đưa ra một phương pháp xác định đặc trưng rồi xác định khuôn mặt trong ảnh xám Dùng bộ lọc để làm nổi các biên, các phép toán hình thái học

Trang 19

(morphology) được dùng để làm nổi bật các vùng có cường độ cao và hình dáng chắc chắn (như mắt) Thông qua histogram để tìm các đỉnh nổi bật để xác định các ngưỡng chuyển ảnh xám thành hai ảnh nhị phân Các thành phần dính nhau đều xuất hiện trong hai ảnh nhị phân thì được xem là vùng của ứng viên khuôn mặt rồi phân loại xem có phải là khuôn mặt không Phương pháp được kiểm tra trên các ảnh chỉ có đầu và vai của người Tuy nhiên phương pháp này còn một vấn đề đấy là sử dụng các phép toán hình thái học (morphology) như thế nào và làm sao xác định khuôn mặt trên các vùng ứng viên

Park dùng điểm Gaze [33] để tìm ứng viên góc mắt, miệng và tâm mắt Ông xây dựng SVM (Support Vector Machine) đã được học trước đó để xác định các vị trí ứng viên có phải là góc mắt, miệng, và tâm mắt hay không để theo vết con mắt người

Juan và Narciso [20] xây dựng một không gian màu mới YCg’Cr’ để lọc các vùng là ứng viên khuôn mặt dựa trên sắc thái của màu da người Sau khi có ứng viên, hai ông dùng các quan hệ về hình dáng khuôn mặt, mức độ cân đối của các thành phần khuôn mặt để xác định khuôn mặt người

Hongliang Jin [16] xây dựng một bộ lọc để xác định ứng viên khuôn mặt người theo màu da người Từ ứng viên này tác giả xác định khuôn mặt người theo hình dáng khuôn mặt và các quan hệ đặc trưng về thành phần khuôn mặt, với mắt phải được chọn làm gốc tọa độ để xét quan hệ Tỷ lệ chính xác cho khuôn mặt chụp thẳng trên 80%

b Kết cấu của khuôn mặt

Khuôn mặt con người có những kết cấu riêng biệt mà có thể dùng để phân loại

so với các đối tượng khác Từ kết cấu của khuôn mặt xây dựng lên một bộ phân loại, gọi là kết cấu giống khuôn mặt (face-like texture)

c Mầu sắc da

Trang 20

Thông thường các ảnh màu không xác định trực tiếp trên toàn bộ dữ liệu ảnh

mà các tác giả dùng tính chất sắc màu của da người (khuôn mặt người) để chọn ra được các ứng viên có thể là khuôn mặt người (lúc này dữ liệu đã thu hẹp đáng kể)

để xác định khuôn mặt người

d Đa đặc trưng

Gần đây có nhiều nghiên cứu sử dụng các đặc trưng toàn cục như: màu da người, kích thước, và hình dáng để tìm các ứng viên khuôn mặt, rồi sau đó sẽ xác định ứng viên nào là khuôn mặt thông qua dùng các đặc trưng cục bộ (chi tiết) như: mắt, lông mày, mũi, miệng, và tóc Tùy mỗi tác giả sẽ sử dụng tập đặc trưng khác nhau

1.3 Hướng tiếp cận dựa trên so sánh khớp mẫu

a Tư tưởng của so sánh khớp mẫu

Trong hướng tiếp cận dựa trên so sánh khớp mẫu, các mẫu chuẩn của khuôn mặt (thường là khuôn mặt được chụp thẳng) sẽ được xác định trước hoặc được biểu diễn thành một hàm với các tham số cụ thể Từ một ảnh đưa vào, tính các giá trị tương quan so với các mẫu chuẩn về đường viền khuôn mặt, mắt, mũi và miệng Thông qua các giá trị tương quan này mà hệ thống sẽ quyết định có hay không có tồn tại khuôn mặt trong ảnh Hướng tiếp cận này có lợi thế là rất dễ cài đặt, nhưng không hiệu quả khi tỷ lệ, tư thế, và hình dáng thay đổi

b Xác định các mẫu

Sakai [42] đã cố gắng thử xác định khuôn mặt người chụp thẳng Ông dùng vài mẫu con (sub template) về mắt, mũi, miệng, và đường viền khuôn mặt để mô hình hóa một khuôn mặt Mỗi mẫu con được định nghĩa trong giới hạn của các đoạn thẳng Các đường thẳng trong ảnh được trích bằng cách xem xét thay đổi của hệ số góc và so khớp các mẫu con Đầu tiên tìm các ứng viên thông qua mối tương quan giữa các ảnh con và các mẫu về đường viền Sau đó, so khớp với các mẫu con khác Hay nói một cách khác, giai đoạn đầu xem như là giai đoạn sơ chế để tìm ứng viên,

Trang 21

giai đọan thứ hai là giai đoạn tinh chế để xác định ứng viên có phải là khuôn mặt hay không Ý tưởng này được duy trì cho đến các nghiên cứu sau này

Craw [6] đưa ra một phương pháp xác định khuôn mặt người dựa vào các mẫu

về hình dáng của các ảnh được chụp thẳng (dùng vẻ bề ngoài của hình dáng khuôn mặt) Đầu tiên dùng phép lọc Sobel (Phép lọc Sobel dựa vào tích vô hướng của hai vector gradient) để tìm các cạnh Các cạnh này sẽ được nhóm lại theo một số ràng buộc Sau đó, tìm đường viền của đầu, quá trình tương tự được lặp đi lặp lại với mỗi

tỷ lệ khác nhau để xác định các đặc trưng khác như: mắt, lông mày, và môi Sau đó Craw mô tả một phương thức xác định dùng một tập có 40 mẫu để tìm các đặc trưng khuôn mặt và điều khiển chiến lược dò tìm

Một số nhà nghiên cứu sử dụng hình chiếu như các mẫu để xác định khuôn mặt người Phương pháp PCA (phân tích thành phần chính – Principal Component Analysis - PCA) để có một tập hình chiếu cơ bản từ các mẫu khuôn mặt, hình chiếu được mô tả như một mảng các bit Dùng đặc trưng hình chiếu riêng kết hợp biến đổi Hough [5] để xác định khuôn mặt người Sau đó một phương pháp xác định dựa trên đa loại mẫu để xác định các thành phần của khuôn mặt được trình bày Phương pháp này định nghĩa một số giả thuyết để mô tả các khả năng của các đặc trưng khuôn mặt Với một khuôn mặt sẽ có một tập giả thuyết, lý thuyết DepsterShafer Dùng một nhân tố tin cậy để kiểm tra sự tồn tại hay không của các đặc trưng của khuôn mặt, và kết hợp nhân tố tin cậy này với một độ đo để xem xét có hay không

có khuôn mặt trong ảnh

Sinha [30] dùng một tập nhỏ các ảnh bất biến trong không gian ảnh để mô tả không gian các mẫu ảnh Tư tưởng chính của ông dựa vào sự thay đổi mức độ sáng của các vùng khác nhau của khuôn mặt (như hai mắt, hai má, và trán), (quan hệ về mức độ sáng của các vùng còn lại thay đổi không đáng kể) Sau đấy xác định các cặp tỷ số của mức độ sáng của một số vùng (một vùng tối hơn hay sáng hơn) cho ta một lượng bất biến khá hiệu quả Ông lưu sự thay đổi độ sáng của các vùng trên khuôn mặt trong một tập thích hợp với các cặp quan hệ sáng hơn – tối hơn giữa các

Trang 22

vùng nhỏ Một khuôn mặt được xác định nếu nó thỏa mãn tất cả các cặp sáng hơn – tối hơn Ý tưởng này xuất phát từ sự khác biệt của cường độ giữa các vùng kề cục

bộ trên ảnh, sau này nó được mở rộng trên cơ sở biến đổi wavelet để xác định người

đi bộ, xác định xe hơi, xác định khuôn mặt Ý tưởng của Sinha còn được áp dụng trong các nghiên cứu về thị giác của robot Hình 4 cho thấy mẫu khuôn mặt với 16 cùng và 23 quan hệ Các quan hệ này được dùng để phân loại, có 11 quan hệ thiết yếu (các mũi tên màu đen) và 12 quan hệ xác thực (các mũi tên mầu xám) Mỗi mũi tên là một quan hệ Một quan hệ của hai vùng thỏa mãn mẫu khuôn mặt khi tỷ lệ giữa hai vùng vượt qua một ngưỡng và một khuôn mặt được xác đinh khi có 23 quan hệ thỏa mãn điều kiện trên

Hình 4: Một mẫu khuôn mặt theo

phương pháp Sinha

Một số phương pháp khác như của Froba và Zink [5] lọc cạnh ở độ phân giải thấp rồi dùng biến đổi Hough để so khớp mẫu theo hướng cạnh để xác định hình dáng khuôn mặt ở dạng chụp hình thẳng ở dạng xám Tỷ lệ chính xác trên 91%

c Các mẫu biến dạng

Yuille [2] dùng các mẫu biến dạng để mô hình hóa các đặc trưng của khuôn mặt Trong hướng tiếp cận này, các đặc trưng khuôn mặt được mô tả bằng các mẫu được tham số hóa và có một hàm năng lượng (giá trị) được để liên kết các cạnh,

Trang 23

đỉnh, và thung lũng trong ảnh để tương ứng với các tham số trong mẫu Mô hình này tốt nhất khi tối thiểu hàm năng lượng qua các tham số, Mặc dù có kết quả tốt nhưng phương pháp này có một số hạn chế đó là các mẫu biến dạng phải được khởi tạo trong phạm vi gần với các đối tượng mà nó xác định

Rất nhiều hướng tiếp cận dựa trên dường gấp khúc (snake) và các mẫu để xác định khuôn mặt Đầu tiên ảnh sẽ được làm xoắn lại bởi một lọc làm mờ rồi dùng phép toán morphology để làm nổi bật cạnh lên Tiếp theo dùng một đường gấp khúc

có n điểm ảnh (giá trị n nhỏ) để tìm và ước lượng các đọan cong nhỏ Mỗi khuôn mặt được xấp xỉ bằng một ellipse và biến đổi Hough, rồi tìm một ellipse nổi trội nhất Các ứng viên sẽ có bốn tham số mô tả nột ellipse (để xác định khuôn mặt) Với mỗi ứng viên, một phương thức tương tự như phương thức mẫu biến dạng được dùng để xác định các đặc trưng ở mức chi tiết Nếu tìm thấy số lượng đáng kể các đặc trưng khuôn mặt và thỏa mãn tỷ lệ cân đối thì xem như đã xác định được một khuôn mặt Lam và Yan [19] cũng dùng đường gấp khúc để xác định vị trí đầu với thuật toán greedy để cực tiểu hóa hàm năng lượng

Thay vì dùng đường gấp khúc thì Huang và Su [12] dùng lý thuyết dòng chảy

để xác định đường viền khuôn mặt dựa trên đặc tính hình học Hai ông dùng lý thuyết tập hợp đồng mức (Level Set) để loang từ các khởi động ban đầu để có được các khuôn mặt người

Lanitis [1] mô tả một phương pháp biểu diễn khuôn mặt người với cả hai thông tin: hình dáng và cường độ Bắt đầu bằng các tập ảnh được huấn luyện với các đường viền mẫu như là đường bao mắt, mũi, cằm/má đã được gán nhãn(phân loại) Ông dùng một vector các điểm mẫu để mô tả hình dáng Sau đó dùng một mô hình phân bố điểm (Point Distribution Model – PDM) để mô tả vector hình dáng qua toàn bộ các cá thể Dùng cách tiếp cận như của Kirby và Sirovich [25] để mô tả cường độ bề ngoài của hình dáng đã được chuẩn hóa Để tìm kiếm và ước lượng vị trí khuôn mặt cũng như các tham số về hình dáng ông sử dụng một mô hình PDM

có hình dáng như khuôn mặt (xác định khuôn mặt bằng mô hình hình dáng tích cực

Trang 24

- Active Shape Model - ASM) Các mảnh của khuôn mặt được làm biến dạng về hình dáng trung bình rồi trích lấy các tham số cường độ Sau đấy các tham số hình dáng và cường độ được dùng để phân loại và xác định khuôn mặt

1.4 Hướng tiếp cận dựa trên diện mạo

a Tư tưởng của 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ẫu đã được các nhà nghiên cứu định nghĩa trước), các mẫu trong hướng tiếp cận này được học

từ một tập ảnh mẫu Có thể nói hướng tiếp cận dựa trên diện mạo áp dụng các kỹ thuật theo hướng xác suất thống kê và học máy để tìm những đặc tính liên quan của khuôn mặt và không phải là khuôn mặt Các đặc tính đã được học ở trong hình thái các mô hình phân bố hay các tham số của một hàm số nên có thể dùng các đặc tính này để xác định khuôn mặt người Đồng thời, bài toán giảm số chiều thường được quan tâm để tăng hiệu quả tính toán cũng như hiệu quả xác định

Trong hướng tiếp cận này, phương pháp xác suất tiếp tục được nhiều nhà nghiên cứu sử dụng Một bức ảnh hoặc một vector (đặc trưng cho bức ảnh) được xem như một biến ngẫu nhiên Biến ngẫu nhiên này sẽ được xác định là có mô tả các đặc tính của khuôn mặt hay không thông qua các xác suất có điều kiện p(x/face)

và p(x/nonface) Có thể dùng bộ phân loại Bayesian để phân loại các ứng viên là khuôn mặt hay không phải khuôn mặt Tuy nhiên, việc cài đặt bộ phân loại Bayesian với số chiều x lớn là một điều khá khó khăn, do đó có rất nhiều nghiên cứu theo hướng tiếp cận này quan tâm tới việc tham số hóa hay không tham số các xác suất p(x/face) và p(x/nonface)

Một cách tiếp cận khác trong hướng tiếp cận dựa trên diện mạo là tìm một hàm biệt số ví dụ như các hàm mô tả mặt phẳng hay siêu phẳng quyết định (các ranh giới) để phân biệt hai lớp khuôn mặt và không phải khuôn mặt Thông thường, một bức ảnh được chiếu vào không gian có số chiều ít hơn rồi sau đó dùng một hàm biệt số (dựa trên các độ đo khoảng cách) để phân loại hoặc xây dựng một mặt quyết định phi tuyến bằng mạng neural đa tầng Ngoài ra có thể dùng SVM (Super Vector

Trang 25

Machine) và các phương thức kernel chiếu các mẫu vào không gian có số chiều cao hơn để dữ liệu bị rời rạc hoàn toàn và từ đó có thể sử dụng mặt phẳng phân loại để phân loại các mẫu là khuôn mặt hay không phải là khuôn mặt

Một số phương pháp cụ thể trong hướng tiếp cận dựa trên diện mạo

Có rất nhiều phương pháp học máy được sử dụng trong hướng tiếp cận dựa trên diện mạo Sau đây là một số phương pháp nghiên cứu dựa trên hướng tiếp cận dựa trên diện mạo

b1 Adaboost

Adaboost [38] được đánh giá là phương phát tiếp cận nhanh nhất trong các thuật toán học máy Nó thường được kết hợp với các mô hình thác của các phân lớp

để tăng tốc độ phát hiện khuôn mặt trong ảnh Tư tưởng của thuật toán adaboost đấy

là kết hợp các bộ phân loại yếu thành một bộ phân loại mạnh Trong quá trình xây dựng, bộ phân loại yếu tiếp theo sẽ được xây dựng dựa trên các đánh giá về các bộ phân loại yếu trước, cuối cùng các bộ phân loại yếu sẽ được kết hợp để trở thành bộ phân loại mạnh

Viola và Jones [32] dùng AdaBoost kết hợp thác phân loại để xác định khuôn mặt người với các đặc trưng dạng Haar-like Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80%

Hình 5 : 1 ứng dụng của Adaboost b2 Mạng Neural

Về cơ bản mạng Neural là một mạng các phần tử (gọi là neuron) kết nối với nhau thông qua các liên kết (các liên kết này được gọi là trọng số liên kết) để thực

hiện một công việc cụ thể nào đó Khả năng xử lý của mạng neuron được hình

Trang 26

thành thông qua quá trình hiệu chỉnh trọng số liên kết giữa các neuron, nói cách khác là học từ tập hợp các mẫu huấn luyện

Mạng Neural rất hay được sử dụng trong các bài toán nhận dạng mẫu, nhận dạng mặt người cũng có thể xem là một bài toán nhận dạng với hai loại mẫu (mặt người hoặc không phải mặt người) và như vậy có thể sử dụng mạng Neural khá hiệu quả kể cả khi các mẫu khuôn mặt có độ phức tạp cao Tuy nhiên, một điều trở ngại

đó là các kiến trúc mạng đều có tính tổng quát cao, do đó, khi áp dụng ta phải tính toán rõ số lượng tầng, số lượng node, tỷ lệ học … cho từng trường hợp cụ thể

2 Giới thiệu về thư viện OpenCV

Open CV [46] là thư viện mã nguồn mở của Intel về thị giác máy tính Nó cung cấp một bộ mã nguồn bao gồm hàng trăm hàm, lớp dựa trên các thuật toán về

xử lý ảnh cũng như Computer vision dùng ngôn ngữ C/C++ OpenCV có khả năng chạy ở nhiều các nền tảng khác nhau Open CV có rất nhiều thuật toán trí tuệ nhân tạo, quá trình học của máy, Nó đượ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

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

HighGUI

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

và file video

Trang 27

Phần CV 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 ML 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ê 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 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 và nhận dạng đối tượng (khuôn mặt, mắt …)

Hình 7: Sơ lược ứng dụng của OpenCV

OpenCV có cấu trúc mô đun, nó bao gồm là một gói những thư viện chia sẻ hay các thư viện tĩnh Nó bao gồm các mô đun chính dưới đây:

 Core : 1 modun gốc định nghĩa các kiểu dữ liệu cơ bản, bao gồm nhiều các mảng nhiều chiều Mat (matrix) và các hàm cơ bản được dùng cho các modun khác

Trang 28

 Imgproc: 1 modun xử lý hình ảnh bao gồm các phép lọc tuyến tính hay phi tuyến, các biến đổi hình học (thay đổi kích thước, biến đổi không gian màu, biểu đồ tần số, và các biến đổi khác )

 Video : modun phân tích video bao gồm ước lượng chuyển động, loại

bỏ nền, và các thuật toán theo dõi các vật thể

 Calib3d : Thuật toán cơ bản về hình học nhiều góc nhìn, xác định thông số của camera, ước lượng góc của vật thể, thuật toán tương ứng stereo, và các thành phần của xây dựng lại mô hình 3D

 Feature2d : Dò tìm các đặc trưng xuất hiện, nhận diện và xác định các đặc trưng

 Objdetect : Dò tìm các đối tượng và các đại diện của các lớp được định nghĩa trước (ví dụ như khuôn mặt, mắt, miệng, con người, xe ôtô

và các vật thể khác

 Highgui: 1modun tạo ra giao tiếp người dùng

 Gpu: Các thuật toán tăng tốc GPU từ các modun khác nhau của OpenCV

 Một số các modun trợ giúp khác như FLANN và Google test wrapper, Python binding,

Hình 8 : Mô hình chạy ứng dụng OpenCV

3 Dò tìm khuôn mặt trên OpenCV

Trang 29

Luận văn sẽ đi tìm hiểu một số thuật toán, phương pháp, khái niệm mà OpenCV dùng chúng để dò tìm khuôn mặt người trong ảnh Sau đây là một số thuật toán, phương pháp khái niệm được dùng trong dò tìm khuôn mặt người

3.1 Các đặc trưng Haar-Like

Viola và Jones dùng 4 đặc trưng cơ bản để xác định khuôn mặt người Mỗi đặc trưng Haar–like là sự kết hợp của hai hay ba hình chữ nhật "trắng" hay "đen" như trong hình sau:

Hình 9: 4 đặt trưng Haar-like cơ bản

Để áp dụng các đặc trưng này vào việc bài toán xác định mặt người, 4 đặc trưng Haar-like cơ bản được mở rộng ra, và được chia làm 3 tập đặc trưng như sau:

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 10: Các đặc trưng mở rộng của các đặc trưng Haar-like cơ sở

Lợi ích của các đặc trưng Haar-like là nó 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),

Trang 30

điều mà bản thân từng điểm ảnh không diễn đạt được Để 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 sau:

f(x) = Tổng vùng đen (pixel) - Tổng vùng trắng (pixel)

Như vậy ta có thể thấy rằng, để tính các giá trị của đặc trưng Haar-like, ta phải tính tổng của các vùng pixel trên ảnh Nhưng để tính toán các giá trị của các đặc trưng Haar-like cho tất cả các vị trí trên ảnh đòi hỏi chi phí tính toán khá lớn, không đáp ứng được cho các ứng dụng đòi hỏi tính thời gian thực Do đó Viola và Jones

đưa ra một khái niệm gọi là ảnh tích phân ( Integral Image) để tính toán nhanh cho khác đặc trưng cơ bản Sau này, Lienhart [37]kế thừa ảnh tích phân đưa ra khái

niệm SAT (Summed Area Table) tổng diện tích của bảng và đưa ra thêm khái niệm

RSAT (Rotated Summed Area Table) tổng diện tích bảng quay dùng để tính toán

nhanh cho các đặc trưng xoay 1 góc 45o Ảnh tích phân là một mảng 2 chiều với

kích thước bằng với kích của ảnh cần tính các đặc trưng Haar-like, với mỗi phần tử của mảng này đượ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, phải của ảnh, việc tính toán này đơn thuần chỉ đựa trên phép cộng số nguyên đơn giản, do đó tốc độ thực hiện rất nhanh

Hình 11: Cách tính ảnh tích phân của ảnh

Sau khi đã tính được ảnh tích phân, 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: (Giả sử ta cần tính tổng điểm ảnh của vùng D như trong hình 11):

D = A + B + C + D – (A+B) – (A+C) + A

P(x,y)

Trang 31

Với A + B + C + D chính là giá trị tại điểm P4 trên Integral Image, tương tự như vậy A+B là giá trị tại điểm P2, A+C là giá trị tại điểm P3, và A là giá trị tại điểm P1 Vậy ta có thể viết lại biểu thức tính D ở trên như sau:

Hình 12: Ví dụ cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh

Hình 13: Ví dụ cách tính nhanh tổng điểm ảnh của vùng D trên

Với các đặc trưng Haar-like xoay 45o Integral Image tại một điểm (x, y) được

Trang 32

Boosting [10] là một siêu thuật toán học của máy cho giảm độ dốc của quá trình học giám sát Boosting được đưa ra dựa trên câu hỏi của Kearns: “1 tập các học yếu có thể tạo thành 1 học mạnh được không ?” 1 học yếu được xác định bởi 1 phân loại mà tỉ lệ phân loại đúng rất thấp Ngược lại, 1 học mạnh là 1 phân loại có tỉ

lệ phân loại đúng rất cao Giả thuyết của Boosting là có thể biến 1 tập học yếu sang

1 học mạnh duy nhất

Năm 1990, Robert Schapire [38] đưa ra thuật toán boosting đầu tiên, tiếp đến năm 1993 thì nó được Drucker, Schapire và Simard [10] kiểm nghiệm trong trong

các chương trình nhận dạng ( OCR application ) Freund đã tiếp tục các nghiên cứu

của Schaprire, và đến năm 1995 thì ông cùng với Schapire phát triển boosting thành adaboost

Để 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 bộ phân loại yếu (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 bộ phân loại mạnh: 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 33

Hình14 : Boosting

Adaboost là một thuật toán rất phổ biến trong các thuật toán Boosting

3.3 Giới thiệu về Adaboost

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 [38] đư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 loại yếu dựa trên các đặc trưng Haar-Like để hình thành một phân loại mạnh

Để có thể kết hợp các bộ phân loại yếu, adaboost sử dụng một trọng số (weight) để đánh dấu các mẫu khó nhận dạng Trong quá trình huấn luyện, cứ mỗi phân loại yếu được xây dựng, 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 loại yếu tiếp theo: 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 bộ phân loại yếu vừa xây dựng Bằng cách này, các bộ phân loại yếu (weak classifier) sau có thể tập trung vào các mẫu mà các phân loại yếu trước đó chưa thực hiện tốt Sau cùng các

Trang 34

phân loại 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 loại mạnh

Các phân loại yếu hk(x) là các bộ phân loại yếu, được biểu diễn như sau:

Trong đó:

X : mẫu hay cửa sổ con cần xét ( X = (x1,x2,…,xn) là vector đặc trưng của mẫu)

: ngưỡng theta()

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

pk: hệ số quyết định chiều của bất phương trình

Công thức trên 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à

khuôn mặt ( 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 )

Thuật toán AdaBoost:

Trang 35

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 bộ phân loại yếu ht thực hiện việc phân loại với

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 =

Trang 36

lỗi εt nhỏ nhất (do đó sẽ là bộ phân loại tốt nhất) để bổ sung vào bộ phân loại mạnh Mỗi khi chọn được 1 bộ phân loại ht, Adaboost sẽ tính giá trị αt theo công thức ở trên α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):

Ta thấy 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)

3.4 Thác phân loại (Cascade of classifier)

Ta thấy 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 Việc này 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 hình nền rất dễ nhận ra (ta gọi đây là những mẫu hình nền đơ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

Trang 37

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

Thác phân loại (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 cảnh báo sai cho bộ phân loại thác phân loại gồm nhiều bước (hay còn gọi là lớp), mỗi bước của cây sẽ là một bước phân loại 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 bước của cây Các

bước phân loại ở bước sau được huấn luyện bằng những mẫu phủ định (negative)

mà bước phân loại trước nó nhận dạng sai, tức là nó sẽ tập trung học từ các mẫu

hình nền khó hơn, do đó sự kết hợp các bước phân loại này lại sẽ giúp bộ phân loại

có cảnh báo sai thấp Với cấu trúc này, những mẫu hình nền dễ nhận diện sẽ bị loại ngay từ những bước đầ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ý

Thác phân loại dựa trên sự ghép nối của một số phân loại, dùng tất cả các thông tin lấy được từ đầu ra của 1 phân loại như thông tin bổ xung cho các phân loại tiếp theo trong 1 thác

Thuật toán Cascade training:

Trang 38

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

Hình 15 : Thác phân loại gồm N bước

Ở mỗi bước, Bộ phân loại 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

F là giá trị false alarm và 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

3 Lặp: while F i >F target

 i = i+1;

 Huấn luyện bộ phân loại h i từ tập P i và N i với detection rate d và max

false alarm f Thêm h i vào cây phân lớp

 Dùng cây phân lớp hiện có để tính F i : Duyệt qua N mẫu negative cho

đến khi nào tìm đủ n mẫu mà cây phân lớp hiện có phân loại sai

(

 N :=

 Nếu Fi >Ftarget

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 39

Đặc tính Haar giải mã hướng tương phản giữa các vùng trong ảnh Một tập các đặc trưng có thể được dùng để giải mã sự xuất hiện tương phản bởi khuôn mặt người và những mối quan hệ đặc biệt Các đặc trưng Haar được tính toán giống như chuyển đổi Haar wavelet

Dò tìm 1 đối tượng trong OpenCV được đưa ra đầu tiên bởi Paul Viola [32] và được cải tiến bởi Rainer Lienhart [37] Đầu tiên, 1 phân lớp ( 1 thác của các phân lớp làm việc với các đặc trưng Haar ) được huấn luyện với hàng trăm mẫu ảnh của các đối tượng ( khuôn mặt ) Các mẫu được khẳng đinh có đối tương, sẽ được scale các ảnh về kích cỡ (20 x20 pixel), và các mẫu không có vật là các ảnh tùy ý có cùng kích thước

Sau khi 1 phân lớp được huấn luyện, nó sẽ được áp dụng vào 1 vùng cần quan tâm ( có cùng kích cỡ với các bức ảnh được dùng trong quá trình huấn luyện ) của bức ảnh đầu vào Đầu ra của phân lớp có giá trị 1 nếu như vùng quan tâm chứa đối tượng và bằng 0 nếu không có Để tìm 1 đối tượng trong toàn bộ bức ảnh người ta

di chuyển cửa sổ tìm kiếm qua bức ảnh và kiểm mọi vị trí để phân loại Các phân loại được thiết kế để có thể dễ dàng thay đổi kích thước để có thể tìm các đối tượng

ở vùng quan tâm, nó hiệu quả hơn là thay đổi kích thước bức ảnh Vì thế để tìm 1 đối tượng không rõ kích cỡ trong bức ảnh quá trình quét sẽ được thực hiện một vài lần ở các tỉ lệ scale khác nhau

Từ “thác” phân loại có nghĩa là các phân loại bao gồm 1 vài phân loại đơn giản các bước để áp dụng cho 1 vùng quan tâm cho đến khi tất cả các đặc trưng được dùng để phân loại Từ “vững chắc“ (boosted) được dùng để chỉ ra rằng các phân loại ở các bước đều của thác đều rất phức tạp và chúng được xây dựng dựa trên các phân loại cơ bản dùng một trong bốn kĩ thuật boosting Hiện nay các kĩ thuật Adaboost rời rạc, Adaboost thực, Adaboost nhẹ, và Adaboost logic được dùng Phân loại cơ bản là một cây phân loại quyết định với ít nhất 2 nhánh

OpenCV xây dựng sẵn các thác phân loại cho các đối tượng cần dò tìm Một

số đối tượng được xây dựng sẵn của OpenCV là khuôn mặt, mắt, mũi, Các thác phân loại này được tạo ra bằng các tệp tin dữ liệu xml và được đặt trong thư mục

Trang 40

/OpenCV/data/haarcascades/ Dữ liệu thác phân loại của khuôn mặt được lưu trữ trong tập tin haarcascade_frontalface_alt.xml ngoài ra còn có một số thác phân loại

khác như mắt, mũi,

Để dò tìm khuôn mặt, OpenCV tạo ra một đối tượng cascade (thác phân loại ) sau đó sẽ đọc dữ liệu thác phân loại này từ các tập tin xml chứa thông tin thác phân loại của đối tượng cần dò tìm Sau đó dựa vào đối tượng cascade vừa tạo ra

OpenCV sẽ dùng 1 API (cvHaarDetectObjects) để đưa ra đầu ra là một chuỗi các

đối tượng dò tìm trong bức ảnh Sau đó OpenCV có tọa độ và kích thước của đối tượng trong bức ảnh và xác định được vị trí của các đối tượng trong bức ảnh

Ngày đăng: 01/05/2021, 09:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w