MỞ ĐẦUKhuô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ể đã
Trang 1ĐẠ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
Trang 2ĐẠ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
Trang 3MỞ ĐẦ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àikhoản tương ứng của họ cả trong thế giới thực và ảo Các phương pháp khácnhau đã được tạo ra, một phương pháp là Sinh trắc học, bao gồm các số nhậndạ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 quá trình thựchiện nhận diện khuôn 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ăngdị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ánhkhỏ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ácbạn
Trang 4LỜ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ìnhhướ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óichung, 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
Trang 5NHẬN XÉT (Của giảng viên hướng dẫn)
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 6MỤ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 khuôn 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 21
4.1 Form chính 21
4.2 Form thêm sinh viên 22
4.3 Form điểm danh 23
Chương 5 Kết luận và Hướng phát triển 25
5.1 Kết quả đạt được 25
5.2 Hạn chế của đề tài 25
5.3 Hướng phát triển của đề tài 26
Trang 7DANH MỤC HÌNH
Trang
Hình 2-1 Các đặc trưng haar-like cơ bản 12
Hình 2-2 Các đặc trưng haar-like mở rộng 12
Hình 2-3 Thuật toán AdaBoost 14
Hình 2-4 Hình minh họa việc kết hợp các bộ phân loại yếu 15
Hình 2-5 Sơ đồ nhận diện khuôn mặt 15
Hình 3-1 Sơ đồ ngữ cảnh hệ thống 16
Hình 3-2 Sơ đồ thực hiện chương trình 16
Hình 4-1 Hình ảnh Form chính 1 21
Hình 4-2 Hình ảnh Form chính 2 21
Hình 4-3 Hình ảnh Form thêm sinh viên 1 22
Hình 4-4 Hình ảnh Form thêm sinh viên 2 22
Hình 4-5 Hình ảnh Form điểm danh 1 23
Hình 4-6 Hình ảnh Form điểm danh 2 23
Hình 4-7 Hình ảnh Form điểm danh 3 24
Trang 9Chươ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ốnghằ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ạmATM, 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 tuynhiê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ưởngcủ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ônmặ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ểmdanh tự động Chúng em chọn đề tài "Nghiên cứu kỹ thuật nhận dạng khuôn mặtngườ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
Trang 101.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ônngữ C# Là một cross platform NET, một thư viện xử lý hình ảnh mạnh mẽ dànhriêng cho các ngôn ngữ lập trình .NET, cho phép gọi được chức năng củaOpenCV 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 hoàn toà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 MicrosoftWindows, cũng như các trang web, các ứng dụng web và các dịch vụ web VisualStudio 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êntậ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
Trang 11Management System – RDBMS gồm có: databases, datase engine và các chươngtrình ứng dụng dùng để quản lý các bộ phận trong RDBMS và những dữ liệukhác.
Các thành cơ bản trong SQL Server gồm có: Reporting Services, DatabaseEngine, 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ântí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ướidạng support và table Ngoài ra, nó còn có khả năng tự điều chỉnh ví dụ: trả lại tàinguyê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ủamá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 choviệ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 Ngoài ra, bạn còn muốn định dạng dữ liệutrướ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ữngthông tin bổ ích thì coi như không có ý nghĩa gì Chính vì thế, công cụ này ra đờigiú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áchdù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 Ngoài ra, dịch vụ này còn có chứcnă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ênnhiề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 Ngoà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à đánhchỉ 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 SQLServer
Trang 12Chươ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 địnhcá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, LDA), phương pháp tiếp cận dựa trên các đặc điểm cục bộ (local featurebased, như LBP, Gabor wavelets) và phương pháp lai (hybrid, là sự kếthợp của hai phương pháp toàn cục và local feature)
Fisherfaces Phương pháp dựa trên các đặc điểm cục bộ đã được chứng minh là ưu việthơn khi làm việc trong các điều kiện không có kiểm soát và có thể nói rằnglịch sử phát triển của nhận dạng mặt (A never ending story) là sự phát triểncủ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 toán 1-N), và verification (xác thựcdanh tính, bài toán 1-1) Trong bài toán identification, ta cần xác định danhtính của ảnh kiểm tra, còn trong bài toá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ềuphương pháp được đưa ra như sử dụng template matching, neuron network…Chotớ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,
Trang 13mì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ủaViolas 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ưngHaar-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ôngthức sau:
f(x) = Tổng vùng đen (các mức xám của pixel) – Tổng vù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ềuvớ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ớimỗ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ó
Trang 14Cô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ộtvù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) + AVớ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ểmP1 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ậnboosting đượ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ộttrong các classifiers
Trang 15Viola và Jones dùng AdaBoost kết hợp các bộ phân loại yếu sử dụng các đặctrưng Haar-like theo mô hình phân tầng (cascade) như sau:
Hình 2-3 Thuật toán AdaBoost Trong đó, h(k) là các bộ phân loại yếu, được biểu diễn như sau:
với:
Trang 16AdaBoost 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ạimạ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 khuôn mặt
Trang 17Chươ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 khuôn mặt người xem khuôn mặt đó có được biết đến hay chưa Ngoài ra, chương trình còn thực hiện công việc phát hiện, tách các khuôn 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 khuôn mặt
- Xử lí khuôn mặt
- Xử lý đầu ra
- Lưu điểm danh
Hình 3-7 Sơ đồ thực hiện chương trình
Trang 183.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
Trang 193.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
Trang 203.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
Trang 213.2.2.5 Lưu kết quả vào CSDL
Trang 22Chươ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