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

ĐỒ ÁN CƠ SỞ 5 ĐỀ TÀI: NHẬN DIỆN KHUÔN MẶT VÀ ĐIỂM DANH. THS.PHAN THỊ QUỲNH HƯƠNG

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.2 MB, 28 trang )

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

ĐỒ ÁN CƠ SỞ 5
ĐỀ TÀI: NHẬN DIỆN KHUÔN MẶT VÀ ĐIỂM DANH

Giảng viên hướng dẫn : THS.PHAN THỊ QUỲNH HƯƠNG
Sinh viên thực hiện : NGUYỄN HÙNG
NGUYỄN TRƯỜNG PHI
Lớp
: 18CE

Đà nẵng, tháng 5 năm 2020


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

ĐỒ ÁN CƠ SỞ 5
ĐỀ TÀI: NHẬN DIỆN KHUÔN MẶT VÀ ĐIỂM DANH

Đà Nẵng, tháng 5 năm 2020


MỞ ĐẦU
Khuôn mặt là một phần quan trọng của một người, nó được sử dụng để xác định
và phân biệt danh tính của hai hoặc nhiều cá nhân trong thế giới thực. Các bộ


phận khác nhau của cơ thể đã được khai thác trong những năm gần đây, để đảm
bảo rằng chỉ cá nhân hợp pháp mới có quyền truy cập vào tài khoản tương ứng
của họ cả trong thế giới thực và ảo. Các phương pháp khác nhau đã được tạo ra,
một phương pháp là Sinh trắc học, bao gồm các số nhận dạng như vân tay,
đường vân tay, DNA và nhận dạng khuôn mặt, v.v. Tương tự, đề tài này tìm cách
sử dụng một số nhận dạng đặc biệt của sinh trắc học, nhận dạng khuôn mặt.
Trong phạm vi bài báo cáo này chúng em xin được trình bày q trình thực hiện
nhận diện khn mặt qua thư viện emgucv và ngơn ngữ lập trình C#. Cuối cùng,
mặc dù đã cố gắng rất nhiều nhưng do thời gian có hạn, khả năng dịch bệnh và
tìm hiểu tài liệu chưa tốt nên nội dung đồ án này không thể tránh khỏi những
thiếu sót, rất mong được sự chỉ bảo, góp ý của các thầy cơ và các bạn.


LỜI CẢM ƠN
Trong thời gian làm đồ án, chúng em đã nhận được nhiều sự giúp đỡ, đóng góp ý kiến và
chỉ bảo nhiệt tình của thầy cơ và bạn bè.
Em xin gửi lời cảm ơn chân thành đến cô Phan Thị Quỳnh Hương, người đã tận tình
hướng dẫn, chỉ bảo chúng em trong suốt quá trình làm đồ án.
Chúng em cũng xin chân thành cảm ơn các thầy cô giáo trong Khoa CNTT-TT nói chung,
các thầy cơ trong bộ mơn trí tuệ nhân tạo và xử lý ảnh nói riêng đã dạy dỗ cho em kiến
thức về các môn đại cương cũng như các môn chuyên ngành, giúp chúng em có được cơ
sở lí thuyết vững vàng và tạo điều kiện giúp đỡ chúng em trong suốt quá trình học tập.
Cuối cùng, chúng em xin chân thành cảm ơn thầy và bạn bè đã luôn tạo điều kiện, quan
tâm, giúp đỡ, động viên chúng em trong suốt quá trình làm đồ án.


NHẬN XÉT
(Của giảng viên hướng dẫn)

……………………………………………………………………………………

……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………
……………………………………………………………………………………


MỤC LỤC
Chương 1 Cơ sở lý thuyết....................................................................................9
1.1 Tổng quan đề tài...........................................................................................9
1.2 Cơ sở lý thuyết.............................................................................................9
1.2.1 Ngơn ngữ lập trình C#...........................................................................9
1.2.2 Thư viện EmguCV..............................................................................10

