1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Hiện thực hệ thống điểm 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

72 4 0
Tài liệu đã được kiểm tra trùng lặp

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Hiện thực hệ thống điểm 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
Tác giả Nguyen Thành Nhân, Lê Các Duy
Người hướng dẫn TS. Lâm Đức Khai
Trường học Trường Đại học Công nghệ Thông tin, ĐHQG-TP.HCM
Chuyên ngành Kỹ thuật máy tính
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 72
Dung lượng 40,56 MB

Nội dung

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 3

THONG 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 4

LỜ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 5

MỤ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 6

2.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 8

DANH 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 9

Hì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 10

DANH 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 11

DANH 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 12

TOM 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 13

Chươ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 14

hà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 16

Chươ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 17

2.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 18

hơ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 20

OpenCV 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 21

e 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 23

e 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 24

Mụ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 25

2.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 26

Chrome, ) 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 27

2.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 28

128 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 29

hợ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/&nbsp;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 30

Display 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 31

2.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 32

2.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 34

2.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 35

Sau 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 36

Padding = 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

Ngày đăng: 02/10/2024, 04:16

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w