Professional Documents
Culture Documents
Report
Report
BÁO CÁO ĐỒ ÁN
PBL5 - KỸ THUẬT MÁY TÍNH
ĐÀ NẴNG, 06/2022
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
TÓM TẮT ĐỒ ÁN
Với sự phát triển của công nghệ ngày nay, việc tự động hóa cho ngôi nhà là một
trong những vấn đề cấp thiết. Nhóm chúng em đề xuất và tiến hành xây dựng đồ án với
đề tài “Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt” để mang lại sự
thuận tiện trong việc ra vào ngôi nhà và tiết kiệm thời gian mở khóa thủ công. Nhóm đã
ứng dụng các công nghệ trí tuệ nhân tạo trong việc phân tích và xử lý hình ảnh, API từ
Django REST Framework trong việc giao tiếp giữa server và ứng dụng di động,
ESP8266, ESP32 Cam để chụp ảnh, xây dựng ứng dụng di động với React Native để
hiển thị camera thời gian thực, lịch sử các lần nhận diện và điều khiển đóng mở cửa. Sau
khi tiến hành và thực hiện đề tài, hệ thống đã sử dụng ổn và hiệu quả. Tuy nhiên, vẫn
còn một số thiếu sót. Trong thời gian đến, nhóm sẽ cố gắng hoàn thiện sản phẩm tốt nhất
có thể.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
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
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
LỜI CẢM ƠN
Trong thời gian triển khai thực hiện đồ án, nhóm chúng em xin chân thành cảm ơn
đến cô Bùi Thị Thanh Thanh đã hỗ trợ và hướng dẫn tận tình. Trong quá trình thực hiện,
khó tránh khỏi những thiếu sót rất mong các thầy cô bỏ qua. Nhóm em xin chân thành
cảm ơn.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 2
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
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
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 5
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 3: Mô hình RESTful API
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.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 6
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
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.
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.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 7
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
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:
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.[3]
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
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 8
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
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…
2.5.3 Face Encoder
Face encoder: là một module trong hệ thống được dùng để trích xuất đặc trưng của
một gương mặt có trong bức ảnh.
Sử dụng model facenet để đi trích xuất đặc trưng. Facenet gồm có hai thành phần
chính đó là siam network và triple loss function.[3]
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.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 9
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 7: Loss function
𝑑(𝑥1, 𝑥2) = ||𝑓 (𝑥1) − 𝑓(𝑥2)||22
- Khi x1, x2 là cùng 1 người:
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
em giống bạn với bạn.
Triplot loss function luôn lấy 3 bức ảnh làm input và trong mọi trường hợp ta kì
vọng:
Mục tiêu giảm thiểu các trường hợp hợp mô hình nhận diện sai ảnh Negative thành
Postive nhất có thể.Vậy để loại bỏ ảnh hưởng của các trường hợp nhận diện đúng Negative
và Positive lên hàm loss function. Ta sẽ điều chỉnh giá trị đóng góp của nó vào hàm loss
function về 0.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 10
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
𝑛
Khi áp dụng Triple loss ta có thể tạo ra các biểu diễn vectơ tốt nhất cho mỗi bức
ảnh, phân biệt các ảnh Negative rất giống ảnh Positive. Và ta luôn phải xác định (A,P)
thuộc cùng một người và N được chọn ngẫu nhiên từ người khác.
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.[3]
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
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 11
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
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à
lý do norm ra đời.
Để xác định khoảng cách khoảng cách giữa 2 vector y và z. Người ta thường áp
dụng một hàm số vào vector hiệu của chúng là x = y - z. Tuy nhiên, một hàm số dùng để
đo các vector cần một số tính chất đặc biệt:
- f(x) ≥ 0. Dấu bằng xảy ra ⇔x = 0
- f(αx) = |α|f(x), ∀α ∈ R
- f(x1) + f(x2) ≥ f(x1+x2), ∀x1,x2 ∈ Rn
❖ Một số chuẩn thường dùng:
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:
||x||p = ( |x1|p + |x2|p + …|xn|p )1/p
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
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 12
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
đỏ)
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 13
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Bảng 4: Các pretrain model phổ biến
2.6 Giải pháp ứng dụng di động
2.6.1 Bài toán
Xây dựng ứng dụng di động để tương tác với Server và ESP8266 giúp điều khiển
cửa đóng mở.
Người sử dụng có thể thông qua ứng dụng để điều khiển cửa, xem camera với thời
gian thực, quản lý và xem lịch sử những lần nhận diện.
2.6.2 Công nghệ sử dụng
- React Native là framework chính để phát triển ứng dụng di động.[5]
- 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.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 14
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
2.6.3 Biểu đồ usecase hệ thống
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 15
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 16
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
• 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.
• 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.
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 19
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 17: Giao diện đăng nhập Hình 18: Giao diện đăng ký
Chức năng: Đăng ký tài khoản người dùng và đăng nhập với tài khoản vừa đăng
ký
Các hoạt động: Người dùng đăng ký tài khoản bằng cách nhập Email, mật khẩu
và mã PIN cho trước. Sau khi đăng ký thành công, người dùng đăng nhập tài khoản
vừa đăng ký, ứng dụng sẽ chuyển sang màn hình Home
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 20
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 21
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Nhóm 49 – Hệ thống mở khóa cửa tự động sử dụng nhận dạng khuôn mặt 22
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 21: Giao diện danh sách lịch sử các lần nhận diện
Nhóm 01 – Hệ thống điểm danh lớp học bằng nhận diện khuôn mặt 23
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Hình 22: Giao diện chi tiết lịch sử nhận diện
Chức năng: Là giao diện hiển thị danh sách và xem chi tiết các lần nhận diện khuôn
mặt.
Các hoạt động: Người dùng cuộn danh sách lịch sử. Người dùng có thể nhấn vào
một item nhận diện và Modal chi tiết lịch sử sẽ hiển thị lần nhận diện số, tên người nhận
diện, thời gian nhận diện.
Chức năng: Là giao diện hiển thị thông tin người dùng.
Các hoạt động: Người dùng xem email của mình trên màn hình. Người dùng đăng
xuất khỏi ứng dụng bằng cách nhấn vào Sign out
Nhóm 01 – Hệ thống điểm danh lớp học bằng nhận diện khuôn mặt 24
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Nhóm 01 – Hệ thống điểm danh lớp học bằng nhận diện khuôn mặt 25
Báo cáo đồ án PBL5 - Kỹ thuật máy tính
Nhóm 01 – Hệ thống điểm danh lớp học bằng nhận diện khuôn mặt 26