You are on page 1of 63

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

XÂY DỰNG HỆ THỐNG QUẢN LÝ THÔNG TIN

HOẠT ĐỘNG CỦA LỚP HỌC

Sinh viên thực hiện: NGUYỄN TIẾN ĐẠT


Lớp KTĐTTT-03 K61
MSSV: 20160945
Giảng viên hướng dẫn: PGS. TS. LÊ THỊ LAN
Hà Nội, 2-2022
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ - VIỄN THÔNG

ĐỒ ÁN

TỐT NGHIỆP ĐẠI HỌC

Đề tài:

XÂY DỰNG HỆ THỐNG QUẢN LÝ THÔNG TIN

HOẠT ĐỘNG CỦA LỚP HỌC

Sinh viên thực hiện: NGUYỄN TIẾN ĐẠT


Lớp KTĐTTT-03 K61
MSSV: 20160945
Giảng viên hướng dẫn: PGS. TS. LÊ THỊ LAN
Hà Nội, 2-2022
LỜI NÓI ĐẦU

Cuộc cách mạng công nghiệp lần thứ tư (i4.0) với nền tảng trí tuệ nhân tạo (AI),
robot, Big-data và internet kết nối vạn vật (IoT) tạo ra tiền đề cho phép thực hiện các
thay đổi mạnh mẽ trong nhiều lĩnh vực của đời sống trong đó có lĩnh vực giáo dục.
Nhiều công nghệ, mô hình mới như công nghệ thực tại ảo, mô hình lớp học đảo ngược
(flipped classroom), ... đã được ứng dụng vào lĩnh vực giáo dục cho phép đem đến
những tiện ích và trải nghiệm thú vị từ đó giúp nâng cao khả năng tiếp thu, cập nhật
kiến thức. Tuy nhiên, cách thức giảng dạy hiện tại mới tập trung chủ yếu vào truyền
đạt thông tin một chiều – chiều từ người dạy/hệ thống đến người học. Trong khi các
thông tin phản hồi theo chiều ngược lại – từ người học đến người dạy/hệ thống là
nguồn thông tin vô cùng quan trọng nhưng chưa được quan tâm. Việc sử dụng hiệu
quả thông tin này sẽ mang đến những cải tiến vượt trội về chất lượng của quá trình dạy
và học. Các thông tin phản hồi từ người học thường được thu thập thông qua hình thức
khảo sát thủ công với một tập giới hạn các câu hỏi, do đó thường tốn nhiều thời gian
công sức, không thể thực hiện được thường xuyên và thường mang ý kiến chủ quan
của người tham gia khảo sát…. Với các tiến bộ trong lĩnh vực nhận dạng, thị giác máy
tính, các thông tin phản hồi đó có thể được đánh giá một cách tự động thông qua dữ
liệu hình ảnh, video thu thập từ lớp học. Đề tài Khoa học và Công nghệ cấp Bộ, Bộ
Giáo dục và Đào tạo “Nghiên cứu phát triển hệ thống tự động đánh giá hoạt động học
tập trong lớp học dựa trên công nghệ xử lý ảnh và trí tuệ nhân tạo”, mã số:
CT2020.02.BKA.02 do PGS. TS. Lê Thị Lan làm chủ nhiệm hướng tới xây dựng một
hệ thống cho phép tự động đánh giá hoạt động của lớp học thông qua công nghệ xử lý
ảnh và trí tuệ nhân tạo. Trong đó, các hoạt động của lớp học thu thập từ các camera
giám sát sẽ được tự động phát hiện và nhận dạng thông qua các giải thuật đề xuất trong
khuôn khổ của đề tài. Để có thể thực hiện quản lý hiệu quả và truy xuất, báo cáo lại
khi cần thiết, các thông tin phân tích được về hoạt động lớp học cần được lưu trữ và
quản lý. Vì vậy đề tài tốt nghiệp “Xây dựng hệ thống quản lý thông tin hoạt động
của lớp học” ra đời với mục đích xây dựng hệ thống cho phép quản lý các thông tin
của lớp học.
LỜI CAM ĐOAN

Tôi xin cam đoan rằng đồ án tốt nghiệp “Xây dựng hệ thống quản lý thông tin
hoạt động của lớp học” là công trình nghiên cứu của bản thân mình. Những phần có
sử dụng tài liệu tham khảo có trong đồ án đã được liệt kê và nêu rõ ra tại phần tài liệu
tham khảo. Đồng thời những số liệu hay kết quả trình bày trong đồ án đều mang tính
chất trung thực, không sao chép, đạo nhái.

Nếu như sai tôi xin chịu hoàn toàn trách nhiệm và chịu tất cả các kỷ luật của bộ môn
cũng như nhà trường đề ra.
MỤC LỤC

DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT........................................................................i

DANH MỤC HÌNH VẼ............................................................................................................ii

DANH MỤC BẢNG BIỂU......................................................................................................iv

CHƯƠNG 1. CƠ SỞ LÝ THUYẾT.........................................................................................1

1.1 Tổng quan về phân tích/nhận dạng tự động hoạt động của người học.......................1
1.1.1 Giới thiệu chung.......................................................................................................1
1.1.2 Các hoạt động quan tâm trong khuôn khổ của đề tài...............................................2
1.1.3 Một số nghiên cứu về nhận dạng hoạt động của người học trong lớp học...............3

1.2 Giới thiệu về các công nghệ sử dụng trong đồ án.........................................................6


1.2.1 Mô hình Client-Server..............................................................................................6
1.2.2 Javascript và Nodejs Back-end.................................................................................8
1.2.3 ReactJS...................................................................................................................15
1.2.4 Cơ sở dữ liệu và hệ quản trị CSDL........................................................................17

1.3 Kết luận.........................................................................................................................18

CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG..........................................................19

2.1 Yêu cầu bài toán...........................................................................................................19


2.1.1 Yêu cầu về chức năng.............................................................................................19
2.1.2 Yêu cầu phi chức năng...........................................................................................19

2.2 Phân tích thiết kế..........................................................................................................19


2.2.1 Sơ đồ khối..............................................................................................................19
2.2.2 Biểu đồ phân rã chức năng.....................................................................................20
2.2.3 Đặc tả Use Case......................................................................................................21
2.2.4 Sơ đồ luồng hoạt động............................................................................................23

2.3 Xây dựng cơ sở dữ liệu.................................................................................................23


2.3.1 Mô hình thực thể liên kết.......................................................................................23
2.3.2 Mô hình quan hệ.....................................................................................................24

2.4 Xây dựng phần server...................................................................................................27


2.4.1 Công nghệ sử dụng và mô hình triển khai..............................................................27
2.4.2 Triển khai stream luồng video................................................................................28
2.4.3 Triển khai phần quản lý dữ liệu..............................................................................29
2.4.4 Triển khai tính năng thống kê, vẽ biểu đồ..............................................................29
2.4.5 Tích hợp kết quả nhận dạng...................................................................................29

2.5 Xây dựng phần client....................................................................................................33


2.5.1 Công nghệ sử dụng.................................................................................................33
2.5.2 Nhận dữ liệu từ socket và stream video.................................................................33
2.5.3 Hiển thị kết quả thống kê và vẽ biểu đồ.................................................................34

CHƯƠNG 3. THỰC NGHIỆM HỆ THỐNG QUẢN LÝ...................................................35

3.1 Cách thức thực nghiệm................................................................................................35


3.1.1 Thực nghiệm tính năng đăng nhập, tạo tài khoản..................................................35
3.1.2 Thực nghiệm tính năng thống kê............................................................................35
3.1.3 Thực nghiệm tính năng trực tiếp video..................................................................35
3.1.4 Thực nghiệm tính năng quản lý dữ liệu..................................................................35
3.1.5 Thực nghiệm kết nối với module Phân tích, nhận dạng.........................................36

3.2 Giao diện.......................................................................................................................36

3.3 Source code...................................................................................................................43

KẾT LUẬN..............................................................................................................................44

Kết luận chung....................................................................................................................44

Hướng phát triển................................................................................................................44

TÀI LIỆU THAM KHẢO......................................................................................................45


DANH MỤC KÝ HIỆU VÀ CHỮ VIẾT TẮT

API Application Programming Interface


SIFT Scale-invariant feature transform
SVM Support Vector Machine
SQL Structured Query Language
DML Data Manipulation Language
DDL Data Definition Language
DOM Document Object Model
SEO Search Engine Optimization
RTSP Real Time Streaming Protocol
DANH MỤC HÌNH VẼ

Hình 1-1 Các hoạt động được quan tâm trong đề tài......................................................3
Hình 1-2 Sự đa dạng trong hoạt động giơ tay................................................................4
Hình 1-3 Mô hình Client – Server.................................................................................6
Hình 1-4 Một số module của Nodejs...........................................................................10
Hình 1-5 Ví dụ về console...........................................................................................10
Hình 1-6 Module cluster..............................................................................................11
Hình 1-7 Biến global trong Nodejs..............................................................................11
Hình 1-8 Các loại lỗi trong Nodejs..............................................................................12
Hình 1-9 ReactJS.........................................................................................................15
Hình 2-1 Sơ đồ khối chung của hệ thống, trong đó các khối bôi đậm là nội dung được
thực hiện trong đồ án...................................................................................................20
Hình 2-2 Biểu đồ phân rã chức năng của hệ thống......................................................21
Hình 2-3 Sơ đồ đặc tả use case của hệ thống...............................................................22
Hình 2-4 Sơ đồ luồng hoạt động..................................................................................23
Hình 2-5 Mô hình thực thể liên kết..............................................................................24
Hình 2-6 Mô hình quan hệ...........................................................................................24
Hình 2-7 Hình ch01_20210402084038_0002.jpg và kết quả phân tích trên ảnh.........32
Hình 2-8 Biểu đồ thống kê hình cột về các hoạt động nhận dạng được trong lớp học. 34
Hình 3-1 Giao diện đăng nhập.....................................................................................36
Hình 3-2 Giao diện trang chủ.......................................................................................37
Hình 3-3 Giao diện đổi mật khẩu.................................................................................37
Hình 3-4 Giao diện kết nối và xem trực tiếp luồng hình ảnh thu thập từ camera giám
sát lớp học.................................................................................................................... 38
Hình 3-5 Chức năng thống kê......................................................................................38
Hình 3-6 Chức năng vẽ biểu đồ thống kê về các hoạt động nhận dạng được trong lớp
học trong một khoảng thời gian do người dùng lựa chọn.............................................39
Hình 3-7 Quản lý phòng học........................................................................................40
Hình 3-8 Thêm mới phòng học....................................................................................40
Hình 3-9 Chỉnh sửa phòng học....................................................................................41
Hình 3-10 Quản lý camera...........................................................................................41
Hình 3-11 Quản lý hành động......................................................................................42
Hình 3-12 Quản lý tài khoản........................................................................................42
Hình 3-13 Chỉnh sửa thông tin tài khoản.....................................................................43
DANH MỤC BẢNG BIỂU

