Tải bản đầy đủ (.doc) (29 trang)

BÁO CÁO ĐỒ ÁN CƠ SỞ 4 ĐỀ TÀI:NHẬN DIỆN KHUÔN MẶT GIẢNG VIÊN HƯỚNG DẪN:Ths LÊ THỊ BÍCH TRA

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.5 MB, 29 trang )

XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THÔNG TIN VÀ
TRUYỀN THÔNG VIỆT-HÀN

BÁO CÁO ĐỒ ÁN CƠ SỞ 4
ĐỀ TÀI:NHẬN DIỆN KHUÔN MẶT
GIẢNG VIÊN HƯỚNG DẪN:Ths LÊ THỊ BÍCH TRA
SINH VIÊN THỰC HIỆN:NGUYỄN PHAN THÀNH CƠNG

Đà Nẵng, tháng 12 năm 2020
Trang 1


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

MỞ ĐẦU
Hiện nay, cùng với sự phát triển của xã hội, vấn đề án ninh bảo mật đang
được yêu cầu khắt khe ở mọi nơi trên thế giới. Các hệ thống nhận dạng con người
được ra đời với độ tin cậy ngày càng cao. Một trong các bài toán nhận dạng con
người rất được quan tâm hiện nay là nhận dạng khn mặt. Vì nhận dạng khn
mặt là cách cơ bản và dễ dàng nhất mà con người dùng để phân biệt nhau. Bên
cạnh đó, ngày nay việc thu thập, xử lý thông tin qua ảnh để phân biệt đối tượng
đang được quan tâm và ứng dụng rộng rãi. Với phương pháp này, chúng ta có thể
thu nhận được nhiều thông từ đối tượng mà không cần tác nhiều đến đối tượng
nghiên cứu.


Một trong những bài toán được nhiều người quan tâm nhất của lĩnh vực xử
lý ảnh hiện nay đó là nhận dạng khn mặt (Face Recognition). Như chúng ta đã
biết, khn mặt đóng vai trị quan trọng trong q trình giao tiếp giữa người với
người, nó mang một lượng thơng tin giàu có, chẳng hạn như từ khn mặt chúng
ta có thể xác định giới tính, tuổi tác, chủng tộc, trạng thái cảm xúc, đặc biệt là xác
định mối quan hệ với đối tượng (có quen biết hay khơng). Do đó, bài tốn nhận
dạng khn mặt đóng vai trị quan trọng trong nhiều lĩnh vực đời sống hằng ngày
của con người như các hệ thống giám sát, quản lý vào ra, tìm kiếm thơng tin một
người nổi tiếng, …đặc biệt là an ninh, bảo mật. Có rất nhiều phương pháp nhận
dạng khuôn mặt để nâng cao hiệu suất tuy nhiên dù ít hay nhiều những phương
pháp này đang vấp phải những thử thách về độ sáng, hướng nghiêng, kích thước
ảnh, hay ảnh hưởng của tham số môi trường.
Trong khuôn khổ đồ án này, chúng em sẽ tiếp tục giải quyết bài tốn nhận
dạng offline. Trong đó đối tượng được thu thập thành các file dữ liệu và được
chuyển về trung tâm. Tại đó, các số liệu sẽ được phân tích xử lý. Chúng em sẽ lấy
đó làm nền tảng để có thể xây dựng các ứng dụng lớn hơn sau này

Trang 2


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

LỜI CẢM ƠN
Để thực hiện và hồn thành tốt đồ án này, em đã nhận được sự giúp đỡ và hướng
dẫn rất tận tình của các thầy cơ thuộc Khoa Công nghệ Thông tin và Truyền thông – Đại
học Đà Nẵng. Em xin cảm ơn các thầy cô thuộc bộ môn chuyên ngành đã cung cấp cho
chúng em các thông tin, kiến thức vô cùng quý báu và cần thiết trong suốt thời gian quá
để em có thể thực hiện và hồn thành đồ án của mình. Đặc biệt em xin chân thành cảm ơn

