HÒ CHÍ MINHTRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT MÁY TÍNH NGUYEN THÀNH NHÂN LÊ CÁC DUY KHÓA LUẬN TÓT NGHIỆP HIỆN THUC HE THONG DIEM DANH SINH VIÊN TRONG LỚP HỌC BẰNG SỰ TÍCH H
Trang 1ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGUYEN THÀNH NHÂN
LÊ CÁC DUY
KHÓA LUẬN TÓT NGHIỆP
HIỆN THUC HE THONG DIEM DANH SINH VIÊN TRONG LỚP HỌC BẰNG SỰ TÍCH HỢP CÔNG NGHỆ
AI TREN HE THONG NHUNG
Implement the student attendance system in the classroom by
integrating AI technology on the embedded system
KỸ SƯ KỸ THUAT MAY TÍNH
TP HÒ CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH
NGUYEN THÀNH NHÂN - 14520625
LÊ CÁC DUY - 15520157
KHÓA LUẬN TÓT NGHIỆP
HIỆN THỰC HE THONG DIEM DANH SINH VIÊN TRONG LỚP HỌC BẢNG SỰ TÍCH HỢP CÔNG NGHỆ
AI TRÊN HỆ THÓNG NHÚNG
Implement the student attendance system in the classroom by
integrating AI technology on the embedded system
KỸ SU KY THUAT MAY TÍNH
GIANG VIEN HUONG DAN
TS Lam Dire Khai
TP HO CHi MINH, 2021
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định sé 70/QD-DHCNTT
ngày 27 tháng 01 năm 2021 của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Dé có thể hoàn thành tốt dé tài khóa luận này, chúng em thật sự tỏ lòng biết ơn đến
TS.Nguyén Minh Sơn và TS Lâm Đức Khai đã hướng dẫn, hỗ trợ chúng em tận tình trong quá trình làm khóa luận, cũng như đưa ra những đề xuất, lời khuyên dé giúp chúng em có thê phát triển, cải thiện đề tài của mình một cách tốt đẹp nhất Nếu không
có sự giúp đỡ ấy, chúng em khó lòng mà có thé hoàn thành được khóa luận
Chúng em cũng xin chân thành cảm ơn quý thầy cô, cán bộ công nhân viên nhà
trường cũng như quý thầy cô khoa Kỹ Thuật Máy Tính, trường Đại học Công nghệ Thông tin, ĐHQG-TP.HCM đã tận tình truyền đạt kiến thức và kinh nghiệm cho
chúng em trong suốt những năm học qua Kho kiến thức và kỹ năng chuyên môn quý
báu mà các thay cô truyền dat lại đã giúp đỡ chúng em rat nhiều trong quá trình nghiên
cứu và thực hành Và đó cũng là hành trang quý báu cho chúng em vững bước trong công việc sau này.
Trang 5MỤC LỤC
Chương 1 TONG QUAN -22222222222222222%22222222111122 222221111 re 2
1.1 Hiện trạng hiện may : - 6-5-5 Sàn HH 2
1.1.1 Mục tiêu đề tài:, EHHhhhhrreie 3
1.1.2 Nội dung thực hiện : cty 3
1.1.3 Phương pháp: -ccsc+c+rcrererrrerrrerrrrkrrerererrir 4
1.1.4 Giới hạn dé tài và kết quả mong đợi : - -cc5cccsccscrre 4
Chương 2, CƠ SỞ LÝ THUYT - 222-222E+2+922EEE222222512222211222222112ccrEx 5
2.1 Giới thiệu về Deep learning: -: ©22222222+t2222EEEEvvrrrttttrrktrrrrrrrrrrres 5
2.1.1 Neural N€fWOTĂ: s5 E93 1k TT 1 TT 0 rà 5 2.1.2 Deep Neural NefWOK: - 1 ST HH1 rờ 6
2.1.3 Deep Learning? - 5S tt E21 11 11011 1g hư 6
2.2 Tổng quan về OpenCV, Dlib, MXNet và ncnn: -cc +2cc++ 7
2.2.1 Ope V XS SR Or @ý A5 <ceesesekseekseseseseksseree 7
2.2.1.1 Tính năng và các module phổ biến của OpenCV: . 8
2.2.2 DO 4 10 2.2.3 lon 11
2.2.3.1 Nenn là gì : - tt” HH it 11
2.2.3.2 Một số tính năng nồi bật của Nemn :
" "° 12
2.2.4.1 Tổng quan Qt:
2.3 Tổng quan về thiết bị và công nghệ nhúng sử dung:
2.3.1 Nvidia Jetson Nano: c.Sc the 15
Trang 62.3.1.1 Giới thiệu : -cc tre 15
2.4.1.1 Facial Landmark : -¿-¿- 55+ Sct+tztsrexererrkrkerererrree 21
2.4.1.2 Tìm hiểu bộ xác định facial landmark của DIIb : 22
2.4.2 ResNet K22 x6 , , iiio 23
2.4.2.1 Convolutional Nerural Network (CNN): 23
2.4.2.2 Sự xuất hiện mạng ResNet : St rerey 27
2.4.3 KONI “.v ii 29
2.4.3.1 Tổng quan: 22222222c222222EE2EtrtEEEEEEErrrrrrrrrrrrrrrree 29
2.4.3.2 Các bước trong KÌNN: -cscct tcrererrrrrrrrrrrrrrrrrrrrrrrrrrree 31
PIN (0/2000 10000 1 - - 33 2.5.1 0-35 33
2.5.2 I2 34
Chương 3 PHAN TÍCH VA THIET KE HE THÓNG: -:-:- 36
3.1 Tổng quan hệ thống : -2222:+£2222EE2222+222222E2122 2222 crrrrrrer 36 3.1.1 Tổng quan toàn bộ của hệ thống: -:-2¿++22+zz++czsscee 36 3.1.2 Xây dựng hệ thống nhận diện khuôn mặt: ¿ 37
Trang 8DANH MỤC HÌNH
Hình 1.1: Sơ đồ mô phỏng cấu trúc một neural network đơn - 2: 2s s52 5Hình 2.1: Cau trúc của Deep Neural Networfk - 2: ©s©++x+2zxvzx+srxesrxrrrxee 6
Hình 2.2: Logo OpenCV., kh HH TT HH HH Tu ch ch HH Hàng 7
Hình 2.3: Minh họa tính năng OpenCV., - c3 3121111111111 9
Hinh 2.4: Logo DLIib 01157 dd 4Ã: 10
g0): 1800.190107 12
Hinh 2.6: Nvidia Jetson Namo 0:54 16
Hình 2.7: Thông số JETSON NANO DEVELOPER KIT cơ bản 17Hình 2.8: Độ phô biến của các ngôn ngữ lập trình trên thế giới -5- 19Hình 2.9: Facial landmark xác định 68 điểm trên khuôn mặt - s5: 22Hình 2.10: Mô tả quy trình tiếp nhận và xử lý dữ liệu mang CNN 23
Hình 2.11: Mô tả quá trình tích chập và kết quả đầu ra tương ứng 24
Hình 2.12: Phép phân tích pooÌIng - + 22c 3333 3**#EE+EEEseeExeereeeereereeessrs 26
Hình 2.13: Phép làm phắng 2 252 ©5£2E2+SE9EEE2E2E12E1271711221221271 71211211 re 26Hình 2.14: Mạng thần kinh đã được làm phẳng - 2 2 2 x+£E£+£++£xsrxzez 27
Hình 2.15: Chuỗi các vector ảnh sau khi phân tách 2- 5 + s+sz£+szzx+s4 27
Hình 2.16: Van đề suy thoái mạng neural 2 2 x+x+2E++EE+EE+EEtzE+zEszrxerxerex 28Hình 2.17: ResNet sử dụng kết nối tắt xuyên qua một hay nhiều lớp - 29
Hình 2.18: Minh hoạ cho ví dỤ - - 2E 22211112531 1111531 1118511111811 E8 kkrcez 30
Hình 2.19: Minh hoạ cho ví dụ - - 5 221321221111 2231 1112511111851 1 1181111821 se 31
Hình 2.20: Minh hoạ cho ví dụ - - 55 22 3322211122111 1251 11128111811 1xx 32
Hinh 2.21: Logo PHP oo DờD 2 33
Hình 2.22: Logo LaraV€ÌL -.- c1 132111211111 1111 11111111111 1110111111111 ng ng nh Hiện 34
Hình 2.23: Laravel tuân theo Mô hình MVC - sec + ssskrsrrsrrske 34
Hình 3.1: Sơ đồ tong quát hệ thống điểm danh 2-2 2 2+Ee£Ee£Ez£z£zEzzxe2 36Hình 3.2: Sơ đồ hệ thống ¿-2¿2+¿222+2E22EE2EE22112711271121122112712211 22 xe 37Hình 3.3: Sơ đồ lay mau dữ liệu khuôn mặt trước nhận dạng -s- 38
Hình 3.4: Quy trình lay mẫu - 2-22 2+SESEE‡EE2EE2E12E15711211221221 21711212 re 40
Trang 9Hình 3.5: Database - 1n HS S1 S2111 1n 1kg ng KT ky 42
Hình 3.6: Trang đăng nhậtp - 1S 19132 112 1111111112111 1 111 11 11H HH Hy 43
Hình 3.7: Trang Home - - ¿+22 2221321131331 191 1193111119311 11 11 11 11 E1 g1 H1 ng 44
Hình 3.8: Trang quản lý sinh VIÊn - G22 32213212311 1921 1511511811111 E1 1E 45
Hình 3.9: Trang thêm sinh vién mỚII - - + 2332232182132 ezxrrrs 45
Hình 3.10: Sinh viên chưa điểm danh 2-2: 222222E£EE£EE2EE2EEEEEeEEEExerkrrkrrer 46Hình 3.11: Cập nhật sinh viên điểm danh lên web 2-©2¿ 2 x+£xezzz+zzzzed 47Hình 4.1: Thiết bị điểm danh -:-: 22c: tri 48
Hình 4.2: Phát hiện khuôn mặt - -G + 2222132222113 EE +22 E3 EEverexeeerreeecee 48
Hình 4.3: Detection deplay và bắt đầu định danh - 2-22 2+ s+e£xerxzrsred 49
Hình 4.4: Điền tên và mã số sinh viên :-:©5+c+c2vvttExtirrtrtrrrrrrrrrrrrrrrre 50Hình 4.5: Sau khi lay mẫu - 2-2 +25 +EE+EE£EE9EE2E1221E7121121122171 211211 1E re, 50
Hình 4.6: Sau khi fraInInng - - c2 3 322132111211 151 11 1191111111111 1 11H ng ry 51
Hình 4.7: Nhận diện khoảng cách 2m c2 2222211211151 E1 1 xxx 51
Hình 4.8: Nhận diện khoảng cách 7m c2 2c 2211211111134 118115111 xxx 52
Hình 4.9: Nhận diện khoảng cách TŨm - 2c c2 S2 3221121 132EEEEEEekrerrss 52
Hình 4.10: Nhận diện với góc nghiêng khoảng 30 độ ¿55-5 ccS<<ss+<s++ 33
Hình 4.11: Biểu đồ Độ chính xác (%) khi phát hiện và nhận diện theo khoảng cách
¬—- 54
Hình 4.12: Lúc chưa có đối ¡"1020117575 ÔỐÖ Ö 54
Hình 4.13: Tài nguyên sử dung GP G2 220112112112 11111 111111111 kem 55
Hình 4.14: Sử dung tài nguyên hệ thống - 2-52 SE E2EE2EEEEEEEEEEEEEkerkrrer 56
Trang 10DANH MỤC BANG
Bang 2.1: Các thành phần của QI -¿- 2-52 2E EEEEEE1211211217171 1111111 xe.Bảng 2.2 : Các thông số của Jetson Nano -¿ 2¿2+©22+2x2Ext2EEtEE2ExzrxrrxrsreeBảng 4.1 : Bảng số liệu thời gian thực thi hệ thống -: 2:©22©5z5c+z+2
Trang 11DANH MỤC TU VIET TAT
Cum từ/Kí hiệu Mô tả
RFID Radio Frequency Identification
CNN Convolutional Neural Network
KNN K-Nearest Neighbors
GPL General Public License
BSD Berkeley Software Distribution
GPU Graphics Processing Unit
CPU Central Processing Unit
MFlops Million floating point operations per second
Trang 12TOM TAT KHÓA LUẬN
Điểm danh là một công việc thường xuyên tại các cơ quan, trường học, tuy nhiên
công việc này tại hầu hết các trường học hiện nay vẫn còn thực hiện thủ công bằng
tay tốn nhiều thời gian.
Từ đó xây dựng hệ thống điểm danh sinh viên bằng sự tích hợp công nghệ AI trên
hệ thông nhúng trong phạm vi lớp hoc Sử dung board jetson nano dé xử lý ảnh và đưa dữ liệu điểm danh lên website để người sử dụng có thể quản lý, kiểm tra việc
điêm danh của sinh viên.
Trang 13Chương 1 TONG QUAN
1.1 Hiện trạng hiện nay :
Việc điểm danh vân tay trong các trường học là một công việc thường xuyên
và tốn thời gian của giáo viên và học sinh trước mỗi giờ học Các hệ thống điểm danh vân tay tự động hiện nay thường chỉ có một cơ sở dữ liệu mẫu hạn chế nên không đáp
ứng đủ cho trường hợp số lượng sinh viên hoặc học sinh lớn Đồng thời việc điểm danh tự động trong trường học hiện nay thường là sử dụng các hệ thống máy chấm
công van tay, các hệ thống nay chỉ xác nhận đơn lẻ thông tin sinh viên tham gia hay
không tham gia tại một địa điểm có định nào đó.
Điểm danh là một công việc thường xuyên tại các đơn vị trường học, tuy nhiên
hầu hết các trường học hiện nay thì công việc này đang được thực hiện bằng tay Nghia là mỗi giáo viên hoặc người quản lý sẽ phải gọi tên và kiểm tra sự có mặt của
học sinh hoặc sinh viên trước giờ học, hoặc trước giờ thi Việc này gây mất thời gian đồng thời có thể có hiện tượng mạo danh Có nhiều giải pháp công nghệ để tự động
hóa quá trình điểm danh một cách tự động và hạn chế việc giả mạo như nhận dạng
giọng nói, thẻ từ RFID, nhập mã số, nhận dang anh Mỗi công nghệ đều có các ưu
và khuyết điểm riêng.
e Phương pháp nhận dạng tiếng nói chưa đạt độ chính xác tin cậy, tại lúc
điểm danh có nhiều sinh viên hỗn loạn gây nhiễu sẽ càng làm giảm chất
lượng nhận dạng.
¢ Phuong pháp thẻ từ RFID đạt độ chính xác tin cậy nhưng dé bị làm giả
và tốn nhiều chỉ phí cho việc cấp phát thẻ.
e Phương pháp nhập mã số đơn giản, chính xác 100% nhưng dễ bị gia
mạo do học sinh, sinh viên có thé cung cấp mã cho người khác.
Chúng tôi có một giải pháp có thể giải quyết các nhược điểm trên Đó là điểm
danh bằng cách sử dụng công nghệ xử lý ảnh Trên thế giới, khu vực Newham của London, Anh, trước đây đã thử nghiệm hệ thống nhận dạng khuôn mặt được tích hợp
vào hệ thống camera khu vực lân cận hay ở Sân bay quốc tế Tocumen ở Panama vận
Trang 14hành hệ thống giám sát toàn sân bay sử dụng hàng trăm camera nhận dạng trực tiếp khuôn mặt dé xác định các cá nhân đi qua qua sân bay (trích Wikipedia) Tại Việt
Nam, việc áp dụng công nghệ xử lý ảnh vào thực tế là một thách thức về công nghệ
và tài chính Chỉ một số nhà hàng, khách sạn và siêu thị dùng để nghiên cứu hành vi
người dùng.
1.1.1 Mục tiêu đề tài :
Xây dựng hệ thống điểm danh tự động sử dụng công nghệ xử lý ảnh trên jetson
nano với độ chính xác cao, thời gian thực hiện ngắn Cụ thê hơn:
— Hiện thực được hệ thống điểm danh tự động trên một lớp học và cập nhật
thông tin điểm danh sinh viên trên website.
— Lập trình hệ thống trên board jetson nano.
— Đánh giá hiệu suất của hệ thống thông qua độ chính xác và thời gian hoàn
thành điểm danh đối với từng đối tượng sinh viên.
1.1.2 Nội dung thực hiện :
— Nghiên cứu thuật toán nhận dạng người và website thông kê điểm danh :
+ Tìm kiếm các tài liệu liên quan machine learning, các thuật toán về machine learning, các tài liệu để xây dựng một website
+ Nghiên cứu , đọc hiểu, chọn lọc những tài liệu phù hợp có thể áp dụng cho dé tai.
— _ Thực hiện thuật toán trong hệ thống nhúng:
+ Mô tả thiết kế hệ thống.
+ Chuan bị môi trường bao gồm các thư viện liên quan.
+ Lập trình các chức năng của hệ thống.
— Xây dựng website điểm danh:
+ Thiết kế và xây dựng giao diện cho website.
+ Thiết kế và xây dựng back-end của website.
— Đánh giá hiệu suất của hệ thống thông qua độ chính xác và thời gian hoàn
thành điểm danh đối với từng đối tượng sinh viên:
Trang 15+ Test lỗi, test chức năng, sự ổn định của hệ thống.
— Lập trình PHP, html, css để xây dựng website cập nhật thông tin điểm danh.
— Nghiên cứu thuật toán về machine learning như: CNN, MobileNetVI,
— Sử dụng các thư viện như: Dlib, OpenCV
e Về phan cứng :
— Thiết lập Linux trong jetson nano và cài đặt thư viện.
— Training model hoặc sử dụng model sẵn có và tối ưu hóa cơ sở đữ liệu để cải
thiện hiệu suất.
1.1.4 Giới hạn dé tài và kết qua mong đợi :
— Camera đặt từ trên bảng nhìn xuống, với điều kiện ánh sáng đầy đủ, hệ thống
sẽ tự động điểm danh sinh viên.
— Website cập nhật thông tin điểm danh sinh viên trong một lớp học day đủ.
— Giới hạn điểm danh sinh viên khoảng 30 sinh viên/ 1 lớp.
— Thời gian nhận dang từ 5 fps đến 30fps đối với một sinh viên.
— Hệ thống nhận dang qua video quay từ camera trên thiết bị nhúng.
Kết quả mong đợi : Hệ thống hoạt động chính xác dự kiến >= 70%
Trang 16Chương2 CƠ SỞ LÝ THUYET
2.1 Giới thiệu về Deep learning:
2.1.1 Neural network:
Neural network là một mô hình toán hoc hay mô hình tinh toán được xây dung
dựa trên các mạng neural sinh học Nó gồm có một nhóm các layer nối với nhau, và
xử lý thông tin bằng cách truyền theo các kết nối và tính giá trị mới tại các layer
Thành phần cơ bản của mô hình neural network chia làm 3 phần: layer đầu
tiên là input layer, các layer ở giữa được gọi là hidden layer, layer cuối cùng được
gọi là output layer Các lớp này có nhiệm vụ xử lý tín hiệu nhận được theo thứ tự lớp
sau nhận giá trị output của lớp trước để tiến hành Việc các lớp này xử lý theo cách
nao thường phụ thuộc vào từng yêu cầu khác nhau Số lượng các lớp an (hidden layer)
là không giới hạn Số lớp an và cách xử lý ở từng lớp kể trên sẽ quyết định kết quả
và hiệu quả của công việc cân xử lý.
Hình 1.1 : Sơ đồ mô phỏng cau trúc một neural network đơn
Trang 172.1.2 Deep Neural Network:
Để hiểu về Deep Learning, trước tiên ta cần tìm hiéu về Deep Neural
Network
DEEP NEURAL NETWORK
+ Hidoo: Hiddi Hider Output
ee oe | s2 ae rar
Deep neural network là hệ thống cấu trúc thần kinh phức tap gồm nhiều đơn
vị neural network mà trong đó, ngoài các lớp nguồn vào (input), nguồn ra (output) thi
có hơn một lớp ân (hidden layer) Mỗi lớp này sẽ thực hiện một kiểu phân loại va sắp
xếp riêng trong một quá trình ta gọi là “phân cấp tính năng” và mỗi lớp đảm nhiệm
một trọng trách riêng, output của lớp này sẽ là input của lớp sau.
2.1.3 Deep Learning:
Deep Learning là kha năng may tự dao sâu học hỏi nhờ vào công nghệ Deep
Neural Network đề từ đó xử lý và giải quyết những dữ liệu phi định danh hay phi cấu
trúc.
Deep Learning hay còn gọi là học sâu, đây là định nghĩa về một phần các
thuật toán trong Machine Learning (Máy học) với đặc thù mang độ phức tạp cao
Trang 18hơn Trong thực tế, Deep Learning bao gồm nhiều lớp ẩn trong một mạng lưới thần kinh và thuộc lớp cuối cùng Việc đi qua nhiều số lượng lớp và mạng phức tạp được cho là độ sâu, độ sâu hơn có nghĩa là khả năng nhận dạng các vật mẫu lớn hơn, với
nguồn di liệu thông tin lớn hon sẽ giúp tăng cường khả năng tiếp nhận các đối
tượng trở nên rộng hơn và chỉ tiết hơn.
2.2 Tổng quan về OpenCV, Dlib, MXNet và nenn:
2.2.1 OpenCV [2]:
GY
OpenCV
Hinh 2.2: logo OpenCV
OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính
(computer vision), xử lý ảnh và máy học, và các tính năng tăng tốc GPU trong hoạt động thời gian thực OpenCV được phát hành theo giây phép BSD, do đó nó hoàn
toàn miễn phi cho cả học thuật và thương mai Nó có các interface C++, C, Python, Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế dé
tính toán hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực.
OpenCV được phát hành theo giấy phép BSD (*), đo đó nó miễn phí cho cả
học tập và sử dụng với mục đích thương mại Nó có trên các giao diện C++, C, Python
va Java và hỗ trợ Windows, Linux, Mac OS, iOS và Android OpenCV được thiết kế
dé hỗ trợ hiệu quả về tính toán và chuyên dùng cho các ứng dung real-time (thời gian thực) Nếu được viết trên C/C++ tối ưu, thư viện này có thé tận dụng được bộ xử lý
đa lõi (multi-core processing).
Trang 19Được viết bằng tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế của xử ly
da lõi Được sử dung trên khắp thé giới, OpenCV có cộng đồng hon 47 nghìn người
dùng và số lượng download vượt quá 6 triệu lần Phạm vi sử dụng từ nghệ thuật tương tác, cho đến lĩnh vực khai thác mỏ, ban đồ trên web hoặc công nghệ robot.
(*) Giấy phép BSD: dành riêng cho các loại mã nguồn mở nhằm cho phép sử dụng miễn phí và hạn chế toi da các rào cản luật lệ thông thường Giáy phép BSD là
một giấy phép đơn giản chỉ yêu câu tat cả các mã được cấp phép theo giấy phép BSD
nếu được phân phối lại ở định dạng mã nguồn.
2.2.1.1 Tính năng và các module phổ biến của OpenCV:
Theo tính năng và ứng dụng của OpenCV, có thé chia thư viện này thánh các
nhóm tính năng và module tương ứng như sau:
Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)
« Phat hiện các vật thé (objdetect, features2d, nonfree)
« Geometry-based monocular hode stereo computer vision (calib3d,
stitching, videostab)
« Computational photography (photo, video, superres)
« Machine learning & clustering (ml, flann)
« CUDA acceleration (gpu)
Trang 20OpenCV có cau trúc module, nghĩa là gói bao gồm một s6 thư viện liên kết
tinh (static libraries) hoặc thư viện liên kết động (shared libraries) Xin phép liệt kê
một số định nghĩa chỉ tiết các module phổ biến có sẵn [3] như sau:
¢ Core functionality (core) — module nhỏ gọn dé xác định cấu trúc dữ liệu cơ
bản, bao gồm mảng đa chiều dày đặc và nhiều chức năng cơ bản được sử dụng bởi tất cả các module khác.
© Image Processing (imgproc) — module xử lý hình ảnh gồm cả lọc hình anh
tuyến tính và phi tuyến (linear and non-linear image filtering), phép biến đổi
hình học (chỉnh size, afin va warp phối cảnh, ánh xạ lại dựa trên bảng chung), chuyển đồi không gian màu, biểu đồ, và nhiều cái khác.
e Video Analysis (video) — module phân tích video bao gồm các tính năng ước
tính chuyển động, tách nên, và các thuật toán theo dõi vật thể.
Trang 21e Camera Calibration and 3D Reconstruction (calib3d) — thuật toán hình học da
chiều cơ bản, hiệu chuẩn máy anh single va stereo (single and stereo camera
calibration), dự đoán kiểu dang của đối tượng (object pose estimation), thuật
toán thư tín âm thanh nồi (stereo correspondence algorithms) và các yếu té tái
tao 3D.
e 2D Features Framework (features2d) — phát hiện các đặc tính nổi bật của bộ
nhận diện, bộ truy xuất thông sd, thông số đối chọi.
© Object Detection (objdetect) — phát hiện các đối tượng và mô phỏng của các
hàm được định nghĩa sẵn — predefined classes (vd: khuôn mặt, mắt, cốc, con
người, xe hoi, ).
e High-level GUI (highgui) — giao diện dé dùng dé thực hiện việc giao tiếp UI
đơn giản.
© Video I/O (videoio) — giao diện dé dùng dé thu và mã hóa video GPU — Các
thuật toán tăng tốc GPU từ các modun OpenCV khác .
¬ và một số module hỗ trợ khác, ví dụ như phu và Google test wrapper,
Python binding, v.v
2.2.2.
10
Trang 22[4] Dlib là một bộ công cụ viết trên C++ chứa các thuật toán machine
learning và các công cụ đề tạo phần mềm C++ phức tạp đề giải quyết các vấn đề
trong thế giới thực.
Dlib được sử dụng trong cả ngành công nghiệp và học thuật trong nhiều lĩnh
vực bao gồm robot, thiết bị nhúng, điện thoại di động và môi trường máy tính hiệu
suất cao lớn Vì là phần mềm mã nguồn mở , Dlib cho phép bạn sử dụng nó trong bat ky ứng dụng nao và hoàn toàn miễn phi
Ké từ khi bắt đầu phát triển vào năm 2002, Dlib đã phát triển dé bao gồm
nhiều loại công cụ Dlib hỗ trợ nhiều công việc khác nhau như threading,
networking, numerical operations, machine learning, computer vision,
bị di động ngay từ khi bat đầu thiết kế Nenn không phụ thuộc bên thứ ba, đa nền
tảng và chạy nhanh hơn tất cả các khuôn khổ nguồn mở đã biết trên CPU của thiết
bị di động Các nhà phát triển có thé dé dang sử dung Nenn dé triển khai các thuật toán học sâu cho nên tang di động và Nenn hiện đang được sử dụng rộng rãi trong
nhiều ứng dụng của Tencent chẳng hạn như QQ, Qzone, WeChat, Pitu,
2.2.3.2 Một số tính năng nổi bật của Nemn :
¢ H6 trợ mang neural chập sâu, hỗ trợ nhiều đầu vào và cấu trúc đa nhánh, có
thể tính toán một phần của nhánh.
11
Trang 23e Không phụ thuộc thư viện của bên thứ ba, không dựa vào BLAS / NNPACK
hoặc bat kỳ framework nào khác.
e _ Triển khai trên C ++ thuần túy, đa nền tảng, hỗ trợ hệ điều hành Android, iOS.
e _ Thiết kế cấu trúc đữ liệu và quản lý bộ nhớ tinh vi, dung lượng bộ nhớ rất thấp.
e _ Thiết kế mô hình có thé mở rộng, hỗ trợ lượng tử hóa 8 bit, có thé import các
mô hình : caffe, pytorch, mxnet, onnx.
bởi cả The Qt Company, một công ty niêm yết công khai, và Qt Project dưới quản lý
mã nguồn mở, liên quan đến các nhà phát triển cá nhân và các công ty làm việc đề thúc day Qt Qt có sẵn theo cả giấy phép thương mại nguồn mở và giấy phép GPL 2.0, GPL 3.0 và LGPL 3.0 nguồn mở.
12
Trang 24Mục đích và khả năng : Qt được sử dụng để phát triển giao diện người dùng
đồ hoa (GUI) và các ứng dụng đa nền tảng chạy trên tat cả các nền tảng máy tính dé
bàn lớn và hầu hết các nền tảng di động hoặc nhúng Hầu hết các chương trình GUI được tạo bằng Qt đều có giao diện tự nhiên, trong trường hợp này Qt được phân loại
là widget toolkit Ngoài ra các chương trình không phải GUI cũng có thể được phát
triển, chẳng hạn như các công cụ dòng lệnh và consoles cho server Một ví dụ về một
chương trình không phải GUI sử dụng Qt là khung công tác web Cutelyst Qt hỗ trợ các trình biên dịch khác nhau, bao gồm trình biên dich GCC C++ và bộ Visual Studio
và có hỗ trợ quốc tế hóa rộng rãi Qt cũng cung cấp Qt Quick, bao gồm một ngôn ngữ
kịch bản lệnh được gọi là QML cho phép sử dụng JavaScript để cung cấp logic Với
Qt Quick, việc phát triển ứng dụng nhanh chóng cho các thiết bị di động trở nên khả
thi, trong khi logic vẫn có thể được viết bằng mã gốc để đạt được hiệu suất tốt nhất
có thé Các tinh năng khác bao gồm truy cập cơ sở dữ liệu SQL, phân tích cú pháp
XML, phân tích cú pháp JSON, quản lý luồng và hỗ trợ mạng.
Sắp tới sẽ hỗ trợ thêm Tizen, hệ điều hành dựa trên Linux cho nhiều loại thiết
bị, OS phát triển bởi Linux Foundation, Samsung, Intel, LG, Vondafone,
(các thành viên của Tizen Association)
© Cac hệ điều hành nhúng như: Android/Linux/Windows Embedded
13
Trang 252.2.4.2 Các thành phan của Qt [7]:
Module Description
Qt Core Chứa các thành phần cơ sở, bao gồm các containers (tương tự
thư viện chuẩn của các ngôn ngữ lập trình: QVector, QList, QMap, ), các thư viện nhập xuất đa nền tang, lập trình đa
luỗng (threading) và xử lý song song (concurrency),
QtGUI Thanh phan chính dé lập trình giao diện.
Qt Widgets Cac widget Button, hộp thoại va những thứ tương tự trong giao
diện đều gọi là các widget.
Qt QML Hỗ trợ cho QML va Javascript QML (dựa trên Javascript) là
một ngôn ngữ để viết giao diện cho ứng dụng Qt, bên cạnh
ngôn ngữ lập trình chính C++.
Qt Quick QML là một phần của Qt Quick.
Qt Quick Cac widget diéu khién danh cho Qt Quick (chu yéu danh cho
Controls desktop).
Qt Quick Bồ trí các widget trong Qt Quick.
Layouts
Qt Network Network abstraction layer (NAL — lớp trừu tượng cho
network) Day đủ các giao thức TCP, UDP, HTTP va SSL.
Qt Multimedia Thư viện về âm thanh, hình anh, camera,
Qt Multimedia Cac widget danh cho Qt Multimedia.
Widgets
Qt SQL Module làm việc với cơ sở dữ liệu (ngôn ngữ SQL).
Qt WebKit WebKit (phát triển bởi Apple, Adobe và một số công ty khác)
là một module cho các web browser (Safari và Google
14
Trang 26Chrome, ) dùng để hiển thị các trang web Qt WebKit là một
thư viện giúp bạn làm việc với WebKit.
Qt WebKit Cac widget cho Qt WebKit.
Widgets
Qt Test Hỗ trợ Unit Test cho các ứng dụng Qt.
Bang 2.1: Các thành phân của Qt
2.3 Tổng quan về thiết bị và công nghệ nhúng sử dung:
2.3.1 Nvidia Jetson Nano[8]:
Ngày 18/2, Nvidia đã công bố một sản phẩm mới mà họ quảng cáo là “giúp
tăng tốc quá trình ứng dụng thuật toán AI vào thé giới thực”, đó là một thiết bị máy tính AI có tên là Jetson Nano, được thiết kế dành riêng cho các nhà phát triển, sản xuất và nghiên cứu trí tuệ nhân tạo.
NVIDIA Jetson Nano Developer Kit là một máy tính AI tích hợp cỡ nhỏ có
kích thước của một bảng mạch Kích thước và các chuẩn kết nối của Jetson Nano là SO-DIMM Chuẩn kích thước này cũng được Nvidia sử dụng trên các sản phẩm
trước đó của mình bởi họ muốn nhắm tới mục tiêu tạo ra được những sản phẩm có
kích thước nhỏ gọn nhất có thé bởi khách hàng của công ty này chính là những đối
tượng thuộc nhiều lĩnh vực, ứng dụng và đang thiết kế để sao cho mạch kết nối của mình phù hợp tối đa với thiết kế mà họ đang theo đuổi.
15
Trang 272.3.1.2 Cấu tạo phần cứng :
Jetson Nano sẽ có 2 hình dạng Một dạng mô-đun, có kích thước 70x45mm,
để có thê sử dụng trong các thiết kế sản phẩm cuối cùng Dạng còn lại là sẽ một bộ
kít phát triển giống với Raspberry Pi nhằm cung cấp một giải pháp hoàn chỉnh cho
nhà phát triển Phiên bản mô-đun sẽ sở hữu bộ nhớ trong 16GB, trong khi bộ kit lại
sử dụng thẻ nhớ microSD.
Không giống như những lần cập nhật nền tảng Jetson trước, NVIDIA dự đoán 2 mục đích sử dụng Jetson Nano Đầu tiên, bộ kit phát triển sẽ hoàn toàn hữu
dụng cho các tổ chức thương mại muốn phát triển những sản phẩm có khả năng học
máy Sản phẩm có thê thiết kế sử dụng bộ kit phát triển này và có thé chuyển sang
sử dụng mô-đun cho sản phẩm cuối củng Đây là cách sử dụng của các bo mạch và mô-đun Jetson khác Thứ hai, những người đam mê có thê không bao giờ sử dụng
phiên bản mô-đun nhưng sẽ muốn tao ra những dự án dựa trên bộ kit phát triển,
tương tự như Raspberry Pi.
16
Trang 28128 CUDA Cores | 4 Core CPU
472 GFLOPs 5W | 10W
Available March 18th at GTC
nvidia.com and distributors worldwide
Hình 2.7: Thông số JETSON NANO DEVELOPER KIT cơ bản [10]
Cuối cùng, NVIDIA sẽ bán cả mô-đun lẫn bộ kit phát triển, không chỉ qua
các kênh phân phối mà còn cung cấp đến các thị trường rộng lớn hơn qua các cửa
hàng bán lẻ.
Sản phẩm NVIDA Jetson Nano Developer Kit trang bị số lượng công kết nối
khá day đủ: 4 công USB 3.0, cong HDMI, DisplayPort và một cổng Ethernet, cùngvới đó là những chuẩn kết nói pho biến như SDIO, I2C, SPIO và UART Không chỉ
vậy, Jetson Nano còn có cả công kết nối M.2, giao thức MIPI-CSI dé kết nối với
máy ảnh Người dùng cũng có thé kết nối mạng cho Jetson Nano bang Wifi nếu
không muốn sử dụng dây cáp Ethernet truyền thống
2.3.1.3 Thông số kỹ thuật:
Hỗ trợ GPU này bao gồm 1 CPU 4 nhân 64-bit dựa trên ARM Cortex-A57,RAM 4GB và bộ xử lý video có thé xử lý lên đến 4K 30fps đối với mã hóa và 4K
60fps đối với giải mã, cùng với đó là các khe cắm PCIe và USB 3.0
Jetson Nano cung cấp 472 GFLOPS dé chạy các thuật toán AI hiện đại một
cách nhanh chóng, với một quad-core 64-bit ARM CPU, một 128-core được tích
17
Trang 29hợp trên NVIDIA GPU, cũng như bộ nhớ 4GB LPDDR4 Có thé chạy song song
nhiêu mạng neural và xử lý đông thời một sô cảm biên có độ phân giải cao.
Jetson Nano cũng được hỗ trợ bởi NVIDIA JetPack Bao gồm các gói hỗ trợboard (BSP), CUDA, cuDNN và thư viện phần mềm TensorRT cho deep learning,computer vision, GPU computing, multimedia processing và nhiều ứng dụng khác
SDK cũng bao gồm kha năng cài dat frameworks Machine Learning (ML) mã
nguồn mở như TensorFlow, PyTorch, Caffe / Caffe2, Keras và MXNet, cho phép
các nhà phát triển tích hợp các model AI/ framework AI yêu tích của họ vào
các sản phâm một cách nhanh chóng và dê dàng.
Khả năng xử lý video của Jetson Nano là khá ấn tượng Sản phẩm này khôngphải phục vụ việc xem video 4K, thay vào đó, nó có thé xử lý nhiều luồng video
(như các máy bay không người lái drone được tích hợp da camera) dé có thé phát
hiện đối tượng, theo dõi hay tránh chướng ngại vật Ngoài 4K 60fps, Jetson Nano
còn có khả năng giải mã 8 luồng video hay camera với độ phân giải Full HD 30fps.Các luồng này sẽ được giải mã đồng thời ngay lập tức bởi các thuật toán học máy
để theo dõi đối tượng
GPU 128-core Maxwell
CPU Quad-core ARM A57 @ 1.43 GHz
Camera 2x MIPI CSI-2 DPHY lanes
Connectivity | Gigabit Ethernet, M.2 Key E
18
Trang 30Display HDMI and display port
USB 4x USB 3.0, USB 2.0 Micro-B
Others GPIO, ỨC, IS, SPI, UART
Mechanical 69 mm x 45 mm, 260-pin edge connector
Bang 2.2: Cac thông số của Jetson Nano (trích từ [11])
2.3.2 Ngôn ngữ lập trình C++:
Ngôn ngữ C++ được Bjarne Stroustrup phát triển từ ngôn ngữ C từ cuối thập
niên 1970.C++ là một phiên ban mở rộng của ngôn ngữ C, kết hợp tat cả các tính
năng đã có của C C++ được coi như là ngôn ngữ bậc trung (middle-level), kết hợp
các đặc điểm và tinh năng của ngôn ngữ bậc cao và bậc thap.C++ có thé dùng dé
lập trình nhúng, lập trình hệ thống, hoặc những ứng dụng, game
C++ là ngôn ngữ "đa hướng" Nghĩa là nó hướng cấu trúc giống C và cóthêm một tinh năng cực kỳ quan trọng đó là tính năng hướng đối tượng C++ la mộttrong những ngôn ngữ lập trình pho biết trên thé giới [12]
Most Popular Coding Languages of 2016
code 2va\
Hình 2.8: Độ phô biến của các ngôn ngữ lập trình trên thế giới [13]
19
Trang 312.3.3 Hệ quản trị cơ sở dữ liệu MySQL :
MySQL là một hệ quản trị cơ sở dữ liệu quan hệ mã nguồn mở hoạt động trên
nhiều nền tang Nó cung cấp quyền truy cập đa người dùng dé hỗ trợ nhiều công cụ
lưu trữ và được hỗ trợ bởi Oracle.
Một số khái niệm MySQL:
e Cơ sở dữ liệu (Database): Cơ sở dữ liệu là một tập hợp dỡ liệu có hệ thống.
Cơ sở dữ liệu hỗ trợ lưu trữ và thao tác dữ liệu Cơ sở dữ liệu giúp quản lý
dữ liệu dễ dàng.
e Bảng (Table): Bang là một tập hợp các dữ liệu có liên quan được giữ ở định
dạng bảng trong cơ sở dữ liệu Nó bao gồm các cột và hàng
e MySQL Server: MySQL Server là một máy tinh hay một hệ thống các máy
tính cài đặt phần mềm MySQL cho máy chủ giúp bạn lưu trữ đữ liệu trên đó,
để máy khách truy cập quản lý
e MySQL Client: Máy khách MySQL không phải cài đặt phần mềm MySQL
của Oracle, nhưng nhìn chung, tất cả các phần mềm đều có thê thực hiện cáctruy vấn trên máy chủ MySQL và nhận kết quả
2.3.4 Ultra face:
[14] Ultra face tên day đủ Ultra Light Fast Generic Face Detector được viết bởi
Linzaer 1a model phat hién guong mat cho cac thiét bi dién toan bién
e Về kích thước model, kích thước mặc định là 1,04 ~ 1,1mb
e Về số lượng tính toán của model, độ phân giải đầu vào 320x240 là khoảng
90 ~ 109 MFlops.
e Co hai phiên ban của mô hình, phiên ban slim (đơn giản hóa đường trục
mạng, nhanh hơn một chút) và phiên bản RFB (với mô-đun RFB được sửa
đối, độ chính xác cao hơn)
e Cung cấp mã suy luận NCNN C ++
20
Trang 322.4 Thuật toán áp dụng dé nhận dạng khuôn mặt người :
2.4.1 Facial Landmark[15]:
2.4.1.1 Facial Landmark :
Xác định facial landmark là một bài toán con cua bai toán dự đoán hình dang
(shape prediction) Vậy bài toán dự đoán hình dạng là gì? Đó chính là việc chúng ta
phải xác định được những điểm chính tạo nên hình dạng của đối tượng trong một bức
ảnh Trong bài toán xác định facial landmark, chúng ta sẽ phải xác định được những
điểm chính trong bức ảnh tạo nên hình dang khuôn mặt người Facial landmark là xácđịnh các vị trí như eye(mắt), nose(mũi),mounth(miệng) trên khuôn mặt(face) Facial
landmark là đầu vào cho nhiều bài toán khác như dự đoán tư thé đầu, tráo đổi khuôn
mặt, phát hiện nháy mắt, xoay chỉnh lại khuôn mặt và điển hình là công nghệ nhận
dạng khuôn mặt FacelD.
Việc xác định facial landmark gồm có hai bước:
« - Bước 1: Xác định được vi trí khuôn mặt trong bức ảnh
¢ Bước 2: Xác định được các điểm tạo nên cấu trúc của khuôn mặt
Việc xác định vị trí khuôn mặt có thể được thực hiện băng nhiều cách từ đơngiản đến phức tạp như các thuật toán dựa trên deep-learning Tuy nhiên dù sử dụngthuật toán nào, mục đích cuối cùng là ta sẽ thu được một vùng (thường là hình vuông)
được xác định bởi tọa độ (x,y) bao quanh khuôn mặt trong bức ảnh.
Sau khi xác định được khuôn mặt trong bức ảnh, chúng ta sẽ xác định cấu trúc
của khuôn mặt Có rất nhiều kiểu cấu trúc khuôn mặt khác nhau nhưng về cơ bản,chúng ta sẽ phải xác định được những phan sau:
e Miệng
« Lông mày phải
e Lông mày trái
21
Trang 33« Mat phải
«eồ Mat trái
« Mũi
e Ham
2.4.1.2 Tìm hiểu bộ xác định facial landmark của Dlib :
Bộ xác định facial landmark của Dlib là cài đặt của thuật toán được mô tả trong
bài báo One Millisecond Face Alignment with an Ensemble of Regression Trees của
Kazemi va Sullivan (2014) [16].
Bộ xác định facial landmark nay sẽ xác định 68 điểm chính theo tọa độ (x,y)
câu tạo nên khuôn mặt người:
Trang 342.4.2 ResNet:
2.4.2.1 Convolutional Nerural Network (CNN): [17]
Mang Nơ-tron tích chập (CNN hay ConvNet) là một lớp của mang Notron,
thường được áp dụng để phân loại nhận dạng hình ảnh, phát hiện đối tượng, nhận
dạng khuôn mặt,
CNN thu về các hình ảnh đặc trưng làm dữ liệu đầu vào, sau đó xử lý và
phân loại nó theo các danh mục nhất định Ví dụ như: Động vật, Con người,
Phương tiện, Màu sắc,
Các mô hình CNN trong Deep Learning sẽ đào tạo (training) và kiểm tra(testing) mỗi dữ liệu hình anh đầu vào và chuyền nó qua một loạt các lớp chập
(Convolution Layer) với các bộ lọc (Kernals hay Filters), Pooling, lớp kết nối đầy
đủ (Full Connect) và áp dụng ham toán học Sortmax dé phân loại một đối tượng có
FEATURE LEARNING CLASSIFICATION
Hình 2.10: Mô tả quy trình tiếp nhận và xử ly đữ liệu mang CNN [18]
Convolution Layer (CL) :
Convolution Layer (CL) hay còn được gọi lớp chập, là lớp dau tiên détrích xuất xác tính năng từ một ảnh đầu vào Lớp chập duy trì mối quan hệ
giữa các Pixel bằng cách tìm hiểu sâu các tính năng hình ảnh sử dụng các
diém ảnh nhỏ từ dir liệu đâu vào.
23
Trang 35Sau khi thực hiện phép tích chập, ta nhận được một mảng đầu ra tượng
trưng cho một lớp chập mới, tích chập của một ảnh với các Filter khác nhau
sẽ tạo ra các chức năng khác nhau như nhận diện cạnh (edge detection), làm
Mỗi lần thực hiện phép tính convolution xong thì kích thước ma trận kêt
quả đều nhỏ hơn ma trận ảnh ban đầu Tuy nhiên giờ ta muốn ma trận kết quảthu được có kích thước bằng ma trận ảnh ban đầu ta thêm giá trị 0 ở viền
ngoài ma trận ảnh.
24
Trang 36Padding = 1
Stride
Stride là số lượng pixel dich chuyền trên ma trận đầu vào
Khi bước chuyền là 1 thì chúng ta sẽ di chuyền các bộ lọc Ipixel một lần
Khi bước chuyên là 2 thì chúng ta sẽ đi chuyển các bộ lọc thành 2pixel
một lân.
padding = 1; Stride = 2
Pooling Layer
Pooling layer thường được dùng giữa các convolutional layer, để giảm
kích thước dữ liệu nhưng vẫn giữ được các thuộc tính quan trọng Kích thước
dữ liệu giảm giúp giảm việc tính toán trong model.
Có 2 loại pooling layer phô biến là: max pooling và average pooling
25