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

Phát hiện khuôn mặt với thuật toán ADABOOST

28 2,9K 23

Đ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 28
Dung lượng 305,74 KB

Nội dung

Phát hiện khuôn mặt với thuật toán ADABOOST

Trang 1

ĐỒ ÁN MÔN HỌC I

Trang 2

ninh phải tìm kiếm trên từng màn hình camera theo dõi Ngày nay, công việc này

đã được thực hiện tự động nhờ hệ thống nhận diện mặt người Phát hiện mặt ngườitrong ảnh là một phần quan trọng của hệ thống nhận dạng mặt người đó, giải quyếttốt việc phát hiện mặt người sẽ giúp tiết kiệm thời gian và nâng cao chính xác củaviệc nhận dạng khuôn mặt

Trong nhận diện khuôn mặt, đầu tiên ta phải lấy khuôn mặt ra một cách thủcông, rồi đem đi nhận dạng xem đó là ai Để việc nhận dạng khuôn mặt một cách

tự động, tức là đưa vào một bức ảnh phải xác định xem trong ảnh có những ai, rõ

ràng điều kiện cần thực hiện trước đó là phát hiện mặt người.

Việc phát hiện khuôn mặt còn được ứng dụng trong đếm số người Baonhiêu khuôn mặt là có bấy nhiêu người Việc đếm số người có vai trò quan trong

giao thông (đếm số lưu lượng người tham gia giao thông hằng ngày), trong thương mại ( đếm số khách hàng ra vào siêu thị ) hay trong giáo dục ( thầy giáo

điểm danh số sinh viên trong lớp học ) Chính vì thế mà việc phát hiện khuôn mặtngười là hết sức cần thiết

Phát hiện mặt người là một bài toán đơn giản, hệ thống chỉ cần phân loại đốitượng đưa vào có phải mặt người hay không phải mặt người Ở mức độ cao hơn,các khuôn mặt sau khi phát hiện được sẽ đem đi so sánh với các khuôn mặt cótrong dữ liệu để nhận dạng xem khuôn mặt đấy là của ai ( thường nhận dạng tộiphạm )

Với mục tiêu chính là tìm hiểu thuật toán Adaboost (Adaptive Boost), các đặc trưng haar-like, mô hình Cascade of Classifiers, áp dụng đồng thời vào bài

toán phát hiện khuôn mặt người trong ảnh, đồ án được trình bày trong các chương

cụ thể như sau:

Chương I: Cơ sở lý thuyết: tìm hiểu thuật toán Adaboost Giới thiệu các đặc

trưng về haar-like và cách tính thông số đặc trưng Sử dụng mô hình Cascade ofclassifiers và cách áp dụng vào bài toán đã đề ra

Chương II: Ứng dụng thực nghiệm: Dựa vào cơ sở thư viện mã nguồn mở

OpenCV, xây dựng chương trình phát hiện khuôn mặt người trong ảnh và trênvideo kết hợp với phân tích chương trình đó

Chương III: Tổng kết và hướng phát triển: đánh giá kết quả và hướng nghiên

cứu phát triển

Trang 3

Chương I: CƠ SỞ LÝ THUYẾT

1. Mở đầu về phương pháp phát hiện khuôn mặt Haar-like và Adapboost:

Phát hiện mặt người là bài toán cơ bản được xây dựng từ nhiều năm nay, cónhiều phương pháp được đưa ra như sử dụng template matching, neuronnetwork Cho tới nay bài toán này hầu như được giải quyết dựa trên phươngpháp sử dụng phương pháp Haar-like- Adapboost (HA) của hai tác giả PaulViola và Micheal J.Jones xác định mặt người dựa theo hướng tiếp cận trên diệnmạo Phương pháp này được cho là đơn giản và kết quả phát hiện là tương đốicao, lên tới trên 98%, Các hãng sản xuất máy ảnh như Canon, Samsung cũng

đã tích hợp nó vào trong các sản phẩm của mình

Hướng tiếp cận trên diện mạo tức là hệ thống nhận dạng khuôn mặt sẽ được họccác mẫu của khuôn mặt từ một tập ảnh mẫu Sau khi quá trình học hay quá trìnhhuấn luyện này (training) thực hiện xong, hệ thống sẽ rút ra được những tham

số để phục vụ cho quá trình nhận dạng.Vì vậy tiếp cận trên diện mạo còn đượcbiết đến với tên gọi tiếp cận theo phương pháp học máy Bài báo cáo tập trungchủ yếu vào quá trình nhận dạng (sau khi đã thực hiện quá trình học)

Về tổng quan, phương pháp HA được xây dựng dựa trên sự kết hợp, lắp ghépcủa 4 thành phần, đó là:

- Các đặc trưng Haar-like: các đặc trưng được đặt vào các vùng ảnh để tính

toán các giá trị của đặc trưng, từ những giá trị đặc trưng này đưa vào bộ phânloại Adaboost ta sẽ xác định được ảnh có khuôn mặt hay không