cơ Lê Thị Bích Tra người đã trực tiếp hướng dẫn chúng em trong thời gian thực hiện đồ
án này.
Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đã ủng
hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng tơi trong q
trình nghiên cứu và thực hiện đề tài.
Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễn nên đề
tài khơng tránh khỏi những sai sót. Em rất mong nhận được sự thông cảm của quý thầy cơ
và mong đón nhận những góp ý của thầy cô và các bạn.
Em xin chân thành cảm ơn!

Trang 3


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

NHẬN XÉT
CỦA GIÁO VIÊN HƯỚNG DẪN
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
....................................................................................................................................

....................................................................................................................................
....................................................................................................................................
....................................................................................................................................
........................................................
Đà Nẵng, ngày 23 tháng 07 năm 2020
Giảng viên hướng dẫn

Lê Thị Bích Tra

Trang 4


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

MỤC LỤC
Chương 1:..............................................................................................................................7
GIỚI THIỆU VÀ NGHIÊN CỨU TỔNG QUAN............................................................7
1.1 Giới thiệu đề tài:...................................................................................................................7
1.2 Phương pháp thực hiện:.......................................................................................................7
1.3 Các phương pháp nghiên cứu:............................................................................................8
1.4 Ưu điểm, nhược điểm của các phương pháp:..................................................................8
1.5 Kết luận:.................................................................................................................................9
1.6 Cấu trúc đồ án:....................................................................................................................10
Chương 2 :...........................................................................................................................11
CƠ SỞ LÝ THUYẾT.........................................................................................................11
2.1 Tổng quan về Adaboost:....................................................................................................11
2.2 Tiếp cận Boosting:..............................................................................................................11
2.3 Adaboost:.............................................................................................................................12

2.4 Các đặc trưng Haar-Like:..................................................................................................16
2.5 Cascade of Classifiers:.......................................................................................................19
2.6 Cascade of boosting classifiers:.......................................................................................21
Chương 3:............................................................................................................................22
PHÂN TÍCH VÀ XÂY DỰNG HỆ THỐNG..................................................................22
3.1 Sơ lược về OpenCV:..........................................................................................................22
3.2 Tổng quan về một hệ thống phát hiện mặt người trong ảnh:......................................23
3.3 Phân tích – thiết kế hệ thống phát hiện mặt người:......................................................24
3.3.1 Phân tích:..........................................................................................................24
3.3.2 Thiết kế hệ thống:.............................................................................................25
3.3.3 Thiết kế cơ sở dữ liệu:......................................................................................26
3.4 Giao diện chương trình:.....................................................................................................27
KẾT LUẬN..........................................................................................................................29
DANH MỤC TÀI LIỆU THAM KHẢO.........................................................................30

Trang 5


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

MỤC LỤC HÌNH ẢNH
Hình 1: Boosting..................................................................................................12
Hình 2: Đặt trưng Haar-like cơ bản......................................................................15
Hình 3: Cách tính Integral Image của ảnh............................................................17
Hình 4: Ví dụ cách tính nhanh tổng các điểm ảnh của vùng D trên ảnh...............17
Hình 5: 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 450......................................................................................................18
Hình 6: Cascade of classifiers..............................................................................20

Hình 7: Cascade of boosting classifiers...............................................................20
Hình 8: Cấu trúc cơ bản của OpenCV..................................................................22
Hình 9: Tổng quan về hệ thống phát hiện mặt người trong ảnh............................23
Hình 10: Biểu đồ ngữ cảnh của hệ thống..............................................................24
Hình 11: Sơ đồ hệ thống.......................................................................................24
Hình 12: Cơ sở dữ liệu.........................................................................................26
Hình 13: Giao diện tạo mới người dùng...............................................................26
Hình 14: Giao diện lấy dữ liệu.............................................................................27
Hình 15: File dữ liệu lấy được..............................................................................27
Hình 16: Giao diện training..................................................................................28
Hình 17: Giao diện nhận diện người dùng............................................................28

