HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNGKHOA CÔNG NGHỆ THÔNG TIN --- BÀI TẬP LỚN : Lập trình Python ĐỀ TÀI: Hệ thống quản lí sinh viên hỗ trợ giảng viên tích hợp AI Nhóm: 01 PHÂN CÔNG NHI
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN -
BÀI TẬP LỚN : Lập trình Python
ĐỀ TÀI: Hệ thống quản lí sinh viên hỗ trợ giảng viên
tích hợp AI Nhóm: 01
PHÂN CÔNG NHIỆM VỤ NHÓM THỰC HIỆN
Tên các thành viên
Nguyễn Thành ChungNguyễn Thu Hà B22DCCN259Mai Thị Phượng B22DCCN641Nguyễn Ngọc Quang B22DCKH092
Giảng viên hướng dẫn: ThS Vũ Minh Mạnh
Hà Nội 2024
Trang 2TT Công việc / Nhiệm
Thời hạn hoàn thành
Mức đóng góp
1 Tìm hiểu khái quát
về Moodle LMS
15/9/2024
Trang 3I MỤC LỤC
LỜI NÓI ĐẦU
Trong thời đại công nghệ thông tin bùng nổ, ứngdụng computer voiersion và trí tuệ nhân tạo (AI) không chỉtạo ra những bước tiến vượt bậc trong nhiều lĩnh vực màcòn đang trở thành nhân tố cốt lõi trong việc cách mạnghóa ngành giáo dục Việc ứng dụng AI và computerversion vào các hệ thống quản lý học tập (LMS - LearningManagement System) mở ra một kỷ nguyên mới, nơi côngnghệ không chỉ hỗ trợ mà còn định hình lại cách giáo dụcđược quản lý và triển khai Sự kết hợp giữa công nghệ hiệnđại và giáo dục truyền thống không chỉ giúp tối ưu hóa cácquy trình quản lý mà còn mang lại trải nghiệm học tập cánhân hóa, hiệu quả và thông minh hơn cho cả giáo viên vàsinh viên
Nhận thức được tiềm năng to lớn này, chúng em đãphát triển một hệ thống quản lý học tập tích hợp AI vàcomputer version với mục tiêu nâng cao chất lượng vàhiệu quả quản lý giáo dục Hệ thống LMS này không chỉđảm nhận các chức năng cơ bản như lưu trữ thông tin sinhviên, theo dõi kết quả học tập, quản lý bài giảng và bàitập, mà còn sử dụng các thuật toán AI tiên tiến để hỗ trợpgiáo viên trong quá trình điểm danh và computer versiontrong quá trình chấm bài
Chúng em xin bày tỏ lòng biết ơn sâu sắc đến giáoviên hướng dẫn ThS Vũ Minh Mạnh, đã tận tình hướngdẫn, định hướng và đồng hành cùng chúng em trong suốtquá trình thực hiện báo cáo Những đóng góp này chính lànguồn động lực to lớn giúp chúng em hoàn thiện báo cáocũng như sản phẩm của mình, với hy vọng sẽ mang lại giátrị thiết thực cho cộng đồng giáo dục và xã hội
Trang 4I GIỚI THIỆU CHUNG
2.1 Đặt vấn đề
Trong bối cảnh giáo dục ngày càng được chú trọngtrong việc áp dụng công nghệ thông tin để cải thiện chấtlượng và hiệu quả, các hệ thống quản lý học tập (LMS)đang dần trở thành một phần không thể thiếu tại các cơ sởgiáo dục Tuy nhiên, nhiều hệ thống LMS hiện tại vẫn cònnhững hạn chế như thiếu tính cá nhân hóa, giao diện phứctạp, và chưa khai thác hết tiềm năng của trí tuệ nhân tạo(AI) và computer version để nâng cao trải nghiệm ngườidùng
Đối với giáo viên, việc quản lý một lượng lớn thôngtin sinh viên, các bài tập, hay các bài kiểm tra là 1 tháchthức lớn, đặc biệt là việc chấm bài, điểm danh học Vì vậyviệc tích hợp AI và computer version để giải quyết bài toántrên đã một phần nào đó giải quyết được vấn đề
Hệ thống LMS tích hợp AI và computer version khôngchỉ giải quyết các vấn đề quản lý mà còn mở rộng khảnăng tương tác giữa giáo viên và sinh viên, giúp tối ưu hóaquá trình học tập và giảng dạy Đây là bước đi cần thiết đểtheo kịp xu hướng chuyển đổi số trong giáo dục, đặc biệttrong thời kỳ mà học tập trực tuyến và kết hợp đang trởthành xu thế toàn cầu
2.2 Mục tiêu dự án
Dự án phát triển hệ thống quản lý học tập (LMS) tíchhợp AI và computer version được thực hiện với các mụctiêu cụ thể như sau:
Hỗ trợ giáo viên trong quản lý và giảng dạy:
- Tự động hóa các quy trình quản lý sinh viên, từ lưutrữ thông tin cá nhân đến theo dõi tiến độ học tập
Trang 5- Hỗ trợ thiết kế và phân phối bài giảng một cách tối
ưu, dễ dàng theo dõi kết quả và đánh giá sinh viên
Cải thiện trải nghiệm học tập của sinh viên:
- Cung cấp công cụ hỗ trợ tự học hiệu quả, như bàitập tự động chấm điểm và nội dung bổ sung phù hợp
- Tăng cường sự chủ động và động lực học tập
Tối ưu hóa hệ thống giáo dục:
- Đảm bảo tính hiệu quả, chính xác, và bảo mật caotrong quản lý dữ liệu
- Cung cấp báo cáo chi tiết về kết quả học tập củatừng cá nhân hoặc nhóm, giúp các bên liên quan nắm bắtthông tin một cách trực quan
=> Dự án này không chỉ hướng đến việc giải quyếtcác vấn đề hiện tại mà còn đặt nền móng cho việc pháttriển các giải pháp giáo dục hiện đại, sáng tạo và phù hợpvới sự phát triển không ngừng của công nghệ trong tươnglai
** Đối với giáo viên:
Quản lý Người dùng: Đăng ký, đăng nhập, quản lý
thông tin cá nhân, và phân quyền (giảng viên, học sinh, quản trị viên)
Trang 6Quản lý Khóa học: Tạo và quản lý các khóa học, bao
gồm mô tả khóa học, hình ảnh, và các tài liệu liên quan
Quản lý Bài học: Tổ chức bài học trong mỗi khóa học,
bao gồm nội dung bài giảng, tài liệu tải lên, trạng thái bài học (Đang học, Hết hạn, Sắp tới)
Quản lý Bài tập: Tạo bài tập, giao cho học viên, theo
dõi tiến độ và chấm điểm bài tập
Quản lý Điểm danh: Hỗ trợ điểm danh học viên trong
mỗi buổi học
Quản lý Bài thi: Tạo và quản lý bài thi, bao gồm thời
gian thi, dạng câu hỏi (trắc nghiệm, tự luận), và chấm điểm tự động
Báo cáo và Thống kê: Theo dõi tiến độ học tập, điểm
số, và tình trạng tham gia khóa học của học viên
Giao diện Người dùng Tối ưu: Cải thiện trải nghiệm
người dùng với các thư viện CSS như Tailwind CSS,
Bootstrap
** Đối với sinh viên:
Đăng ký và Đăng nhập: Cho phép sinh viên tạo tài
khoản và đăng nhập để truy cập nội dung học tập
Xem và Đăng ký Khóa học: Sinh viên có thể duyệt
qua các khóa học, xem chi tiết, và đăng ký tham gia khóa học
Truy cập Nội dung Bài học: Xem các bài học đã đăng
tải trong khóa học, bao gồm video, tài liệu và các tài
nguyên học tập khác
Làm Bài tập và Nộp Bài: Sinh viên có thể làm bài tập
được giao và nộp bài trực tuyến để giảng viên chấm điểm
Xem và Tham gia Bài thi: Tham gia các bài thi của
giáo viên đã tạo
Trang 7Xem Điểm và Nhận Xét: Xem điểm số và nhận xét từ
giảng viên cho các bài tập và bài thi
Điểm danh bằng Khuôn mặt: Tham gia điểm danh tự
động bằng nhận diện khuôn mặt nếu lớp học có yêu cầu
III THIẾT KẾ VÀ CÀI ĐẶT
Ứng dụng Courses: Quản lý khóa học, tài liệu liên
quan, và việc đăng ký
Trang 8 Ứng dụng Lessons: Quản lý bài giảng thuộc khóa
Trang 11Giao diện đăng nhập/đăng ký:
Cho phép người dùng tạo tài khoản mới hoặc đăng nhập vào hệ thống
Tùy chọn "Ghi nhớ đăng nhập": Cho phép người
dùng lưu thông tin đăng nhập trên thiết bị
Nút "Đăng Nhập": Nút bấm lớn, màu xanh dương, thu
hút sự chú ý
· ** Liên kết tạo tài khoản:
- Sau khi đăng kí tài khoản hợp lệ Người dung sẽ được
chuyển sang trang đăng nhập Tại đây người dùng sẽ
sử dụng username là email và password đã đăng kí để được đăng nhập vào hệ thống
Trang 12- Đăng nhập tài khoản thành công, người dùng sẽ được chuyển đến trang chủ chính của trang web.
Trang 134.3 Ứng dụng courses
4.3.1 Giáo viên
Cho phép giáo viên tạo mới, cập nhật thông tin, và xóa khóa học trong hệ thống quản lý khóa học
- Với chức năng thêm khóa học: Giáo viên sẽ phải nhập
các phần tiêu đề khóa học, mô tả khóa học, chọn ngày bắt đầu và ngày kết thúc cho khóa học Trong phần ngày bắt đầu và kết thúc, nhóm chúng em đã tích hợp chức năng để giáo viên tránh chọn sai ngày kết thúc sau ngày bắt đầu
Trang 14Hiển thị các khoá học: Sau khi thêm mới 1 khóa học thành công thì trang web sẽ được chuyển sang phần danh sách các khóa học Tại đây giáo viên có thể xem các khóa học
đã tạo
Trang 15 Nếu muốn chỉnh sửa thông tin khóa học thì giáo viên
ấn vào phần chỉnh sửa Trang này sẽ hiển thị các thông tin mà giáo viên đã nhập trước đó
Trang 16 Còn muốn xóa 1 khóa học thì giáo viên chỉ cần ấn vàobiểu tượng thùng rác Sau đó sẽ hiển thị 1 thông báo xác nhận xóa khóa học.
Xem danh sách học sinh trong khóa:
Trang 17- Tại đây để tham gia vào 1 khóa học, học sinh cần ấn
vào phần xem chi tiết
Trang 18- Để có thể xem các bài học, và các bài kiểm tra trong
khóa học, người dung bắt buộc phải ấn vào đăng kí khóa học
4.4 Ứng dụng lessons
4.4.1 Giáo viên
Cho phép giáo viên tạo mới, cập nhật thông tin, và xóa các bài giảng trong hệ thống quản lý khóa học
- Để có thể xem chi tiết và tạo các bài giảng mới Giáo
viên truy cập vào phần chi tiết khóa học của 1 khóa học cụ thể
- Muốn thêm một khóa học mới, giáo viên ấn vào phần
thêm bài học trong phần chi tiết của khóa học
Trang 19- Giao diện khi tạo 1 bài học mới Tại đây giáo viên sẽ
nhập các thông tin để mô tả khóa học Sau khi nhập xong thì người dùng nhập xong các thông tin thì chọn Lưu Bài học
Trang 20- Khi các thông tin bài học hợp lệ, bài học sẽ được lưu lại
và trang web sẽ hiển thị ra danh sách các bài học đã tạo trong khóa học tại trang Chi tiết bài học
4.4.2 Học sinh
Cho phép học sinh xem thông tin của 1 bài học và có thể tham gia bài học để làm bài tập, xem các tài liệu liên quan trong bài giảng
Trang 214.5 Ứng dụng Assignment
4.5.1 Giáo viên:
Cho phép giáo viên tạo mới, cập nhật, xóa bài tập
Thêm sửa các tài liệu liên quan đến bài tập
Xem danh sách những sinh viên đã và chưa nộp bài
Trang 22 Chấm điểm cho bài tập của học sinh kèm nhận xét.
4.4.2 Học sinh
Cho phép học sinh xem các bài học, làm bài tập, và xem hoặc tải xuống các tài liệu
Trang 234.6 Ứng dụng Exam
4.6.1 Giáo viên
Cho phép giáo viên thêm, sửa, xóa và chấm bài tự động các bài kiểm tra
- Giao diện khi ấn vào phần chi tiết của 1 bài kiểm tra.
- Tại đây sẽ có danh sách các sinh viên đã nộp bài và
danh sách các sinh viên chưa nộp bài kiểm tra, danh sách đáp án của bài kiểm tra đó
Trang 24- Sau khi ấn vào chức năng chấm bài tất cả thì trang
web sẽ hiện ra danh sách các sinh viên kèm theo điểm.Chức năng chấm bài này được tích hợp computer
version hỗ trợ giáo viên chấm bài thi trắc nghiệm trên giấy
4.6.2 Học sinh
Cho phép học sinh xem danh sách các bài kiểm tra vàtham gia vào các bài kiểm tra
Chứng năng quét phiếu chấm bài trắc nghiệm.
(Nộp bài tập và kiểm tra trực tuyến.)
Trang 25Hiển thị kết quả học tập của học sinh: điểm số, tiến
độ khóa học
=> Giáo viên có thể theo dõi và đánh giá kết quả của học sinh
4.5 Ứng dụng assignments – Quản lý bài tập
Thêm, sửa, xoá bài kiểm tra
Trang 26IV TRIỂN KHAI HỆ THỐNG
5.1 Môi trường phát triển
Hệ điều hành: Windows/MacOS.
Ngôn ngữ lập trình: Python (Django Framework),
JavaScript (front-end)
Cơ sở dữ liệu: SQLite/MySQL/PostgreSQL.
Công cụ hỗ trợ: Visual Studio Code, PyCharm
Thư viện/framework: Django,
Lệnh khởi chạy server: python manage.py runserver
Truy cập qua trình duyệt: http://127.0.0.1:8000
5.3 Các đoạn mã chính
Trang 275.3.1 Quét phiếu trả lời trắc nghiệm bằng OMR
Optical Mark Reader – Nhận dạng dấu quang học (OMR)
1 Mục đích :
Dùng phương pháp Optical Mark Reader – Nhận dạng dấu quang học (OMR) để quét bài kiểm tra trắc nghiệm của thí sinh sau khi giáo viên nhập đáp án trả về điểm, số báo danh và mã bài thi Sau đó đưa vào hệ thống cơ sở dữliệu SQL
Canny để OpenCv có thể tìm viền dễ dàng (Canny Edge Detection)
Làm xám, mờ và chuyển sang dạng Canny bằng hàm của cv2
Trang 28- Tiếp tới ta lấy đường viền của ảnh từ đó tìm ra được đường viền của hình chữ nhật Chia hình chữ nhật thành
Trang 29
Tìm điểm góc của những hình chữ nhật sau khi đã sắp xếp
Trang 30 rectContour sẽ giúp tìm những hình chữ nhật bằng cách đếm điểm tọa độ điểm bằng cv2.approxPolyDP (4 điểm : len(approx) == 4 ) và trả về 1 list các hình chữ nhật đã được sắp xếp theo diện tích
getCornerPoint tìm ra 4 điểm hình chữ nhật
- Thiết Lập mắt chim và áp dụng ngưỡng cho độ xám của ảnh
Trang 31- Từ ngưỡng sáng ta chọn nơi có ngưỡng cao nhất sẽ là ô của học sinh đã tô.
Ta cần phải chia rõ các ô khoanh tròn để tính ngưỡngchính xác sau đó so sánh với các ô cùng hàng / cột để chọn ô “xám” nhất Cách chia của 2 cột đáp án (chia theo hàng) sẽ khác với cách chia Mã Học Sinh và Mã Đề (chia theo cột):
Sau khi chia ta sẽ lưu ảnh từng ô tròn vào trong 1 list Sau đó so sánh tìm ra ô ‘Xám nhất’ trong 1 hàng/cột
Trang 32 Tìm ô ‘Xám nhất’ bằng cách đếm số pixel bằng 0 của ảnh tổng hợp lại sau đó tìm giá trị lớn nhất và lưu kết qủa (ô được khoanh) vào myIndex
So sánh với đáp án và tính điểm
Trang 33 Tìm ô được khoanh và lưu Mã sinh viên (mã đề tương tự)
- Class main_scanner: Hàm main : sẽ đọc tất cả ảnh trongFolder Test_Pictures sau đó tiến hành quét tính điểm và lưu lại danh sách các mã học sinh, điểm và mã đề (Xuất
ra file Test_Scanner.csv để thuận tiện cho việc import data vào database SQL)
Trang 343 Ưu và Nhược điểm:
- Ưu điểm: Ảnh được xử lí nhanh gọn, code dễ dàng tường minh có performance ổn
- Nhược điểm: Chưa thể xử lí được ảnh trong 1 vài trường hợp đặc biệt (giấy bị nhàu, ảnh chụp thiếu sáng)
II Nhận diện khuôn mặt cá nhân 1 (Face_Recognition)
Trang 35Hình ***
- Đầu vào mô hình sẽ là 2 hình ảnh (1 ảnh là 1 ma trận 3 chiều với 250x250 pixel) , 1 cặp ảnh Anchor với Positive hoặc Negative Image Hình ảnh đó sau đó sẽ được xử lí qua các HidenLayer sử dụng Phương pháp tích chập, sử dụng Activation Fuction là ReLU để tạo đầu ra cho 1 lớp Layer ( Re_z = max(0,z) ) trước khi tới OutPut_Layer ảnh
sẽ được làm phẳng đưa qua Activation Fuction là
Sigmoid để được đầu ra từ đoạn 0 đến 1 (phù hợp với bài toán Classification).Cuối cùng tổng hợp tại L1
siamese dist (tính toán Cosine_similarity) và đưa ra output đầu ra với giá trị từ 0 tới 1
3 Quá trình tạo model
- Bước 0: Do mô hình DeepLearning có nhiều tham số (parameters) cũng như độ phức tạp hơn model
MachineLearning rất nhiều nên ta nên sử dụng GPU để huấn luyện thay vì CPU để tăng tốc độ huấn luyện cũng như load model:
Trang 36 Tensorflow có hỗ trợ việc sử dụng GPU (Tuy nhiên rất dễ lỗi và không thể nhận biết được gpu : đó là lí do chính khiến team em không thể load được model vì quá lâu và phải sử dụng 1 model khác nhẹ hơn nhưng có
performance kém hơn)
- Bước 1: Tạo dataset
+ Chia dataset thành 3 bộ nhỏ : Anchor , Positive sẽ ảnh bản thân và Negative sẽ là ảnh ngườ khác
Trang 37 Ảnh Anchor/Positive
Ảnh Negative
+ Ảnh negative ta sẽ lấy dữ liệu trên web
https://vis-www.cs.umass.edu/lfw/
Trang 38+ Ảnh bản thân ta sẽ sử dụng OpenCV , ta chỉ cần mở camera sau đó qua lưu từng frame là ảnh sau đó lưu tại Folder cần thiết
Tên file được đặt ngẫu nhiên bằng thư viện uuid
+ Tiền xử lí dữ liệu (Preprocessing) : Ảnh sau khi chụp bằng OpenCV sẽ được tiền xử lí : Resize and Scale để
tương đồng với ảnh của Folder Negative 2 input phải tương đồng với nhau
+ Sau khi tiền xử lí ta sẽ gán nhãn (Labeling) cho positives
= input (từng cặp ảnh): input (Anchor,Positive Img) = 1 và negatives = input (Anchor,Negative) = 0 Cuối cùng ta tổng hợp thành 1 luồng data bằng cách kết hợp positives
và negative Sau đây là quá trình Tiền xử lí và Gán nhãn
Trang 39+ Chia data thành bộ train và bộ test tỉ lệ (3:7):
- Bước 2: Tạo mô hình DeepLearning (Model):
+ Xây dựng lớp nhúng (Embedding Layer) : xây dụng lớp nhúng trên mô hình dựa trên “Hình **” bằng các hàm của thư viện Tensorflow(.keras)
Trang 40+ Tạo model siamese: make_siamese_model(): sẽ nhận 2 ảnh sau đó tính toán sự khác biệt của 2 ảnh (distances) rồi return về 1 model siamese
Trang 41- Bước 3: Huấn luyện mô hình (Train Model):
+ Tạo Loss Function là hàm Mất mát Entropy nhị phân bằng hàm có sẵn của thư viện keras và tham sốoptimizer ‘otp’ theo thuật toán Adam để truyền vào checkpoint
+ Tạo folder “checkpoint” để lưu những checkpoint trong quá trình training (sau 10 epoch lưu 1
checkpoint)
+ Tạo train_step:
Trang 42 Vì input đầu vào có dạng (100,100,3): nên ta chia x là 2 ảnh đầu vào và y sẽ chính là label của input , ta cho yhat
là prediction/hypothesis ( dự đoán của mô hình ) Mục đích chính của train_step là tính toán hàm loss_fuction dựa trên label và hypothesis , dựa vào loss mô hình sẽ
tự điều chỉnh gradient (descent) sau mỗi bước train rồi tối ưu “opt.apply_gradients()” (optimize) mô hình bằng cách thay đổi trọng số