1.2.3 Cơng cụ lập trình Visual Studio 2019..................................................10
1.2.4 SQL Server..........................................................................................10
Chương 2 Tổng quan về nhận diện khuôn mặt...............................................12
2.1 Hệ thống xác định khuôn mặt và ứng dụng................................................12
2.1.1 Định nghĩa...........................................................................................12
2.1.2 Một số phương pháp xác định khuôn mặt...........................................12
2.2 Phương pháp nhận diện khuôn mặt của Violas & John..............................12
2.2.1 Các đặc trưng Haar-like......................................................................13
2.2.2 Thuật toán AdaBoost...........................................................................14
2.2.3 Sơ đồ nhận diện khn mặt.................................................................16
Chương 3 Triển khai xây dựng chương trình..................................................17
3.1 Phân tích thiết kế hệ thống.........................................................................17
3.1.1 Phân tích.............................................................................................17
3.1.2 Thiết kế hệ thống.................................................................................17
3.2 Lập trình chức năng...................................................................................18
3.2.1 Thêm sinh viên....................................................................................18
3.2.2 Điểm danh...........................................................................................19
Chương 4 Hình ảnh demo chương trình..........................................................22
4.1 Form chính.................................................................................................22
4.2 Form thêm sinh viên..................................................................................23
4.3 Form điểm danh.........................................................................................24
Chương 5 Kết luận và Hướng phát triển.........................................................26
5.1 Kết quả đạt được........................................................................................26
5.2 Hạn chế của đề tài......................................................................................26
5.3 Hướng phát triển của đề tài........................................................................27


DANH MỤC HÌNH
Trang
Hình 2-1 Các đặc trưng haar-like cơ bản.........................................................13

Hình 2-2 Các đặc trưng haar-like mở rộng......................................................13
Hình 2-3 Thuật tốn AdaBoost.........................................................................15
Hình 2-4 Hình minh họa việc kết hợp các bộ phân loại yếu...........................16
Hình 2-5 Sơ đồ nhận diện khn mặt...............................................................16
Hình 3-6 Sơ đồ ngữ cảnh hệ thống...................................................................17
Hình 3-7 Sơ đồ thực hiện chương trình............................................................17
Hình 4-8 Hình ảnh Form chính 1.....................................................................22
Hình 4-9 Hình ảnh Form chính 2.....................................................................22
Hình 4-10 Hình ảnh Form thêm sinh viên 1....................................................23
Hình 4-11 Hình ảnh Form thêm sinh viên 2.....................................................23
Hình 4-12 Hình ảnh Form điểm danh 1...........................................................24
Hình 4-13 Hình ảnh Form điểm danh 2...........................................................24
Hình 4-14 Hình ảnh Form điểm danh 3...........................................................25


DANH MỤC CỤM TỪ VIẾT TẮT
STT
1
2
3

Cụm từ
Công nghệ thông tin
Cơ sở dữ liệu
Windows Presentation Foundation

Viết tắt
CNTT
CSDL
WPF



Chương 1

Cơ sở lý thuyết

1.1 Tổng quan đề tài
Thừa hưởng những thành tựu về CNTT của nền khoa học kỹ thuật phát triển.
Nhận diện khuôn mặt là một công nghệ được ứng dụng rộng rãi trong đời sống
hằng ngày của con người như các hệ thống giám sát tại các tịa nhà, sân bay, trạm
ATM, hệ thống chấm cơng, điểm danh, camera chống trộm, xác thực danh tính,…
có rất nhiều các 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 thì những phương pháp này đang gặp phải những khó khăn,
thử thách như về độ sáng, hướng nghiêng, kích thước hình ảnh, hay ảnh hưởng
của tham số môi trường.
Với mong muốn đưa ra một cái nhìn tổng quan về phương pháp nhận dạng khuôn
mặt, vận dụng phương pháp nhận dạng khuôn mặt để xây dựng hệ thống điểm
danh tự động. Chúng em chọn đề tài "Nghiên cứu kỹ thuật nhận dạng khuôn mặt
người. Xây dựng hệ thống điểm danh" làm đề tài đồ án.

