Phần mềm nhận dạng khuôn mặt sử dụng để phát hiện, nhận dạngkhuôn mặt, đối chiếu so sánh, đưa ra các cảnh báo khi phát hiện sựtrùng khớp giữa khuôn mặt phát hiện được với khuôn mặt mẫu
Trang 1ĐẠI HỌC ĐÀ NẴNGKHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÁO CÁO ĐỒ ÁN 5
ĐỀ TÀI: Ứng dụng nhận diện khuôn mặt
Sinh viên thực hiện : HOÀNG ĐĂNG KHÁNH Lớp : 17IT3
Trang 2Đà nẵng, tháng 07 năm 2020
Trang 3MỞ ĐẦU
1 Lý do chọn đề tài:
Bối cảnh chung:
Việc quản lý thông qua hình thức chấm vân tay tiềm ẩn nhiều bất cập
và rủi ro, nhất là trong thời điểm hiện nay Tại sao lại có nhận định nhưvậy? Hiện nay, dịch Covid – 19 đang ngày càng diễn biến phức tạp, Bộ
Y tế đã đưa ra khuyến cáo để người dân ý thức hơn trong việc bảo vệ sứckhỏe của bản thân và mọi người xung quanh Trong đó, việc tiếp xúc nơicông cộng sẽ gia tăng khả năng lây nhiễm cao hơn
Do đó, việc nhân viên công sở đi làm chấm công bằng vân tay, cưdân vào các tòa nhà, chung cư ấn thang máy bằng tay sẽ tiềm ẩn về nguy
cơ lây nhiễm virus chéo Vì vậy, việc sử dụng hệ thống nhận diện khuônmặt bằng hệ thống AI trong các ứng dụng quản lý sẽ giúp cho việc quản
lý được diễn ra thuận lợi, nhanh chóng và đảm bảo an về sức khỏe
Theo đó, mọi cư dân khi đến các tòa nhà chung cư, nhân viên đi làmtại công ty, doanh nghiệp chỉ cần đưa khuôn mặt của mình trước thiết bị,
và trong vài giây, thiết bị sẽ thu nhận và xử lý thông tin nhanh chóng.Đây thực sự là “giải pháp vàng” không chỉ trong thời điểm dịch Covid –
19 đang bùng phát, mà nó còn là sự lựa chọn thông minh trong thời đạicách mạng 4.0
Công nghệ nhân diện khuôn mặt 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ấymẫu trước đó hoặc từ một khung hình trong một nguồn video khác Vàhiện nay, tại thị trường Việt Nam, công nghệ này đã dần dần được sửdụng tại một số hệ thống cửa hàng, khách sạn-resort
Trang 4 Các phương pháp thực hiện:
Hệ thống sẽ nhận diện khuôn mặt một cách kín đáo bằng cách chụpảnh khuôn mặt của những ai bước vào một khu vực được xác định từcamera giám sát Công nghệ này, không cần sự tương tác (của ngườimuốn vào khu vực) và không có sự chậm trễ Trong nhiều trườnghợp đối tượng hoàn toàn không hay biết gì về quá trình này Họkhông cảm thấy “bị giám sát” hoặc rằng sự riêng tư của họ bị xâmphạm
Phần mềm nhận dạng khuôn mặt sử dụng để phát hiện, nhận dạngkhuôn mặt, đối chiếu so sánh, đưa ra các cảnh báo khi phát hiện sựtrùng khớp giữa khuôn mặt phát hiện được với khuôn mặt mẫu có sẵntrong cơ sở dữ liệu đăng ký trước Toàn bộ quá trình phát hiện, nhậndạng và đối chiếu được tiến hành hoàn toàn tự động, không cần có sựcan thiệp của con người
2 Mục tiêu và nhiệm vụ
Mục tiêu
Trong luận văn này chúng tôi sẽ đưa ra cái nhìn tổng quan cácphương pháp cho các hệ thống giải quyết các vấn đề về nhận diện khuônmặt trong điểm danh các em học sinh cũng như ứng dụng vào quản lí anninh tại các tòa nhà chung cư , bệnh viện , …
Một mục tiêu khác của đề tài sẽ là góp phần nghiên cứu và xâydựng một ứng dụng có khả năng ứng dụng vào thực tế tại Việt Namnhằm ứng dụng CNTT vào trong đời sống trong thời đại cuộc cách mạngcông nghiệp 4.0 hiện nay
Nhiệm vụ
Để thực hiện được mục tiêu trên, đề tài này sẽ nghiên cứu về phương phápnhận dạng khuôn mặt người; các phương pháp, thuật toán nhận dạng đượcphát triển bằng ngôn ngữ lập trình Python tích hợp trên nền tảng thư viện
mã nguồn mở OpenCV
Về lý thuyết
- Tìm hiểu về các phương pháp nhận diện khuôn mặt người được hỗ trợ trên nền tảng thư viện mã nguồn mở OpenCV
Trang 5- Tìm hiểu Labled Faces in the Wild
Về thực tiễn
- Nghiên cứu và xây dựng một chương trình demo có thể nhận dạngcon người và hiển thị thông tin của người đó từ một đoạn video đầu vàohoặc từ camera trực tiếp
3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu
Ngôn ngữ lập trình Python
Thư viện mã nguồn mở OpenCV
Các thư viện , mã nguồn mở Dlib, Face_recognition và Labled Faces
in the Wild
Phạm vi nghiên cứu
Nghiên cứu về các phương pháp và các ứng dụng nhận diện khuôn mặt trên thế giới theo những bài báo và nghiên cứu khoa học và các ứng dụng đang được sử dụng trong thực tế
Chương trình demo sử dụng ngôn ngữ lập Python, thư viện mã nguồn mở OpenCV trên nền tảng hệ điều hành Windows,Ubuntu,
MacOS
4 Phương pháp nghiên cứu
Nghiên cứu lý thuyết
Đọc, phân tích, tổng hợp tài liệu từ những bài báo, các trang thông tin
và những nghiên cứu khoa học liên quan đã được công bố ở Việt Nam vàtrên thế giới
Nghiên cứu thực nghiệm
Nghiên cứu và xây dựng một chương trình mô phỏng lập trình bằng ngôn ngữ lập trình Python và thư viện mã nguồn mở OpenCV
Trang 65 Ý nghĩa khoa học và thực tiễn của đề tài
Ý nghĩa khoa học và thực tiễn đề tài
Về khoa học
Tìm hiểu những bài báo và những nghiên cứu khoa học liên quan đãđược công bố trên thế giới, đề xuất một giải pháp cho việc giải quyết cácvấn đề về nhận diện khuôn mặt mang tính chính xác, nhanh, hiệu quả cao
Về thực tiễn
- Giúp người lập trình có cái nhìn tổng quát các phương pháp có thểứng dụng cho hệ thống giải quyết các vấn đề về bất cập của những ứngdụng nhận diện khuôn mặt trước đó
DANH MỤC CÁC BẢNG
Trang 7Bảng 2.2 13
Trang 8DANH MỤC HÌNH
Trang
Hình 3.1 15
Hình 4.1 17
Hình 4.2 17
Hình 4.3 18
Hình 4.4 18
Hình 4.5 18
Trang 9DANH MỤC CỤM TỪ VIẾT TẮT
4 Face Recognition Grand Challenge FRGC
Trang 10CHƯƠNG 1 NGHIÊN CỨU TỔNG QUAN1.2 BÀI TOÁN PHÁT HIỆN KHUÔN MẶT NGƯỜI
Các phương pháp chính phát hiện mặt người
Dựa vào tính chất của các phương pháp xác định mặt người trên ảnh,các phương pháp này được chia thành bốn loại chính, tương ứng với bốnhướng tiếp cận khác nhau Ngoài ra cũng có rất nhiều nghiên cứu màphương pháp xác định mặt người không chỉ dựa vào một hướng mà có liênquan đến nhiều hướng
- Hướng tiếp cận dựa trên tri thức
- Hướng tiếp cận dựa trên đặc trưng không thay đổi
- Hướng tiếp cận dựa trên so sánh khớp mẫu
- Hướng tiếp cận dựa trên diện mạo
1.3 TỔNG QUAN CÁC KẾT QUẢ NGHIÊN CỨU
Những người tiên phong trong tự động nhận dạng khuôn mặt baogồm Woody Bledsoe, Helen Chan Wolf, và Charles Bisson
Trong năm 1964 và 1965, Bledsoe, cùng với Helen Chan và CharlesBisson, bắt đầu ý tưởng sử dụng máy tính để nhận ra khuôn mặt của conngười Với một cơ sở dữ liệu lớn các hình ảnh (thực tế là một cuốn sách ảnhthẻ) và một bức ảnh, vấn đề là phải lựa chọn từ cơ sở dữ liệu là một tập hợpnhỏ các hồ sơ hình ảnh như vậy có chứa các hình ảnh ăn khớp với bức ảnhđưa ra Sự thành công của phương pháp này có thể được đo bằng tỷ lệ danhsách câu trả lời trên số lượng các hồ sơ trong cơ sở dữ liệu Sau đó Bledsoerời PRI vào năm 1966 Trong các thí nghiệm thực hiện trên một cơ sở dữliệu hơn 2.000 bức ảnh, máy tính luôn vượt trội so với con người khi thểhiện cùng một nhiệm vụ nhận dạng
Trang 11Đến khoảng năm 1997, hệ thống được phát triển bởi Christoph von derMalsburg và các sinh viên sau đại học của trường Đại học Bochum ở Đức
và Đại học Nam California tại Mỹ đã thể hiện vượt trội so với hầu hết các
hệ thống của Viện Công nghệ Massachusetts và Đại học Maryland xếphạng theo sau Phần mềm này được bán với cái tên ZN-Face và sử dụngbởi các khách hàng như Deutsche Bank và các nhà điều hành sân bay vàcác địa điểm đông đúc khác Phần mềm này "đủ mạnh mẽ để nhận dạngđược gương mặt từ các góc nhìn ít lý tưởng hơn Nó cũng thường xuyên cóthể nhận dạng được gương mặt mặc dù có những trở ngại như ria mép, râu,thay đổi kiểu tóc và thậm chí đeo kính râm"
Trong khoảng tháng 1 năm 2007, tìm kiếm hình ảnh đã là "dựa trên
ký tự xung quanh bức ảnh", ví dụ, đoạn văn kế bên đề cập đến các nội dunghình ảnh Công nghệ Polar Rose có thể đoán từ một bức ảnh, trong khoảng1,5 giây, bất kỳ người nào sẽ trông như thế nào trong không gian ba chiều,
và khẳng định rằng họ "sẽ yêu cầu người dùng nhập tên của những người
mà họ nhận ra trong ảnh online" để giúp xây dựng một cơ sở dữ liệuIdentix, một công ty từ Minnesota, đã phát triển một phần mềm là FaceIt.FaceIt có thể nhận ra khuôn mặt của một ai đó trong đám đông và so sánh
nó với cơ sở dữ liệu trên toàn thế giới để nhận dạng và đặt tên cho mộtkhuôn mặt Phần mềm được viết để phát hiện nhiều đặc điểm trên khuônmặt người Nó có thể phát hiện khoảng cách giữa hai mắt, chiều rộng củamũi, hình dạng của xương gò má, độ dài của đường viền của hàm dưới vànhiều đặc điểm khác trên khuôn mặt Nó thực hiện điều này bằng cách đưahình ảnh của khuôn mặt vào một faceprint, một mã số đại diện cho gươngmặt của con người Phần mềm nhận dạng khuôn mặt trước kia thường phảidựa trên một hình ảnh 2D với người cần nhận dạng gần như phải trực tiếp
Trang 12và chuyển đổi nó thành một hình ảnh 2D sử dụng một thuật toán đặc biệt cóthể được quét qua hầu như tất cả các cơ sở dữ liệu
Năm 2006, các thuật toán nhận dạng khuôn mặt mới nhất đã được
đánh giá trong Face Recognition Grand Challenge (FRGC) Hình ảnh
gương mặt, hình ảnh scan gương mặt 3D và ảnh iris độ phân giải cao, được
sử dụng trong các bài kiểm tra Kết quả cho thấy rằng các thuật toán mới làchính xác hơn 10 lần so với các thuật toán nhận dạng khuôn mặt của năm
2002 và chính xác hơn 100 lần so với các thuật toán của năm 1995 Một sốthuật toán đã có thể nhận dạng tốt hơn người tham gia trong việc nhận diệnkhuôn mặt và duy nhất có thể xác định từng người trong các cặp song sinhgiống hệt nhau
Hình ảnh độ phân giải thấp của khuôn mặt có thể được tăng cườngbằng cách sử dụng khuôn mặt ảo giác Các cải tiến cao hơn trong hình có
độ phân giải cao, máy ảnh megapixel trong vài năm gần đây đã giúp giảiquyết vấn đề thiếu độ phân giải
CHƯƠNG 2
CƠ SỞ LÝ THUYẾT2.1 Thư viện Dlib:
Dlib là bộ công cụ C ++ hiện đại chứa các thuật toán và công cụhọc máy để tạo phần mềm phức tạp trong C ++ để giải quyết các vấn đềtrong thế giới thực Nó được sử dụng trong cả ngành công nghiệp và họcthuật trong nhiều lĩnh vực bao gồm robot, thiết bị nhúng, điện thoại di động
và môi trường điện toán hiệu năng cao lớn Cấp phép nguồn mở củaDlib cho phép bạn sử dụng nó trong bất kỳ ứng dụng nào, miễn phí
Trang 13 Rất nhiều chương trình ví dụ được cung cấp
Tôi coi tài liệu là phần quan trọng nhất của thư viện Vì vậy, nếubạn tìm thấy bất cứ điều gì không được ghi lại, không rõ rànghoặc đã hết tài liệu, hãy cho tôi biết và tôi sẽ sửa nó
Thuật toán học máy:
Deep Learning
Máy Vector Hỗ trợ dựa trên SMO thông thường để phân
loại và hồi quy
Các phương pháp giảm thứ hạng để phân loại và hồi quy quy mô lớn
Máy vectơ liên quan để phân loại và hồi quy
Công cụ multiclass classification
Một Multiclass SVM
Một công cụ để giải quyết vấn đề tối ưu hóa liên quan đến các máy vectơ hỗ trợ cấu trúc
Các công cụ cấu trúc SVM để sequence labeling
Các công cụ cấu trúc SVM để giải các assignment problems
Các công cụ SVM cấu trúc để phát hiện đối tượng trong ảnh cũng như các công cụ học sâu hơn mạnh hơn (nhưng chậm hơn) để pháthiện đối tượng
Các công cụ SVM cấu trúc để ghi nhãn các nút trong biểu đồ
Một triển khai SVM-Rank quy mô lớn
Một thuật toán hồi quy RLS kernel trực tuyến
Một thuật toán phân loại SVM trực tuyến
Semidefinite Metric Learning
Một công centroid estimator / trình phát hiện nhân trung tâm nhân trực tuyến và phân loại vector hỗ trợ ngoại tuyến
Các thuật toán phân cụm: linear hoặc kernel k-means, Chinese Whispers, và Newman clustering
Radial Basis Function Networks
Multi layer perceptrons
Trang 14 Một đối tượng hẹn giờ có khả năng tạo ra các sự kiện thường xuyên cách nhau theo thời gian
Threaded objects
Threaded functions
Parallel for loops
Một thread_pool với sự hỗ trợ cho tương lai
Mạng
Thư viện cung cấp API ổ cắm TCP di động và đơn giản
Một đối tượng giúp bạn tạo các máy chủ dựa trên TCP
Các đối tượng iostream và streambuf cho phép các socket TCP tương tác với thư viện iostreams C ++
Một đối tượng máy chủ HTTP đơn giản mà bạn có thể sử dụng
để nhúng máy chủ web vào các ứng dụng của mình
Một thông báo qua đường ống cho liên thread và
inter-process thông tin liên lạc
Một công cụ được sử dụng để thực hiện các thuật toán sử
dụng mô hình tính toán song song hàng loạt (BSP)
Một phân tích cú pháp XML
Một đối tượng có thể thực hiện chuyển đổi cơ sở64
Nhiều lớp container
Hỗ trợ nối tiếp
Nhiều đối tượng quản lý bộ nhớ thực hiện các chiến lược tổng hợp bộ nhớ khác nhau
Một công cụ cho phép bạn dễ dàng gọi C ++ từ MATLAB
Trang 152.2 Labled Faces in the Wild:
Những bộ dữ liệu này được sử dụng cho nghiên cứu máy học và đã
được trích dẫn trong các tạp chí học thuật đánh giá ngang hàng Dữ liệu là
một phần không thể thiếu trong lĩnh vực học máy Những tiến bộ chính
trong lĩnh vực này có thể là kết quả của những tiến bộ trong thuật toán học
tập (như học sâu ), phần cứng máy tính và, ít trực quan hơn, có sẵn các bộ
dữ liệu đào tạo chất lượng cao Bộ dữ liệu đào tạo được dán nhãn chất
lượng cao cho giám sát và bán giám sátCác thuật toán học máy thường khó
sản xuất và tốn kém vì cần nhiều thời gian để dán nhãn dữ liệu Mặc dù
chúng không cần phải được dán nhãn, các bộ dữ liệu chất lượng cao
cho việc học tập không giám sát cũng có thể khó khăn và tốn kém để sản
xuất
Tên bộ dữ liệu Mô tả ngắn gọn
Trường hợp
Định dạng
Nhiệm vụ Đã tạo
Người sáng tạo FERET (công
nghệ nhận
dạng khuôn
mặt)
11338 hình ảnh của 1199 cá nhân ở các vị trí khác nhau
và tại các thời điểm khác
nhau.
11.338 Hình ảnh
Phân loại, nhận diện khuôn mặt
2003
Bộ quốc phòng Hoa Kỳ
1997
J Yang và cộng sự.
FaceScrub
Hình ảnh của các nhân vật công cộng được chau chuốt
từ tìm kiếm hình ảnh.
107.818
Hình ảnh, văn bản
Nhận dạng khuôn mặt
2014
H Ng et al.
Bảng 2.2
Trang 162.3 Face_recognition :
Nhận dạng khuôn mặt là một công nghệ sinh trắc học được sử dụng
để thiết lập một danh tính cá nhân và có khả năng nhận dạng và xác minh duy nhất một người Nó sử dụng một ứng dụng máy tính, còn được gọi là hệ thống nhận dạng khuôn mặt, để trích xuất hình ảnh kỹ thuật số từ hình ảnh, khung hình video hoặc quét 3D và tạo một bản sao, một bộ các phép đo đặc trưng của cấu trúc khuôn mặt, nhận dạng duy nhất một người khuôn mặt cụ thể cho mục đích nhận dạng
và xác thực
Hệ thống nhận dạng khuôn mặt có thể sử dụng hình ảnh 2D / 3D hoặc nguồn cấp dữ liệu video để tạo hình ảnh kỹ thuật số, thiết lập bản in và nhận diện khuôn mặt bằng cách so sánh hình ảnh kỹ thuật
số của nó với bản in trong cơ sở dữ liệu Mỗi khuôn mặt đều có một
số cột mốc của thành phố và hệ thống sẽ đánh dấu những điểm này làđiểm nút của điểm Một khuôn mặt người có thể có tới 80 điểm này Họ đại diện cho các lĩnh vực quan tâm trên khuôn mặt mà hệ thống đo lường
Một số ví dụ về các phép đo này sẽ là, khoảng cách giữa hai mắt, chiều rộng của mũi, độ sâu của hốc mắt và hơn thế nữa Các phép đo này sẽ được lưu trữ trong cơ sở dữ liệu dưới dạng bản in
Khi hệ thống quét một khuôn mặt, nó sẽ so sánh tất cả các phép đo này với các bản ghi, bản in, trong cơ sở dữ liệu
Các hệ thống nhận dạng khuôn mặt sử dụng một thuật toán, chẳng hạn như Kiểm tra nhà cung cấp nhận dạng khuôn mặt, có thể dự đoánliệu có một trận đấu dựa trên các điểm nút gật đầu trên khuôn mặt của một cá nhân hay không
Thông thường, có một quy trình gồm 4 giai đoạn liên quan đến hoạt động của công nghệ này:
Chụp - Một mẫu vật lý hoặc hành vi được hệ thống chụp lại
trong quá trình đăng ký
Trích xuất - Dữ liệu duy nhất được trích xuất từ mẫu và mẫu
được tạo
So sánh - Mẫu sau đó được so sánh với một mẫu mới.
Kết hợp - Hệ thống sau đó quyết định xem tính năng được trích
xuất từ mẫu mới có khớp hay không