HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------
NGUYỄN ANH XUÂN
NGHIÊN CỨU MỘT SỐ PHƢƠNG PHÁP NHẬN DẠNG KHUÔN MẶT
TRONG ẢNH VÀ ỨNG DỤNG
CHUYÊN NGÀNH :
MÃ SỐ:
HỆ THỐNG THÔNG TIN
8480104
TÓM TẮT LUẬN VĂN THẠC SĨ
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. NGUYỄN ĐÌNH HÓA
HÀ NỘI - 2018
Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS. NGUYỄN ĐÌNH HÓA
Phản biện 1:
……………………………………………………………………………
Phản biện 2:
…………………………………………………………………………..
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện
Công nghệ Bưu chính Viễn thông
Nguyễn Đình Hóa, tôi đã chọn đề tài “Nghiên cứu một số phương pháp phát hiện
khuôn mặt trong ảnh và ứng dụng” làm đề tài luận văn tốt nghiệp.
Ngoài phần mở đầu và kết luận, nội dung chính của luận văn được trình bày trong 3
chương:
Chƣơng I. Tổng quan về phát hiện khuôn mặt.
2
Trình bày các khái niệm cơ bản về xử lý ảnh, giới thiệu về bài toán phát hiện
khuôn mặt trong ảnh, các phương pháp tiêu biểu trong phát hiện khuôn mặt, những
khó khăn thách thức của bài toán phát hiện khuôn mặt và ứng dụng của nó trong thực
tế.
Chƣơng II. Phát hiện khuôn mặt sử dụng Adaboost.
Trình bày phương pháp trích chọn đặc trưng khuôn mặt Haar-like, nêu những
ưu điểm vượt trội cũng chính là lý do để lựa chọn thuật toán AdaBoost trong phát
hiện khuôn mặt. Trình bày các ý tưởng chính của thuật toán.
Chƣơng III. Thực nghiệm và đánh giá.
Giới thiệu môi trường thực nghiệm, cách thức thu thập, tổ chức và xử lý dữ
liệu, cài đặt thuật toán AdaBoost và tiến hành thực nghiệm phát hiện khuôn mặt trên
các bộ dữ liệu thu thập được và đánh giá kết quả đạt được.
3
Chương I: TỔNG QUAN VỀ PHÁT HIỆN KHUÔN MẶT
1.1. Một số kiến thức cơ bản trong xử lý ảnh
1.1.1. Xử lý ảnh là gì?
Những năm gần đây, với sự phát triển của phần cứng máy tính, xử lý ảnh và đồ
hoạ theo đó phát triển một cách mạnh mẽ và có nhiều ứng dụng trong cuộc sống. Xử
c. Support Vector Machine (SVM)\
d. Mạng lọc thưa (SNoW)
e. Mô hình Markov ẩn (HMM)
f. Phân loại Bayes
1.3.5. Phương pháp tiếp cận dựa vào đặc trưng 3D
5
Chương II: PHÁT HIỆN KHUÔN MẶT SỬ DỤNG ADABOOST
2.1. AdaBoost và bài toán hát hiện mặt người thời gian thực
Riêng phương pháp AdaBoost cho kết quả khả quan khi phát hiện mặt người
trong thời gian thực vì có thể xử lý đến khoảng 15-20 khung hình trong một giây.
Đây là phương pháp có tốc độ xử lý nhanh nhất trong tất cả các phương pháp học
máy. Trong luận văn, em sử dụng phương pháp này để giải quyết bài toán.
2.2. Trích chọn đặc trưng mặt người Haar-like
Trong luận văn này, em sử dụng đặc trưng đơn giản là đặc trưng Haar-like [6,
7, 8]. Đặc trưng Haar-like cũng là đặc trưng được sử dụng trong thuật toán AdaBoost
sẽ trình bày ở mục sau. Đặc trưng này được xây dựng từ các hình chữ nhật có kích
thước bằng nhau, dùng để tính độ chênh lệch giữa các giá trị điểm ảnh trong các vùng
kề nhau. Mỗi đặc trưng Haar-like là sự kết hợp gồm 2 hoặc 3 khối chữ nhật mang giá
trị “đen” hoặc “trắng”. Những khối chữ nhật này thể hiện sự liên hệ tương quan giữa
các bộ phận trong ảnh mà bản thân từng giá trị pixel không thể diễn đạt được.
Hình 2.1: Đặc trưng Haar-like cơ bản
Để áp dụng vào bài toán phát hiện mặt người, đặc trưng haar-like được mở
rộng ra và được chia thành 3 tập đặc trưng như sau:
(1). Đặc trưng theo cạnh
P1. Vậy ta có thể viết lại biểu thức tính D ở trên như sau:
D = P4- P2 - P3 + P1 = (x4, y4) - (x2, y2) - (x3, y3) + (x1, y1)
7
A
P1
C
B
P2
D
P3
P4
Hình 2.4: Ví dụ cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh
B A C
1
2
D
3
4
3. Xây dựng T phân loại yếu
Lặp t = 1, …, T
Với mỗi đặc trưng trong vector đặc trưng, xây dựng một phân loại yếu hj
với ngưỡng θj và lỗi εj.
n
j wt ,k | h j ( xk ) y k |
k
Chọn ra hj với εj nhỏ nhất, ta được ht:
ht : X {1, 1}
Cập nhật lại trọng số:
wt 1,k
e t , ht ( xk ) y k
t
Zt
e , ht ( xk ) y k
wt ,k
Trong đó:
- Ftarget: false positive rate lớn nhất chấp nhận được của cascade.
Bước 2: Khởi gán
- P = tập các mẫu là khuôn mặt (positive)
- N = tập các mẫu không phải là khuôn mặt (negative)
- F0 = 1.0; D0 = 1.0
- i = 0. //Chỉ số của bộ phân lớp trong cascade.
Bước 3:Trong khi mà Fi> Ftarget:
- i = i +1.
//Xây dưng bộ phân lớp thứ i trong cascade.
- ni = 0. //Số bộ phân lớp yếu của bộ phân lớp thứ i
10
- Fi = Fi-1.
Trong khi mà Fi> f * Fi-1
ni = ni + 1.
Thuật toán Adaboost: Dùng bộ P và N để huấn luyện 1 bộ phân lớp
với ni đặc trưng (ni bộ phân lớp yếu.)
Tính Fi và Di của cascade hiện tại thông qua validation set.
Trong luận văn, em sưu tập các dữ liệu ảnh tĩnh chứa khuôn mặt với các bộ dữ
liệu sau:
Bao Face Database (gồm 400 ảnh chứa một và nhiều khuôn mặt)
Caltech Faces 1999 Database (gồm 7092 ảnh chứa một hoặc nhiều khuôn mặt)
Face Detection DataSet and Benchmark, University of Massachusetts Amherst (gồm trên 10.000 ảnh chứa khuôn mặt các loại)
BioID-FaceDatabase-V1 (chứa 452 ảnh chứa một khuôn mặt) [9].
Tổng cộng có khoảng gần 20.000 ảnh khuôn mặt (cá nhân và tập thể) được sưu tập
trong luận văn.
Đối với dữ liệu khuôn mặt trong file video, em thu thập dữ liệu bao gồm NRCIIT Facial Video Database từ [8] với 24 video có độ phân giải thấp (160x120,
320x240) , thời lượng trung bình từ 10-20 giây (tổng số frame khoảng 300), file dạng
đuôi .AVI với tốc độ 20fps, 06 video tự quay trong thực tế với độ phân giải cao, định
dạng MP4, 02 video thu thập từ internet khác, định dạng .MPG
Thuật toán học với AdaBoost đòi hỏi ngoài tập ảnh chứa khuôn mặt (Positive)
còn cần các tập ảnh không chứa khuôn mặt hay còn gọi là ảnh nền (Negative). Tập
12
ảnh negative được sưu tầm trên Internet với 3364 ảnh, gồm các nền ảnh từ đơn giản
tới phức tạp.
Tất cả các ảnh thu thập được đều được xử lý chuyển về định dạng .bmp và
đánh tên theo tứ tự tăng dần, gợi nhớ để tiện trong việc quản lý dữ liệu và tiến hành
thực nghiệm, đánh giá.
3.2.3. Huấn luyện phát hiện khuôn mặt trong ảnh
Để hỗ trợ người dùng dễ dàng tiếp cận hơn với các kỹ thuật phát hiện đối
tượng, OpenCV đã cung cấp một bộ công cụ rất mạnh mẽ hỗ trợ quá trình huấn luyện
để phát hiện đối tượng trong ảnh với tên gọi HaarKit. HaarKit bao gồm các công cụ
sau:
create_list.bat; ObjectMarker.exe;
số tầng >22 thì số khuôn mặt bị loại bỏ là tương đối nhiều (chương trình lọc cả các
khuôn mặt vì tưởng nhầm là background). Với số tầng là 20 em nhận thấy chương
trình cho kết quả với độ chính xác cao nhất.
3.2.4. Phát hiện khuôn mặt với OpenCV
Để sử dụng file “output.xml” cho việc phát hiện khuôn mặt, trong ứng
dụng em sử dụng các hàm (cv::CascadeClassifier*) load("output.xml") để load dữ
liệu đã được huấn luyện ở phần trước.
Một số kết quả của chương trình:
Hình 3.20: Giao diện chính của ứng dụng.
14
Hình 3.21: Ví dụ về phát hiện một khuôn mặt trong ảnh.
Hình 3.22: Ví dụ về phát hiện nhiều khuôn mặt trong ảnh (4 khuôn mặt).
15
Hình 3.23: Ví dụ về phát hiện thiếu khuôn mặt trong ảnh (thiếu 3/17 khuôn mặt).
Hình 3.24: Ví dụ về phát hiện thừa khuôn mặt trong ảnh (thừa 1 khuôn mặt).
16
3.3. Các kết quả đạt được và đánh giá
(%)
thực tế
1
2
Bao
Face
Database
Caltech_WebFa
ces Database
200
1215
250
356
300
476
150
315
41
12
(88,48%)
(11,52%)
(3.37%)
450
26
18
(94,53%)
(5,47%)
(3.78%)
142
8
3
ảnh
3
(1.2%)
17
(không
chứa
khuôn mặt)
Tổng số
1150
2197
2059
138
61
(93,7%)
(6,3%)
(2.7%)
giảm chất lượng video xuống (kích thước nhỏ) thì chương trình có thể đáp ứng phát
hiện khuôn mặt trong thời gian thực.
Hướng phát triển
Tuy vậy, luận văn vẫn còn một số hạn chế như chương trình cho kết quả chưa
cao đối với các khuôn mặt chụp nghiêng một góc quá lớn và chị che khuất nhiều. Tốc
độ phát hiện khuôn mặt chậm đối với các video có độ phân giải cao (kích thước
khung hình lớn), chưa đáp ứng được trong thời gian thực. Luận văn mới chỉ dừng lại
ở mức phát hiện khuôn mặt chứ chưa đề cập đến vấn đề nhận dạng khuôn mặt. Trong
thời gian tới, em sẽ nghiên cứu thêm để khắc phục các hạn chế trên. Ngoài ra, em
cũng sẽ tìm hiểu để tích hợp các nội dung đã nghiên cứu được vào hệ thống nhận
dạng khuôn mặt.
Do thời gian thực hiện không nhiều nên chắc chắn luận văn không thể tránh
khỏi những hạn chế và thiếu sót. Em rất mong nhận được các ý kiến đóng góp của
các thầy cô và các bạn đọc để luận văn ngày một hoàn thiện hơn.
19
Xin chân thành cảm ơn!
20
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. PGS.TS Nguyễn Quang Hoan (2006). Xử lý ảnh. Học viện Công nghệ Bưu chính
Viễn Thông.
[2]. Trần Văn Minh (2013). Phát hiện mặt người trong ảnh dựa vào đặc trưng 3D.
Khoa Công nghệ Thông tin – Đại học Lạc Hồng.
Tiếng Anh