Trang 6


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Chương 1:
GIỚI THIỆU
1.1 Giới thiệu đề tài:
Với sự phát triển không ngừng của khoa học và công nghệ, đặc biệt là các
thiết bị được hỗ trợ công nghệ xử lý ảnh ngày càng hiện đại và được sử dụng phổ
biến trong đời sống con người đã làm cho lượng thơng tin thu được bằng hình ảnh
ngày càng tăng và phổ biến. Theo đó, lĩnh vực xử lý ảnh cũng được chú trọng
phát triển, ứng dụng rộng rãi trong đời sống xã hội hiện đại. Không chỉ dừng lại ở
việc chỉnh sửa, tăng chất lượng hình ảnh mà với cơng nghệ xử lý ảnh hiện nay
chúng ta có thể giải quyết các bài toán nhận dạng chữ viết, nhận dạng dấu vân tay,
đặc biệt là nhận dạng khuôn mặt…

Công nghệ nhân diện khuôn mặt (Facial Recognition Technology) hiện là
một công nghệ đang được sử dụng khá phổ biến tại các quốc gia phát triển. Cơng
nghệ này có khả năng xác định hoặc xác nhận một người từ hình ảnh kỹ thuật số
được lấy mẫu trước đó hoặc từ một khung hình trong một nguồn video khác. Đây
là một phương pháp xác minh độc đáo khi thiết bị sẽ dựa vào những điểm khác
nhau tiêu biểu nhất trên khuôn mặt của một người để tiến hành phân biệt giữa
người này với người khác. Do vậy đối với các trường hợp như song sinh thì người
dùng có thể n tâm rằng máy vẫn sẽ phát hiện ra.Chính vì đặc điểm này thì ngồi
được ứng dụng trong việc quản lý nhân sự ra thì nó cịn là sự lựa chọn của rất
nhiều đơn vị hoạt động trong lĩnh vực an ninh, bảo mật
Xây dựng một dự án phần mềm ứng dụng nhận dạng khuôn mặt nhằm giúp
việc quản lý, điểm danh và thống kê theo từng yêu cầu cho việc điểm danh sinh
viên đi học, ra vào nhà trường. Ngoài ra, giúp sinh viên tìm hiểu về thư viện
OpenCV, tìm hiểu các phương pháp xác định khuôn mặt (Face Detection).
1.2 Phương pháp thực hiện:
- Trước tiên ta phải nêu bài toán, phân tích và thiết kế hệ thống nhận dạng.
- Xây dựng hệ thống sử dụng ngôn ngữ Python và thư viện OpenCV. Hệ
thống lấy mẫu khn mặt bằng camera, sau đó hệ thống trích xuất, phân tích
khn mặt từ hình ảnh hoặc các mẫu được lấy trước đó để so sánh và hệ thống
Trang 7


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

đưa ra kết luận rằng có phải đối tượng được cho phép hay không. Sử dụng công
cụ IDLE Python để lập trình
- Sau đó xây dựng cơ sở dữ liệu SQLite để thống kê, hiển thị dữ liệu, sử
dụng một số cơng cụ để lập trình như Sublime Text, PHPStorm, Pycharm …

