1. Trang chủ
  2. » Giáo Dục - Đào Tạo

HỆ THỐNG MỞ KHÓA CỬA TỰ ĐỘNG SỬ DỤNG NHẬN DẠNG KHUÔN MẶT 2

33 10 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 33
Dung lượng 1,38 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

DANH MỤC HÌNH ẢNH Hình 1: Sơ đồ tổng quan hệ thống Hình 2: Sơ đồ hoạt động tổng quan Hình 3: Mô hình RESTful API Hình 4: Sơ đồ hoạt động RESTful API Hình 5: Django REST Framework Hình 6:

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO ĐỒ ÁN PBL5 - KỸ THUẬT MÁY TÍNH

HỆ THỐNG MỞ KHÓA CỬA TỰ ĐỘNG SỬ DỤNG NHẬN DẠNG

ĐÀ NẴNG, 06/2022

Trang 2

có thể

Trang 3

BẢNG PHÂN CÔNG NHIỆM VỤ

Sinh viên Nhiệm vụ Hoàn thành

Ngô Lê Gia Hưng

Quách Minh Nhật

Nguyễn Mạnh Đức

Trang 4

DANH MỤC HÌNH ẢNH

Hình 1: Sơ đồ tổng quan hệ thống Hình 2: Sơ đồ hoạt động tổng quan Hình 3: Mô hình RESTful API Hình 4: Sơ đồ hoạt động RESTful API Hình 5: Django REST Framework Hình 6: Sơ đồ hệ thống nhận diện khuôn mặt Hình 7: Loss function

Hình 8: Norm 1 và norm 2 trong không gian hai chiều Hình 9: Logo React Native

Hình 10: Biểu đồ Usecase Hình 11: Cơ sở dữ liệu Hình 12: Bộ dữ liệu Hình 13: Ảnh được crop cụ thể của đối tượng Hình 14: Vector các ảnh

Hình 15: Kết quả nhận diện khuôn mặt Hình 16: Kết quả 50 lần test

Hình 17: Giao diện đăng nhập Hình 18: Giao diện đăng ký Hình 19: Giao diện màn hình chính Hình 20: Giao diện xem camera và điều khiển cửa Hình 21: Giao diện danh sách lịch sử các lần nhận diện Hình 22: Giao diện chi tiết lịch sử nhận diện

Hình 23: Giao diện thông tin người dùng

Trang 5

MỤC LỤC

TÓM TẮT ĐỒ ÁN

BẢNG PHÂN CÔNG NHIỆM VỤ

DANH MỤC HÌNH ẢNH

MỤC LỤC

CHƯƠNG 1: TỔNG QUAN 1

1 Giới thiệu 1

1.1 Giới thiệu sản phẩm: 1

1.2 Mục tiêu: 1

1.3 Các vấn đề cần giải quyết 1

CHƯƠNG 2: GIẢI PHÁP 3

2 Các giải pháp 3

2.1 Sơ đồ tổng quan của hệ thống 3

2.2 Sơ đồ hoạt động tổng quan 3

2.3 Linh kiện sử dụng 4

2.4 Giải pháp truyền thông 5

2.5 Giải pháp phát hiện và nhận diện khuôn mặt 8

2.5.1 Tổng quan về hệ thống nhận diện: 8

2.5.2 Face Detector 8

2.5.3 Face Encoder 9

2.5.4 Face identifier 11

2.6 Giải pháp ứng dụng di động 14

2.6.1 Bài toán 14

2.6.2 Công nghệ sử dụng 14

2.6.3 Biểu đồ usecase hệ thống 15

2.6.4 Server 15

CHƯƠNG 3: KẾT QUẢ 17

3 Tổng quan kết quả đạt được 17

3.1 Kết quả thực tế 17

3.1.1 Quá trình thực hiện và kết quả phân tích và nhận diện khuôn mặt 17

3.1.2 Ứng dụng di động 20

CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 25

4 Kết luận và hướng phát triển 25

4.1 Đánh giá sản phẩm 25

4.2 Hướng phát triển 25

LỜI CẢM ƠN 26

Trang 6

TÀI LIỆU THAM KHẢO 27

Trang 7

CHƯƠNG 1: TỔNG QUAN

1 Giới thiệu 1.1 Giới thiệu sản phẩm:

Hiện nay, cùng với sự phát triển của xã hội, vấn đề an ninh bảo mật đang được yêu cầu khắt khe tại mọi quốc gia trên thế giới Các hệ thống xác định, nhận dạng khuôn mặt trong việc bảo mật trong ngôi nhà đang sống và vô cùng cần thiết Dựa vào nhu cầu

ấy, nhóm em phát triển sản phẩm đáp ứng nhu cầu bảo mật tin cậy cho việc mở khóa cửa tự động bằng khuôn mặt Giúp những người chủ ngôi nhà thuận tiện, tiết kiệm thời gian và chi phí để có một sản phẩm giúp giải quyết những vấn đề về bảo mật

• Xử lý ảnh từ Camera của ESP32 và dữ liệu trước đó

• Kết nối và cài đặt ESP8266

• Xây dựng hệ thống phân tích và nhận diện khuôn mặt

• Lập trình và viết mã nguồn cho các chức năng

• Ghép nối các phần và chạy thử từ đó điều chỉnh mô hình

• Huấn luyện trên Visual Studio Code

mặt

• Thử nghiệm với các model: Facenet, MTCNN,…

• Huấn luyện trên Visual Studio Code

Trang 8

Bảng 1: Đề xuất giải pháp tổng quan

Trang 9

CHƯƠNG 2: GIẢI PHÁP

2 Các giải pháp 2.1 Sơ đồ tổng quan của hệ thống

Hình 1: Sơ đồ tổng quan hệ thống

Hệ thống bao gồm ESP8266 và ESP32 Cam dùng để chụp ảnh, thiết bị smart phone dùng tương tác và hiển thị kết quả và Django REST Framework để thiết lập Server Thông qua mạng không dây, điện thoại và ESP32 Cam có thể giao tiếp với Server bằng API

API này được lập trình dựa trên Django REST Framework

2.2 Sơ đồ hoạt động tổng quan

Hình 2: Sơ đồ hoạt động tổng quan

Trang 10

- Bảo mật: WPA / WPA2 / Enterprise / WPS

WPA2 Định dạng hình ảnh đầu ra: JPEG

- Đầu vào: USB loại A

- Đầu ra: 6 chân

- Có 3 đèn LED báo trạng thái:

PWD, TX & RX

Trang 11

- Tốc độ Baud: 300 bps đến 1,5 Mbps

Bảng 2: Linh kiện sử dụng

Tên linh kiện Đơn giá Ghi chú

1 x ESP8266 100.000 Mua

1 x ESP32 Cam 180.000 Mua

1 x Module ULN2003 35.000 Mua

1 x Mô hình cửa 50.000 Mua

Trang 12

Hình 3: Mô hình RESTful API

• Các thành phần của RESTful API

API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo

đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML

REST (REpresentational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE,… đến một URL để xử

lý dữ liệu

RESTful API là một tiêu chuẩn dùng trong việc thiết kế các API cho các ứng dụng web để quản lý các resource RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau

Chức năng quan trọng nhất của REST là quy định cách sử dụng các HTTP method (như GET, POST, PUT, DELETE…) và cách định dạng các URL cho ứng dụng web để quản các resource RESTful không quy định logic code ứng dụng và không giới hạn bởi ngôn ngữ lập trình ứng dụng, bất kỳ ngôn ngữ hoặc framework nào cũng có thể sử dụng

để thiết kế một RESTful API

• Phương thức RESTful hoạt động:

Hình 4: Sơ đồ hoạt động RESTful API

Trang 13

REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên

sẽ sử dụng những phương thức HTTP riêng

❖ GET (SELECT): Trả về một Resource hoặc một danh sách Resource

❖ POST (CREATE): Tạo mới một Resource

❖ PUT (UPDATE): Cập nhật thông tin cho Resource

❖ DELETE (DELETE): Xoá một Resource Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa

• Giới thiệu về Django REST Framework:

Hình 5: Django REST Framework

Django REST Framework là một framework được cài vào Django, có đầy đủ chức năng, đủ sức mạnh để tạo ra các Web APIs mạnh mẽ nhằm làm cầu nối cho các hệ thống khác nhau như giữa các client với server Client ở đây là web, mobile, tablet,… server ở đây là Django, database MySQL,…

Django REST Framework hỗ trợ giao thức truyền tải dữ liệu HTTP thông qua các phương thức như Post, Get, Put, Delete

Trang 14

2.5 Giải pháp phát hiện và nhận diện khuôn mặt 2.5.1 Tổng quan về hệ thống nhận diện:

Hình 6: Sơ đồ hệ thống nhận diện khuôn mặt

2.5.2 Face Detector

Face detection là một module trong hệ thống dùng để xác định các gương mặt có trong bức ảnh và đánh dấu bằng bounding box Sử dụng model chính đó là MTCNN

MTCNN viết tắt của Multi-task Cascaded Convolutional Networks Nó là bao gồm

3 mạng CNN xếp chồng và đồng thời hoạt động khi detect khuôn mặt Mỗi mạng có cấu trúc khác nhau và đảm nhiệm vai trò khác nhau trong task

MTCNN có 3 lớp mạng khác biệt, tượng trưng cho 3 stage chính là P-Net, R-Net

Trang 15

và O-Net Đầu vào của MTCNN là 1 bức ảnh một người hoặc một tập thể Đầu ra của MTCNN là vị trí khuôn mặt và các điểm trên mặt như: mắt, mũi, miệng…

SIAM NETWORK: Là kiến trúc mạng mà khi bạn đưa vào mô hình 2 bức ảnh,

sau đó mô hình sẽ trả lời câu hỏi: 2 bức hình đó có thuộc về cùng một người hay không?

Thay vì dự đoán trực tiếp bức ảnh đó là thuộc về ai, thì sẽ nhận vào 2 bức ảnh và nói xem

nó có cùng một loại hay không?

Ví dụ: muốn phân loại người A với một bức ảnh, ta chỉ cần đưa bức ảnh của người

A đó cùng với bức ảnh chụp được cần phân loại, khi 2 bức ảnh đi qua model thì sẽ trả về kết quả xem chúng có cùng người hay khác loại với nhau

Input của mạng Siam là hai bức ảnh bất kì, Output là hai vector đặc trưng của bức ảnh Mà vector đặc trưng biểu diễn ở dạng số học nên có thể sử dụng chúng để kiểm tra xem độ tương đồng giữa các bức ảnh bằng cách đưa vào một loss function Hàm loss thường được dùng là một norm bậc 2

LOSS FUNCTION: Với 2 vectơ tương ứng với biểu diễn của 2 ảnh input, ta đưa

vào hàm loss function để đo lường sự khác biệt giữa chúng Thông thường hàm loss function là một hàm chuẩn bậc 2

Trang 16

TRIPLE LOSS: Ta chọn 3 bức ảnh trong đó sẽ có 1 bức ảnh làm chính (Anchor

Image), bên cạnh đó sẽ có 1 bức ảnh giống (Positive) và một bức ảnh khác (Negative) với bức ảnh Anchor Kí hiệu lần lượt là A,P,N

Hàm loss function là tối thiểu hóa khoảng cách giữa 2 ảnh khi chúng là Negative

và tối đa hóa khoảng cách khi chúng là Positive Như vậy chúng ta cần lựa chọn các bộ 3 ảnh sao cho:

❖ Ảnh Anchor và Positive khác nhau nhất: cần lựa chọn để khoảng cách d(A,P) lớn Điều này cũng tương tự như bạn lựa chọn một ảnh của mình hồi nhỏ so với hiện tại để thuật toán học khó hơn Nhưng nếu nhận biết được thì nó sẽ thông minh hơn

❖ Ảnh Anchor và Negative giống nhau nhất: cần lựa chọn để khoảng cách d(A,N) nhỏ Điều này tương tự như việc thuật toán phân biệt được ảnh của một người anh

Trang 17

THUẬT TOÁN FACENET: Facenet chính là một dạng siam network có tác dụng

biểu diễn các bức ảnh trong một không gian Euclide n chiều (thường là 128 hoặc 512) sao cho khoảng cách giữa các vector embedding càng nhỏ, mức độ tương đồng giữa chúng càng lớn

Các thuật toán nhận diện trước đây đều biểu diễn khuôn mặt bằng một vector embedding thông qua một layer bottle neck có tác dụng giảm chiều dữ liệu Hạn chế của các thuận toán trước đây là:

❖ Số lượng chiều embedding tương đối lớn (thường >= 1000) và ảnh hưởng tới tốc độ của thuật toán

❖ Hàm loss function chỉ đo lường khoảng cách giữa 2 bức ảnh Facenet đã giải quyết cả 2 vấn đề trên bằng các hiệu chỉnh nhỏ nhưng mang lại hiệu quả lớn:

❖ Base network áp dụng một mạng convolutional neural network và giảm chiều dữ liệu xuống chỉ còn 128 chiều Do đó quá trình suy diễn và dự báo nhanh hơn và đồng thời độ chính xác vẫn được đảm bảo

❖ Sử dụng loss function là hàm triplot loss có khả năng học được đồng thời sự giống nhau giữa 2 bức ảnh cùng nhóm và phân biệt các bức ảnh không cùng nhóm Do đó hiệu quả hơn rất nhiều so với các phương pháp trước đây

2.5.4 Face identifier

Face identifier là một quá trình mà hệ thống dùng để nhận dạng một gương mặt đó

là ai hay thuộc về một nhãn nào đó, sau khi đã trích xuất được đặc trưng của gương mặt thành vector 128 chiều hoặc 512 chiều

Sử dụng khoảng cách Euclid để đo khoảng cách giữa các vector và cho ra nhãn, xác định gương mặt

KHÔNG GIAN EUCLIDE N-CHIỀU: Không gian vectơ (hay còn gọi là không

gian tuyến tính) là một tập hợp của các đại lượng gọi là vector, một đại lượng có thể cộng

Trang 18

và nhân bởi một số, được gọi là vô hướng

Một không gian vector n-chiều với các khái niệm về khoảng cách và góc thỏa mãn các quan hệ Euclide được gọi là không gian Euclide n-chiều

Sau này, Siam network dựa trên base network là một Convolutional neural network

đã được loại bỏ output layer có tác dụng encoding ảnh thành vector embedding

CHUẨN NORM CỦA VECTOR:

❖ Khái niệm:

Trong không gian một chiều, việc đo khoảng cách giữa hai điểm đã rất quen thuộc:

lấy trị tuyệt đối của hiệu giữa hai giá trị đó

Trong không gian hai chiều, tức mặt phẳng, chúng ta thường dùng khoảng cách Euclid để đo khoảng cách giữa hai điểm Khoảng cách này chính là cái chúng ta thường

nói bằng ngôn ngữ thông thường là đường chim bay

Đôi khi, để đi từ một điểm này tới một điểm kia, con người chúng ta không thể đi bằng đường chim bay được mà còn phụ thuộc vào việc đường đi nối giữa hai điểm có dạng như thế nào nữa

Việc đo khoảng cách giữa hai điểm dữ liệu nhiều chiều, tức hai vector, là rất cần thiết trong Machine Learning Chúng ta cần đánh giá xem điểm nào là điểm gần nhất của một điểm khác; chúng ta cũng cần đánh giá xem độ chính xác của việc ước lượng Đó là

Giả sử các vectors x=[x1;x2;…;xn], y=[y1;y2;…;yn]

Với p là một số bất kỳ không nhỏ hơn 1, hàm số sau đây:

Vậy, khi:

- p = 2 ta có norm 2 ( đường màu xanh trên đồ thị)

- p = 1 ta có norm 1 là tổng các trị tuyệt đối của từng phần tử của x (đường màu

Trang 19

Những mô hình pretrain được huấn luyện trên các dữ liệu lên tới hàng triệu ảnh

Do đó có khả năng mã hóa rất tốt các bức ảnh trên không gian 128 chiều Việc còn lại của chúng ta là sử dụng lại mô hình, tính toán embedding véc tơ và huấn luyện embedding véc tơ bằng một classifier đơn giản để phân loại classes

• Một số bộ dữ liệu public về face

Hai bộ dữ liệu về face phổ biến nhất, được sử dụng nhiều trong các bài báo và nghiên cứu về face recognition

CASIA-WebFace: Bộ dữ liệu bao gồm gần 500k ảnh được thu thập từ khoảng

10 nghìn người

VGGFace2: Bộ dữ liệu gồm khoảng 3 triệu ảnh được thu thập từ gần 9 nghìn người

• Một số pretrain model phổ biến

Model name LFW accuracy Training dataset Architecture

Trang 20

Bảng 4: Các pretrain model phổ biến 2.6 Giải pháp ứng dụng di động

- React Native là framework chính để phát triển ứng dụng di động

- Webview để xem camera realtime qua ip của ESP32Cam

- Ứng dụng di động lấy dữ liệu từ các URL remote từ REST APIs của Server

- Firebase Authentication: Quản lý đăng ký đăng nhập tài khoản

- AsyncStorage: Lưu trữ data vào bộ nhớ khi mất internet

Hình 9: Logo React Native

Trang 21

2.6.3 Biểu đồ usecase hệ thống

Hình 10: Biểu đồ Usecase

2.6.4 Server Bảng API:

Bảng 5: Bảng danh sách các API

Cơ sở dữ liệu:

Trang 22

Hình 11: Cơ sở dữ liệu

Trang 23

CHƯƠNG 3: KẾT QUẢ

3 Tổng quan kết quả đạt được

Sau quá trình xây dựng PBL5 với những mục tiêu cũng như những vấn đề đặt ra ban đầu, nhóm đã cố gắng hoàn thiện sản phẩm đúng với yêu cầu và thời gian đặt ra của

đề tài với các nội dung như sau:

- Nắm được kiến thức cơ bản về kỹ thuật máy tính

- Nắm được các kiến thức về phát hiện và nhận diện khuôn mặt để điều khiển

Camera

- Tương ứng với những kết quả nhận diện được người dùng có thể điều khiển,

xem và quản lý camera để đóng mở cửa

3.1 Kết quả thực tế 3.1.1 Quá trình thực hiện và kết quả phân tích và nhận diện khuôn mặt Quá trình xây dựng mô hình:

• Cài đặt thư viện và các phần mềm cần thiết:

❖ Tải và cài đặt CUDA

❖ Cài đặt Visual Studio

❖ Tải thư viện OpenCV

❖ Tải thư viện Tensorflow

❖ Tải pretrain model

• Chuẩn bị dữ liệu: Thu thập dữ liệu dataset từ các bạn trong lớp học, có kích thước và size ảnh bất kì Mỗi bạn 30 bức ảnh Ảnh chụp khuôn mặt, gốc mặt khác nhau, chỉ có 1 khuôn mặt cụ thể, rõ rang của bạn đó trong bức ảnh Đặt tên folder chứa ảnh của từng bạn bằng tên của chính bạn đó

Hình 12: Bộ dữ liệu

Trang 24

• Xử lý dữ liệu: Dữ liệu thu thập được ở trên là dữ liệu ảnh chụp khuôn mặt nhưng có ngoại cảnh xung quanh, tiến hành detect khuôn mặt bằng model MTCNN và crop ảnh để thu được khuôn mặt cụ thể của từng đối tượng

Hình 13: Ảnh được crop cụ thể của đối tượng

• Chuẩn hóa dữ liệu và lưu trữ: Dữ liệu thu được đang ở dạng ảnh (jpg, png,…) Sử dụng model Facenet, chuyển hóa dữ liệu ảnh về vector 512 chiều Lưu trữ

dữ liệu ở dạng file npy và lưu trữ đối tượng

Hình 14: Vector các ảnh

• Test: Phần test thực hiện các bước:

❖ Thu thập dư liệu test (cụ thể là 1 ảnh từ đối tượng cần test)

❖ Xử lý dữ liệu, cắt dữ liệu về và chuẩn hóa dữ liệu về dạng vector tương ứng (512 chiều)

❖ Truy cập đến file npy đã lưu trữ và file lưu trữ đối tượng, xử dụng thuật

Ngày đăng: 24/10/2022, 17:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] davidsandberg(2018), Facenet, https://github.com/davidsandberg/facenet Link
[3] Nguyễn Chiến Thắng, Face Recog 2.0, https://www.miai.vn/2019/09/11/face-recog-2-0-nhan-dien-khuon-mat-trong-video-bang-mtcnn-va-facenet/ Link
[4] Quang Trần, MTCNN và FaceNet, https://viblo.asia/p/nhan-dien-khuon-mat-voi-mang-mtcnn-va-facenet-phan-1-Qbq5QDN4lD8 Link
[5] Trần Đức Trung, Convolutional Neural Network, https://viblo.asia/p/tim-hieu-ve-convolutional-neural-network-va-lam-mot-vi-du-nho-ve-phan-loai-anh-aWj53WXo56m[6]React Native Docs, https://reactnative.dev/docs/getting-started Link
[7] Xây dựng API với Django Rest Framework, https://viblo.asia/p/xay-dung-api-voi-django-rest-framework-Do754PXJ5M6 Link
[8] Django documentation, https://docs.djangoproject.com/en/4.0/ Link

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w