- Ảnh tích hợp (Integral Image): thực ra đây là một công cụ giúp việc tính

toán các giá trị đặc trưng Haar-like diễn ra nhanh hơn

- Adaboost (Adaptive Boost): bộ phân loại (bộ lọc) hoạt động dựa trên nguyên

tắc kết hợp các bộ phân loại yếu để tạo lên bộ phân loại mạnh Adaboost sửdụng giá trị đặc trưng Haar-like đã tính được để phân loại ảnh là mặt hay khôngphải mặt

- Cascade of Classifiers: bộ phân loại tầng với mỗi tầng là một bộ phân loại

Adaboost, có tác dụng tăng tốc độ phân loại

Trang 4

Như vậy bài toán xác định mặt người trong ảnh cũng chính là bài toán phân loạiảnh thành hai lớp: có mặt hoặc không phải mặt.

2) Tiền xử lí:

Phương pháp HA được thực hiện trên ảnh xám (gray image) Mỗi điểm ảnh(pixel) có giá trị từ 0-255 (không gian màu 8 bit) Ảnh màu sẽ được chuyển vềảnh xám để nhận dạng, việc chuyển đổi này khá đơn giản, được thực hiện bằngmột hàm chuyển đổi và sử dụng với chỉ một câu lệnh trong OpenCV

Sau khi chuyển thành ảnh xám, ảnh lại tiếp tục được chuyển thành “ảnh tíchhợp” (sẽ trình bày ở phần sau) và trong bước đầu tiên của quá trình nhận dạng,các đặc trưng Haar-like sẽ làm việc trực tiếp trên ảnh tích hợp

- Vùng hai mắt sẽ tối hơn vùng má và vùng chán, tức mức xám của vùng này caohơn vượt trội so với hai vùng còn lại

- Vùng giữa sống mũi cũng tối hơn vùng hai bên mũi

- …

Và còn rất nhiều những đặc điểm khác của khuôn mặt và các đặc trưng Haar

like dựa vào các đặc điểm này để nhận dạng

Về tổng quát, các đặc trưng Haar like không chỉ được sử dụng để nhận dạng

khuôn mặt mà có thể dùng để nhận dạng bất kì một đối tượng nào trên ảnh ( thânngười, tay, chân, ô tô, đồ vật,….) Bởi vì cũng giống như khuôn mặt, mỗi đốitượng có những đặc điểm riêng biệt đặc trưng bởi các vùng điểm ảnh, công việccủa đặc trưng Haar-like là tính toán các giá trị tương quan giữa các vùng ảnh đó.Đây chỉ là bước ban đầu về cách áp dụng đặc trưng để phân loại cửa sổ con, chi tiếtcách phân loại của bộ Adaboost và Cascade of Classifiers sẽ trình bày ở mục sau

Trang 5

+ Đặc trưng xung quanh tâm (centured-surrounded features)

Để 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 pixelcủ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)

Trang 6

Vậy khi được đặt lên một vùng ảnh, đặc trưng Haar-like sẽ tính toán và đưa ra giá trị đặc trưng h(x) của vùng ảnh đó.

c) Cách áp dụng đặc trưng haar-like để phát hiện khuôn mặt trong ảnh:

trưng Haar-like để phát hiện khuôn mặt trong ảnh.

Để phát hiện khuôn mặt, hệ thống sẽ cho một cửa sổ con (sub-window) có kíchthước cố định quét lên toàn bộ ảnh đầu vào Như vậy sẽ có rất nhiều ảnh con ứngvới từng cửa sổ con, các đặc trưng Haar-like sẽ được đặt lên các cửa sổ con này để

từ đó tính ra giá trị của đặc trưng Sau đó các giá trị này được bộ phân loại xácnhận xem khung hình đó có phải khuôn mặt hay không

Hình dưới là một ví dụ: khung màu xanh là cửa sổ con, một đặc trưng Haar-likevới kích thước và vị trí đặt như trong hình sau:

Ứng với mỗi một đặc trưng như trên, một bộ phân lớp yếu (weak classifier)

được định nghĩa như sau:

Trong đó:

X : cửa sổ con cần xét

: ngưỡng

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

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

Trang 7

Ta hiểu công thức trên đơn giản như sau: khi giá trị của đặc trưng Haar-like k : tại

cửa sổ con x vượt qua một ngưỡng thì bộ phân lớp sẽ kết luận cửa sổ con x làkhuôn mặt (=1), còn không vượt qua ngưỡng đó thì không là khuôn mặt

Ngưỡng là giá trị đã rút ra sau qua trình huấn luyện bộ phân lớp, sẽ trình bày sau.

Như trong phần đối tượng nhận dạng, ta thấy đặc trưng Haar-like k có kích thước