Bảng 2-1 Từ điển dữ liệu cho cơ sở dữ liệu.................................................................30


CHƯƠNG 1. CƠ SỞ LÝ THUYẾT

Để xây dựng được một hệ thống quản lý, nhận dạng hoạt động cho lớp học, ta
cần tìm hiểu các lý thuyết liên quan tới các bài toán phân tích/nhận dạng tự động hoạt
động. Ngoài ra cần có thêm các kiến thức để xây dựng một hệ thống quản lý, bao gồm
web-base, cách thức mà các website hoạt động vào trao đổi thông tin, cơ sở dữ liệu và
các framework để xây dựng website phổ biến hiện nay.

1.1 Tổng quan về phân tích/nhận dạng tự động hoạt động của người học

1.1.1 Giới thiệu chung

Nhận dạng hoạt động của người là một lĩnh vực nghiên cứu trong khoa học máy
tính nhằm xây dựng các phương pháp cho phép xác định kiểu hoạt động (ví dụ: đi bộ,
chạy, ngã, bắt tay, v.v.) trên dữ liệu thu được từ các cảm biến khác nhau. Hoạt động
của con người được chia thành 4 mức độ cơ bản: cử chỉ (gesture), hành động (action),
tương tác (interaction) và hoạt động nhóm (group activity). Cử chỉ là chuyển động cơ
bản nhất của một phần cơ thể người và thường được xem là đơn vị để diễn đạt một
chuyển động của người. Ví dụ cử chỉ "kéo căng tay". Hành động có thể được tạo thành
từ một tập các cử chỉ theo thời gian như hành động đi lại. Tương tác là hoạt động liên
quan đến 2 người trở lên hoặc liên quan giữa người và đối tượng ví dụ "hai người đang
đánh nhau", "một người bỏ lại vali trong sân bay". Hoạt động của nhóm là hoạt động
tạo ra bởi một nhóm gồm nhiều người và/hoặc nhiều đối tượng ví dụ “một nhóm người
đang biểu tình”

Bài toán nhận dạng cử chỉ và hành động được phân chia theo yếu tố không gian
và thời gian. Theo cách phân chia này, các cử chỉ/hành động có thể chia làm hai loại:

• Hoạt động/cử chỉ tĩnh hay còn gọi là hình trạng là loại cử chỉ sử dụng ảnh đơn
lẻ. Do đó, các thông tin về cử chỉ và hành động chỉ có yếu tố không gian không
có yếu tố thời gian.

• Hoạt động/cử chỉ động: là các hoạt động/cử chỉ được thực hiện trong một
khoảng thời gian. Do đó, các cử chỉ hoạt động này được biểu diễn theo cả
không gian và thời gian.

1
Dựa trên phân loại này, các phương pháp nhận dạng hoạt động có thể phân chia
thành nhận dạng cử chỉ tĩnh (hình trạng) và nhận dạng cử chỉ động. Ngoài cách phân
chia này dựa trên các thông tin sử dụng trong các phương pháp nhận dạng cử chỉ, các
phương pháp có thể phân chia thành nhận dạng dựa trên ảnh màu, ảnh độ sâu, khung
xương hay phương pháp nhận dạng dựa trên đa phương thức.

1.1.2 Các hoạt động quan tâm trong khuôn khổ của đề tài

Theo các định nghĩa trong phần 1.1.1, đề tài hướng đến các cử chỉ và hành động
của người học trong lớp học trong đó tập trung vào một số cử chỉ sau: ngồi học, giơ
tay, sử dụng điện thoại, ngủ/gục xuống bàn, và đứng lên phát biểu. Đây là các hoạt
động quan trọng, việc nhận dạng và xác định được số lượng các hoạt động này trong
một buổi học là một thông số quan trọng cho phép đánh giá định lượng chất lượng và
không khí của lớp học. Hình sau minh họa vùng chứa các hoạt động quan tâm được
thu nhận trong một lớp học thực tế.

(a) Hoạt động ngồi học

(b) Hoạt động giơ tay

2
(c) Hoạt động đứng lên phát biểu

(d) Hoạt động sử dụng điện thoại

(e) Hoạt động ngủ/gục xuống bàn

Hình 1-1 Các hoạt động được quan tâm trong đề tài

1.1.3 Một số nghiên cứu về nhận dạng hoạt động của người học trong lớp học.

Nhận dạng tự động các hoạt động của sinh viên/người học trong lớp học đang thu
hút được sự quan tâm của cộng đồng nghiên cứu trong các năm gần đây. Một số hoạt
động thường quan tâm trong lớp học bao gồm: giơ tay, đứng lên phát biểu, ngủ …

Liên quan đến nhận dạng hoạt động giơ tay, một số nghiên cứu đã được đề xuất
để nhận dạng hoạt động giơ tay tuy nhiên đây vẫn là một bài toán thách thức do môi

3
trường lớp học thường là môi trường không kiểm soát do có sự biến đổi về số lượng
sinh viên/người học trong lớp, vị trí, sự che khuất và kích thước nhỏ của bàn tay và sự
đa dạng trong việc thực hiện các hoạt động.

Hình 1-2 Sự đa dạng trong hoạt động giơ tay

Các tác giả trong [1] đề xuất phương pháp phát hiện cử chỉ của tay thông qua
phương pháp trừ nền để xác định chuyển động và thực hiện tính toán các đặc trưng để
đưa ra quyết định về sự tồn tại của cử chỉ tay trong ảnh. Tuy nhiên, phương pháp trừ
nền không hiệu quả trong điều kiện lớp học do sự thay đổi nhanh của nền.

Trong [2] các tác giả đề xuất phương pháp phát hiện hành động giơ tay trong
điều kiện phòng họp và lớp học. Phương pháp được đề xuất thực hiện phát hiện mặt
trong từng khung hình để xác định vùng quan tâm (ROI). Sau đó phương pháp xác
định vị trí của tay trong vùng quan tâm dựa trên việc phân tích tính chất hình học của
các biên của tay. Vị trí và hướng của tay so với mặt sẽ được sử dụng để xác định hành
động giơ tay. Ngoài ra để giảm lỗi phát hiện nhầm, hệ thống sử dụng tần suất của hoạt
động giơ tay trong các khung hình trước đó.

Phương pháp đề xuất trong [3] tự động xác định vùng ứng với học sinh dựa trên
trừ nền. Sau đó đặc trưng SIFT và bộ phân lớp SVM được sử dụng cho bài toán nhận
dạng hoạt động giơ tay trong lớp học. Các tác giả trong [4], đề xuất ứng dụng các đặc
trưng Lienhart-Maydt cho phát hiện mặt và tay trên ảnh. Sau đó dựa trên quan hệ của
mặt và tay, hoạt động giơ tay được nhận dạng

Nhóm nghiên cứu ở trường ĐH Khoa học tự nhiên – ĐH Quốc gia Thành phố Hồ
Chí Minh [5] [6] đã đề xuất phương pháp phân đoạn và nhận dạng hoạt động trên
video. Từ chuỗi hình ảnh RGB, các tác giả đã đề xuất trích chọn đặc trưng toàn cục
(HOG và HOF) và đặc trưng cục bộ dựa trên chuyển động và SURF. Sau đó, các đặc
trưng này được biểu diễn thành các từ (visual word) theo mô hình BOW (Bag of
word). Với cách biểu diễn này một video sẽ được biểu diễn thành vector thể hiện sự

4
xuất hiện của các từ trong video. Cuối cùng mô hình học SVM được sử dụng để phân
loại các hoạt động. Phương pháp được các tác giả đề xuất đã cải tiến độ chính xác
nhận dạng so với một số phương pháp được đề cập trước đó trên 2 cơ sở dữ liệu dùng
chung là KTH và Weizmann.

Trong [7], nhóm nghiên cứu ở Đại học Bách Khoa Đà Nẵng đề xuất giải thuật
nhận dạng cử chỉ tay sử dụng các đặc trưng hình học và phương pháp phân lớp SVM.
Đầu tiên, vùng tương ứng với bàn tay sẽ được tách ra dựa trên phương pháp phân đoạn
màu da. Tiếp theo, các đặc trưng như số ngón tay, góc giữa các ngón... được trích chọn
và đưa vào bộ phân lớp SVM. Mặc dù đạt được kết quả nhận dạng 89.5% trên bộ cơ
sở dữ liệu gồm 27 cử chỉ tay tĩnh nhưng phương pháp đề xuất chỉ hoạt động hiệu quả
trong các điều kiện tốt (nền đơn giản, tay được phân tách tốt).

Nhóm nghiên cứu tại Viện CNTT, Viện hàn lâm khoa học Việt Nam đã thực hiện
so sánh hai bộ phân lớp là SVM và RVM (Relevance Vector Machines) cho bài toán
nhận dạng cử chỉ sử dụng thông tin khung xương [8]. Với mỗi khớp xương, các tác giả
trích 3 thông tin bao gồm tốc độ tương đối, góc, và tốc độ của góc. Các đặc trưng này
được nối lại thành một vector đặc trưng đại diện cho mỗi cử chỉ. Các tác giả đã chỉ ra
rằng RVM cho kết quả nhận dạng gần tương đương với SVM trong khi thời gian tính
toán giảm được đáng kể.