1.2 Cơ sở lý thuyết
1.2.1 Ngơn ngữ lập trình C#
C# (hay C sharp) là một ngơn ngữ lập trình đơn giản, được phát triển bởi đội ngũ
kỹ sư của Microsoft vào năm 2000. C# là ngơn ngữ lập trình hiện đại, hướng
đốitượng và được xây dựng trên nền tảng của hai ngôn ngữ mạnh nhất là C++ và
Java.
C# với sự hỗ trợ mạnh mẽ của .NET Framework giúp cho việc tạo một ứng dụng
Windows Forms hay WPF, phát triển game, ứng dụng Web, ứng dụng Mobile trở
nên rất dễ dàng.
Đặc trưng của ngơn ngữ lập trình C#:

-

C# là ngơn ngữ đơn giản

-

C# là ngôn ngữ hiện đại

-

C# là ngôn ngữ lập trình thuần hướng đối tượng

-

C# là ngơn ngữ lập trình ít từ khóa


1.2.2 Thư viện EmguCV
EmguCV là một thư viện xử lý hình ảnh, thị giác máy tính dành riêng cho ngơn
ngữ C#. Là một cross platform .NET, một thư viện xử lý hình ảnh mạnh mẽ dành
riêng cho các ngơn ngữ lập trình .NET, cho phép gọi được chức năng của
OpenCV. Có thể tương thích ngơn ngữ như: C#, VB, VC ++, Iron Python. Có thể
chạy trên Windows, Linux, Mac OS X, iOS, Android và Windows Phone.
Các lợi thể của EmguCV:
-

EmguCV được viết hồn tồn bằng C#, có thể chạy trên mọi nền tảng

-


EmguCV có thể được sử dụng với nhiều ngôn ngữ khác nhau

-

Nhận dạng ảnh: nhận dạng khuôn mặt, các vật thể, ...

-

Xử lý ảnh: khử nhiễu, điều chỉnh độ sáng, ...

-

Nhận dạng cử chỉ.

-

Hỗ trợ tài liệu XML và intellisense.

-

Có thể sử dụng class Image hoặc gọi thẳng xuống các hàm của OpenCV.

1.2.3 Cơng cụ lập trình Visual Studio 2019
Microsoft Visual Studio là một môi trường phát triển tích hợp (IDE) từ Microsoft.
Nó được sử dụng để phát triển chương trình máy tính cho Microsoft Windows,
cũng như các trang web, các ứng dụng web và các dịch vụ web. Visual Studio sử
dụng nền tảng phát triển phần mềm của Microsoft như Windows API, Windows
Forms, Windows Presentation Foundation, Windows Store và Microsoft
Silverlight. Nó có thể sản xuất cả hai ngôn ngữ máy và mã số quản lý.
Visual Studio hỗ trợ nhiều ngơn ngữ lập trình khác nhau và cho phép trình biên

tập mã và gỡ lỗi để hỗ trợ (mức độ khác nhau) hầu như mọi ngôn ngữ lập trình.
Các ngơn ngữ tích hợp gồm có C,[4] C++ và C++/CLI (thông qua Visual C++),
VB.NET (thông qua Visual Basic.NET), C# (thông qua Visual C#) và F# (như
của Visual Studio 2010[5]). Hỗ trợ cho các ngôn ngữ khác như J++/J#, Python và
Ruby thơng qua dịch vụ cài đặt riêng rẽ. Nó cũng hỗ trợ XML/XSLT,
HTML/XHTML, JavaScript và CSS.
1.2.4 SQL Server
SQL Server chính là một hệ quản trị dữ liệu quan hệ sử dụng câu lệnh SQL để
trao đổi dữ liệu giữa máy cài SQL Server và máy Client. Một Relational Database