1.3 Các phương pháp nghiên cứu:
Hiện nay có hai phương pháp nhận diện khn mặt được sử dụng rộng rãi
nhất là:
- Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt
(Feature based face recognition).
- Nhận dạng dựa trên xét tổng thể khuôn mặt (Appearance based face
recognition).
Ngồi ra cịn có một số phương pháp về loại nhận dạng sử dụng mơ hình
về khn mặt:
- Nhận dạng 2D: Elastics Bunch Graph, Active Appearance Model.
- Nhận dạng 3D: 3D Morphable Model.
1.4 Ưu điểm, nhược điểm của các phương pháp:
1. Nhận dạng dựa trên các đặc trưng của các phần tử trên khuôn mặt:
Đây là phương pháp nhận dạng khuôn mặt dựa trên viện xác định các đặc
trưng hình học của các chi tiết trên một khn mặt (vị trí, diện tích , hình dạng
của mắt, mũi, miệng,...) và mối quan hệ giữa chúng (khoảng cách của hai mắt,
khoảng cách của hai lông mày,...).
Ưu điểm của phương pháp này là nó gần với cách mà con người sử dụng
để nhận biết khuôn mặt. Hơn nữa với việc xác điịnh đặc tính cà mối quan hệ,
phương pháp này có thể cho kết quả tốt trong các trường hợp ảnh có nhiều nhiễu
như bị nghiêng, bị xoay hoặc ánh sáng thay đổi.
Nhược điểm của phương pháp này là cài đặt thuật toán phức tạp do việc
xác định mối quan hệ giữa các đặc tính sẽ khó phân biệt. Mặt khác, với các ảnh
kích thước bé thì các đặc tính sẽ khó phân biệt.
2. Nhận dạng dựa trên xét tổng thể khn mặt:
Đây là phương pháp xem mỗi ảnh có kích thước RxC là một vector trong
khơng gian RxC chiều. Ta sẽ xây dựng một khơng gian mới có chiều nhỏ hơn sao
Trang 8



XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

chi khi biểu diễn trong khơng gian có các đặc điểm chính của một khn mặt
khơng bị mất đi. Trong khơng gian đó, các ảnh cùng một người sẽ được tập trung
lại một nhóm gần nhau và cách xa các nhóm khác.
Ưu điểm của phương pháp này là tìm được các đặc tính tiêu biểu của đối
tượng cần nhận dạng mà không cần phải xác định các thành phần và mối quan hệ
giữa các thành phần đó. Phương pháp sử dụng thuật tốn có thể thực hiện tốt với
các ảnh có độ phân giải cao, thu gọn ảnh thành một ảnh có kích thước nhỏ hơn.
Có thể kết hợp các phương pháp khác như mạng Nơ-ron, Support Vector
Machine.
Nhược điểm của phương pháp này phân loại theo chiều phân bố lớn nhất
của vector. Tuy nhiên, chiều phân bố lớn nhất không phải lúc nào cũng mang lại
hiệu qua tốt nhất cho bài toán nhận dạng và đặc biệt là phương pháp này rất nhạy
với nhiễu.
1.5 Kết luận:
Vì kết quả nghiên cứu cuối cùng là một phần mềm áp dụng vào thực tế với
yêu cầu về độ chính xác cao, khả năng thích ứng linh hoạt, hoạt động ổn định
trong môi trường thực tế và hoạt động với các camera với độ phân giải thấp. Nên
nhóm quyết định chọn phương pháp nhận dạng dựa trên các đặc trưng của các
phần tử trên khuôn mặt (Feature based face recognition).
1.6 Cấu trúc đồ án:
- Nghiên cứu tổng quan.
- Phân tích và thiết kế hệ thống.
- Triển khai xây dựng.
- Kết luận và hướng phát triển.

Trang 9



XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Chương 2
CƠ SỞ LÝ THUYẾT
2.1 Tổng quan về Adaboost:
Học theo adaboost là một cách trong hướng tiếp cận dựa trên diện mạo,
Viola và AdaBoost kết hợp cascade để xác định khuôn mặt người [1] với các đặc
trưng dạng Haar wavelet-like. Tốc độ xử lý khá nhanh và tỷ lệ chính xác hơn 80%
trên ảnh xám.
Thuật tốn học máy Adaboost được phát triển thuật tốn boosting, do đó
chúng em sẽ trình bày sơ lược về thuật tốn boosting trước khi trình bày về
adaboost.
2.2 Tiếp cận Boosting:
Về lịch sử, boosting bắt nguồn từ câu nói nổi tiền được đưa ra bởi Kearns
vào đầu năm 1989: “Liệu có thể tạo ra một strong classifier từ một tệp các bộ
phân loại yếu?”. Năm 1990, Robert Schapire và Simard kiểm nghiệm 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
Schapire và đến năm 1995 thì ơng cùng với Schapire phát triển boosting thành
adaboost.
Như vậy, nguyên lý cơ bản của boosting là sự kết hợp các weak classifiers
thành một strong classifiers. Trong đó, weak classifiers là các bộ phân loại đơn
giản chỉ cần có độ chính xác trên 50%. Bằng cách này, chúng ta nói bộ phân loại
đã được “boost”.
Để 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