Nhóm nghiên cứu tại Trường Đại học Bách Khoa Hà Nội đã đề xuất các phương
pháp kết hợp đặc trưng cho bài toán nhận dạng hoạt động nói chung và nhận dạng hoạt
động bất thường nói riêng. Trong [9], nhóm đề xuất kết hợp cả thông tin từ cảm biến
gia tốc, ảnh màu, ảnh độ sâu trong nhận dạng 20 hoạt động của người. Liên quan đến
nhận dạng hoạt động dựa trên khớp xương, dựa trên quan sát các khớp xương có thể
đóng các vai trò khác nhau trong nhận dạng hoạt động, nhóm đã đề xuất phương pháp
trích chọn khớp xương chứa nhiều thông tin nhất và trích chọn các đặc trưng ma trận
hiệp phương sai từ tập khớp xương đã được lựa chọn phục vụ cho bài toán nhận dạng
hoạt động [10]. Trong [11], nhóm cũng đề xuất khai thác thông tin về thời gian và
không gian của hoạt động dựa trên việc kết hợp của mạng nơ ron tích chập CNN và
mạng bộ nhớ ngắn dài (LSTM) trong biểu diễn và nhận dạng hoạt động.

Như đã phân tích ở trên, một số nhóm nghiên cứu trong và ngoài nước đã tiến
hành các nghiên cứu về nhận dạng hoạt động từ các video thu thập về hoạt động của

5
lớp học. Tuy nhiên các nghiên cứu về bài toán nhận dạng trong môi trường lớp học còn
rất hạn chế. Ngoài ra, các nghiên cứu mới thực hiện phát triển từng mô đun rời rạc.
Hiện tại chưa có một hệ thống phân tích tự động hoạt động học tập nào được xây dựng
và triển khai trên thực tế. Trong khuôn khổ của đề tài cấp Bộ do Trường Đại học Bách
Khoa Hà Nội chủ trì sẽ thực hiện các nghiên cứu về nhận dạng hoạt động từ hình ảnh
thu thập trên các cameras giám sát lớp học. Nhiệm vụ của đề tài tốt nghiệp của em là
xây dựng hệ thống quản lý các thông tin trong đề tài trong đó hệ thống phải thực hiện
kết nối với mô đun nhận dạng, lưu trữ các thông tin cần thiết và cho phép người dùng
thực hiện truy xuất, thống kê dữ liệu.

1.2 Giới thiệu về các công nghệ sử dụng trong đồ án

1.2.1 Mô hình Client-Server

Mô hình Client Server là mô hình mạng máy tính trong đó các máy tính con được
đóng vai trò như một máy khách, chúng làm nhiệm vụ gửi yêu cầu đến các máy chủ.
Để máy chủ xử lý yêu cầu và trả kết quả về cho máy khách đó.

Hình 1-3 Mô hình Client – Server

Trong mô hình Client - Server, server chấp nhận tất cả các yêu cầu hợp lệ từ mọi
nơi khác nhau trên Internet, sau đó trả kết quả về máy tính đã gửi yêu cầu đó

Máy tính được coi là máy khách khi chúng làm nhiệm vụ gửi yêu cầu đến các
máy chủ và đợi câu trả lời được gửi về. Để máy khách và máy chủ có thể giao tiếp
được với nhau thì giữa chúng phải có một chuẩn nhất định, và chuẩn đó được gọi là
giao thức. Một số giao thức được sử dụng phổ biến hiện nay như: HTTPS, TCP/IP,
FTP,...

6
Nếu máy khách muốn truy xuất các thông tin từ máy chủ, chúng phải tuân theo
một giao thức mà máy chủ đó đưa ra. Nếu yêu cầu đó được chấp nhận thì máy chủ sẽ
thu thập thông tin và trả về kết quả cho máy khách yêu cầu. Bởi vì Server - máy chủ
luôn luôn trong trạng thái sẵn sàng để nhận request từ client nên chỉ cần client gửi yêu
cầu tín hiệu và chấp nhận yêu cầu đó thì server sẽ trả kết quả về phía client trong thời
gian ngắn nhất.

Ưu điểm của mô hình:

 Giúp chúng ta có thể làm việc trên bất kì một máy tính nào có hỗ trợ giao
thức truyền thông. Giao thức chuẩn này cũng giúp các nhà sản xuất tích hợp
lên nhiều sản phẩm khác nhau mà không gặp phải khó khăn gì.
 Có thể có nhiều server cùng làm một dịch vụ, chúng có thể nằm trên nhiều
máy tính hoặc một máy tính.
 Chỉ mang đặc điểm của phần mềm mà không hề liên quan đến phần cứng,
ngoài yêu cầu duy nhất là server phải có cấu hình cao hơn các client.
 Hỗ trợ người dùng nhiều dịch vụ đa dạng và sự tiện dụng bởi khả năng truy
cập từ xa.
 Cung cấp một nền tảng lý tưởng, cho phép cung cấp tích hợp các kỹ thuật
hiện đại như mô hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thông tin
địa lý (GIS).

Nhược điểm:

 Vấn đề bảo mật dữ liệu thông tin đôi khi còn chưa được an toàn do phải trao
đổi dữ liệu giữa 2 máy tính khác nhau ở 2 khu vực địa lý cách xa nhau. Và
đây cũng nhược điểm duy nhất của mô hình này. Tuy nhiên vấn đề này có
một số giao thức đã hỗ trợ bảo mật dữ liệu khi truyền tải. Giao thức được sử
dụng phổ biến như HTTPS.

FrontEnd và BackEnd:

Từ mô hình Client – Server, giới lập trình viên hiện đại đã phân trang web ra làm
hai phần để thuận tiện phát triển và quản lý: Front-end - Back-end

Phần front-end của một trang web là phần tương tác với người dùng. Tất cả mọi
thứ ta nhìn thấy khi điều hướng trên Internet, từ các font chữ, màu sắc cho tới các

7
menu xổ xuống và các thanh trượt, là một sự kết hợp của HTML, CSS, và JavaScript
được điều khiển bởi trình duyệt máy tính của ta.

Đâu là những phần giúp phần front-end của một trang web có thể hoạt động
được? Tất cả dữ liệu sẽ được lưu trữ ở đâu? Đó là phần việc của back end. Phần back
end của một trang web bao gồm một máy chủ, một ứng dụng, và một cơ sở dữ liệu.
Một lập trình viên back-end xây dựng và duy trì công nghệ mà sức mạnh của những
thành phần đó, cho phép phần giao diện người dùng của trang web có thể tồn tại được.

1.2.2 Javascript và Nodejs Back-end

1.2.2.1 Javascript

JavaScript được tạo trong mười ngày bởi Brandan Eich, một nhân viên của
Netscape, vào tháng 9 năm 1995. Được đặt tên đầu tiên là Mocha, tên của nó được đổi
thành Mona rồi LiveScript trước khi thật sự trở thành JavaScript nổi tiếng như bây giờ.
Phiên bản đầu tiên của ngôn ngữ này bị giới hạn độc quyền bởi Netscape và chỉ có các
tính năng hạn chế, nhưng nó tiếp tục phát triển theo thời gian, nhờ một phần vào cộng
đồng các lập trình viên đã liên tục làm việc với nó.

Trong năm 1996, JavaScript được chính thức đặt tên là ECMAScript.
ECMAScript 2 phát hành năm 1998 và ECMAScript 3 tiếp tục ra mắt vào năm 1999.
Nó liên tục phát triển thành JavaScript ngày nay, giờ đã hoạt động trên khắp mọi trình
duyệt và trên khắp các thiết bị từ di động đến máy tính bàn.

JavaScript liên tục phát triển kể từ đó, có lục đạt đến 92% website đang sử dụng
JavaScript vào năm 2016. Chỉ trong 20 năm, nó từ một ngôn ngữ lập trình riêng trở
thành công cụ quan trọng nhất trên bộ công cụ của các chuyên viên lập trình web. Nếu
ta đang dùng internet, vậy chắc chắn ta đã từng sử dụng JavaScript rồi.

JavaScript có rất nhiều ưu điểm khiến nó vượt trội hơn so với các ngôn ngữ lập
trình khác, đặc biệt trong các trường hợp thực tế. Sau đây chỉ là một số lợi ích của
JavaScript:

 Người dùng không cần một compiler vì web browser có thể hiểu và
biên dịch JavaScript
 Đây là ngôn ngữ dễ học hơn các ngôn ngữ lập trình khác
 Lỗi dễ phát hiện hơn và vì vậy dễ sửa hơn

8
 JS hoạt động trên nhiều trình duyệt, nền tảng,...
 Ta có thể sử dụng JavaScript để kiểm tra input và giảm thiểu việc kiểm
tra thủ công khi truy xuất qua cơ sở dữ liệu.
 JS giúp website tương tác tốt hơn với khách truy cập
 Ngoài ra ngôn ngữ này còn nhanh hơn và nhẹ hơn các ngôn ngữ lập
trình khác.

1.2.2.2 Nodejs

NodeJS là một nền tảng được xây dựng trên “V8 Javascript engine” được viết
bằng C++ và Javascript. Nền tảng này được phát triển bởi Ryan Lienhart Dahl vào
năm 2009. Node.js ra đời khi các developer đời đầu của JavaScript mở rộng nó từ một
thứ ta chỉ chạy được trên trình duyệt thành một thứ ta có thể chạy trên máy của mình
dưới dạng ứng dụng độc lập. Giờ đây ta có thể làm được nhiều thứ với JavaScript hơn
là chỉ tương tác với các website.

Node.js có mã nguồn mở, hoàn toàn miễn phí và được hàng ngàn lập trình viên
trên thế giới sử dụng. Nó mang lại rất nhiều lợi ích so với các nền tảng phía máy chủ
khác như Java hoặc PHP.

NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ Window cho
tới Linux, OS X nên đó cũng là một lợi thế. NodeJS cung cấp các thư viện phong phú
ở dạng Javascript Module khác nhau giúp đơn giản hóa việc lập trình và giảm thời
gian ở mức thấp nhất.

Ý tưởng chính của Node js là sử dụng non-blocking, hướng sự vào ra dữ liệu


thông qua các tác vụ thời gian thực một cách nhanh chóng. Bởi vì, Node js có khả
năng mở rộng nhanh chóng, khả năng xử lý một số lượng lớn các kết nối đồng thời
bằng thông lượng cao.

Nếu như các ứng dụng web truyền thống, các request tạo ra một luồng xử lý yêu
cầu mới và chiếm RAM của hệ thống thì việc tài nguyên của hệ thống sẽ được sử dụng
không hiệu quả. Chính vì lẽ đó giải pháp mà Node js đưa ra là sử dụng luồng đơn
(Single-Threaded), kết hợp với non-blocking I/O để thực thi các request, cho phép hỗ
trợ hàng chục ngàn kết nối đồng thời.

9
a) Cấu trúc Node.js

Module

Module giống như các thư viện JavaScript sử dụng trong ứng dụng Node.js
application bao gồm một bộ các chức năng. Để đưa một module vào ứng dụng Node.js
thì phải sử dụng hàm require() function with the với dấu ngoặc đơn chứa tên module.
Node.js có rất nhiều module cung cấp các chức năng cơ bản cần thiết cho ứng dụng
web.

Ví dụ như các module trong bảng sau:

Hình 1-4 Một số module của Nodejs

Console

Bảng điều khiển cung cấp phương thức gỡ lỗi tương tự như bảng điều khiển cơ
bản của JavaScript trên các trình duyệt internet. Nó sẽ in các thông báo ra stdout và
stderr.

Hình 1-5 Ví dụ về console

10
Cluster

Node.js được xây dựng dựa trên ý tưởng lập trình đơn luồng. Cluster là một
module cho phép đa luồng bằng cách tạo ra các quy trình con có chung cổng máy chủ
và chạy đồng thời.

Hình 1-6 Module cluster

Global

Biến toàn cục trong Node.js tồn tại trong tất cả các module. Những biến này bao
gồm các hàm, module, string, v…v…. Một số biến toàn cục trong Node.js có thể kể
đến trong bảng sau:

Hình 1-7 Biến global trong Nodejs

Error Handling

11
Các ứng dụng Node.js gặp 4 loại lỗi sau.

Hình 1-8 Các loại lỗi trong Nodejs

Lỗi trong Node.js được sử lý qua các exception. Chẳng hạn, chúng ta phải xử lý
một lỗi xảy ra khi chia cho 0. Lỗi này sẽ làm crash ứng dụng Node.js, vì vậy chúng ta
phải xử lý lỗi này để ứng dụng có thể hoạt động bình thường.

Streaming

Stream là các đối tượng cho phép ta đọc và viết dữ liệu một cách liên tục. Có 4
loại stream như sau:

 Readable: Là loại stream mà từ đó dữ liệu có thể đọc được


 Writable: Là loại stream mà dữ liệu có thể được viết lên đó
 Duplex: Là loại stream có thể đọc và viết được
 Transform: Là loại stream có thể thao tác dữ liệu trong khi nó đang được
đọc hoặc viết

Buffer

12
Bộ đệm là một module cho phép xử lý các stream chỉ chứa các dữ liệu dạng nhị
phân. Một bộ đệm trống với độ dài là '10' được tạo ra bởi phương thức sau:

Domain

Domain module sẽ chặn các lỗi chưa được xử lý. Hai phương thức được dùng để
chặn lỗi đó là:

 Internal Binding: Error emitter thực thi code trong phương thức run.
 External Binding: Error emitter được thêm thẳng vào domain qua phương
thức add của nó

DNS

DNS module được sử dụng để kết nối đến một máy chủ DNS và thực hiện phân
giải tên miền sử dụng phương thức sau:

DNS module cũng được sử dụng để thực hiện phân giải tên miền mà không cần
kết nối mạng bằng phương thức sau:

Debugger

Node.js có chức năng gỡ lỗi có thể được sử dụng với một client gỡ lỗi được tích
hợp sẵn. Trình gỡ lỗi của Node.js không có quá nhiều tính năng nhưng nó hỗ trợ các
chức năng kiểm tra code cơ bản. Trình gỡ lỗi có thể được sử dụng trong bảng lệnh
bằng cách sử dụng từ khoá 'inspect' phía trước tên của file JavaScript. Ví dụ, để kiểm
tra file myscript.js, ta có thể làm theo phương thức sau:

b) Hai NodeJS framework sử dụng phổ biến:

Express

13
Khi nói đến các framework Node.js phổ biến nhất, Express là lựa chọn đầu tiên
vì nó được 73% các nhà phát triển yêu thích và sử dụng. Express là một trong những
Node.Js Framework động cung cấp sự linh hoạt hoàn toàn và sự tự do cho các nhà
phát triển trong việc tùy chỉnh giao diện của ứng dụng. Vì nó nhẹ, do đó, nó cực kỳ
nhanh và giúp định hướng các máy chủ và bộ định tuyến. Ngoài ra, framework này lý
tưởng cho các ứng dụng web một trang, trang web hoặc các API HTTP công khai.

Hỗ trợ hơn 14 công cụ và mang lại hiệu suất tuyệt vời, Express rất phù hợp cho
tất cả các loại phát triển web và ứng dụng di động ngay từ cấp nhỏ đến cấp doanh
nghiệp. Vì framework này của Node.Js có sẵn để tạo API, do đó, ta có thể phát triển
ứng dụng web nhanh hơn với Express Ngoài ra, module này đi kèm với tính năng định
tuyến mạnh mẽ, các tính năng bảo mật và điều khoản xử lý lỗi, vì vậy các nhà phát
triển có thể dễ dàng sử dụng nó phát triển các ứng dụng web trên nhiều nển tảng khác
nhau.

SocketIO [12]

Socket.io là một full-stack framework có thể được sử dụng bởi nhiều ngôn ngữ
lập trình. Để xây dựng một ứng dụng realtime cần sử dụng socket.io. Socket.io sẽ giúp
các bên ở những địa điểm khác nhau kết nối với nhau, truyền dữ liệu ngay lập tức
thông qua server trung gian. Socket.io có thể được sử dụng trong nhiều ứng dụng như
chat, game online, cập nhật kết quả của một trận đấu đang xảy ra,...

c) NPM: The Node Package Manager

Trình quản lý gói Node.js (NPM) là trình quản lý gói mặc định và phổ biến nhất
trong hệ sinh thái Node.js và chủ yếu được sử dụng để cài đặt và quản lý các module
bên ngoài trong dự án Node.js. Nó cũng thường được sử dụng để cài đặt một loạt các
công cụ CLI và chạy các tập lệnh dự án. NPM theo dõi các module được cài đặt trong
một dự án bằng file package.json , nằm trong folder của dự án và chứa:

 Tất cả các module cần thiết cho một dự án và các version đã cài đặt của chúng

 Tất cả metadata cho một dự án, chẳng hạn như tác giả, giấy phép, v.v.

 Các tập lệnh có thể được chạy để tự động hóa các việc trong dự án

14
1.2.3 ReactJS

Hình 1-9 ReactJS

Trước đây, một trang web chỉ đơn thuần là html, css, javascript được viết toàn bộ
trong một file html và được server gửi lên cho trình duyệt đọc và hiển thị (Server-side
rendering). Thiết kế web hiện đại có một khái niệm mới, đó là Client-side rendering.
Thay vì gửi html, css, javascript, server chỉ gửi thông tin thô qua các response json.
Client sẽ nhận thông tin và tự render ra giao diện. ReactJS được phát triển trên ý tưởng
đó. Nhà phát triển ReactJs không ai khác chính là ông lớn Facebook. Mục đích của
việc tạo ra ReactJS là để tạo ra những ứng dụng website hấp dẫn với tốc độ nhanh và
hiệu quả cao với những mã hóa tối thiểu. Và mục đích chủ chốt của ReactJS đó chính
là mỗi website khi đã sử dụng ReactJS thì phải chạy thật mượt thật nhanh và có khả
năng mở rộng cao và đơn giản thực hiện.

1.2.3.1 Lợi ích của việc sử dụng ReactJS

Lợi ích đầu tiên mà ReactJS đó chính là việc tạo ra cho chính bản thân nó một
DOM ảo, đây là nơi mà các component được tồn tại trên đó. Việc tạo ra dom như vậy
giúp cải thiện hiệu suất làm việc rất nhiều, khi có tính toán cần thay đổi hoặc cần cập
nhật những gì lên DOM thì ReactJS đều tính toán trước và việc còn lại chỉ là thực hiện
chúng lên DOM, làm như vậy sẽ giúp cho ReactJS tránh được những thao tác cần có
trên một DOM mà không cần tốn thêm hiệu năng của trang web.

Lợi ích thứ hai mà ReactJS đem lại đó chính là việc viết các đoạn code JS sẽ trởi
nên dễ dàng hơn vì nó sử dụng một cú pháp đặc biệt đó chính là cú pháp JSX nghĩa là

15
cú pháp này cho phép trộn được giữa code HTML và Javascript. Ngoài ra ta còn có thể
đem đoạn code thêm vào trong hàm render mà không cần phải thực hiện việc nối chuỗi
và đây được đánh giá là một trong những đặc tính thú vị của ReactJS và việc chuyển
đổi các đoạn HTML thành các hàm khởi động đều được thực hiện từ bộ biến đổi chính
đó chính là JSX.

Còn một lợi ích khác đáng nói tới là Reactjs hiện tại đang rất phổ biến do đó có
rất nhiều nguồn support ở mọi nơi và các library hỗ trợ có rất nhiều. Việc này khiến
lập trình viên trở nên linh động và việc lập trình tốn ít thời gian hơn.

