So với nhận dạng vân tay và mống mắt, nhận dạng mặt có nguồn dữ liệu phong phú hơn bạn có thể nhìn thấy mặt người ở bất cứ tấm ảnh, video clip nào liên quan tới con người trên mạng và ít
Trang 1ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA -
NGUYỄN VĂN THƠ
Trang 2Công trình được hoàn thành tại TRƯỜNG ĐẠI HỌC BÁCH KHOA
Người hướng dẫn khoa học: TS Nguyễn Duy Nhật Viễn
Phản biện 1: TS Ngô Minh Trí
Phản biện 2: TS Ngô Văn Sỹ
Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt
nghiệp thạc sĩ kỹ thuật điện tử tại Trường Đại học Bách khoa vào
ngày 25 tháng 10
Có thể tìm hiểu luận văn tại:
Trung tâm Học liệu và truyền thông, Trường Đại học Bách khoa - ĐHĐN
Thư viện Khoa Điện tử - viễn thông, Trường Đại học Bách khoa - ĐHĐN
Trang 3MỞ ĐẦU
1 Tính cấp thiết của đề tài
Nhận dạng mặt người (Face recognition) là một lĩnh vực nghiên cứu của ngành Computer Vision, và cũng được xem là một lĩnh vực nghiên cứu của ngành Biometrics (tương tự như nhận dạng vân tay – Fingerprint recognition, hay nhận dạng mống mắt -Iris recognition) Xét về nguyên tắc chung, nhận dạng mặt có sự tương đồng rất lớn với nhận dạng vân tay và nhận dạng mống mắt, tuy nhiên sự khác biệt nằm ở bước trích chọn đặt trưng (feature extraction) của mỗi lĩnh vực Trong khi nhận dạng vân tay và mống mắt đã đạt tới độ chín, tức là có thể áp dụng trên thực tế một cách rộng rãi thì nhận dạng mặt người vẫn còn nhiều thách thức và vẫn là một lĩnh vực nghiên cứu thú vị với nhiều người So với nhận dạng vân tay và mống mắt, nhận dạng mặt có nguồn dữ liệu phong phú hơn (bạn có thể nhìn thấy mặt người ở bất cứ tấm ảnh, video clip nào liên quan tới con người trên mạng) và ít đòi hỏi sự tương tác có kiểm soát hơn (để thực hiện nhận dạng vân tay hay mống mắt, dữ liệu input lấy từ con người đòi hỏi có sự hợp tác trong môi trường có kiểm soát)
Nhận dạng khuôn mặt được ứng dụng rất rộng rãi trong đời sống hằng ngày của con người, như các hệ thống bảo mật, an ninh, giám sát, quản lý vào ra, tìm kiếm thông tin, ứng dụng trong mạng xã hội như Facebook, google… Vì vậy nhận dạng khuôn mặt được nhiều nhóm nghiên cứu, công ty công nghệ lớn trên thế giới quan tâm Thêm nữa cùng với sự ra đời và phát triển bùng nổ của khoa học máy tính, nhận dạng khuôn mặt đang đòi hỏi nhiều yêu cầu cao
về kết quả, độ tin cậy, tính bảo mật
Hiện nay, tất cả các thuật toán nhận diện khuôn mặt được phát
Trang 4triển phần lớn đều dựa trên nền tảng hệ thống xử lý tín hiệu số DSP (Digital Signal Processing) với lượng tài nguyên tính toán rất lớn và giá thành cao, vì vậy khó có thể tích hợp vào các hệ thống nhận dạng yêu cầu giá thành thấp Để giải quyết vấn đề này, luận văn hướng đến nghiên cứu nhận dạng khuôn mặt trên máy tính nhúng Raspberry
Pi, với đặc trưng là tài nguyên tính toán giới hạn nhỏ gọn, giá thành thấp nhưng vẫn đảm bảo độ chính xác
Khi trí tuệ nhân tạo AI và Internet vạn vật (IoT) đang phát triển mạnh mẽ, cùng với đó là các thiết bị thông minh ngày càng
có sẵn cho người tiêu dùng, nhu cầu về một hệ thống kết nối nhận dạng khuôn mặt với các tiện ích thông minh trở nên phổ biến thì máy tính nhúng Raspberry là một trong những lựa chọn phù hợp
và hiệu quả cao
2 Mục đích nghiên cứu
Luận văn xây dựng hệ thống nhận dạng khuôn mặt trên máy tính nhúng Raspberry Pi 3 sử dụng thư viện mã nguồn mở OpenCV Thông qua việc nghiên cứu lý thuyết và thực nghiệm hệ thống nhận dạng khuôn mặt, luận văn đưa ra khảo sát đánh giá về độ chính xác cũng như tính đáp ứng thời gian thực, từ đó luận văn hướng đến triển khai hệ thống nhận dạng ứng dụng trong thực tiễn
3 Đối tượng và phạm vi nghiên cứu
Lý thuyết tổng quan về hệ thống nhận dạng khuôn mặt
Phương pháp để nhận dạng và phân lớp đối tượng ứng dụng trong nhận dạng khuôn mặt
Lý thuyết tổng quan về máy tính nhúng Raspberry Pi và thư viện xử lý ảnh OpenCV
Thuật toán nhận dạng khuôn mặt sử dụng mạng Neural tích chập
Trang 5 Các tiêu chí đánh giá hiệu năng của hệ thống nhận dạng khuôn mặt: tỉ lệ nhận dạng đúng, thời gian nhận dạng
4 Phương pháp nghiên cứu
Luận văn được nghiên cứu theo phương pháp thu thập dữ liệu kết hợp giữa lý thuyết và thực nghiệm, theo thứ tự sau:
Thu thập tài liệu nghiên cứu, bao gồm tài liệu lý thuyết và thực nghiệm
Tìm hiểu, khảo sát cơ sở vật chất, kỹ thuật và công nghệ, thiết bị sẵn có, linh kiện phù hợp có mặt trên thị trường
Xây dựng mô hình tổng quan về nhận dạng khuôn mặt trên
hệ thống nhúng (kit Raspberry Pi)
Thao tác thử nghiệm các thuật toán trực tiếp trên phần cứng
Xây dựng bản demo hệ thống nhận dạng khuôn mặt
5 Ý nghĩa khoa học và thực tiễn của đề tài
Luận văn thực hiện lại các nghiên cứu từ các tài liệu, bài báo cáo khoa học về kỹ thuật nhận dạng khuôn mặt dựa trên nền tảng OpenCV và Raspberry Pi Kết quả luận văn sẽ là tài liệu tham khảo
để rút ra ưu điểm và những hạn chế của phương pháp nhận dạng khuôn mặt trên hệ thống nhúng Raspberry Pi Trên cơ sở đó có thể
sử dụng Raspberry Pi để ứng dụng vào các hệ thống điều khiển, quản
lý, giám sát, an ninh…
6 Bố cục luận văn
Luận văn được chia ra làm 4 chương như sau:
Chương 1: Tổng quan về hệ thống nhận dạng khuôn mặt
Phân tích tổng quan hệ thống nhận dạng khuôn mặt, tình hình phát triển của kỹ thuật này cũng như tóm tắt sơ lược về các phương pháp, kỹ thuật nhận dạng khuôn mặt
Chương 2: Kỹ thuật trích chọn đặc trưng và phương pháp
Trang 6phân lớp ứng dụng trong nhận dạng khuôn mặt
Tập trung phân tích lý thuyết cho hệ thống từ mức tổng quan đến chi tiết từng thuật toán Ở chương này, Luận văn trình bày lý thuyết chung cho từng kỹ thuật ứng dụng trong luận văn: kỹ thuật phân tích thành phần chính PCA, kỹ thuật huấn luyện bằng phương pháp đối sánh và phương pháp máy vector hỗ trợ SVM, phương pháp mạng Neural nhân tạo
Chương 3: Hệ thống nhận dạng khuôn mặt trên máy tính
nhúng Raspberry Pi 3
Trình bày các kiến thức tổng quan về Raspberry Pi 3 và thư viện mã nguồn mở OpenCV, quy trình thực hiện nhận dạng khuôn mặt thực hiện trên Raspberry Pi
Chương 4: Thực nghiệm và đánh giá hệ thống
Trình bày hệ thống nhận dạng khuôn mặt thực nghiệm, đánh giá hiệu năng của hệ thống Từ đó rút ra kết luận và hướng phát triển của đề tài
Luận văn được thực hiện dựa trên các nguồn tài liệu tham khảo được thu thập từ nhiều nguồn khác nhau: các bài báo trong các tạp chí hoặc hội thảo khoa học chuyên ngành, các báo cáo khoa học,
cơ sở dữ liệu Đồ án và Luận văn tại các trường Đại học, được trích dẫn trong suốt luận văn và danh mục tài liệu được liệt kê cụ thể ở phần Tài liệu tham khảo
Trang 7CHƯƠNG 1 TỔNG QUAN VỀ HỆ THỐNG NHẬN DẠNG KHUÔN MẶT
1.1 Giới thiệu chương
1.2 Tổng quan về hệ thống nhận dạng khuôn mặt
1.2.1 Các vấn đề liên quan
1.2.2 Kiến trúc tổng quát của hệ thống nhận dạng khuôn mặt
Nhận dạng khuôn mặt là một kiểu nhận dạng trực quan, khuôn
mặt được xem là một đối tượng với sự thay đổi của ánh sáng, tư thế,
cảm xúc sẽ được xác định dựa trên ảnh hai chiều Nhiệm vụ của hệ
thống nhận dạng khuôn mặt là xử lý tự động thông tin từ các hình
ảnh đầu vào và đưa ra quyết định về thông tin khuôn mặt Trong đề
tài này, cấu trúc của hệ thống nhận dạng khuôn mặt được thực hiện
theo quy trình như hình sau:
Hình 1.1 Kiến trúc tổng quan của hệ thống nhận dạng khuôn mặt
Chức năng từng khối mô tả cụ thể như sau:
Phát hiện khuôn mặt: Hệ thống nhận dạng khuôn mặt đầu
tiên bắt đầu với việc định vị khuôn mặt người trong một hình
Phát hiện
khuôn mặt
Nhận dạng khuôn mặt
Trích xuất đặc trưng
Dữ liệu khuôn mặt
Trang 8ảnh cụ thể Mục đích của bước này là xác định xem hình ảnh đầu vào có chứa khuôn mặt người hay không Sự thay đổi của ánh sáng và biểu cảm khuôn mặt có thể ngăn cản việc phát hiện khuôn mặt thích hợp Nhiều kỹ thuật được sử dụng để phát hiện
và định vị hình ảnh khuôn mặt người, ví dụ, máy dò Viola - Jones, biểu đồ của gradient định hướng (HOG), và phân tích thành phần chính (PCA)
Trích xuất đặc trưng: Chức năng chính của bước này là trích
xuất các đặc điểm của hình ảnh khuôn mặt được phát hiện trong bước đầu tiên Bước này đại diện cho một khuôn mặt với một tập hợp các vectơ đặc điểm được gọi là “đặc trưng” mô tả các đặc điểm nổi bật của hình ảnh khuôn mặt như miệng, mũi và mắt với sự phân
bố hình học của chúng Mỗi khuôn mặt được đặc trưng bởi cấu trúc, kích thước và hình dạng cho phép nó được nhận dạng Một số kỹ thuật liên quan đến việc trích xuất hình dạng của miệng, mắt hoặc mũi để xác định khuôn mặt bằng cách sử dụng kích thước và khoảng cách HOG, Eigenface, phân tích thành phần độc lập (ICA), phân tích phân biệt tuyến tính (LDA), biến đổi tính năng bất biến tỷ lệ (SIFT), bộ lọc gabor, lượng tử hóa pha cục bộ (LPQ) và kỹ thuật mẫu nhị phân cục bộ (LBP) được sử dụng rộng rãi để trích xuất các đặc trưng của khuôn mặt
Nhận dạng khuôn mặt: Bước này xem xét các đặc trưng
được trích xuất trong bước trích xuất đặc trung và so sánh nó với các khuôn mặt đã biết được lưu trữ trong cơ sở dữ liệu cụ thể Trong bước nhận dạng, một khuôn mặt thử nghiệm được so sánh với một tập hợp các khuôn mặt trong dữ liệu có sẵn nhằm tìm ra khuôn mặt phù hợp nhất Trong bước nhận dạng, một khuôn mặt kiểm tra được so sánh với các khuôn mặt đã biết trong cơ sở dữ liệu
để đưa ra quyết định
Trang 91.2.3 Những khó khăn, thách thức của hệ thống nhận dạng khuôn mặt
1.2.4 Những ứng dụng hệ thống nhận dạng khuôn mặt
1.3 Kết luận chương
Trang 10CHƯƠNG 2
KỸ THUẬT TRÍCH CHỌN ĐẶC TRƯNG VÀ PHƯƠNG PHÁP PHÂN LỚP ỨNG DỤNG TRONG NHẬN DẠNG KHUÔN MẶT
2.1 Giới thiệu chương
2.2 Kỹ thuật phát hiện khuôn mặt bằng thuật toán Haar
2.2.1 Tổng quan về các đặc trưng Haar-like
2.2.2 Mô hình phân tầng Cascade of Classifiers
2.4 Kỹ thuật trích chọn đặc trưng PCA
2.4.1 Giới thiệu về phương pháp PCA
2.4.2 Thuật toán PCA
2.5 Phương pháp đối sánh trong nhận dạng
2.6 Phương pháp máy vector hỗ trợ
2.7 Phương pháp mạng Neural tích chập
2.7.1 Nhận dạng khuôn mặt sử dụng mạng neural tích chập
Hình 2.12 Kiến trúc cơ bản một mạng neural tích chập (CNN)
Trang 12CHƯƠNG 3 XÂY DỰNG HỆ THỐNG NHẬN DẠNG KHUÔN MẶT TRÊN MÁY TÍNH NHÚNG RASPBERRY PI 3
3.1 Giới thiệu chương
Trong chương này sẽ giới thiệu về máy tính nhúng Raspberry
Pi 3, thư viện mã nguồn mỡ OpenCV và ngôn ngữ Python Trình bày quy trình thiết kế hệ thống nhận dạng khuôn mặt trên Raspberry Pi
và các thuật toán thực hiện phát hiện, nhận dạng khuôn mặt được sử dụng trong hệ thống
3.3.1 Giới thiệu Python
3.3.2 Các chức năng chính của Python
3.4 thư viện OpenCV
3.4.1 Giới thiệu OpenCV
3.4.2 Tổ chức thư viện OPENCV
3.5 Quy trình xây dựng hệ thống nhận dạng khuôn mặt
3.5.1 Sơ đồ chức năng hệ thống nhận dạng khuôn mặt
Hình 3.5 Sơ đồ quá trình nhận dạng khuôn mặt trên Raspberry Pi 3
Trang 13Hình 3.6 Sơ đồ chức năng của hệ thống
Quy trình được thực hiện gồm 3 giai đoạn như sau:
Giai đoạn 1: Phát hiện khuôn mặt và thu thập dữ liệu
Phát hiện khuôn mặt là phần có ý nghĩa quan trọng trong hệ thống nhận dạng khuôn mặt, hệ thống sử dụng phương pháp mạng
neural tích chập nối tầng đa nhiệm (Multi-Task Cascaded Convolutional Networks: MTCNN) để thực hiện quá trình phát hiện
và cân chỉnh khuôn mặt
Giai đoạn 2: Trích xuất đặc trưng
Hình ảnh khuôn mặt sau khi được phát hiện và cân chỉnh được nhúng qua một mạng Neural tích chập CNN Hệ thống sử dụng
model MobileFaceNets thực hiện trích xuất đặc trưng khuôn mặt
Trang 14Giai đoạn 3: Nhận dạng khuôn mặt
Ảnh người cần nhận dạng được thu thập bởi Camera, sau đó quá trình xử lý ảnh khuôn mặt được thực hiện tương tự như giai đoạn 1 và giai đoạn 2 Hình ảnh sau xử lý cũng được trích xuất các đặc trưng và được so sánh với cơ sở dữ liệu trong hệ thống Nếu xác thực được danh tính khuôn mặt thì hệ thống sẽ xuất kết quả ID cho khuôn mặt
Trang 16Hình 3.10 Kết quả mã hóa khuôn mặt thành vecto 128 chiều
3.6 Kết luận chương
Trang 17CHƯƠNG 4 THỰC NGHIỆM VÀ ĐÁNH GIÁ HỆ THỐNG
4.1 Giới thiệu chương
Trong chương này sẽ giới thiệu về hệ thống thực nghiệm được xây dựng Quá trình lựa chọn cơ sở dữ liệu cũng như tiêu chí đánh giá chất lượng của hệ thống nhận dạng Từ kết quả thực hiện trực tiếp trên tập dữ liệu xây dựng để đưa ra đánh giá hiệu quả và chất lượng của hệ thống thực nghiệm
4.2 Kết quả thực hiện hệ thống
Hệ thống nhận dạng bao gồm hai phần riêng biệt Đầu tiên là phần đăng ký thông tin, trong phần này giao diện đăng ký được hiển thị để thực hiện đăng lý thông tin cá nhân, hình ảnh khuôn mặt tương ứng với thông tin đó Phần 2 là quá trình nhận dạng của hệ thống, tại phần này, hệ thống thực hiện quá trình nhận dạng và thông tin ID được hiển thị
Sau khi khởi tạo giao diện đăng ký, các thông tin như trên giao diện được đăng ký cho một đối tượng Hình ảnh khuôn mặt có thể được chọn từ dữ liệu có sẵn hoặc đăng ký hình ảnh trực tiếp từ camera
Trang 18Hình 4.2 Quá trình đăng ký từ những hình ảnh có sẵn
Hình 4.3 Quá trình đăng ký hình ảnh trực tiếp từ camera
Trang 19Sau khi thực hiện đăng ký xong cho các đối tượng, hệ thống khởi tạo chương trình nhận dạng Giao diện nhận dạng được hiển thị như hình 4.5 Trên giao diện hiển thị thông tin của đối tượng bao gồm họ tên, tỷ lệ trùng khớp, khuôn mặt và thời gian hệ thống nhận dạng được
Hình 4.5 Giao diện nhận dạng khuôn mặt
Hình 4.6 Hệ thống nhận dạng nhiều đối tượng cùng lúc
Trang 20T True positive (TP) False positive (FP)
F False negative (FN) True negative (TN)
Các tham số trong bảng được hiểu như sau:
TP (True Positives): là tổng số nhãn P được nhận dạng đúng
là P
FP (False Positives): là tổng số nhãn N được nhận dạng là P
TN (True Negatives): là tổng số nhãn N được nhận dạng đúng là N
FN (False Negatives): là tổng số nhãn P được nhận dạng là
PR (precision) - Độ tin cậy
Acc (Accuracy) - Độ chính xác: Tham số này là sự dung hòa
Trang 21giữa hai tham số PR và RC, nó thể hiện độ chính xác của hệ thống được nghiên cứu
TPR (True positive rate) – Tỉ lệ đúng tích cực
TNR (True negative rate) – Tỉ lệ đúng tiêu cực
Từ những tiêu chí đánh giá trên ta nhận thấy các tham số
RC, PR, và Acc càng cao thì hệ thống càng tốt
4.3.2 Xây dựng cơ sở dữ liệu và phân tích kết quả
4.3.2.1 Xây dựng cơ sở dữ liệu
Để đánh giá hệ thống, luận văn lựa chọn cơ sở dữ liệu từ bộ dữ
liệu khuôn mặt CASIA-WebFace Bộ dữ liệu CASIA-WebFace này
bao gồm 453.453 ảnh khuôn mặt của 10.575 người khác nhau Trong
số đó, 30 người được chọn ngẫu nhiên, mỗi người gồm 30 ảnh khuôn mặt với nhiều góc độ, tư thế, độ sáng khác nhau Trong bộ dữ liệu này, mỗi đối tượng ta sử dụng 20 ảnh để đăng ký danh tính và 10 ảnh
còn lại dùng để kiểm tra hệ thống
4.3.2.2 Đánh giá kết quả
Sau khi thực hiện đăng ký 30 khuôn mặt, ta sử dụng bộ dữ liệu
1 gồm 300 khuôn mặt của 30 người đã được đăng ký để kiểm tra hệ thống Kết quả thực hiện nhận dạng được thể hiện trong bảng 4.2
Nhận dạng đúng
Nhận dạng nhầm
Không nhận dạng được
Dựa vào bảng 4.2 ta có thể đánh giá được tỷ lệ nhận dạng đúng là 99,3%