(n1tậ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
Trang 10


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

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.

Hình 1: Boosting
2.3 Adaboost:
Như đã biết, 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 weak
classifier dựa trên các đặc trưng Haar- Line để hình thành một strong classifier.
Để 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 q trình huấn luyện, cứ mỗi

weak classifier được xây dựng, thuật toán sẽ tiến hành cập nhật lại trọng số để
Trang 11


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

chuẩn bị cho việc xây dựng weak classifier 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 weak
classifier vừa xây dựng. Bằng cách này, các weak classifier sau có thể tập trung
vào các mẫu mà các weak classifier trước đó chưa thực hiện tốt. Sau cùng các
weak classifier sẽ được kết hợp tùy theo mức độ ‘tốt’ của chúng để tạo nên một
strong classifier.
Các weak classifiers 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)
θk: ngưỡng
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 tố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).

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.

Trang 12


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

 Chọn ra hj với εj nhỏ nhất, ta được ht:
 Cập nhật lại trọng số:

 Trong đó:

Zt: Hệ số dùng để đưa Wt+1 về đoạn [0,1] (normalization factor)
4. Strong classifier được xây dựng:

Sơ đồ khối:

Trang 13


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT


GVHD: Cơ Lê Thị Bích Tra

Q 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 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).
 Trong cơng thức tính αt:

Trang 14


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Dễ thấy 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.
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 q 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.
2.4 Các đặc trưng Haar-Like:
Viola và Jones dùng 4 đặc trưng cơ bản [20] để 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 2: Đặt trưng Haar-like cơ bản
Để áp dụng các đặt trưng này vào việc bài toán xác định mặt người, 4 đặt
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):

Trang 15


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

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

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

đ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ổngvùng đen(pixel) - Tổngvù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 tố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 tốn khá lớn,
khơng đáp ứng được cho các ứng dụng địi hỏi tính run-time. Do đó Viola và
Jones đưa ra một khái niệm gọi là Integral Image để tính tốn nhanh cho các đặc
trưng cơ bản. Sau này, Lienhart kế thừa Integral Image (SAT) và đưa thêm khái
niệm Rotated Summed Area Table (RSAT) dùng để tính tố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ên trái đến vị trí dưới, phải của ảnh, việc tính tố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.

Trang 16


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

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

Trang 17


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Hình 5: 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 450
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
2.5 Cascade of Classifiers:
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ộ
Trang 18


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

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 q 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ý.
Thuật toán Cascade training:
1. Gọi:
F: là giá trị false alarm và d là độ chính xác của weak classifier ở mỗi
stage
Ftarget: Giá trị max false alarm.
P, N: là số lượng mẫu positive và negative.
Pi, Ni: là tập positive và negative cho bộ phân lớp ở tầng thứ i.
Fi, Di: 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 Fi > Ftarget
 i = i+1;
 Huấn luyện bộ phân loại hi từ tập Pi và Ni với detection rate d và
max false alarm f. Thêm hi vào cây phân lớp.
Dùng cây phân lớp hiện có để tính Fi: 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 19


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Minh họa thuật tốn Cascade training:

Hình 6: Cascade of classifiers
Hình 6 minh họa sự huấn luyện của một cascade gồm N stages. Ở mỗi
stage, weak classifier 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.
2.6 Cascade of boosting classifiers:
Cascade of boosting classifiers là mơ hình cascade of classifiers với mỗi
classifier được xây dựng bằng Adaboost sử dụng haar-like.

Hình 7: Cascade of boosting classifiers
Viola và Jones đã sử dụng rất thành cơng cascade of boosting classifiers

cho bài tốn nhận dạng mặt người. Với tập huấn luyện gồm 4196 hình mặt người
được đưa về ảnh grayscale kích thước 24x24 và 9500 hình background, hai ơngđã
xây dựng cấu trúc cascade tree gồm 38 stage với tổng cộng 6060 đặc trưng haarTrang 20


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

like. Thực nghiệm đã cho thấy classifier ở stage đầu tiên sử dụng 2 đặc trưng và
loại được khoảng 50% mẫu background (khơng phải mặt người) và có độ chính
xác là d = 100%. Classifier ở stage thứ 2 sử dụng 10 đặc trưng loại được 80%
mẫu background với độ chính xác vẫn là 100%. Hệ thống này được so sánh với hệ
thống của Rowley-Baluja-Kanade (sử dụng mạng neural), Schneiderman-Kanade
(sử dụng phương pháp thống kê), và cho thấy tỉ lệ nhận dạng là ngang nhau, trong
khi hệ thống của Viola và Jones chạy nhanh hơn đến 15 lần so với hệ thống của
Rowley-Baluja-Kanade và nhanh hơn 600 lần hệ thống của SchneidermanKanade.
Lý do mà cấu trúc cascade đạt tốc độ nhận dạng nhanh chính là nhờ nó
sớm loại bỏ được các mẫu background đơn giản (thường có số lượng lớn hơn
nhiều so với các mẫu chứa 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 tố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
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 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 nhận dạng mặt
người.

Chương 3
PHÂN TÍCH VÀ XÂY DỰNG HỆ THỐNG

Phát hiện mặt người trong ảnh có nhiều ứng dụng trong cuộc sống, tuy
nhiên, trong khóa luận này, chúng em chỉ xây dựng một chương trình nhỏ để minh
họa cho các lý thuyết ở trên. Cụ thể đấy là một chương trình phát hiện mặt người
trong ảnh được viết bằng ngôn ngữ python, sử dụng thư viện mã nguồn mở
OpenCV của Intel.
3.1 Sơ lược về OpenCV:
OpenCV 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ử
Trang 21


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

lý ảnh cũng như Computer vision dùng ngơn ngữ C/C++. Open CV thể hiện sự đa
dạng của trí tuệ nhân tạo. Được ứng dụng nhiều trong các bài tố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 8: Cấu trúc cơ bản của OpenCV
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 …).
3.2 Tổng quan về một hệ thống phát hiện mặt người trong ảnh:


Trang 22


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Hình 9: Tổng quan về hệ thống phát hiện mặt người trong ảnh
Về cơ bản, từ ảnh gốc ban đầu, hệ thống sẽ chia ảnh thành vô số vùng nhỏ
để tính các đặc trưng, sau đấy đưa các đặc trưng. Tiếp theo, chương trình sẽ xác
định các vùng khả quan (các ứng viên) có thể là khn mặt, cuối cùng các ứng
viên này sẽ được đưa vào một bộ phân loại để tiến hành xác định ứng viên nào là
mặt người.
3.3 Phân tích – thiết kế hệ thống phát hiện mặt người:
3.3.1 Phân tích:
Nhiệm vụ chính của chương trình là dị tìm khn mặt từ một bức ảnh, một
file video hoặc từ webcam, sau đấy lưu khuôn mặt vào csdl để phục vụ cho các
mục đích khác (sẽ được phát triển sau).

Trang 23


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