1.2.3.2 Nhược điểm của ReactJS

Reactjs chỉ phục vụ cho tầng View. React chỉ là View Library nó không phải là
một MVC framework như những framework khác. Đây chỉ là thư viện của Facebook
giúp render ra phần view. Vì thế React sẽ không có phần Model và Controller, mà phải
kết hợp với các thư viện khác. React cũng sẽ không có 2-way binding hay là Ajax.
Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại.
React khá nặng nếu so với các framework khác React có kích thước tương tương với
Angular (Khoảng 35kb so với 39kb của Angular). Trong khi đó Angular là một
framework hoàn chỉnh.

Reactjs không thân thiện với SEO. Nếu khách hàng cần một trang landing-page
thân thiện với SEO để có thể chạy qua các công cụ tìm kiếm của Google, Bing,… thì
Reactjs không làm được điều đó chính bởi vì cơ chế Client-side rendering. Toàn bộ dữ
liệu được xử lý và render tại Client, vì vậy các bot AI của các công cụ tìm kiếm sẽ
hoàn toàn bó tay khi đọc các dữ liệu thô được trao đổi thông qua Client – Server. Nếu
thực sự cần SEO, ta có thể sử dụng NextJS, một library tương tự như ReactJS nhưng
lại có cơ chế Server-side rendering.

1.2.3.3 Kiến trúc cơ bản của ReactJS

React áp dụng một cấu trúc Flux. Khác với cấu trúc của một số framework khác
(vd: AngularJS) sử dụng bidirectional data flow (dữ liệu đi 2 chiều) thì data trong Flux
luôn đi một chiều uni-directional. Các ứng dụng React thường sử dụng thêm một thư
viện quản lý global state management Redux. Redux có cấu trúc rất đơn giản: chứa
một global state, mỗi khi nhận action thì trả về một state mới tùy theo nội dùng của

16
action đó. Để thực hiện thêm các tính năng phức tạp hơn thì ta dùng các middleware:
Redux-persist, Redux-saga, và Redux-logger,…

1.2.4 Cơ sở dữ liệu và hệ quản trị CSDL

Cơ sở dữ liệu có tên tiếng anh là Database, viết tắt là CSDL. Là một tập hợp các
dữ liệu có tổ chức, được lưu trữ và truy cập từ hệ thống máy tính. Khi cơ sở dữ liệu
phức tạp hơn, chúng sẽ được phát triển bằng cách sử dụng các thiết kế và mô hình hóa
hình thức. Tóm lại, có sở dữ liệu là hệ thống gồm rất nhiều thông tin, dữ liệu được xây
dựng theo một cấu trúc nhất định để đáp ứng nhu cầu khai thác, sử dụng của nhiều
người hay chạy nhiều chương trình cùng một lúc. Khi áp dụng hình thức lưu trữ này,
sẽ khắc phục được những điểm yếu của việc lưu file thông thường trên máy tính. Các
thông tin dữ liệu đảm bảo được sự nhất quán, hạn chế được việc trùng lặp thông tin.

Từ SQL là viết tắt của cụm Structured Query Language, có nghĩa là loại ngôn
ngữ truy vấn có cấu trúc. Đây là một loại ngôn ngữ máy tính giúp hỗ trợ các thao tác
lưu trữ, truy xuất dữ liệu cùng một cơ sở dữ liệu quan hệ một cách nhanh chóng. Ngôn
ngữ này đã được ANSI – viện tiêu chuẩn quốc gia của Hoa Kỳ đặt tiêu chuẩn hóa, và
trở thành một ngôn ngữ được sử dụng phổ biến. Một số thành phần và lệnh thường
được sử dụng trong ngôn ngữ SQL.

 Ngôn ngữ điều khiển dữ liệu DCL: DCL của ngôn ngữ SQL sẽ gồm có những
lệnh sau:

GRANT: Đây là lệnh được sử dụng khi muốn trao quyền cho người dùng

REVOKE: Đây là lệnh được sử dụng khi muốn thu hồi lại quyền đã trao cho
người sử dụng.

 Ngôn ngữ sử dụng thao tác dữ liệu DML của ngôn ngữ SQL

Ngôn ngữ thao tác dữ liệu (DML- Data Manipulation Language) bao gồm các
lệnh sau:

SELECT: Đây là lệnh thường được dùng khi muốn lấy một hoặc một vài bản ghi
nhất định, có từ một hoặc nhiều bảng khác nhau.

INSERT: Được sử dụng khi ta muốn tạo nên một bản ghi

17
UPDATE: Lệnh này sẽ được thực hiện để chỉnh sửa một bản ghi

DELETE: Đây là lệnh được dùng để xóa bản ghi.

 Ngôn ngữ địn nghĩa dữ liệu DDL

DDL là viết tắt của từ Data Definition Language. Cụm này gồm có các lệnh như
sau:

CREATE: Giúp tạo ra một bảng mới, một view mới của một bảng hoặc là của các
đối tượng khác nhau trong cùng một cơ sở dữ liệu.

ALTER: Được sử dụng khi muốn sửa đổi đối tượng khi đã tồn tại bên trong một
cơ sở dữ liệu.

DROP: Xóa bảng, xóa view của một bảng hoặc là của một đối tượng khác bên
trong cơ sở dữ liệu đó.

Trong đồ án em sử dụng hệ quản trị cơ sở dữ liệu MySQL.

1.3 Kết luận


Như vậy trong chương này em đã giới thiệu tổng quan chung về bài toán nhận
dạng hoạt động trong lớp học cũng như các cách tiếp cận đang được sử dụng, vai trò
của hệ thống quản lý thông tin từ các hệ thống nhận dạng và các thông tin cơ bản về
các công nghệ sẽ được sử dụng trong đồ án. Trong phần sau em sẽ trình bày các bước
được tiến hành để xây dựng một hệ thống quản lý thông tin về hoạt động của lớp học.

18
CHƯƠNG 2. PHÂN TÍCH THIẾT KẾ HỆ THỐNG

2.1 Yêu cầu bài toán


Như em trình bày trong mục Mở đầu, đề tài của em có mục tiêu là Xây dựng hệ
thống quản lý thông tin hoạt động của lớp học nhằm lưu trữ và quản lý các thông tin
liên quan đến lớp học, camera gắn tại lớp học, quản lý kết quả nhận dạng để thực hiện
truy xuất, báo cáo lại khi cần thiết. Các nội dung liên quan đến các kỹ thuật nhận dạng,
phát triển mô đung nhận dạng hoạt động từ hình ảnh thu thập từ các camera được thực
hiện bởi thành viên khác trong nhóm thực hiện đề tài.

2.1.1 Yêu cầu về chức năng

Về mặt chức năng, hệ thống được xây dựng cần đảm bảo các chức năng sau :

 Thu thập hình ảnh của lớp học từ cameras gắn tại các lớp học và gửi về hệ
thống.
 Tự động kết nối/tích hợp với mô đun phân tích nhận dạng các hoạt động
quan tâm từ hình ảnh thu thập được và lưu trữ kết quả phân tích.
 Hệ thống có khả năng quản lý các thông tin về người dùng, phân quyền
người dùng
 Quản lý thông tin về lớp học và hệ thống camera gắn tại các lớp học.
 Hiển thị hình ảnh và kết quả nhận dạng, thống kê và xuất báo cáo.

2.1.2 Yêu cầu phi chức năng

 Phân tích/nhận dạng các hành động chính xác.


 Dữ liệu được lưu trữ toàn vẹn.
 Các thao tác với website và cơ sở dữ liệu nhanh và bảo mật.
 Đảm bảo tính ổn định của hệ thống.

2.2 Phân tích thiết kế

2.2.1 Sơ đồ khối

Sơ đồ khối của hệ thống được thể hiện ở Hình 2-1. Trong đó hình ảnh camera từ
lớp học sẽ được thu thập và phân tích thông qua mô đun Phân tích nhận dạng được

19
phát triển ở [13]. Các kết quả nhận dạng sẽ được gửi đến mô đun quản lý để đưa kết
quả vào trong cơ sở dữ liệu. Các chức năng và giao diện chương trình được phát triển
trên client cho phép người dùng thực hiện kết nối cơ sở dữ liệu và thực thi các tác vụ.

Hình 2-10 Sơ đồ khối chung của hệ thống, trong đó các khối bôi đậm là nội dung được
thực hiện trong đồ án.

2.2.2 Biểu đồ phân rã chức năng

Trong Hình 2.2, các chức năng của hệ thống được thể hiện bao gồm 5 tính năng
chính.

 Phân tích nhận dạng: Module nhận dạng đã được triển khai ở [13].
 Quản lý tài khoản: Tính quản lý toàn bộ quyền truy cập và tài khoản của
hệ thống.
 Quản lý dữ liệu: Quản lý toàn bộ dữ liệu lưu trữ với các thao tác thêm,
sửa, xoá.
 Phân tích/ Thống kê: Tính năng thống kê với tiện ích vẽ biểu đồ thống kê.
 Xem trực tiếp luồng video: Cho phép người dùng xem trực tiếp từ các
camera được kết nối trong hệ thống.

20
Hình 2-11 Biểu đồ phân rã chức năng của hệ thống

2.2.3 Đặc tả Use Case

 Đối tượng sử dụng (actor) bao gồm: Admin, Người dùng và Hệ thống
nhận diện ( moudule Phân tích nhận dạng )
 Các use case:
- Phân tích nhận dạng: Ở bước này module Phân tích nhận dạng sẽ lấy dữ
liệu từ các camera, phân tích dữ liệu và gửi kết quả về hệ thống.
- Quản lý dữ liệu, Quản lý tài khoản: Chỉ admin mới có quyền quản lý,
chỉnh sửa các dữ liệu của hệ thống.
- Đối với các use case thống kê và vẽ biểu đồ thì toàn bộ user có thể truy
xuất.

21
Hình 2-12 Sơ đồ đặc tả use case của hệ thống