Management System – RDBMS gồm có: databases, datase engine và các chương
trình ứng dụng dùng để quản lý các bộ phận trong RDBMS và những dữ liệu
khác.
Các thành cơ bản trong SQL Server gồm có: Reporting Services, Database
Engine, Integration Services, Notification Services, Full Text Search Service,…
Tất cả kết hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc phân
tích và lưu trữ dữ liệu trở nên dễ dàng hơn.
Database Engine: Đây là một engine có khả năng chứa dữ liệu ở các quy mô dưới
dạng support và table. Ngồi ra, nó cịn có khả năng tự điều chỉnh ví dụ: trả lại tài
nguyên cho ệ điều hành khi một user log off và sử dụng thêm các tài nguyên của
máy khi cần.
Integration Services: là tập hợp các đối tượng lập trình và các cơng cụ đồ họa cho
việc sao chép, di chuyển và chuyển đổi dữ liệu. Khi bạn làm việc trong một cơng
ty lớn thì dữ liệu được lưu trữ ở nhiều nơi khác nhau như được chứa trong:
Oracle, SQL Server, DB2, Microsoft Access,… và bạn chắc chắn sẽ có nhu cầu di
chuyển dữ liệu giữa các server này. Ngồi ra, bạn cịn muốn định dạng dữ liệu
trước khi lưu vào database.
Analysis Services: Đây là một dịch vụ phân tích dữ liệu rất hay của Microsoft.
Dữ liệu khi được lưu trữ vào trong database mà bạn khơng thể lấy được những

thơng tin bổ ích thì coi như khơng có ý nghĩa gì. Chính vì thế, cơng cụ này ra đời
giúp bạn trong việc phân tích dữ liệu một cách hiệu quả và dễ dàng bằng cách
dùng kỹ thuật khai thác dữ liệu – datamining và khái niệm hình khối nhiều chiều
– multi dimendion cubes.
Notification Services: Dịch vụ thông báo này là nền tảng cho sự phát triển và
triển khai các ứng dụng soạn và gửi thông báo. Ngồi ra, dịch vụ này cịn có chức
năng gửi thông báo theo dịch thời đến hàng ngàn người dăng ký sử dụng trên
nhiều loại thiết bị khác nhau.
Reporting Services: là một công cụ tạo, quản lý và triển khai báo cáo bao gồm:
server và client. Ngồi ra, nó cịn là nền tảng cho việc phát triển và xây dựng các
ứng dụng báo cáo.
Full Text Search Service: là một thành phần đặc biệt trong việc truy vấn và đánh
chỉ mục dữ liệu văn bản không cấu trúc được lưu trữ trong các cơ sở dữ liệu SQL
Server.


Chương 2

Tổng quan về nhận diện khuôn mặt

2.1 Hệ thống xác định khuôn mặt và ứng dụng
2.1.1 Định nghĩa
Xác định khuôn mặt người (Face Detection) là một kỹ thuật máy tính để xác định
các vị trí và các 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ể…
2.1.2 Một số phương pháp xác định khuôn mặt
Trên thực tế người ta hay chia các phương pháp nhận dạng mặt ra làm 3 loại:
-


phương pháp tiếp cận toàn cục (global, như Eigenfaces-PCA, FisherfacesLDA), phương pháp tiếp cận dựa trên các đặc điểm cục bộ (local feature
based, như LBP, Gabor wavelets) và phương pháp lai (hybrid, là sự kết
hợp của hai phương pháp toàn cục và local feature).

-

Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việt
hơn khi làm việc trong các điều kiện khơng có kiểm sốt và có thể nói
rằng lịch sử phát triển của nhận dạng mặt (A never ending story) là sự phát
triển của các phương pháp trích chọn đặc trưng (feature extractrion
methods) được sử dụng trong các hệ thống dựa trên feature based.

-

Các ứng dụng cụ thể của nhận dạng mặt dựa trên 2 mơ hình nhận dạng:
identification (xác định danh tính, bài tốn 1-N), và verification (xác thực
danh tính, bài tốn 1-1). Trong bài tốn identification, ta cần xác định danh
tính của ảnh kiểm tra, cịn trong bài tốn verification ta cần xác định 2 ảnh
có cùng thuộc về một người hay không.

2.2 Phương pháp nhận diện khuôn mặt của Violas & John
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, neuron network…Cho
tới nay bài toán này hầu như được giải quyết dựa trên phương pháp sử dụng các
đặc trưng haar like. Phương pháp này được cho là đơn giản và kết quả phát hiện
là tương đối cao, lên tới 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. Và trong bài viết này,


mình sẽ cùng các bạn tìm hiểu về phương pháp pháp phát hiện khuôn mặt của