Hình 10: Biểu đồ ngữ cảnh của hệ thống
Như vậy các chức năng chương trình bao gồm:
 Kết nối đến webcam, đọc các file ảnh và video.

 Phát hiện các nhiều khn mặt có trong bức ảnh, video, webcam ...
 Lưu ảnh khuôn mặt được phát hiện vào cơ sở dữ liệu.
 Nhận diện khuôn mặt và thay đổi trạng thái điểm danh.
3.3.2 Thiết kế hệ thống:
Với các chức năng ở trên, chương trình được chia thành thành 3 phần
chính: Phần xử lý đầu vào, phần phát hiện khuôn mặt và phần xử lý đầu ra.

Lấy các
đặc trưng
và huấn
luyện nhận
dạng

Hình 11: Sơ đồ hệ thống

Trang 24


XÂY DỰNG ỨNG DỤNG NHẬN DIỆN KHN MẶT

GVHD: Cơ Lê Thị Bích Tra

a. Xử lý đầu vào:
Chương trình nhận đầu vào là file ảnh, video hoặc webcam, tuy nhiên, việc
phát hiện khuôn mặt được thực hiện trên các bức ảnh, do đó, với đầu vào là
webcam hay file video, ta phải chuyển thành các ảnh tĩnh và xử lý trên từng ảnh
tĩnh. Sau khi đã có ảnh đầu vào rồi thì sẽ chuyển ảnh cho giai đoạn xử lý tiếp
theo, đó là phát hiện các khn mặt có trong ảnh.
b. Phát hiện khn mặt:
Phần này xử lý chính nghiệp vụ của hệ thống. Sau khi có ảnh truyền vào,

hệ thống sẽ thực hiện chức năng phát hiện khn mặt có trong ảnh.
Việc phát hiện khuôn mặt được thực hiện nhanh bằng thuật tốn adaboost
thơng qua hàm cvHaarDetectObjects() của OpenCV. Hàm này thực hiện việc phát
hiện đối tượng dựa trên các đặc trưng haar-like, cụ thể là nhờ vào một bộ Cascade
được truyền vào cho hàm. Bộ Cascade được xây dựng theo dạng cây (tree-node)
và đã được huấn luyện từ trước.
Việc huấn luyện bộ Cascade có thể thực hiện từ những dữ liệu thu thập
được để phục vụ cho quá trình nhận dạng. Ví dụ, muốn nhận dạng một người A,
ta thu thập các ảnh khuôn mặt của người A với nhiều tư thế, góc chụp và điều kiện
chụp khác nhau, sau đấy cho bộ nhận dạng học theo thuật toán Cascade training.
Sau khi đã training xong, hệ thông sẽ lưu lại thành một file có đi .yml, bao gồm
nhiều đặc điểm, nhiều tư thế của người dùng, giúp hệ thống có thể nhận diện
c. Xử lý đầu ra:
Khn mặt sau khi được phát hiện sẽ được tách ra khỏi bức ảnh và lưu
dưới dạng ảnh bitmap với phần mở rộng là *.jpg.
Đối với đầu vào là các file ảnh, dữ liệu đầu ra cũng là file ảnh đấy nhưng
có lưu vị trí khn mặt đã được phát hiện trên bức ảnh, đồng thời tách các riêng
khuôn mặt và lưu vào cơ sở dữ liệu.
Đối với đầu vào là các file video hoặc webcam. Các khuôn mặt sẽ được
tách ra và lưu lại thành các file ảnh riêng rẽ, và được đánh số thứ tự theo tên file
video. Ví dụ như file video test.avi thì ảnh các khn mặt phát hiện được sẽ được
đánh số theo thứ tự như sau: test.avi_1.jpg, test.avi_2.jpg …
3.3.3 Thiết kế cơ sở dữ liệu:
Lưu trữ cơ sở dữ liệu là một phần quan trọng của ứng dụng. Việc xây
dựng, tổ chức cơ sở dữ liệu ảnh hướng lớn đến tốc độ của chương trình. Do đó tôi
Trang 25


×