22
2.2.4 Sơ đồ luồng hoạt động

Hình 2-13 Sơ đồ luồng hoạt động

2.3 Xây dựng cơ sở dữ liệu

2.3.1 Mô hình thực thể liên kết

Để quản lý các thông tin đặt ra trong ứng dụng, mô hình thực thể liên kết được
xây dựng và minh họa trong Hình 2.5. Trong đó các thực thể là Action, Image,
Camera, Room, Account. Mối quan hệ giữa Action và Image là các kết quả từ module
Phân tích nhận dạng, quan hệ N – N, vì vậy cần thêm một bảng Action-Image để lưu
thêm các thông tin về kết quả như id, số lượng kết quả hay thời gian phân tích,…Mỗi
Image chỉ thuộc một Camera, vì vậy quan hệ là 1 – N. Tương tự mỗi Camera chỉ thuộc
một Room, quan hệ 1 - N. Riêng thực thể Account không có quan hệ với các thực thể
khác.

23
Hình 2-14 Mô hình thực thể liên kết

2.3.2 Mô hình quan hệ

Từ mô hình thực thể liên kết Hình 2.5, ta chuyển đổi sang mô hình quan hệ trong
CSDL ở Hình 2.6.

Hình 2-15 Mô hình quan hệ

24
Bảng 2-1 Từ điển dữ liệu cho cơ sở dữ liệu

Bảng Tên dữ liệu Ý nghĩa Kiểu Giá trị mẫu


dữ liệu

account id Mã tài Int 1


khoản

username Tên đăng Varchar admin1


nhập

password Mật khẩu Varchar 123abc@@@

fullname Tên người Varchar Nguyễn Tiến Đạt


dùng

role Quyền truy Int 0 ( admin)


cập

description Mô tả Varchar Tài khoản admin

room id Mã phòng Int 1


học

name Tên phòng Varchar Phòng 301


học

address Địa chỉ Varchar D3 - Trường đại học Bách


phòng học Khoa Hà Nội

description Mô tả Varchar Phòng dành cho các lớp


học đại cương

camera id Mã camera Int 1

name Tên camera Int Camera số 3

25
ipAddress Địa chỉ IP Varchar 192.168.1.100

spec Thông tin Varchar Độ phân giải 400x680


cấu hình

status Trạng thái Tinyint 0 ( OFF)

description Mô tả Varchar Camera quản lý phòng học

roomId Mã phòng Int 1


học lắp đặt
camera

image id Mã hình Int 1


ảnh

timestamp Thời gian Date 2022-01-01 12:00:00


chụp ảnh

resultURL Địa chỉ lưu Varchar C:/Users/Admin/result.json


kết quả
phân tích/
nhận dạng

imageURL Địa chỉ lưu Varchar C:/Users/Admin/image.png


hình ảnh

cameraId Mã camera Int 1


chụp ảnh

action id Mã hành Int 1


động

name Tên hành Varchar Sử dụng điện thoại


động

recognition_ id Mã kết quả Int 1

26
result

timestamp Thời gian Date 2022-01-01 12:00:00


ghi nhận

resultCount Số lượng Int 5


hành động
ghi nhận

description Mô tả Varchar Nhận dạng cơ bản

actionID Mã hành Int 1


động

imageID Mã hình Int 1


ảnh

2.4 Xây dựng phần server

2.4.1 Công nghệ sử dụng và mô hình triển khai

Như đã phân tích trong phần cơ sở lý thuyết, nodejs là một framework lý tưởng để
xây dựng backend. Vì vậy, trong khuôn khổ của đồ án tốt nghiệp, em sử dụng các
công nghệ sau:

 NodeJs Express Framwork


 Sequelize (Truy xuất database)
 JWT (Công nghệ mã hoá token)
 RTSP (Công nghệ stream video)
 Socket.io
 MySQL

Phía server sẽ được triển khai mô hình MVC với các ưu điểm chính :

 Tiết kiệm băng thông: Vì không sử dụng viewstate nên MVC rất nhẹ và tiết
kiệm được diện tích của băng thông. Khi cần tương tác gửi và nhận dữ liệu

27
liên tục, người dùng có thể sử dụng các ứng dụng trên web. Điều này giúp
website có thể hoạt động ổn định và tốt hơn.
 Dễ dàng kiểm tra: Nhờ có MVC, ta sẽ dễ dàng hơn trong việc kiểm tra, rà
soát lỗi, đảm bảo được chất lượng và độ uy tín cho phần mềm trước khi tới
tay người dùng.
 Điều khiển: Sử dụng mô hình MVC sẽ giúp điều khiển được nền tảng các
ngôn ngữ lập trình hiện đại như HTML, CSS, Javascript,... với nhiều hình
thức khác nhau.
 Chức năng Separation of Concern: Cho phép phân tách một cách rõ ràng
các thành phần model, data, giao diện hay nghiệp vụ.
 Tính kết hợp: Có thể thoải mái viết code trên nền tảng web khi tích hợp ở
mô hình MVC để giảm tải dữ liệu server.
 Tính đơn giản: Kết cấu của mô hình MVC tương đối đơn giản và dễ dàng
sử dụng ngay cả khi không có chuyên môn.

Một trong những yêu cầu của hệ thống là phải hiển thị được hình ảnh thu nhận từ
camera gắn trong lớp học.

2.4.2 Triển khai stream luồng video

Để stream video, ta lấy luồng rtsp đã được cung cấp từ các camera. Địa chỉ rtsp
được lưu trong bảng camera (streamLink). Package rtsp-ffmpeg [14] hỗ trợ việc đọc
và chuyển luồng rtsp thành các base64 image với tốc độ khung hình gốc.
rtsp = require('rtsp-ffmpeg')

var uri = 'rtsp://example:example/,

stream = new rtsp.FFMpeg({input: uri});

