Báo cáo - Đồ án kỹ thuật máy tính - Công nghệ Website | Đại học Bách Khoa, Đại học Đà Nẵng
Báo cáo - Đồ án kỹ thuật máy tính - Công nghệ Website | Đại học Bách Khoa, Đại học Đà Nẵng giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học
Preview text:
TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO
PBL5 - ĐỒ ÁN KỸ THUẬT MÁY TÍNH
HỆ THỐNG ĐIỂM DANH LỚP HỌC DÙNG NHẬN DIỆN GƯƠNG MẶT
Cán bộ doanh nghiệp hướng dẫn: Trần Phương Nam – B.A.P
Giảng viên đồng hướng dẫn: TS. Ninh Khánh Duy STT NHÓM: 24
LỚP HỌC PHẦN ĐỒ ÁN
HỌ VÀ TÊN SINH VIÊN CHÂU TRƯỜNG LONG 18N14B TRẦN CHÍ MINH 18N14B LÊ ANH TUẤN 18N14B HỒ NGUYÊN VŨ 18N14B ĐÀ NẴNG, 06/2021 TÓM TẮT ĐỒ ÁN
Hiện nay, với tốc độ phát triển nhanh chống của công nghệ thông tin và được
ứng dụng rộng rãi trong nhiều lĩnh vực của xã hội. Trong đó hệ thống tự động hóa là
một phần không thể thiếu.
Ở các trưởng học hiện nay, việc điểm danh trước mỗi giờ học không còn xa lạ.
Nhưng nó diễn ra một các thủ công, vì là thủ công nên mất khá nhiều thời gian 10 -15
phút cho việc điểm danh. Nắm bắt được yếu điểm đó nên ý tưởng cho việc điểm danh
tự động rất cần thiết.
Để xây dựng được hệ thống đó chúng ta cần các thành phần riêng biệt để xử lý
từng công việc một. Như camera cho việc ghi hình, server cho việc xử lý điểm danh,
cơ sở dữ liệu cho việc lưu trữ và một mobile app giao diện hoàn chỉnh để giáo viên
hoặc giảng viên có thể quản lý được.
Từ các hệ thống con đó, yêu cầu truyền thông kết nối giữa chúng củng là một
vấn đề nan giải vì các hệ thống con này hoạt động nên các nền tảng riêng biệt. Do đó
giải pháp ở đây là sẽ cung cấp các API (giao diện lập trình ứng dụng) cho các hệ thống
con có thể kết nối với nhau.
Cuối cùng xin chân thành cảm ơn thầy TS. Ninh Khánh Duy và anh Trần
Phương Nam – Công ty B.A.P đã nhiệt tình hướng dẫn, gợi ý những giải pháp tuyệt
vời để chúng em có thể hoàn thành được dự án này.
BẢNG PHÂN CÔNG NHIỆM VỤ
Sinh viên thực hiện Các nhiệm vụ Kết quả
-Face Detection – Haarcascade , MTCNN Đã hoàn thành -Face Encoder – Facenet Đã hoàn thành
-Face Identifier – SVM, KNN, FAISS Đã hoàn thành Châu Trường Long -Backend API – Django Đã hoàn thành -Raspberry Server – Camera Đã hoàn thành -Data Agumentation Đã hoàn thành -Mockup GUI Đã hoàn thành -Mobile App Đã hoàn thành Trần Chí Minh -API Connection Đã hoàn thành -SRS Document Đã hoàn thành -Crawl Data Đã hoàn thành -Mockup GUI Đã hoàn thành Lê Anh Tuấn -Mobile App Đã hoàn thành -API Connection Đã hoàn thành -Sequence Diagram Đã hoàn thành -Database – MySQL (Using) Đã hoàn thành
-Database – MongoDB – NoSQL (Tested) Đã hoàn thành Hồ Nguyên Vũ -API – Django Đã hoàn thành -Usecase Diagram Đã hoàn thành -API document Đã hoàn thành MỤC LỤC 1.
GIỚI THIỆU........................................................................................................6 2.
GIẢI PHÁP..........................................................................................................6 2.1.
TỔNG QUAN HỆ THỐNG............ ................... ................... ............... ...............6 2.2.
GIẢI PHÁP PHẦN CỨNG....... ........ ........... .......... ........ ........... ........ .......... ....7 2.3.
GIẢI PHÁP TRUYỀN THÔNG............ .................................................................8
2.3.1. Kết nối có dây............................................................................................8
2.3.2. RESTful API...............................................................................................8 2.4.
GIẢI PHÁP PHẦN MỀM. .................... ................ .................... ................ ........9
2.4.1. Tổng quan về hệ thống nhận diện...............................................................9
2.4.2. Face encoder..............................................................................................9
2.4.3. Face detector............................................................................................12
2.4.4. Face identifier..........................................................................................12
2.4.5. Database..................................................................................................13
2.4.6. Raspberry.................................................................................................13
2.4.7. Server.......................................................................................................14
2.4.8. Mobile......................................................................................................17 3.
KẾT QUẢ...........................................................................................................27 3.1.
KẾT QUẢ NHẬN DIỆN......................................................................................27 3.2.
KẾT QUẢ API................................................................................................28 3.3.
KẾT QUẢ MOBILE............ ................... .............. ................... ................... ...29 4.
KẾT LUẬN.........................................................................................................33 5.
TÀI LIỆU THAM KHẢO.................................................................................33 MỤC LỤC HÌNH ẢNH
Hình 1. Tổng quan hệ thống...........................................................................................6
Hình 2. Raspberry pi 3...................................................................................................7
Hình 3. Camera..............................................................................................................7
Hình 4. Hệ thống nhận diện...........................................................................................9
Hình 5. Facenet layers [11]..........................................................................................10
Hình 6. Siam network..................................................................................................11
Hình 7. Triple loss........................................................................................................11
Hình 8. Face detection.................................................................................................12
Hình 9. Database diagram............................................................................................13
Hình 10. Mouckup.......................................................................................................18
Hình 11. Mô hình MVVM [10]....................................................................................18
Hình 12. Sơ đồ thành phần [10]...................................................................................19
Hình 13. Cấu trúc thư mục...........................................................................................20
Hình 14. Usecase.........................................................................................................22
Hình 15. Đăng ký sequence.........................................................................................23
Hình 16. Đăng nhập sequence......................................................................................23
Hình 17. Điểm danh sequence.....................................................................................24
Hình 18. Quản lý học sinh sequence............................................................................25
Hình 19. Xem lịc sử sequence......................................................................................26
Hình 20. Lấy lại mật khẩu sequence............................................................................26
Hình 21. 512 chiều.......................................................................................................28
Hình 22. 128 chiều.......................................................................................................28
Hình 23. Login.............................................................................................................30
Hình 24. Màn hình chính.............................................................................................31
Hình 25. Điểm danh.....................................................................................................31
Hình 26. Thống kê kết quả điểm danh.........................................................................32
Hình 27. Giao diện khác..............................................................................................33 1. Giới thiệu
Hiện nay có rất nhiều loại hệ thống chấm công và điểm danh tự động khác nhau
như: vân tay, thẻ từ, đặc biệt trong đó là hệ thống nhận diện gương mặt sử dụng các mô hình deep learning.
Các hệ thống này thường được đặt trước cửa ra vào, cự ly gần. Do đó dự án này sẽ
phát triển hệ thống chấm công dùng nhận diện gương mặt và cung cấp các giải pháp
nghiệp vụ để quản lý thông qua mobile app. 2. Giải pháp 2.1. Tổ ng quan hệ thố ng
Hình 1. Tổng quan hệ thống
- Để giải quyết bài toán phức tạp: Từ một hệ thống lớn phức tạp, sẽ đi chia hệ thống
đó thành các hệ thống con nhỏ hơn, đơn giản hơn mỗi hệ thống đó sẽ đảm nhận
một phần công việc khác nhau.
- Như ở sơ đồ trên có thể thấy nó gồm 4 hệ thống con: Raspberry server Main server Mobile app Database 2.2. Giả i pháp phầ n cứ ng Tên linh kiện Hình ảnh Mô tả
-Raspberry Pi có các thành phần chính như: 1. CPU ARM Cortex-A53 Quadcore 1.2GHz 2. GPU Raspberry Pi 3 3. RAM 1GB 4. Khe cắm thẻ microSD 5. Wifi 802.11n Hình 2. Raspberry pi 3 6. Bluetooth 4.1 7. 4 cổng USB
-Hệ điều hành: Raspbian 64 bit -Camera xiami Camera -Độ phân giải: 1080P -Kết nối: USB, Wifi Hình 3. Camera 2.3. Giả i pháp truyề n thông 2.3.1. Kết nối có dây
- Camera kết nối với raspberry thông qua cổng dây USB
- Raspberry kết nối với server thông dây enthernet 2.3.2. 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 [8].
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, vv đến một
URL để xử lý dữ liệu [8].
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 [8].
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 [8]:
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. 2.4. Giả i pháp phầ n mề m
2.4.1. Tổng quan về hệ thống nhận diện
Hình 4. Hệ thống nhận diện 2.4.2. 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 - Layers của Facenet [11]:
Hình 5. Facenet layers [11] - Siam network:
Siam network [9] với tên đầy đủ là Siamese Neural Network, dựa trên một
mạng nơron tích chập (CNN) đã lược bỏ đi output layer. Kiến trúc mạng này
sinh ra với mục đích giải quyết bài toán liệu từ hai bức ảnh chứa mặt người
chụp trong hoàn cảnh khác nhau thì có phải cùng một người không.
Siam network được ứng dụng cho các bài toán thực tế như: điểm danh,
chấm công, hay mở chức năng mở khóa điện thoại bằng gương mặt, …
Siam network được giới thiệu lần đầu trong bài báo [1] “DeepFace: Closing
the Gap to Human-Level - Yaniv Taigman. elt.”
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.
Công thức Norm bậc 2 có dạng: ||𝒇(𝒙 ) 𝟏 − 𝒇(𝒙𝟐)||𝟐 𝟐 Hình 6. Siam network - Triple loss function [9]:
Triple loss sử dụng một khái niệm gọi là anchor. Cụ thể trong hệ thống này
sẽ là anchor image. Anchor image này sẽ là các bức ảnh gốc của sinh viên
như ảnh thẻ 3x4, nói chúng bức ảnh này là cố định.
Như tên của loss function này là triple nên sẽ cần đến 3 bức ảnh: một là
anchor, hai là positive và ba là negative. Hình 7. Triple loss
Mục tiêu 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. Thật ra có thể hiểu đơn giản là
triple loss có thể kết hợp từ hai norm loss function. Do đó công thức là: 𝑛
ℒ(𝐀, 𝐏, 𝐍) = ∑ max (||𝑓(𝐀𝑖) − 𝑓(𝐏𝑖)||2 − ||𝑓(𝐀𝑖) − 𝑓(𝐍𝐢)||2 + 𝛼, 0) 2 2 𝑖=0
Do đó khi đưa lần lượt bộ ba hình ảnh vào train model thì model sẽ học
được cả trường hợp sai lẫn đúng. 2.4.3. 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 hai model chính đó là Haarcascade và MTCNN. Hình 8. Face detection 2.4.4. Face identifier
- Face identifier là một module trong 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 ba classifier model SVM, KNN và FAISS (Facebook AI Similarity Search)
- SVM [12] là một thuật toán giám sát, nó có thể sử dụng cho cả việc phân loại
hoặc đệ quy. Tuy nhiên nó được sử dụng chủ yếu cho việc phân loại. Trong
thuật toán này, chúng ta vẽ đồi thị dữ liệu là các điểm trong n chiều ( ở đây n là
số lượng các tính năng bạn có) với giá trị của mỗi tính năng sẽ là một phần liên
kết. Sau đó chúng ta thực hiện tìm "đường bay" (hyper-plane) phân chia các
lớp. Hyper-plane nó chỉ hiểu đơn giản là 1 đường thẳng có thể phân chia các
lớp ra thành hai phần riêng biệt.
Support Vectors hiểu một cách đơn giản là các đối tượng trên đồ thị tọa độ quan
sát, Support Vector Machine là một biên giới để chia hai lớp tốt nhất.
- KNN (K-Nearest Neighbors) [13] là một trong những thuật toán học có giám
sát đơn giản nhất được sử dụng nhiều trong khai phá dữ liệu và học máy. Ý
tưởng của thuật toán này là nó không học một điều gì từ tập dữ liệu học (nên
KNN được xếp vào loại lazy learning), mọi tính toán được thực hiện khi nó cần
dự đoán nhãn của dữ liệu mới.
Lớp (nhãn) của một đố
i tượng dữ liệu mới có thể dự đoán từ các lớp (nhãn) của k hàng xóm gần nó nhất.
- Facebook AI Similarity Search (FAISS) [14] là một thư viện sử dụng
similiarity search cùng với clustering các vector. Faiss được nghiên cứu và phát
triển bởi đội ngũ Facebook AI Research; được viết trong C++ và đóng gói trên
môi trường Python. Bộ thư viện bao gồm các thuật toán tìm kiếm vector đa
chiều trong similarity search 2.4.5. Database
- Database sử dụng là dạng truy vấn có cấu trúc SQL, trên nền tảng MySQL.
Hình 9. Database diagram 2.4.6. Raspberry
- Raspberry là thành phần phần cứng kết nối trực tiếp với camera. Để có thể điều
khiển được camera thì raspberry bắt buộc phải có một module server chạy trong
nó nhằm cung cấp các API cho các thành phần khác trong hệ thống có thể kết nối đến.
- Xây dựng API cho raspberry sẽ sử dụng django framework, restful API. htt
p://host:port/raspberry/camera/open// Method: GET
Parameters: “id của camera”
Function: Mở camera sẵn sàng cho việc ghi hình htt
p://host:port/raspberry/camera/capture/ Method: GET Parameters: None
Function: Đọc frame từ camera htt
p://host:port/raspberry/camera/close/ Method: GET Parameters: None Function: Tắt camera 2.4.7. Server
- Server là thành phần chính cực kỳ quan trọng trong hệ thống. Nó sẽ cũng cấp
các API chính cho toàn bộ hệ thống, các API này sẽ được gọi ở phía client là mobile app.
- Xây dựng API cho server sẽ sử dụng django framework, restful API. Các API
chia theo các chức năng của cùng một đối tượng. Account (5 APIs) htt p://host:port/account/login/ Method: POST Parameters: None Function: Đăng nhập htt
p://host:port/account/password/update/ Method: PUT Parameters: None
Function: Đổi mật khẩu htt
p://host:port/account/password/reset// Method: GET Parameters: “email”
Function: Gửi yêu cầu reset mật khẩu htt
p://host:port/account/password/reset//n>/ Method: GET, POST
Parameters: “email mã hóa base 64”, “chuỗi ngẫu nhiên”