và vị trí đặt trong cửa sổ con x trên hình sẽ có giá trị rất lớn (vì mức xám ở vùngmắt lớn hơn rất nhiều vùng má ) Giá trị này lớn hơn nhiều với hầu hết các giá trịkhác khi ta di chuyển cửa sổ con x sang các vị trí khác (quét trên toàn ảnh đầuvào), và với ngưỡng phù hợp, kết quả bộ phân lớp ) sẽ cho cửa sổ con ở vị trí nhưtrên là khuôn mặt còn ở vị trí khác thì không

Đương nhiên sẽ có những vị trí khác trên ảnh đầu vào vô tình cho ra vượt ngưỡng

và bộ phân lớp yếu) kết luận đấy là khuôn mặt, nhưng ta không chỉ dùng một đặctrưng Haar-like mà dùng rất nhiều đặc trưng ở những vị trí và kích thước khácnhau trong cửa sổ con làm giảm đi sự trùng hợp ngẫu nhiên

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ínhtổ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ưngHaar-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 run-time ( theo như 2 tác giả là Viola vàJones đã tính toán thì với mỗi cửa sổ con ở kích thước 24 x 24 pixel thì số lượngđầy đủ các đặc trưng haar-like là hơn 160000) Do đó Viola và Jones đưa ra một

khái niệm gọi là Integral Image trong mục tiếp theo để tính toán nhanh cho khác

feature cơ bản

4) Intergral Image: (Ảnh tích hợp)

Viola và Jones đưa ra một khái niệm gọi là Integral Image để tính toán nhanh cho khác feature cơ bản Sau này, Lienhart kế thừa gọi Integral Image là SAT – Summed Area Table và đưa ra thêm khái niệm RSAT – Rotated Summed Area Table dùng để tính toán nhanh cho các đặc trưng xoay 1 góc 45o Integral Image 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êntrá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épcộng số nguyên đơn giản, do đó tốc độ thực hiện rất nhanh

Trang 8

A C

4

1 3 D

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

Sau khi đã tính được Integral Image, việc tính tổng điểm ảnh của một vùngbấ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ínhtổng điểm ảnh của vùng D như trong hình 2):

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

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 2: Ví dụ cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh

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

với các đặc trưng xoay 45 o

Trang 9

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

tính theo công thức:

Tổng pixel của một vùng bất kỳ trên ảnh vẫn được tính theo cách sau:

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

Như vậy tổng các điểm ảnh trong một hình chữ nhật (kể cả trường hợp xoay

45º) bất kì đều có thể được tính nhanh dựa trên integral image tại 4 đỉnh của nó :

Sum (D ) = 4 - 2 – 3 + 1

5) Thuật toán Adaboost:

a) Khái quát về Adaboost:

Kỹ thuật Boosting: nguyên tắc cơ bản của Boosting là kết hợp các bộ phân lớn yếu( hay các bộ phân lớp cơ sở ) để tạo nên bộ phân lớp mạnh Các bộ phân lớp yếunày thậm chỉ chỉ cần nhỉnh hơn phương pháp random một chút Bằng cách này, tanói bộ phân lớp đã được “boost”

Adaboost là 1 thuật toán sử dụng kỹ thuật Boosting được đưa ra bởi Freund vàSchapire vào 1996 Thuật toán này được sử dụng rất phổ biến cho bài toán kỹ thuậtphát hiện khuôn mặt

b) Thuật toán:

Điểm cải tiếng của Adaboost là ta sẽ gán mỗi mẫu 1 trọng số Ý nghĩa của nó nhưsau:

Trang 10

1 Cho một tập gồm n mẫu có đánh dấu (x 1 ,y 1 ), (x 2 ,y 2 ),… (x n ,y n ) với x k ∈ (x k1 , x k2 , … , x km ) là vector đặc trưng và y k ∈ (-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 =

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

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

c)Sơ đồ khối:

Trang 11

Bắt đầu huấn luyện 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 có giá trị lỗi bé nhất Lưu weak classifier được chọn False alarm ≤ max false alarm

Tập các mẫu và trọng số Tập các mẫu

Mẫu sai Mẫu đúng

Cập nhật lại trọng số

Sai Kết thúc, strong classifier đuợc xây dựng

Đú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 1 bộ phân loại h t , 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 h t:

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

Trang 12

Ta thấy tất cả các bộ phân loại h t đề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: h t với α t càng lớn thì nó càng có vài trò quan trọng trong H(x).

Trong công thức tính α t:

Dễ thấy giá trị α t tỉ lệ nghịch với ε t Bởi vì h t đượ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à h t phân loại sai, giảm trọng số các mẫu mà h t phânloạ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à h t+1 sẽ ưu tiên học cách phân loại những mẫu này

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, 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.

6) Mô hình Cascade of classifier:

a) Khái quát:

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 training 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 background rất dễ nhận ra (ta gọi đây là những mẫu background đơ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ânloạ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 13

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

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 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 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 background 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 background 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ý

b) Thuật toán:

Trang 14

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ứ

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 }

Ngày đăng: 03/04/2016, 22:03

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w