var pipeStream = function(data) {

// data là phần dữ liệu hình ảnh dưới dạng ByteArray

stream.on('data', pipeStream); // dữ liệu sẽ được chuyển đổi và gửi


liên tục với hàm stream.on

Sau khi chuyển đổi luồng rtsp dưới dạng các base64 image, em sử dụng
Socket.io để gửi dữ liệu realtime tới các client:

28
io = require('socket.io')(server)

io.on('connection', function(socket) {

var pipeStream = function(data) {

socket.emit('data', data.toString('base64'));

// chuyển đổi sang dạng base64 string

};

stream.on('data', pipeStream);

socket.on('disconnect', function() {

stream.removeListener('data', pipeStream);

});

});

2.4.3 Triển khai phần quản lý dữ liệu

Các api được viết dưới quy chuẩn Restfull api. Bao gồm GET, POST, PUT,
DELETE thực hiện các thao tác hiển thị, thêm, sửa, xoá. Phần triển khai phân quyền
và kiểm tra token được thực hiện bởi các middleware đảm bảo tính bảo mật.

2.4.4 Triển khai tính năng thống kê, vẽ biểu đồ

2.4.4.1 Tính năng thống kê

Dữ liệu cung cấp cho tính năng thống kê được truy xuất theo phòng học và thời
gian. Vì vậy có 3 thông số cần cung cấp cho api: roomId, timeFrom, timeTo. Khi user
nhập 3 thông số này ở trên UI, hệ thống sẽ truy xuất toàn bộ các hình ảnh được chụp
trong phòng theo roomId. Từ đó lấy được toàn bộ thông tin về các kết quả phân tích
trong khoản thời gian timeFrom – timeTo và gửi lại về response của api để client xử lý
việc hiển thị.

2.4.4.2 Tính năng vẽ biểu đồ

Phần vẽ biểu đồ sử dụng một API khác và cũng nhận vào các thông số tương tự
như phần thống kê. Tuy nhiên thay vì trả về toàn bộ các record, hệ thống sẽ trả về một
object bao gồm tên các hành động và số lượng hành động xảy ra.

29
2.4.5 Tích hợp kết quả nhận dạng

Như đã mô tả ở trên, các phương thức và thao tác nhận dạng sẽ được coi như một
module bên ngoài (module nhận dạng). Vì vậy em cần thực hiện kế nối hệ thống với
module này. Module nhận dạng được triển khai bằng ngôn ngữ Python và output là file
json, vì vậy em cần viết một đoạn script bổ sung vào module để đọc dữ liệu từ file json
và nhập dữ liệu vào CSDL MySQL.

2.4.5.1 Cấu trúc file json


{

  info: { // thông tin

    year: "2021",

    version: "1.0",

    description: "inside class room",

    contributor: "Mica",

    url: "mica.edu.vn:8007/iclassrom/dataset",

    date_created: "2021-01-19T09:48:27",

  },

  licenses: {

    id: 1,

    url: 'mica.edu.vn:8007/iclassrom/dataset',

    name: 'Attribution-NonCommercial-ShareAlike License'

  },

// danh sách các hình ảnh được phân tích, dựa vào tên của hình ảnh có
thể // xác định được thời gian chụp ảnh

  images: [

    {

      id: 0,

      file_name: "ch01_20210402084038_0001.jpg",

      width: 1920,

30
      height: 1080,

      license: 1,

    },

    {

      id: 1,

      file_name: "ch01_20210402084038_0002.jpg",

      width: 1920,

      height: 1080,

      license: 1,

    },

  ],

// các hành động quan tâm

  categories: [

    { id: 0, name: "Head" },

    { id: 1, name: "sitting" },

    { id: 2, name: "raising_hand" },

    { id: 3, name: "standing" },

    { id: 4, name: "using_phone" },

    { id: 5, name: "sleeping" },

  ],

// các kết quả nhận dạng,

  annotations: [

    { id: 0, image_id: 0, category_id: 1, pid: 3, bbox: [ 485, 624, 247,


250 ] },

    { id: 1, image_id: 0, category_id: 1, pid: 4, bbox: [ 485, 624, 247,


250 ]},

// ……………

31
Hình 2-16 Hình ch01_20210402084038_0002.jpg và kết quả phân tích trên ảnh

2.4.5.2 Cấu trúc script đọc và nhập dữ liệu vào MySQL

Từ file json, em thực hiện trích xuất các thông tin để đưa vào các bảng như sau:

 Images: Từ images.file_name, ta lấy được timeStamp. Từ info.url và


images.file_name ta lấy được imageURL và resultURL.
 Action: Từ categories ta lấy được các action name.
 Recognition_result: từ annotations ta lấy được imageId, actionId,
resultCount và description.

Sau khi lấy thông tin, cần kết nối và thực hiện các truy vấn INSERT vào cơ sở dữ
liệu. Với Python, em dùng mysql-connector-python để kết nối với MySQL.

Khởi tạo kết nối:

import mysql.connector

mydb = mysql.connector.connect(

host="localhost",

user="yourusername",

32
password="yourpassword"

print(mydb)

Thực hiện insert dữ liệu vào trong bảng action như sau:

mycursor = mydb.cursor()

sql = "INSERT INTO action (name) VALUES (%s)"

val = (json.categories[0]) // json là tên object đã convert


từ // file json

mycursor.execute(sql, val)

mydb.commit()

print(mycursor.rowcount, "record inserted.")

Với các bảng khác em thực hiện tương tự.

2.5 Xây dựng phần client

2.5.1 Công nghệ sử dụng

Reactjs là framework được lựa chọn để xây dựng client. Các công nghệ sử dụng
được liệt kê bao gồm:

 React – redux ( library quản lý global state)


 Redux – thunk
 Material UI ( library cung cấp các UI có sẵn tới từ Google )
 Recharts
 Axios
 React router dom
 Socket.io

2.5.2 Nhận dữ liệu từ socket và stream video

Ở phần client, em sử dụng socket.io-client [15] để nhận dữ liệu realtime từ


server và hiển thị. Thẻ html được chọn để hiển thị là thẻ img (vì dữ liệu được chuyển
qua socket là dạng base64 image).

33
var img = document.getElementById('img'),

socket = io('');

socket.on('data', function(data) {

// nhận event từ socket và set vào thẻ image

img.src = 'data:image/jpeg;base64,' + data;

});

2.5.3 Hiển thị kết quả thống kê và vẽ biểu đồ

Sau khi người dùng nhập các thông tin cần thiết, client sẽ gọi API và nhận các dữ
liệu cần thiết. Các kết quả nhận về sẽ được hiển thị dưới dạng bảng biểu và có thể
export ra file excel. Để vẽ biểu đồ, em sử dụng Re-charts [16], một package có sẵn UI
của rất nhiều loại biểu đồ. Biểu đồ được lựa chọn trong đồ án là biểu đồ hình cột.

Hình 2-17 Biểu đồ thống kê hình cột về các hoạt động nhận dạng được trong lớp học

34
CHƯƠNG 3. THỰC NGHIỆM HỆ THỐNG QUẢN LÝ

3.1 Cách thức thực nghiệm


Hệ thống được cài đặt và triển khai tại địa chỉ: http://mica.edu.vn:8008/. Để đánh
giá hoạt động của hệ thống em thực hiện xây dựng kịch bản thử nghiệm các chức năng
sau:

3.1.1 Thực nghiệm tính năng đăng nhập, tạo tài khoản

Tính năng đăng nhập sẽ phải vượt qua các testcase:

 Đăng nhập thành công với tên đăng nhập và mật khẩu đúng. (Pass)
 Đăng nhập thất bại với tên đăng nhập hoặc mật khẩu sau. (Pass)
 Tự động đăng xuất sau một khoảng thời gian dài không thao tác. (Pass)
 Khởi tạo tài khoản thành công. (Pass)
 Không có lỗi SQL Injection [17]. (Pass)
 Đảm bảo các thông tin bảo mật (password, token) phải được mã hoá.
(Pass)
 Đảm bảo việc phân quyền. (chỉ quyền admin mới có các tính năng quản
lý) (Pass)

3.1.2 Thực nghiệm tính năng thống kê

 Đảm bảo dữ liệu thống kê chính xác. (Pass)


 Thời gian phản hồi nhanh. (Not Pass – Hệ thống đáp ứng tốt nhưng thời
gian phản hồi khá chậm, cần cải thiện thêm)

3.1.3 Thực nghiệm tính năng trực tiếp video

 Luồng video phải tới từ đúng camera đã chọn. (Pass)


 Không giật lag, vỡ khung hình. (Pass)

3.1.4 Thực nghiệm tính năng quản lý dữ liệu

Tính năng quản lý dữ liệu sẽ phải vượt qua các testcase:

 Đảm bảo việc thêm sửa xoá thành công, không có sai sót, trùng lặp dữ
liệu. (Pass)

35
 Tính năng xuất file, nhập từ file excel ổn định, không lỗi font chữ. (Pass)

3.1.5 Thực nghiệm kết nối với module Phân tích, nhận dạng

Do module Phân tích nhận dạng được coi như một module bên ngoài nên việc
nhận kết quả được thực hiện thông qua file json và script viết sẵn ở 2.5.4.

Testcase:

 Đảm bảo việc đọc file json và nhập dữ liệu vào database chính xác và
không trùng lặp. (Pass)

3.2 Giao diện


Một số hình ảnh giao diện chương trình được thể hiện ở các hình bên dưới.
Người dùng cần phải đăng nhập vào hệ thống với vai trò là người dùng hoặc quản trị
hệ thống.

Hình 3-18 Giao diện đăng nhập

Sau khi đăng nhập, người dùng có thể lựa chọn các chức năng phía bên trái của
màn hình gồm: thống kê, xem luồng trực tiếp, quản lý.

Để xem luồng hình ảnh trực tiếp từ các video, người dùng cần lựa chọn camera
từ danh sách các camera mà hệ thống quản lý. Hình 3.2 biểu diễn giao diện luồng
video trực tiếp.

36
Hình 3-19 Giao diện trang chủ

Hình 3-20 Giao diện đổi mật khẩu

Người dùng có thể tự thay đổi mật khẩu bằng cách chọn icon góc phải màn hình
=> Đổi mật khẩu.

37
Hình 3-21 Giao diện kết nối và xem trực tiếp luồng hình ảnh thu thập từ camera giám
sát lớp học

Chức năng thống kê cho phép người dùng thống kê lại các hoạt động quan tâm
đã được nhận dạng từ mô đun phân tích và lưu trữ trong hệ thống. Trong chức năng
ngày người dùng sẽ lựa chọn phòng học, và khoảng thời gian quan tâm. Hệ thống thực
hiện thống kê và đưa ra các biểu đồ thể hiện tần xuất xuất hiện của các hoạt động này.
Người dùng cũng có thể lựa chọn chức năng xuất ra file excel các kết quả thống kê.

Hình 3-22 Chức năng thống kê

38
Hình 3-23 Chức năng vẽ biểu đồ thống kê về các hoạt động nhận dạng được trong lớp
học trong một khoảng thời gian do người dùng lựa chọn.

Chức năng quản lý chỉ xuất hiện và cho phép truy cập khi tài khoản đăng nhập
có quyền là Người quản trị (admin).

Việc xem danh sách cách dữ liệu được hiển thị dưới dạng bảng, admin có thể
tuỳ chọn sắp xếp (khi click vào tên của cột ) hoặc tìm kiếm (filter ), phân loại theo
từng trường. Danh sách hiển thị cũng có các chế độ hiển thị to và nhỏ tăng khả năng
tuỳ biến cho người dùng.

Các chức năng quản lý cho phép admin thực hiện thêm, sửa, xoá dữ liệu của
Phòng học, Camera và Hành động. Ngoài ra cũng có thể xuất file excel cũng như nhập
dữ liệu từ file excel.

39
Hình 3-24 Quản lý phòng học

Hình 3-25 Thêm mới phòng học

40
Hình 3-26 Chỉnh sửa phòng học

Hình 3-27 Quản lý camera

41
Hình 3-28 Quản lý hoạt động

Đối với chức năng quản lý tài khoản, ngoài việc chỉnh sửa các thông tin liên
quan, admin chỉ có thể đặt lại mật khẩu của user thay vì thay đổi trực tiếp mật khẩu –
Hình 3.11. Điều này đảm bảo tính bảo mật cho hệ thống cũng như chính user.

Hình 3-29 Quản lý tài khoản

42
Hình 3-30 Chỉnh sửa thông tin tài khoản

3.3 Source code


Toàn bộ source code được lưu tại: https://github.com/datgooner/eclass

43
KẾT LUẬN

Kết luận chung


Trong đồ án tốt nghiệp em đã xây dựng được một hệ thống quản lý thông tin hoạt
động của lớp học. Thông qua việc nghiên cứu phân tích, phát triển và triển khai hệ
thống em đã có kiến thức về các hệ thống phân tích hình ảnh và nhận dạng, nắm được
toàn bộ quá trình phân tích thiết kế hệ thống, sử dụng thuần thục ngôn ngữ html, css,
javascript và các framework đi kèm như reactjs, nodejs express để thiết kế một trang
web hoàn chỉnh. Thông qua luồng trực tiếp video, em hiểu được cách để triển khai
truyền tải thông tin thời gian thực giữa client và server. Ngoài ra em còn hiểu thêm về
các công cụ, các cách thức mã hoá, bảo mật cho trang web nói riêng và trong mạng
internet nói chung.

Hệ thống được xây dựng đã đáp ứng được hầu hết các yêu cầu đặt ra ban đầu. Hệ
thống đã được đặt thử nghiệm tại địa chỉ: http://mica.edu.vn:8008/. Tuy nhiên hệ
thống còn một vài hạn chế như sau:

 Giao diện hệ thống còn đơn giản và chưa đẹp.


 Hệ thống mới chỉ tích hợp các kết quả nhận dạng offline và thực hiện
thống kê các kết quả nhận dạng trong một khoảng thời gian mong muốn.

Hướng phát triển


- Nâng cấp các tính năng cơ bản như stream video trở nên mượt mà và thân
thiện với người dùng hơn.
- Hệ thống có thể áp dụng đa ngôn ngữ.
- Tăng cường bảo mật cho hệ thống.
- Tăng tốc độ truy xuất dữ liệu.
- Tích hợp hệ thống với mô đun nhận dạng online tự động cập nhật các kết
quả nhận dạng theo thời gian thực.

44
TÀI LIỆU THAM KHẢO

[1] Cooperstock, Jie Yao and J.R., "Arm gesture detection in a classroom
environment," in Sixth IEEE Workshop on Applications of Computer Vision,
2002.

[2] Nyan Bo Bo, Peter Van Hese, Dimitri Van Cauwelaert, Peter Veelaert and
Wilfried Philips, "Detection of a hand-raising gesture by locating the arm," in
IEEE International Conference on Robotics and Biomimetics, 2011.

[3] Cheng-Chieh Chiang, Cheng-Chuan Tsai and G. Lee, "Vision-based Raising


Hand Detection in Classroom," in MVA2013 IAPR International Conference on
Machine Vision Applications, May 20-23, 2013, Kyoto, JAPAN, 2013.

[4] Ponti, Tiago S. Nazaré and Moacir P., "Hand-Raising Gesture Detection with
Lienhart-Maydt Method in Videoconference and Distance Learning," in Progress
in Pattern Recognition, Image Analysis, Computer Vision, and Applications,
2013.

[5] V. Vo and et al, "Multiple Kernel Learning and Optical Flow for Action
Recognition in RGB-D Video," in Knowledge and Systems Engineering (KSE),
2015 Seventh International Conference on, 2015.

[6] V. Vo and et al, "Robust human action recognition using improved BOW and
hybrid features," in IEEE International Symposium on Signal Processing and
Information Technology (ISSPIT), 2012.

[7] T. Nguyen and et al, "Geometry-based static hand gesture recognition using
support vector machine," in Control Automation Robotics Vision (ICARCV), 2014
13th International Conference, 2014.

[8] D. Nguyen and et al, "Kinect Gesture Recognition: SVM vs. RVM," in

45
Knowledge and Systems Engineering (KSE), 2015 Seventh International
Conference, 2015.

[9] Thanh-Hai Tran, Thi-Lan Le, Dinh-Tan Pham, Van-Nam Hoang, Van-Minh
Khong, Quoc-Toan Tran, Thai-Son Nguyen and Cuong Pham, "A multi-modal
multi-view dataset for human fall analysis and preliminary investigation on
modality," in 2018 24th International Conference on Pattern Recognition (ICPR),
2018.

[10] Tien-Nam Nguyen, Dinh-Tan Pham, Thi-Lan Le, Hai Vu and Thanh-Hai Tran,
"Novel Skeleton-based Action Recognition Using Covariance Descriptors on
Most Informative Joints," in 2018 10th International Conference on Knowledge
and Systems Engineering (KSE), 2018.

[11] Van-Nam Hoang, Thi-Lan Le, Thanh-Hai Tran, Hai-Vu and Van-Toi Nguyen,
"3D skeleton-based action recognition with convolutional neural networks," in
2019 International Conference on Multimedia Analysis and Pattern Recognition
(MAPR), 2019.

[12] [Online]. Available: https://socket.io/.

[13] Thu-Hien Le, Hoang-Nhat Tran, Phuong-Dung Nguyen, Hong-Quan Nguyen,


Thuy-Binh Nguyen, Thi-Lan Le, Thanh-Hai Tran, Hai Vu, "Locality and Relative
Distance-Aware Non-local Networks for Hand-Raising Detection in Classroom
Video," in International Conference on Multimedia Analysis and Pattern
Recognition (MAPR), 2021.

[14] agsh. [Online]. Available: https://www.npmjs.com/package/rtsp-ffmpeg.

[15] [Online]. Available: https://www.npmjs.com/package/socket.io-client.

[16] [Online]. Available: https://recharts.org/en-US/.

[17] [Online]. Available: https://www.w3schools.com/sql/sql_injection.asp.

46
47
ĐÁNH GIÁ QUYỂN ĐỒ ÁN TỐT NGHIỆP
(Dùng cho giảng viên hướng dẫn)

Tên giảng viên đánh giá:.................................................................................................


Họ và tên Sinh viên:......................................................MSSV:.....................................
Tên đồ án:.......................................................................................................................
........................................................................................................................................
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới
đây:
Rất kém (1); Kém (2); Đạt (3); Giỏi (4); Xuất sắc (5)

Có sự kết hợp giữa lý thuyết và thực hành (20)


Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và các giả
1 thuyết (bao gồm mục đích và tính phù hợp) cũng như phạm vi ứng dụng 1 2 3 4 5
của đồ án
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thưc nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5
Có khả năng phân tích và đánh giá kết quả (15)
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện
5 1 2 3 4 5
dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống
Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều
6 1 2 3 4 5
được phân tích và đánh giá thỏa đáng.
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả đạt
7 được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề xuất 1 2 3 4 5
hướng giải quyết có thể thực hiện trong tương lai.
Kỹ năng viết quyển đồ án (10)
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và đẹp
mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và được
8 giải thích hay đề cập đến trong đồ án, có căn lề, dấu cách sau dấu chấm, 1 2 3 4 5
dấu phẩy v.v), có mở đầu chương và kết luận chương, có liệt kê tài liệu
tham khảo và có trích dẫn đúng quy định
Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận
9 1 2 3 4 5
logic và có cơ sở, từ vựng sử dụng phù hợp v.v.)
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
10a Có bài báo khoa học được đăng hoặc chấp nhận đăng/đạt giải SVNC 5
khoa học giải 3 cấp Viện trở lên/các giải thưởng khoa học (quốc tế/trong
nước) từ giải 3 trở lên/ Có đăng ký bằng phát minh sáng chế
Được báo cáo tại hội đồng cấp Viện trong hội nghị sinh viên nghiên cứu
khoa học nhưng không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích
10b 2
trong các kỳ thi quốc gia và quốc tế khác về chuyên ngành như TI
contest.
10c Không có thành tích về nghiên cứu khoa học 0

Điểm tổng /50

Điểm tổng quy đổi về thang 10

Nhận xét khác (về thái độ và tinh thần làm việc của sinh viên)
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................

Ngày: … / … / 20…
Người nhận xét
(Ký và ghi rõ họ tên)
ĐÁNH GIÁ QUYỂN ĐỒ ÁN TỐT NGHIỆP
(Dùng cho cán bộ phản biện)

Giảng viên đánh giá:.......................................................................................................


Họ và tên sinh viên:....................................................... MSSV:....................................
Tên đồ án:.......................................................................................................................
........................................................................................................................................
Chọn các mức điểm phù hợp cho sinh viên trình bày theo các tiêu chí dưới
đây:
Rất kém (1); Kém (2); Đạt (3); Giỏi (4); Xuất sắc (5)

Có sự kết hợp giữa lý thuyết và thực hành (20)


Nêu rõ tính cấp thiết và quan trọng của đề tài, các vấn đề và các giả
1 thuyết (bao gồm mục đích và tính phù hợp) cũng như phạm vi ứng dụng 1 2 3 4 5
của đồ án
2 Cập nhật kết quả nghiên cứu gần đây nhất (trong nước/quốc tế) 1 2 3 4 5
3 Nêu rõ và chi tiết phương pháp nghiên cứu/giải quyết vấn đề 1 2 3 4 5
4 Có kết quả mô phỏng/thưc nghiệm và trình bày rõ ràng kết quả đạt được 1 2 3 4 5
Có khả năng phân tích và đánh giá kết quả (15)
Kế hoạch làm việc rõ ràng bao gồm mục tiêu và phương pháp thực hiện
5 1 2 3 4 5
dựa trên kết quả nghiên cứu lý thuyết một cách có hệ thống
Kết quả được trình bày một cách logic và dễ hiểu, tất cả kết quả đều
6 1 2 3 4 5
được phân tích và đánh giá thỏa đáng.
Trong phần kết luận, tác giả chỉ rõ sự khác biệt (nếu có) giữa kết quả đạt
7 được và mục tiêu ban đầu đề ra đồng thời cung cấp lập luận để đề xuất 1 2 3 4 5
hướng giải quyết có thể thực hiện trong tương lai.
Kỹ năng viết quyển đồ án (10)
Đồ án trình bày đúng mẫu quy định với cấu trúc các chương logic và đẹp
mắt (bảng biểu, hình ảnh rõ ràng, có tiêu đề, được đánh số thứ tự và được
8 giải thích hay đề cập đến trong đồ án, có căn lề, dấu cách sau dấu chấm, 1 2 3 4 5
dấu phẩy v.v), có mở đầu chương và kết luận chương, có liệt kê tài liệu
tham khảo và có trích dẫn đúng quy định
Kỹ năng viết xuất sắc (cấu trúc câu chuẩn, văn phong khoa học, lập luận
9 1 2 3 4 5
logic và có cơ sở, từ vựng sử dụng phù hợp v.v.)
Thành tựu nghiên cứu khoa học (5) (chọn 1 trong 3 trường hợp)
10a Có bài báo khoa học được đăng hoặc chấp nhận đăng/đạt giải SVNC 5
khoa học giải 3 cấp Viện trở lên/các giải thưởng khoa học (quốc tế/trong
nước) từ giải 3 trở lên/ Có đăng ký bằng phát minh sáng chế
Được báo cáo tại hội đồng cấp Viện trong hội nghị sinh viên nghiên cứu
khoa học nhưng không đạt giải từ giải 3 trở lên/Đạt giải khuyến khích
10b 2
trong các kỳ thi quốc gia và quốc tế khác về chuyên ngành như TI
contest.
10c Không có thành tích về nghiên cứu khoa học 0

Điểm tổng /50

Điểm tổng quy đổi về thang 10

Nhận xét khác của cán bộ phản biện


........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................
........................................................................................................................................

Ngày: … / … / 20…
Người nhận xét
(Ký và ghi rõ họ tên)

You might also like