HO CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYEN THONG LÊ HOÀNG LONG - 17520708 KHÓA LUẬN TÓT NGHIỆP HỆ THÓNG KHÓA CỬA THÔNG MINH SỬ DỤNG NHẬN DIEN KHUÔN MAT CH
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HQC CONG NGHE THONG TIN KHOA MẠNG MAY TÍNH VA TRUYEN THONG
LE HOANG LONG
KHOA LUAN TOT NGHIEP
HE THONG KHOA CUA THONG MINH SU DUNG
NHẬN DIEN KHUÔN MAT CHẠY TREN MAY TÍNH
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA MẠNG MÁY TÍNH VÀ TRUYEN THONG
LÊ HOÀNG LONG - 17520708
KHÓA LUẬN TÓT NGHIỆP
HỆ THÓNG KHÓA CỬA THÔNG MINH SỬ DỤNG NHẬN DIEN KHUÔN MAT CHẠY TREN MAY TÍNH
NHÚNG
SMART HOME DOOR LOCK USING FACIAL
RECOGNITION ON SBC
KY SU NGANH MANG MAY TINH VA TRUYEN THONG
GIANG VIEN HUONG DAN
TS LE KIM HUNG
TP HO CHi MINH, 2021
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số
"——— ees ngày của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
— Chủ tịch
— Thư ký
TT Ủy viên
—— — Ủy viên
Trang 4ĐẠI HỌC QUOC GIA TP HO CHÍMINH CONG HÒA XÃ HỘI CHỦ NGHĨA VIET NAM
Tên khóa luân:
HỆ THÓNG KHÓA CỬA THÔNG MINH SỬ DỤNG NHẬN DIỆN
KHUÔN MAT CHẠY TREN MAY TÍNH NHÚNG
SMART HOME DOOR LOCK USING FACIAL
RECOGNITION ON SBC
Nhóm SV thực hiện: Cán bộ hướng dẫn:
Lê Hoàng Long 17520708 Lê Kim Hùng
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Số trang - Số chương
SỐ bảng sô liệu Số hình vẽ S6 tài liệu tham khảo Sản phâm
Một số nhận xét về hình thức cuốn báo cáo:
2 Về nội dung nghiên cứu:
Trang 53 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Đánh giá chung:Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư/cử
nhân, xếp loại Giỏi/ Kha/ Trung bình.
Điểm từng sinh viên:
Người nhận xét
Lê Kim Hùng
Trang 6ĐẠI HỌC QUOC GIA TP HO CHÍMINH CONG HÒA XÃ HỘI CHỦ NGHĨA VIET NAM
Tên khóa luân:
HỆ THÓNG KHÓA CỬA THÔNG MINH SỬ DỤNG NHẬN DIỆN
KHUÔN MAT CHẠY TREN MAY TÍNH NHÚNG
SMART HOME DOOR LOCK USING FACIAL
RECOGNITION ON SBC
Nhóm SV thực hiện: Cán bộ hướng dẫn:
Lê Hoàng Long 17520708
Đánh giá Khóa luận
1 Về cuốn báo cáo:
Số trang - Số chương
SỐ bảng sô liệu Số hình vẽ S6 tài liệu tham khảo Sản phâm
Một số nhận xét về hình thức cuốn báo cáo:
2 Về nội dung nghiên cứu:
Trang 73 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Đánh giá chung:Khóa luận đạt/không đạt yêu cầu của một khóa luận tốt nghiệp kỹ sư/cử
nhân, xếp loại Giỏi/ Kha/ Trung bình.
Điểm từng sinh viên:
Người nhận xét
Trang 8LỜI CẢM ƠN
Lời đầu tiên, em xin trân trọng cảm ơn quý thầy, cô đang công tác và giảng
dạy tại khoa Mạng máy tính và Truyền thông, cũng như toàn thể thầy, cô khác công
tác tại trường Dai học Công nghệ Thông tin - ĐHQG HCM đã truyền đạt những kiến thức, bài học, kinh nghiệm quý báu cho em trong suốt quãng thời gian bốn năm vừa qua Và đã sắp xếp thời gian, chương trình hợp lý để em có cơ hội hoàn thành khóa
luận tốt nghiệp tốt nhất Em xin kính chúc khoa Mạng máy tính và Truyền thông nói
riêng và trường Đại học Công nghệ Thông tin nói chung luôn thành công rực rỡ trên
con đường giảng dạy đào tạo nhân tài, sẽ mãi là niềm tin vững chắc cho các thế hệ
sinh viên trên con đường giáo dục.
Đặc biệt, chúng em xin gửi lời cảm ơn chân thành nhất đến giảng viên, TS Lê Kim Hùng Nhờ những kinh nghiệm, bài học quý báu được chia sẻ từ thầy, thầy đã luôn quan tâm và giúp đỡ em giải quyết những vấn đề phát sinh, khó khăn trong quá
trình thực hiện Nhờ có thầy, em đã có cơ hội hoàn thành tốt khóa luận tốt nghiệp
này.
Tiếp theo, em xin cảm ơn về phía gia đình đã luôn luôn tin tưởng, động viên
em trong suốt quá trình học tập tại trường Đại học Công nghệ Thông tin - ĐHQG HCM, giúp em có thêm nguồn năng lượng đề đi đến được như ngày hôm nay.
Cuối cùng, em xin gửi lời cảm ơn đến các anh, chị và các bạn sinh viên tại
trường Dai học Công nghệ Thông tin — ĐHQG HCM đã luôn nhiệt tình hỗ trợ, chia
sẻ ý kiến và góp ý cho em trong quãng thời gian thực hiện khóa luận.
TP Hồ Chí Minh, ngày tháng năm 2021
Lê Hoàng Long
Trang 9ĐẠI HỌC QUÓC GIA TP HÒ CHÍMINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
TRƯỜNG ĐẠI HỌC Độc Lập - Tự Do - Hạnh Phúc
CÔNG NGHỆ THÔNG TIN
ĐÈ CƯƠNG CHI TIẾT
TEN DE TÀI:
- _ Tiếng Việt: Hệ thống khóa cửa thông minh sir dụng nhận diện khuôn mặt chạy
trên máy tính nhúng
- _ Tiếng Anh: Smart home door lock using facial recognition on SBC
Cán bộ hướng dẫn: TS Lê Kim Hùng
Thời gian thực hiện: Từ ngày 01/03/2021 đến ngày 26/06/2021
Sinh viên thực hiện:
Lê Hoàng Long — 17520708 - 0707953966
Nội dung đề tài:
e Mục tiêu:
o Xây dựng hệ thống khóa cửa thông minh sử dụng nhận diện khuôn mặt với
độ bảo mật cao bằng cách sử dụng 3 lớp bảo mật đó là:
= Sử dụng thẻ từ RFID
= Nhập mã pin
= Khuôn mặt của đối tượng trong hệ thông
o Ngoài ra hệ thống còn cung cấp khả năng quản lý và điều khiển từ xa Điểm
nhắn trong hệ thống là cho phép người dùng có thể train model nhận diện
người dùng thông qua nền tảng web.
e Phạm vi
Trang 10o Xây dựng demo cửa thông minh bao gồm: camera đề nhận diện, màn hình
dé nhập mã pin, thiết bị đọc thẻ RFID.
o Xây dung ứng dụng trên Raspberry Pi.
o_ Xây dựng website dé nhập thông tin người dùng.
o_ Xây dựng server backend dé thu thập dit liệu về người dùng va train model
nhận diện khuôn mặt, triển khai model lên thiết bi Raspberry Pi dé nhận diện
người dùng.
Đối tượng
o_ Thiết bị: camera, Raspberry Pi 3, khóa điện 12V, relay 12V, thiết bi đọc thẻ
RFID.
o_ Viết giao diện ứng dụng trên Raspberry Pi sử dung thư viện Tkinter.
o Xây dựng trang giao diện quản lý người dùng sử dụng thư viện ReactJS.
o_ Xây dựng hệ thống back-end server bằng thư viện Flask.
o Sử dụng thư viện OpenCV cho bài toán nhận diện khuôn mặt.
o Sử dụng Firebase đề lưu trữ thông tin người dùng.
Phương pháp thực hiện
o_ Thiết bị: Xây dựng và lắp đặt mô hình mô phỏng hệ thống khóa cửa thông
minh.
o_ Giao diện ứng dụng trên Raspberry Pi bao gồm:
~_ Giao diện dé người dùng có thể nhập thé RFID.
* Giao diện để người dùng có thể nhập mã pin.
» Giao diện dùng đề nhận diện khuôn mặt.
o_ Xây dựng trang quản lý người dùng bao gồm các chức năng sau:
= Thêm thông tin người dùng mới.
= Chỉnh sửa thông tin người dùng.
= Xóa thông tin người dùng.
o_ Hệ thống server back-end bao gồm:
= Xây dựng API dùng dé thu thập dữ liệu về khuôn mặt của người dùng
sử dụng Flask và OpenCV.
Trang 11» _ Xây dựng API ding dé train model mỗi khi có người dùng mới được
thêm vào dựa trên thuật toán LBPHF.
* Xây dựng API dùng dé nhận diện người dùng.
e Kết quả mong đợi: Xây dựng và hoàn thành được mô hình thiết bị khóa cửa thông
minh với độ bảo mật cao sử dụng nhận diện khuôn mặt.
Kế hoạch thực hiện:
e@ Giai đoạn 1 (02/2021 - 03/2021):
o Công việc:
= Tìm hiểu về thư viện ReactJS.
* Tìm hiểu về Firebase API.
«Tim hiểu vé thư viện Flask.
"Tìm hiểu thư viện Tkinter.
* Tìm hiểu về phương pháp nhận diện khuôn mặt qua OpenCV.
»_ Xây dựng API dùng dé thu thập dữ liệu về khuôn mặt của người dùng,
sử dụng thuật toán LBPHF dé train model mỗi khi có người ding mới
được thêm vào.
* Nghién cứu triển khai mô hình từ xa lên Raspberry Pi để nhận diện.
© Giai đoạn 4 (05/2021 - 06/2021):
Trang 12o Công việc:
* Thực hiện hoàn chỉnh demo, viết báo cáo.
Xác nhận của CBHD TP HCM, ngày tháng năm 2021
Sinh viên
TS Lê Kim Hùng Lê Hoàng Long
Trang 13MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU 2° s°22+s£+E2++e©E2++seetvvxsseevrvessee 2
1.1 TÊN ĐÈTÀI Ă- St nghe 2
1⁄2 MỤC TIÊU ĐÈ TÀI 5+ ++ÉStề tệ TH TH HH HH rên 2
1.3 ĐÓI TƯỢNG VA PHAM VI NGHIÊN CỨU ¿225252 S2 ++E+3+E+E£+£EzEexzxzxrxsese 2
1.3.1 DOi tong NNIEN ổn 2
1.3.2 Phạm vi nghiÊH Cứ «thế TH HH ri 2
CHƯƠNG 2 CƠ SỞ LÝ THUYÉTT ©©©©222EEEEErrrvrrkkkkrrrirdde 4
2.1 TONG QUAN VE FIREBASE
2.1.1 Giới thiỆM Ă.Ă ST HH HH Hư 4 2.1.2 Các chức năng và dich vụ của Firebđs€ 55s s+++cexssee 4
2.1.3 Cách thiết lập Firebase cho AU GN e- -cececseceeterererekeerre 7
2.2 TONG QUAN VE REACT]S 5:52 S1 1212113122 1212121112111111 111111 trxe 12
2.2.1 Giới thiệu về ÑeaetJÑ -cccccằằcvevirrrrrrrrrrrrrrrrrrrrree 12
2.2.2 Một số đặc điểm của ÑeactJS ccccccc55cccccecisrrrrrcee 12 2.2.3 Thiết lập môi trường -c-.:ccccccscccvvrscrveererrrkerrsrres 13
2.3 TONG QUAN VE FLASK - c2 2t 3S vn vxrErxekrxrrrrerrrkrrrrkrrrrrree 16
2.3.1 Giới thiệu về FÏask ccằằăveierirrrrrrirrrrrrrrrrie 16
2.3.2 Các đặc điểm của Flask.sssccssscscssssssssssssssssssssssssssssssssssessssesssneesssessees 16 2.3.3 Thiết lập và cài đặt môi trHỜng ccccccccccccccvecrecrrvecrrrres 17
2.4 TONG QUAN VE TKINTER St tt tt tre 19
2.5 TONG QUAN VE OPENC V, 5S 32v v235221212111371111111171 1221 cee 19
2.5.1 Gibi thi@u a1 sa 19
2.5.2 Ứng dụng của OpenCF
2.5.3 Tính năng và các module phổ biến của QpenC - -: 20
2.5.4 Cài đặt OpenCÏ + kkSkETTếHHHnHHngườn 21
2.6 THUẬT TOÁN VIOLA-JONES cscccscssssssssescscscsesesesescssecsssesesescsecscseseseseeeseeaeee 22
2.6.1 Giới thiệu về thuật toán -cccccccc52cccvvvcvrrrrecrrvrverrrrrrrrrrer 22
Trang 142.6.2 Các đặc trưng Hadr-liK€ sec SxSsksserrererereveeereeree 22 2.6.3 AdADOOSF à.Ă St St ST HH HT TT ghế 24
2.6.4 Sơ đồ nhận diện khuôn mặt -c2ccc:252ccccsccvecreccrveersrres 26
2.7 LOCAL BINARY PATTERNS (tt tr triệt 26
2.8.
2.8.1 Giới thiệu về API coccsscssssssssssssssssssssssssssssssssssssssscesssussessssussesssiecessseeseess 28 2.8.2 Gibi thiGu V6 Web API nẽn na 28
2.8.3 Những đặc điểm của Web API -c55cccccccccrcccccvees 28
2.8.4 Cách hoạt động của Web AIPÌ - c-c«ccsesvseerererrteesrerrx 29
2.8.5 Uu nhược điểm của Web API, c-:52cccccSccvsereccrveererres 29
2.9 RASPBERRY PỊ th TH Hiện 30
2.9.1 Giới thiệu về Raspberry Pi cc5ccccSScEvirsrrtrerrrrrrrerres 30 2.9.2 Thông số kỹ thuật: ccc:c252cvccccccvrecrteerrrrrkerrrrres 31
2.10 KHOA DIEN 12V oo.eeceeceescsessesesesesestesesesesesssnesesesecnsnesesesesencaescsesneneacaeeeeeeneaeee 31
2.10.1 Giới thiệu về khóa điện -ccccccc5ccccvverrrerrrrrrrveerrrrrrrrrves 31 2.10.2 Thông số kỹ thuật của khóa điện 12V
2.11 NGUON 12V
2.11.1 Giới thiệu về nguôn 12V.
2.11.2 Thông số kỹ thuật:.
2.12 RELAY 12V „32
2.12.1 Giới thiệu về Relay 12V :c52ccccsccccvserrreerrerrteereerreereervỔ 32
2.12.2 Thông số kỹ thuật 5-2525: 2EEE2EEEEE.CEEE11 E1 33
Trang 152.15.1 Giới thiệu VỀ CAH€FA cccccc22225222ctSSEEEESEErrrrrrtrrrrtvrrrrrrrrrrver 35 2.15.2 Thông số kỹ thud ceccsccccssssecssssssssssssssssessssiesssssssssssssussssssssesssieesssseeeeees 35 CHUONG 3 MÔ HÌNH UNG DUNG
3.1 USERFLOW CUA HỆ THONG cccsstetrterierrrerrrrrrrrrrrrerrrrrcee TỔỔ
3.2 KIÊN TRÚC HE THÓNG ¿5c kg rrerÕ
E0 0009016 39
CHƯƠNG 4 THỰC NGHIỆM, DANH GIÁ -css<<cccvevcee 40
4.1 TRANG WEB QUAN LÝ NGƯỜI DỪNG 255v S2 2E +t+t£Evxerrxerrrrersree 40
4.1.1 Giới thiỆM ĂĂĂĂ ST như 40
4.12 Cấu trúc hệ thống -c 555cccccccstcccrreeeeisrrrrrree 40
4.1.3 Các tính năng Ni 4.2 HỆ THONG NHẬN DIỆN KHUÔN MAT.
4.2.1 Giới thiệu
4.2.2 Cấu trúc thư mục Ö„45
4.2.3 Cách hoạt động hệ thống nhận điện khuôn ImẶt ‹<++<+>+ 46
4.2.4 Các tính năng của APIL -cccccS«Svsksererererereeekekree 4
4.3 ỨNG DỤNG KHOA CUA NHẬN DIỆN KHUÔN MAT TREN RASPBERRY PI 48
4.3.1 Giới thiỆM ĂĂĂĂSSSSvSSĐHHHH Hit 48
4.3.2 Cấu trúc thư MAC ceeessssssesssssssssvssssssssessesceeccessssnnnnnsnnnunnnnsssssssessesceeeeeeees 48
4.3.3 Các tinh năng cua giao diện
CHƯƠNG 5 KET LUẬN HUONG PHAT TRIEN
5.1 KÉT QUA DAT DUGC waceececssscsssesscsescsesesesesesssessesesesesesesesassesesesesesacscaeseseseseeasee 52
T000 và 53
TAI LIEU THAM KHAO
Trang 16DANH MỤC HÌNH VE
Hinh 2.1: Dich vu Firebase 0N 4
Hình 2.2: Giao diện trang web Firebase + tt ng 7
Hình 2.3: Giao diện Firebase Console -¿- (523 S233 SE£+eE+eEeteetetrexerrrrsesrxe 8
Hình 2.4: Giao diện tao project Ở step Loic eeseseeseseeteseseeeseseeseassneeeeseesseeeee 8
Hình 2.5: Giao diện tao project step 2 Làng Hee 9
Hình 2.6: Giao diện tạo project step 3 ¿che 9
Hình 2.7: Giao diện project S€fẨITIE, - St vn Hit 0
Hình 2.8: Phần thiết lập dé sử dụng Firebase cho app -: cc:©cc5scc2 0
Hình 2.9: Giao diện ở bước ‘add Eirebase to your web app -. -c<-+ 1
Hình 2.10: Sau khi hoàn thành khởi tạo thiết lập cho app - -. -: 1
Hình 2.11: Biểu tượng của Reactjs
Hình 2.12: Trang chủ của NOde.js - - ¿6S ES v22 12 1 11 1 1e 4
Hình 2.13: Các câu lệnh đề khởi tạo Reactjs project - -c¿ccsccz+ccsscez 4
Hình 2.14: Khởi động web serV€T ¿5c St tt 5
Hình 2.15: Giao điện sau khi hoàn thành bước thiết lập cài đặt 5
Hình 2.16: Biểu tượng của Flask -. ¿-222222222+222SEEvttEEEEvretrrrvrrrrrkrrrrrrr 6
Hình 2.17: Giao diện trang Anaconda ¿- - - + + S++x+k‡kekeEkErkekEkrkrkrkekee 8
Hình 2.19: Biểu tượng của OpenCV
Hình 2.20: Sau khi cai đặt hoàn tất OpenC V -:¿-©22+2z2222xzetrtrrxerrrrrrrcee 2
Hình 2.21: Đặc trưng haar-ÏiK€ - «tk it 23
Hình 2.22: Đặc trưng cạnh - ¿+ + S119 9 2121211311111 1111111 xe 23
Hình 2.23: Đặc trưng đường -¿- - - + St HH1 H010 H1 010101 uy 23
Trang 17Hình 2.24: Đặc trưng xung quan fÂTm - - ¿5 +2 1E +11 E +3 E#*EEEseeEseereeeereeeeree 23
Hình 2.25: Biéu diễn đặc trưng haar-like - + ¿5c 5s+SE+EE£EE+E2EEEerkerkerxerkrree 24
Hình 2.26: Integral image - . c5 111210111910 1 910 19 1119 1 ng kg ng kg krry 24
Hình 2.27: Công thức tinh integral 1maBe - 5 2c 13113 Eserseereseeree 24
Hình 2.28: Mô hình phân tang (cascade), - ¿- + s5x+E++E++E+Ee£Eerkerxerxerxeree 25
Hình 2.30: Trích xuất đặc trưng L.BP - 2 2 ¿+ SE+EE+EE£EE+EE+EEEEerEerkerxrrkrree 27
Hinh 2.31: Raspberry Pi Ả 30
Hinh 2.32: Kh6a dién 12V nh 31
Hình 2.34: Relay 12V 2 kênh - - + S111 1191151119111 111 1 vn ng ng rệt 33
Hình 2.35: Màn hình LCD 3.5 inch - 6+ 1 3111119119911 9v 11 việt 34
Hình 2.36: Camera Logitech HD C270 - - c1 E211 ESkEseekeeeerseeeree 35
Hình 3.2: Kiến trúc hệ thống 22 2 2 E+SE£2E2EE2EEEEEEEEEEEEEEEEEEEEEEEEErrkrrkrrer 37Hình 3.3: Sơ đồ lắp đặt thiết bị, ¿52s 2E 22 E2 1212112112111 xe, 40
Hình 4.1: Cau trúc file của trang quan lý người dùng -¿-5¿©55+-: 41
Hình 4.5: Giao diện capture khuôn mặt của người dùng - - ‹+ x++<++ss2 44
Hình 4.7: Thông báo hiển thị khi hệ thống đã hoàn thành việc training 45
Trang 18Hình 4.8: Cấu trúc thư mục của hệ thống nhận diện khuôn mặt - 46Hình 4.9: Mô hình hoạt động tổng quát của hệ thống nhận diện khuôn mặt 46Hình 4.10: Cau trúc thư mục của 90:0 48
Hình 4.11: Giao diện nhập REÏÏD - G2212 221113511 3311811111511 11 1 re 49
Hình 4.12: Giao diện nhập PIN - - 2G G 12211112311 911 9 1118 11181118 11 8x ng rry 49
Hình 4 13: Giao diện nhận diện khuôn mặt của người dùng -. -‹<- 51
Trang 19DANH MỤC TU VIET TAT
TU NOI DUNG DIEN GIAI
API Application programming interface | Giao diện lập trình ứng dụng
REID Radio Frequency Identification Nhận dang qua tan số vô tuyên
Trang 20TOM TAT KHÓA LUẬN
Ngày nay, với sự phát triển nhanh chóng của công nghệ đã giúp đỡ chúng ta
phần nào trong cuộc sống hàng ngày, giúp cho công việc hàng ngày trở nên thuậntiện va dé dang hơn nhờ có sự trợ giúp của công nghệ Sự phát triển mạnh mẽ củacông nghệ trong thời đại đôi mới đã đem đến cho chúng ta nhiều cơ hội dé phát triển
hơn Đặc biệt là trong lĩnh vực Internet of Things, giúp cho việc tự động hóa trở nên
dễ dàng hơn.
Trên thị trường hiện nay thì vẫn còn một số lượng lớn các khóa đơn giản dođiều kiện tài chính của người dân và do nhu cầu bảo mật nhà cửa còn chưa quá cao
nên vẫn còn sử dụng các loại khóa truyền thống như: khóa bam, khóa chốt, khóa cầm
tay, Vì vậy rất bat tiện cho người sử dụng nếu lỡ làm mất chìa khóa, khả năng bảo
mật không cao, không thuận tiện cho người sử dụng.
Hệ thống cửa thông minh cũng là một trong những ứng dụng của Internet ofThings, không những thuận tiện cho người sử dụng, mà còn đem đến sự an toàn bảomật cho chủ căn hộ Vì vậy, dựa vào đó mà em đã quyết định xây dựng hệ thống khóacửa thông minh kết hợp với nhận điện khuôn mặt với chi phí thấp, dé dang lắp đặt sửdụng Raspberry Pi Với mong muốn không chỉ xây dựng riêng cho nhà thông minh
mà còn có thể mở rộng sang các lĩnh vực khác chăng hạn như quản lý trong doanh
nghiệp.
Trang 21Chương 1 GIỚI THIỆU
¢ Khuôn mặt của đối tượng trong hệ thống
Ngoài ra hệ thống còn cung cấp khả năng quan ly và điều khiển từ xa Điểm nhắntrong hệ thống là cho phép người dùng có thê train model nhận diện người dùng thôngqua nền tảng web
1.3 Đối tượng và phạm vi nghiên cứu
1.3.1 Đối tượng nghiên cứu
e Thiết bị: camera, Raspberry Pi 3, khóa điện 12V, relay 12V, thiết bị đọc thẻ
RFID.
e Viết giao diện ứng dụng trên Raspberry Pi sử dung thư viện Tkinter.
e Xây dung trang giao diện quản lý người dùng sử dụng thư viện ReactJS.
e Xây dựng hệ thống back-end server bằng thư viện Flask.
e Sử dụng thư viện OpenCV cho bai toán nhận diện khuôn mặt.
e Sử dụng Firebase dé lưu trữ thông tin người dùng
1.3.2 Pham vi nghiên cứu
e Xây dựng demo cửa thông minh bao gồm: camera dé nhận diện, màn hình dé
nhập mã pin, thiết bị đọc thẻ RFID
e Xây dung ứng dụng trên Raspberry Pi.
e Xây dựng website dé nhập thông tin người dùng
Trang 22e Xây dựng server backend dé thu thập dữ liệu về người dùng và train model
nhận diện khuôn mặt, triển khai model lên thiết bị Raspberry Pi dé nhan dién
người dùng.
Trang 23Chuong 2 CƠ SỞ LÝ THUYET
2.1 Tổng quan về Firebase
2.1.1 Giới thiệu
Firebase là dịch vụ cơ sở đữ liệu hoạt động trên nên tảng cloud Kèm theo đó
là hệ thống máy chủ cực kỳ mạnh mẽ của Google Chức năng chính là giúp ngườidùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dit liệu
Hình 2.1: Dich vụ Firebase
2.1.2 Cac chức năng và dịch vụ của Firebase
e Firebase Analytics
o Là tính nang giúp bạn phân tích hình vi của người sử dung trên ứng
dụng Đưa ra lời khuyên về lộ trình xây dựng ứng dụng
o Có thé biết được dé đưa ra chiến lược phát trién sản phâm phù hợp
e Firebase Realtime Database
o Là cơ sở đữ liệu thời gian thực, NoSQL được lưu trữ dam may cho phép
lưu trữ và đồng bộ đữ liệu Dữ liệu được lưu trữ dưới dạng Json và đượcđồng bộ theo thời gian thực đối với mọi kết nói
o Firebase có tính năng bao mật hang dau
o_ Tất cả dữ liệu được truyền qua một kết nối an toàn SSL, việc truy vấn
cơ sở dữ liệu truy vấn và việc xác nhận thông tin được điều khiển theo
một số các quy tắc security rules language Các logic bảo mật dit liệu
của bạn được tập trung ở một nơi dé dé dang cho viéc stra đôi, cập nhật
và kiêm thử.
Trang 24Firebase Authentication
o Là chức năng xác thực người dùng, giúp thực hiện việc đó một cách dễ
dàng, giúp người dùng nhanh chóng tiếp cận sản phẩm
o Cung cấp chức năng xác thực người dùng bằng email, số điện thoại,
hay tài khoản Facebook, Google,
Firebase Cloud Storage
o Hỗ trợ việc quan lý, chia sẽ các content người dùng upload lên như ảnh,
video, cũng như sử dụng tài nguyên ấy cho ứng dụng, nhanh chóng và
o Với các ưu điểm như thao tác nhanh, đơn giản, tính an toàn cao,
Firebase Hosting giúp các nhà phát triển tạo lập ứng dụng một cách đơn
giản hơn so với việc tự tay tạo hay thuê server thực.
Firebase Cloud Messaging
o Gửi tin nhắn thông báo miễn phí
o_ Có thể thiết lập để tin nhắn chỉ gửi tới những đối tượng mà ta mong
muốn
Firebase Remote Config
o Giúp thực hiện việc thay đôi UI cũng như hoạt động của ứng dụng ma
không cần phải update app
o Việc này thực hiện bằng cách set giá trị ban đầu cho giao điện và hoạt
động của app, sau đó sử dụng Remote Config REST API hoặc Firebase
Console đề ghi dé giá trị mới lên setting default
Firebase Test Lab
o Được sử dung dé test ứng dụng trên nền tang cloud
Trang 25o Có thé test hoạt động của ứng dụng trên nhiều thiết bị đa dạng, nhờ đó
có thé xác minh được app sẽ chạy như thế nào trên thiết bị thực của
người dùng.
e Firebase Crashlytics
o Là công cụ báo cáo hoạt động bat thường phát sinh trên ứng dụng theo
thời gian thực.
o Giúp ích cho việc truy vết các van dé bat thường hạ thấp chất lượng của
sản phẩm, nhờ đó có thé đặt thứ tự ưu tiên dé có phương án xử lý thích
hợp.
o Hỗ trợ việc chia nhóm các bất thường phát sinh, truy xuất tình trạng có
liên quan đến crash, giúp tiết kiệm thời gian xử lý sự cố
e Firebase App Indexing
o Chức năng hién thi content trong ứng dụng trong kết quả tìm kiếm
Google.
o_ Với user đã cài đặt sin ứng dụng trên thiết bi của mình, khi user chọn
kết quả tìm kiếm có chưa content trong ứng dung thì application sẽ
được khởi động.
e Firebase Dynamic Links
o Là chức nang phan chia trang dich một cách thích hợp tùy vào tình
trạng người dùng.
e Firebase Predictions
o Áp dung deep learning máy hoc với dữ liệu phan tích dé tạo các nhóm
người dùng năng động dựa trên hành vi dự đoán Các nhóm người nay
có thé được sử dụng dé nhắm mục tiêu trong các sản phẩm khác nhưthông báo, cau hình từ xa,
e Firebase Invites
o Cho phép người dùng chia sẽ tat cả các khía cạnh của ứng dung, từ ma
giới thiệu đến nội dung yêu thích, qua email hoặc SMS
e Firebase AdMob
Trang 26o_ Kiếm tiền bang cách hiển thị quảng cáo cho người dùng toàn cầu.
o Thực hiện chiến lược kiếm tiền trên lớp bậc nhất và đề tối đa hóa doanh
thu do mỗi người dùng tạo ra.
o Có thé được điều chỉnh cho ứng dung, và API được xây dụng để tích
hợp các định dạng quảng cáo phù hợp một cách phong phú, dễ dàng.
2.1.3 Cách thiết lập Firebase cho dự án
Check out what's new from Firebase@ Google 1/0 2021, and join our alpha program for early access to the new Remote Config personalization feature Learn more
Firebase helps you build
and run successful apps
Hình 2.2: Giao diện trang web Firebase
e Bước 2: Bam vào ‘Go to console’
Trang 27Your Firebase projects
ioT Smart Home Door Lock
tsmarthome-do
Explore a demo project Firebase projects are.
containers for your apps Ss os <p
Apps in a project share features like Real time Database and Analytics
© Learn more ae 2S
= os
Language English (United States) Support - Terms - Privacy Policy
Hinh 2.3: Giao dién Firebase console
X Create a project (Step 1 of 3)
Let's start with a name for
your project®
Create Example Project
Bước 4: Bỏ chon ‘Enable Google Analytics for this project’ va bam Continue
Trang 28Firebase console
x Create a project (Step 2 of 3)
Google Analytics
for your Firebase project
Google Analytics is a free and unlimited analytics solution that enables targeting, reporting, and more in Firebase Crashlytics, Cloud Messaging, In-App Messaging, Remote Config, A/B Testing, Predictions, and Cloud Functions.
A ABtesting © %, Crashfreeusers ©
@ User segmentation & targeting across @ Q Event-based Cloud Functions triggers @
Firebase products
atl Free unlimited reporting @
#7 Predicting user behavior @
@® Enable Google Analytics for this project
Hinh 2.5: Giao dién tao project step 2
agle.com
Create Example Project
@ Your new projectis ready
Hình 2.6 Giao diện tao project step 3 Bước 5: Vào “ProJect settting”
Trang 29Create Example Project - Project x
e Bước 6: Bam vào ‘Add firebase to your web app’
Create Example Project ~ Project X
Project settings tti
ge and billing
ngs
ing — Integratio
Public settings
ns Service accounts Dataprivacy
Create Example Project ø#*
create-example-project
901007676158
project-901007676158 #*
Users and permissions App Check °
Hình 2.7: Giao diện Project setting
+ console firebase.google.com, Creat le Project + Project settings
Public settings
Project-90100767
There are no apps in your project
Hình 2.8: Phan thiết lập dé sử dung Firebase cho app
e Bước 7: Điền tên cho app va bam ‘Register app’
Trang 30x Add Firebase to your web app
@ Register app
My web appl
© Also set up Firebase Hosting for this app Learn more
@ Adi Firebase soK
Hình 2.9: Giao diện ở bước “Add Firebase to your web app’
neoister app
© Add Firebase sox
Copy and paste these scripts into the bottom of your <body> tag, but before you use any Firebase services:
<! The core Firebase JS SDK is always required and must be listed first >
<script src="https://w gstati om/firebase 8.6 firebase-app.) </script
<! T000; Add SDKs for Firebase products that you want to use
httpsi//firebase google com/docs/web/setupfavailable-libraries >
<script>
// Your web app's Firebase configuration var firebaseConfig = {
apikey: "AIzaSyC_TYbLeohdnZRJBSuECIPr9mRc_2c}9AE authDomain: “create-example-project firebaseap
</script>
Learn more about Firebase for web: Get ed (, Web SDK API Reference 77, Samples
Are you using npm and a bundler like webpack or Rollup? Check out the modular SDK @, currently in beta
Continue to console
Sau khi hoàn thành xong các bước trên thì ta có thể nhúng đoạn code này vàotrong codebase dé thiết lập môi trường cho việc sử dung
11
Trang 312.2 Tổng quan về ReactJS
2.2.1 Giới thiệu về ReactJS
Là thư viện Javascript phố biến nhất dé xây dựng giao diện người dùng Chotốc độ phản hồi tuyệt vời khi user nhập liệu bằng cách sử dụng phương pháp mới dé
Ke React
Hình 2.11: Biểu tượng của ReactJS
render trang web.
2.2.2 Một số đặc điểm của ReactJS
e Dễ sử dụng
o React là thư viện GUI mã nguồn mở Javascript tập trung vào một điều
cụ thể, hoàn thành nhiệm vụ UI hiệu quả
o Hỗ trợ Reusable Component trong Java.
o Cho phép sử dung lai components đã được phat triển thành các ứng
dụng khác có cùng chức năng.
o_ Tính năng tái sử dụng component là một lợi thế khác biệt cho các lập
trình viên.
e Viết component dé dàng hơn
o React component dễ viết hon vì nó sử dụng JSX, mở rộng cú pháp tùy
chọn cho Javascript, cho phép bạn kết hợp HTML với Javascript
o JSX là một sự pha trộn tuyệt vời của JavaScript và HTML Nó làm rõ
toàn bộ quá trình viét câu trúc trang web Ngoài ra, phân mở rộng cũng
12
Trang 32giúp render nhiều lựa chọn dé dang hơn.
o JSX có thé không là phan mở rộng cú pháp phổ biến nhất, nhưng nó
được chứng minh là hiệu quả trong việc phát triển components đặc biệt
hoặc các ứng dụng có khối lượng lớn
Hiệu suất tốt hơn với Virtual DOM
o React sẽ cập nhật hiệu quả quá trình DOM (Document Object Model —
Mô hình đối tượng tài liệu) Quá trình này có thé gây ra nhiều thất vọng
trong các dự án ứng dụng dựa trên web May man là React sử dụng
virtual DOMs, vi vậy có thé tranh duoc van dé nay
o Công cụ cho phép xây dung các virtual DOMs va host chúng trong bộ
nhớ Nhờ vậy, mỗi khi có sự thay đôi trong DOM thực tế, thì virtual sẽ
thay đôi ngay lập tức
o Hệ thống này sẽ ngăn DOM thực tế dé buộc các bản cập nhật được liên
tục Do đó, tốc độ của ứng dụng sẽ không bị gián đoạn
Thân thiện với SEO
o_ React cho phép tạo giao điện người dùng có thê được truy cập trên các
công cụ tìm kiếm khác nhau Tính năng này là một lợi thế rất lớn vìkhông phải tất cả các khung JavaScript đều thân thiện với SEO
o Ngoài ra, vì React có thể tăng tốc quá trình của ứng dụng nên có thé cải
thiện kết quả SEO Cuối cùng tốc độ web đóng một vai trò quan trọngtrong tối ưu hóa SEO
Tuy nhiên, cần lưu ý rằng React chỉ là một thư viện JavaScript Nghĩa là nókhông thé tự làm mọi thứ Sử dụng các thư viện bé sung có thé cần thiết cho
các mục tiêu quản lý, định tuyến và tương tác
2.2.3 Thiết lập môi trường
Trước khi thiết lập thì ta cần phải cài đặt Node.js
Link cài đặt: https://nodejs.org/en/
13
Trang 33Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
Download for Windows (x64)
Or have a look at the Long Term Support (LTS) schedule.
Hinh 2.12: Trang chu cua Node.js
e Thực hiện các dong lệnh theo thứ tự như sau đề khởi tạo project Reactjs:
D:\example-app>npx create-react-app my-app„
Hình 2.13: Các câu lệnh dé khởi tao ReactJS project
14
Trang 34© Sau khi khởi tạo thành công thì ta start project băng câu lệnh npm start
Compiled successfully!
You can now view my-app in the browser.
Local: http: //1ocalhost: 3000
On Your Network: http://10.10.10.103:3000
Note that the development build is not optimized.
To create a production build, use npm run build.
Hình 2.14: Khởi động web server
Hình 2.15: Giao diện sau khi hoàn thành bước thiết lập cài đặt
15
Trang 352.3 Tổng quan về Flask
2.3.1 Giới thiệu về Flask
Flask là một web frameworks, nó thuộc loại micro-framework được xây dựng
bằng ngôn ngữ lập trình Python Flask cho phép xây dựng các ứng dụng web từ đơn
giản tới phức tạp Nó có thể xây dựng các api nhỏ, ứng dụng web chăng hạn như các
trang web, blog, trang wiki hoặc một website dựa theo thời gian hay thậm chi là một
trang web thương mại Flask cung cấp các công cụ, các thư viện và các công nghệ hỗ
trợ làm những công việc trên.
Flask là một micro-framework Điều này có nghĩa Flask là một môi trườngđộc lập, ít sử dụng các thư viện khác bên ngoài Do vậy, Flask có ưu điểm là nhẹ, córất ít lỗi do ít bị phụ thuộc cũng như dễ dàng phát hiện và xử lý các lỗi bảo mật
Flask
web development,
one drop at a time
Hình 2.16: Biểu tượng của Flask2.3.2 Các đặc điểm của Flask
e Các tính năng cua Flask Framework
o Dựa trên Unicode
o Khả năng tương thích công cụ dựa trên ứng dụng Google
16
Trang 36o Nhiều tiện ích mở rộng cho các tính năng mong muốno_ Tính modular và thiết kế gọn nhẹ
o Trình gỡ lỗi được nhúng trong trình duyệt
o_ Mã ngắn và đơn giản trong số các bộ xương Python khác
2.3.3 Thiết lập và cài đặt môi trường
e Đầu tiên thì ta cài đặt Anaconda, đây là thư viện bao gồm day đủ các công cụ
phô biến dành cho khoa học đữ liệu, chưa kể có bao gồm cả thiết lập môitrường riêng biệt cho từng dự án cụ thê
e Link cài đặt: https://www.anaconda.com/
17