Violas và John được cài đặt trong OpenCV.
2.2.1 Các đặc trưng Haar-like
Đặc trưng Haar Like được tạo thành bằng việc kết hợp các hình chữ nhật đen,
trắng với nhau theo một trật tự, một kích thước nào đó. Hình dưới đây mơ tả 4
đặc trưng Haar Like cơ bản như sau:

Hình 2-1 Các đặc trưng haar-like cơ bản

Để sử dụng các đặc trưng này vào việc xác định khuôn 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:

Hình 2-2 Các đặc trưng haar-like mở rộng

Dùng các đặc trưng trên, ta có thể tính được các giá trị của đặc trưng Haar-Like là
sự chênh lệch giữa tổng của các pixel của vùng đen và vùng trắng như trong công
thức sau:

f(x) = Tổngvùng đen(các mức xám của pixel) – Tổngvùng trắng(các mức xám của pixel)

Viola và Joines đưa ra một khái niệm gọi là Integral Image, là một mảng 2 chiều
với kích thước bằng với kích thước của ảnh cần tính đặ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ó.


Cơng thức tính Intergral Image:

Sau khi tính được Integral Image, việc tính tổng các giá trị mức xám 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 giá trị mức xám của vùng D như hình dưới, ta có thể tính

được như sau:
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:

2.2.2 Thuật toán AdaBoost
AdaBoost 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 cũng hoạt
động trên nguyên tắc kết hợp tuyến tính các weak classifiers để hình thành một
trong các classifiers.


Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặc
trưng Haar-like theo mơ hình phân tầng (cascade) như sau:

Hình 2-3 Thuật tốn AdaBoost

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

với:


AdaBoost sẽ kết hợp các bộ phân loại yếu thành bộ phân loại mạnh như sau:

Đây là hình ảnh minh họa việc kết hợp các bộ phân loại yếu thành bộ phân loại
mạnh

Hình 2-4 Hình minh họa việc kết hợp các bộ phân loại yếu


2.2.3 Sơ đồ nhận diện khuôn mặt

Hình 2-5 Sơ đồ nhận diện khn mặt


Chương 3

Triển khai xây dựng chương trình

3.1 Phân tích thiết kế hệ thống
3.1.1 Phân tích
Nhiệm vụ chính của chương trình là nhận dạng một khn mặt người xem khn
mặt đó có được biết đến hay chưa. Ngồi ra, chương trình cịn thực hiện cơng
việc phát hiện, tách các khn mặt người (nếu có) từ một ảnh tĩnh, hoặc từ các
frame ảnh thu được từ camera. Sau đó, lưu vào CSDL làm tập mẫu.

Hình 3-6 Sơ đồ ngữ cảnh hệ thống

3.1.2 Thiết kế hệ thống
Chương trình sẽ có các phần chính như sau:
-

Xử lý ảnh đầu vào.

-

Phát hiện khn mặt.

-


Xử lí khn mặt

-

Xử lý đầu ra

-

Lưu điểm danh

Hình 3-7 Sơ đồ thực hiện chương trình


3.2 Lập trình chức năng
3.2.1 Thêm sinh viên
3.2.1.1 Mở camera và Phát hiện khuôn mặt

3.2.1.2

Nhận diện khuôn mặt

3.2.1.3

Thêm vào CSDL


3.2.2

Điểm danh
3.2.2.1 Khởi tạo danh sách lưu tên sinh viên được nhận diện


3.2.2.2

Phát hiện khuôn mặt


3.2.2.3 Nhận diện khuôn mặt

3.2.2.4 Kiểm tra khuôn mặt được nhận dạng


3.2.2.5 Lưu kết quả vào CSDL


Chương 4

Hình ảnh demo chương trình

4.1 Form chính

Hình 4-8 Hình ảnh Form chính 1

Hình 4-9 Hình ảnh Form chính 2


4.2 Form thêm sinh viên

Hình 4-10 Hình ảnh Form thêm sinh viên 1

Hình 4-11 Hình ảnh Form thêm sinh viên 2



4.3 Form điểm danh

Hình 4-12 Hình ảnh Form điểm danh 1

Hình 4-13 Hình ảnh Form điểm danh 2


Hình 4-14 Hình ảnh Form điểm danh 3


×