Dé giải quyết van dé này, một hệ thống giảng dạy trực tuyến được đề xuất, kết hợp công nghệ nhận diện cảm xúc và độ tập trung của học viên, nhằm nâng cao chất lượng giảng dạy và học tập.
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH TRUONG DAI HOC CONG NGHE THONG TIN
KHOA HE THONG THONG TIN
DO DANG KIÊN NAM - 20521627
PHAM PHU TUAN - 20522125
KHOA LUAN TOT NGHIEP
XAY DUNG HE THONG HOC TRUC TUYEN SU DUNG CAC MO HINH MAY HOC NHAN DIEN CAM XUC VA
THEO DOI ANH NHIN CUA HOC VIEN
BUILDING AN ONLINE LEARNING SYSTEM UTILIZING
MACHINE LEARNING MODELS FOR EMOTION
RECOGNITION AND EYE GAZE TRACKING OF STUDENTS
CU NHAN NGANH HE THONG THONG TIN
GIANG VIEN HUONG DAN PGS TS NGUYEN DINH THUAN
TP Hồ Chi Minh, thang 6 năm 2024
Trang 2LỜI CÁM ƠN
Lời đầu tiên cho phép nhóm em gửi lời cảm ơn chân thành và lòng biết ơn sâu sắc đến các thầy cô khoa Hệ thống thông tin Trường Đại học Công nghệ thông tin —
ĐHQG TPHCM và quý Thay Cô khoa Hệ thống thông tin, đặc biệt là Thầy Nguyễn
Đình Thuân đã trực tiếp hướng dẫn, tận tình sửa chữa, đóng góp nhiều ý kiến, kinh
nghiệm quý báu cho chúng em hoàn thành báo cáo khóa luận.
Trong suốt quá trình thực hiện đề tài, nhóm em đã vận dụng tối đa những kiến
thức nền tảng đã tích lũy, đồng thời nghiên cứu những kiến thức mới đề phục vụ làm khóa luận Tuy nhiên, chúng em cũng gặp nhiều khó khăn nhất định nên những hạn
chế, thiếu sót là điều khó tránh khỏi Chính vì vậy chúng em rất mong nhận được sự góp ý, nhận xét từ phía hội đồng dé hoàn thiện hơn Nhóm em xin chân thành cảm
on.
Tp.HCM, ngay 17 thang 6 nam 2024
Nhom sinh vién thuc hién
Đỗ Đặng Kiến Nam
Phạm Phú Tuấn
Trang 3MỤC LỤC
CHUONG 1: GIỚI THIỆU VÀ MÔ TẢ DE TÀII - :-2c:255+vtcccxvvrerrrvrrrrrrrrrrre |
1.1 Đặt vấn đề và lý do chọn T0 11.2 Thông tin về đề tài -¿- 2-52 s2 ExEEEExEEXE71211211211111211211211211 21121111 11c re 2
1.2.1 Mục tiêu đề tài ccccccntttnhhHHnH HH de 2
1.2.2 Phạm vi và đối "10221717 2
1.2.3 Các công nghệ được sử dụng trong việc nhận diện cảm XÚC - - 3
1.2.4 Giới thiệu các bộ dữ liỆu - -:- 5+2 E SE SE **EE+EESEESEESEEerEsrkrrkrrkrrkrrkrrkrske 4
1.2.5 Công nghệ được sử dụng trong việc phát trực tiếp và phát triển sản pham 4
CHƯƠNG 2: CƠ SỞ LÝ THUYÊT 55:2S2+t2EEEEtctEEkrrrtrrtrrrtrrrrrrrirrrrriirrrrk 8
2.1 Lý thuyết về mạng thần kinh 2 ¿s92 t+E£EE£EEEEE+EEEEEEEEEEEEEEEEEESEEEErkerkerrree 8
2.1.1 Lý thuyết về mạng than kinh - - + 2 +9 9EE+E£EEEEESEEEEEEEEEEEEErkerkerkerees 8
2.1.2 Dinh nghĩa mang nơ-ron nhân tao (Artificial Neural Network - ANN)[38] 9
2.1.3 Convolutional Neural Network (CNN) - Q.1 22112 111211 11 2.1.4 Multi-task Cascaded Convolutional Networks (MTCNN) - 12
QV.S c9 15
2.2 Lý thuyết tối ưu mô hình máy hỌc 2- 2 + + E£+E££E£+E2EE2EE2EE2EE2EEeEkerxrrxered 19
2.2.1 SGD (Stochastic Gradient Descent) .- 2c 2222111221 11111111111 xk2 19 2.2.2 Adam (Adaptive Moment Estimation) - - 5-5525 *++***+sEcxeeerereeereerese 19 2.2.3 AdaMaX nh ố.ố 20
2.3 Lý thuyết về công nghệ phát trực tiẾp -¿ 2 ©+222+EE+2EE2EECEEEEEECEEErrkrrrree 21
2.3.1 Giao thức WeDRTC - - cv TT TH TH HH HH nh TT TC nh HH 21 2.3.2 WebssOCK€K Án TT TT TT TH TH HH HT TT TT CC ng 23 2.3.3 So sánh webrtc và websocket - - - -L Q01 1 111g 01111111 kkrrrre 24
Trang 42.3.4 Cách 2 peer thiết lập kết nối với nhau 2 2+£2+E£+E++E++E++EE+Ex+rxerxees 25
3.2.1 Kết quả thực nghiệm nhận diện cảm xúc của các nghiên cứu khác 34
3.2.2 Nhận diện cảm XÚC - - - 2c 22 1322281112111 81511 1128111118211 188111188111 2g xee 35
3.2.3 Kết quả thực nghiệm nhận điện độ tập trung của các nghiên cứu khác 37
3.2.2 Nhận diện độ tập trung - - - ¿2 22 132111321 11E111 191118111111 111 1181118111 key 38
3.3 Kết quả thực nghiệm các mô hình kết hợp tối ưu SGD - ADAMAX 38
ca 0n nh Đ:bốổố cổỔ “đa 40
CHƯƠNG 4: PHAN TÍCH THIET KE HỆ THÓNG - -c¿22s+cvccvvvsrervereez 41
4.1 So đồ kiến trúc hệ thong o c.eeceecccccccsscesscssessessessessessessessessssessessesssssscssessessessesseeseees 414.2 Cách hoạt động của hệ thống "— 43
4.3 Thiết kế hệ thống dạy học trực tuyến — 47
4.3.1 Thiết kế thành phần chức năng 2- 2 2 E£EE££E££E2E+2EE2EE2EE2EEEEEeExerkeri 474.3.2 Thiết kế thành phần dữ liệu -2- 2-2 SSE£SE£EE£EEEE2EE2EE2EE2E12E12E1Ex xe 504.3.3 Thiết kế thành phần xử lý - + 2 SE +E£EE£EE£EEEEEE2EE2E12E1211211211211 E1 xe 544.3.4 Triển khai hệ thống lên Google Cloud Platform 2 2 2+ s2 se: 554.4 Thiết kế giao diện người đùng -¿- St Sx 9x EEEEE211211211211211211 21111 1xx 57CHƯƠNG 5: KET QUA DAT DUOC VÀ HƯỚNG PHAT TRIÉN -2- 59
Trang 55.1 Kết quả đạt được 5.2 Hướng phát trién TÀI LIỆU THAM KHẢO
Trang 6Hình 6: Cấu tạo một mạng thần Kinh[34] - c1 1122111111 11111111181 111811 111881111 xe, 8Hình 7: Cấu trúc và cách hoạt động của ANN[39] . - S ck +2 2x re 10Hình 8: Cấu trúc của một ClNN[[14] -¿- + xeSx+E£EE£EkEEE+EEEEEEEEEEEEEEEEEEEEEEEEEEEEkerkrrrriera 12Hình 9: Kiến trúc MTCNN[ 16] -2¿22 5+ 22222E22E22EE22E1221211221211221211221 21.2112 crk 13
?0118108-4:5.8s 1504661100 00777 15
Hình 11: Cấu hình VGG[43] wececcccccccccescsescescsscssessesesessessesscsessessesnesessessestssesssseseseeseeseeaess 18Hình 12: Kiến trúc WeblR TC [4Š] - 2 2 1+S9E15E2EEE12E1211215715112112111211 11111 re 21Hình 13: WebRTC - kiến trúc JSEP[46] 2 222 SE+2E+EE+EEtEEEEEEEESEESEEzExzrserkered 22
Hình 14: Client, Server hoạt động với WebSocket[48] - -+++-++++ccs+seesseersxes 23
Hình 15: Một mẫu của Fer2013 (trạng thái tức giận) - ¿2 + 2+s+£zx+£zx+zzxrxe¿ 31 Hình 16: Một mẫu của KDEF (trang thái tức giận) + 2s s+s+££+E+£zE+zzzxerszxrxee 32
Hình 17: Hình minh hoa EALR 5 211111122311 111112531 11111955 11111183111 k ng key 33
Hình 18: Hình minh hoa MAR - 2111111223111 111193531 11111855 11111991111 key 34
Hình 19: Kiến trúc hệ thống ¿2-2 E+SE+E£EE9EE2EE2EEEEEEEEE12171112111111111E 11111 1y 41
Hình 20: Usecase tông quan hệ thống giảng dạy trực tuyến - 2 ©522cz+ccz+ce2 47
Hình 21: Class Diagram của hệ thống -+- 2 2 +E+SE+EE+E£EE£EEEEE2EEEEEEEEEEEEEEEEEkrrrrreei 50
Hình 22: Sequence Diagram của đăng ký tài khoản, tạo lớp học va học viên tham gia lớp
92 54
Hình 23: Sequence Diagram của việc bắt đầu lớp học, tham gia lớp học và kết thúc buổi
2 55
Hình 24: Màn hình lớp học đang diễn ra - ¿+ ¿+ S£+SSE+E£EE2E£EE2EeEzEeEzxrxrrxrree 57
Hình 25: Biểu đồ cảm xúc của từng học viên -¿- 2: s2E+SE+2E£2E2E2E22E2222221221 2x crk 57
Trang 7Hình 26: Biểu đồ cảm xúc của toàn lớp học
Hình 27: Giảng viên chia sé màn hình trong UG: học -¿- 2sz+sz+sz+c++£z+zx+zxd
Trang 8DANH MỤC BANG
Bảng 1: So sánh WebRTC và WebSocK€t - óc 2119211121121 11 111 1 9111111 ky nh 24
Bảng 2: Kết quả nhận diện cam xúc thực nghiệm trên dataset Fer2013 cua Yousif
Khaireddin và Zhuofa Chen [62] - <2 22 3321133111311 33553 155135111511 1811 11111111 E1 ke 34
Bảng 3: Kết quả nhận diện cảm xúc thực nghiệm trên dataset KDEF của Chong và các
đồng sự [Ó4] -:- 2-5222 E12E521E71511211211111211111101111 1111211111111 11101201 g 35
Bảng 4: Kết quả thực nghiệm trên Fer20 13 - 2 s2 2+EE£EE22EE£EEE2EEEEEE2EEEEEEEErrkrrred 35Bang 5: Kết quả thực nghiệm trên KDEE - 2-2 SSE‡SE£EE£EE£EEEEE2EE2EE2EE2EEEExerkrred 36Bảng 6: Kết quả nhận diện độ tập trung thực nghiệm trên dataset Student-Engagement của
Nuha Alruwais và Mohammed Zakariah [63] - ¿+ 23322183221 E*2E2E+2EE+eeerses 37
Bang 7: Bảng kết quả thực nghiệm trên Student-Engagement 2 2 s2 s2 2£: 38Bang 8: Bảng kết quả thực nghiệm khi kết hợp với OptiimiZer 2-5 s2 55522 39Bảng 9: Đặc tả Usecase Xem kết quả nhận diện cảm XÚC - 5 +55 +++s++s++s++s+2 47
Bang 10: Đặc tả Usecase Xuất kết quả nhận diện cảm xÚC ¿555352 **++++ss++s 48Bảng 11: Đặc tả Usecase Tạo lớp học trực tuyến LJI / Â ĂĂằ ào 48
Bảng 12: Đặc tả Usecase Quan lý thông tin cá nhân - 55-5 +52 *++s£++eex+eerssexss 49
Bảng 13: Đặc tả Usecase Tham gia vào lớp học ¿- ¿+ 52+ +2 *++£+zv£+e+eerserreerss 49 Bảng 14: Bảng thuộc tính của User - (2 2322182113211 E2EE2EEEEEEEESE1EEErkrrrkrrkkree 50 Bảng 15: Bảng hàm của User €Ï24SS óc 2c 3321112311321 1191 1181158111811 11811181 xe 51
Bang 16: Bang thuộc tinh của Class - - c2 221 2112911151151 1 911 1 11 vn ngư 51 Bảng 17: Bảng hàm của Class - - - c1 191121119119 11 1 911 nh ng nh nh ng nh Hư 52 Bảng 18: Bảng thuộc tính của ROOIm - G2 3311332113911 1351 1153115111131 E111 11 11 re 52 Bảng 19: Bảng hàm của lOOTN - óc 1111131191189 11 11 11v nh nh ng cư 52 Bang 20: Bảng thuộc tinh của Detected ReSulÏ( - ¿5c + + + 13+ ESErseirrrrersrerre 53
Bang 21: Bảng ham của Detected ResuÏ( - - - 2c 22c 3133511331321 Ekrrkres 53
Trang 9DANH MỤC TU VIET TAT
Số thứ tự Thuật ngữ Mô tả
Convolutional Neural CNN
Trang 10TOM TAT KHOA LUẬN
Trong thời đại kỹ thuật số ngày càng phat triển, giáo dục trực tuyến đã trở thành một phươngpháp học tập phố biến, giúp mở rộng cơ hội tiếp cận kiến thức cho nhiều người Tuy nhiên,
việc duy trì sự tương tác và đánh giá hiệu quả học tập của học viên vẫn là một thách thức lớn
đối với giáo viên Dé giải quyết van dé này, một hệ thống giảng dạy trực tuyến được đề xuất,
kết hợp công nghệ nhận diện cảm xúc và độ tập trung của học viên, nhằm nâng cao chất lượng
giảng dạy và học tập.
Hệ thống giảng dạy trực tuyến này sử dụng Mediasoup làm media server, một giải pháp mạnh
mẽ cho việc xử lý các luồng dit liệu truyền thông Với Mediasoup, hệ thống hỗ trợ việc tạo ra
các buồi học trực tuyến trong đó giáo viên và học viên có thé chia sẻ âm thanh, màn hình, va
camera một cách mượt mà Điều này tạo điều kiện cho việc tương tác trực tiếp giữa giáo viên
và học viên, giúp tăng cường hiệu quả truyền đạt kiến thức
Điểm nổi bật của hệ thống nay là tích hợp công nghệ nhận điện cảm xúc và độ tập trung củahọc viên Một server riêng dành cho Machine Learning được triển khai dé thực hiện các nhiệm
vụ nảy Server này kết nối trực tiếp với media server dé tiêu thụ các luồng đữ liệu, bao gồm
hình anh tu webcam của học viên Quá trình nhận diện cảm xúc va độ tập trung dựa trên các
mô hình học sâu (deep learning), sử dụng các kiến trúc mạng nơ-ron tích chập (CNN) như
Trang 11CHUONG 1: GIỚI THIỆU VÀ MÔ TẢ DE TÀI
1.1 Đặt vấn đề và lý do chọn đề tài
Nhận dạng cảm xúc và độ tập trung của học viên là một phần quan trọng của lĩnh vực giảng
day trực tuyến[ 1], [2] Điều này sẽ tác động đáng kê đến chất lượng giảng day, tăng cườngtương tác giữa giáo viên và học sinh, đồng thời mang đến môi trường học tập lý tưởng déphát triển cả IQ[3] và EQ[4] Điều quan trong hơn là phải thiết lập được sự gan kết chặtchẽ giữa hai bên mà không bị giới hạn về khoảng cách, khi mà giờ đây khoảng cách lớnnhất trong một lớp học chỉ là lượng kiến thức có hạn trong một bài học Bằng việc xác địnhđược cảm xúc và độ tập trung của học sinh trong khi giảng dạy, giáo viên sẽ chủ động năm
bắt các tình huống có thể phát sinh và giải quyết kịp thời [5], [6] [7]
Một số nghiên cứu đã giúp củng cố quan điểm cho rằng: cảm xúc sẽ tác động rất lớn đếnhành động [8] Trong lớp học truyền thông, giáo viên có thé dé dàng quan sát và đánh giá
cảm xúc cũng như mức độ tập trung của học viên thông qua các tín hiệu phi ngôn ngữ như
biểu cảm khuôn mặt, cử chỉ, và hành vi Tuy nhiên, trong lớp học trực tuyến, việc nay trở
nên khó khăn hơn do sự hạn chế về mặt không gian và cách thức giao tiếp Vì vậy, việcphát triển một hệ thống có khả năng nhận diện cảm xúc và độ tập trung của học viên trongmôi trường học trực tuyến là rất cần thiết
Với sự bùng né của giáo dục trực tuyến, nhu cầu nâng cao chất lượng giảng dạy và học tậptrực tuyến ngày càng trở nên cấp thiết Nhận diện cảm xúc và độ tập trung của học viên là
một trong những yếu tố then chốt dé cải thiện sự tương tác và hiệu quả giảng dạy trong lớp
học trực tuyến Bên cạnh đó, sự phát triển của trí tuệ nhân tạo (AI) và học máy (Machine
Learning) mở ra nhiều cơ hội mới cho việc ứng dụng các công nghệ này vào giáo dục Việc
sử dụng các mô hình học sâu (Deep Learning) như VGG16 và MTCNN dé nhận diện cam
xúc và độ tập trung không chỉ là một hướng đi mới mẻ mà còn mang lại nhiều tiềm năng
phát triển
Trang 12Và quan trọng nhất là đề tài không chỉ mang ý nghĩa khoa học mà còn có giá trị thực tiễn
cao, gop phan nang cao chat lượng giáo dục và hỗ trợ học viên trong quá trình học tập Hệ thống giảng dạy trực tuyến tích hợp nhận diện cảm xúc và độ tập trung sẽ giup tạo ra một
môi trường học tập tích cực, khuyến khích sự tham gia và cải thiện kết quả học tập của họcviên Ngoài ra hệ thống này có tiềm năng phát triển và mở rộng không chỉ trong giáo dục
mà còn trong nhiều lĩnh vực khác như đào tạo nhân sự, chăm sóc sức khỏe tâm ly, và các
dịch vụ khách hàng Điều này tạo ra nhiều cơ hội nghiên cứu và ứng dụng trong tương lai
Những điều trên là nền tảng của một sản phẩm để triển khai những ý nghĩ đấy thành
Streamy là tên cho hệ thống dạy học trực tuyến đó do nhóm đề xuất và những phần sau sẽ
đưa ra những khảo sát, phân tích và phương thức hoạt động của hệ thống này
1.2 Thông tin về đề tài
1.2.1 Mục tiêu đề tàiPhát triển được hệ thống học trực tuyến dành cho giáo viên và học sinh, cho phép tương
tác trực tuyến (nói chuyện, camera khuôn mặt, chia sẻ màn hình máy) Hệ thống sẽ có tínhnăng nhận diện cảm xúc và độ tập trung được trích xuất từ ánh nhìn của học viên cho ra
các phân tích thời gian thực.
Phát triển được mô hình máy học nhận diện cảm xúc từ khuôn mặt sử dụng các mô hìnhCNN [12], MTCNN và VGG [13] cho các chỉ số từng loại cảm xúc của học sinh, từ đó
đánh giá tiết học, khả năng giảng dạy có phù hợp và thu hút với học sinh hay không
Phát triển được mô hình máy học theo dõi tia nhìn của học sinh, tính toán các độ đo liên
qua về mắt, miệng của học viên Kết quả cho ra chỉ số tập trung của học sinh, và được kết
hợp với kết quả từ mô hình cảm xúc dé cho ra kết quả tông quan của học sinh ở thời gian
thực.
1.2.2 Phạm vi và đối tượng
Trong khuôn khô của khoá luận này, nhăm đên việc tạo ra một ứng dụng mà ở đó giảng viên là người có thê theo dõi được diễn biên cảm xúc và độ tập trung của các học viên của
Trang 13mình ở thời gian thực và từ đó có thê nhanh chóng điều chỉnh phương thức giảng dạy chophù hợp với thực trạng của lớp học, tương tự như việc giảng viên dé dàng điều chỉnh haynhắc nhở các học viên của mình ngay tại giảng đường hay lớp học trực tiếp.
1.2.3 Các công nghệ được sử dụng trong việc nhận diện cảm xúc
Trong phạm vi đề tài thử nghiệm trên các công nghệ dự báo sau:
Mô hình CNN (Convolutional Neural Network)[12] được minh hoạ ở Hình 1 bên dưới:
Cow:3x3 Conv: 3x3 Con3x3 Conv:2x2 fully
MP:32 MP:3i MP:22 huêt q fac? classification
1 1
imput size 95.9339 10x10x64 4x4x64 3x3xI2§ va rest ta
4§x4§x3 10
Hình 2: Cấu trúc của MTCNN[16]
3
Trang 14Mô hình VGG-16 [13] (là kiến trúc mạng thần kinh tích chập CNN) được minh hoạ ở Hình
1.2.4 Giới thiệu các bộ dữ liệu
Một trong hai bộ dit liệu được sử dụng trong bài viết này đã được Kaggle xuất bản tại hộinghị ICML 2013, đó là Fer2013 [11] Dữ liệu này bao gồm các hình ảnh 48x48, mỗi hình
ảnh chỉ chứa các khuôn mặt, được căn giữa trong hình ảnh và được chia tỷ lệ để bao phủphần lớn diện tích của hình ảnh Hình ảnh được gan nhãn cảm xúc (tức giận, chan nan, sợhãi, vui, buồn, bất ngờ, trung tinh) và Fer2013 bao gồm 32.298 hình ảnh
KDEF [10], [18] là bộ di liệu gồm 4900 hình ảnh về nét mặt con người Tương tự nhưFer2013, KDEF cũng thé hiện 7 cảm xúc khác nhau của 70 con người với 5 góc nhìn khácnhau Với bộ dir liệu nay, có thé thực hiện một cách tiếp cận khác khi thay vì xác định cảmxúc của một người chỉ bằng 1 khung hình và có thé xác định cảm xúc của một người bằngnhiều khung hình Cách tiếp cận này có thể sẽ cải thiện khả năng nhận dạng
1.2.5 Công nghệ được sử dụng trong việc phát trực tiếp và phát triển
sản phâm
NodeJS [19] với Express [20]: là một môi trường chạy JavaScript [21] / Typescript [22]
phía server, xây dung trên engine V8 của Chrome Node.js cho phép các nhà phát triển sử
Trang 15dụng JavaScript dé viết mã server-side, giúp tạo ra các ứng dụng mạng có khả năng mở
rộng cao và xử lý nhiều kết nói đồng thời một cách hiệu quả Với kiến trúc event-driven và
non-blocking I/O, Node.js lý tưởng cho các ứng dụng thời gian thực như phát trực tiếp và
chat trực tuyến
ReactJS [23] là một thư viện JavaScript mã nguồn mở do Facebook phát triển, dùng déxây dựng giao diện người dùng (UI) React.js giúp tạo ra các thành phần UI có thể tái sửdụng và cập nhật hiệu quả khi dit liệu thay đồi, nhờ vào cơ chế Virtual DOM Điều này rất
hữu ích trong việc phát triển các ứng dụng web có UI phức tạp và yêu cầu tương tác caonhư các trang phát trực tiếp
Mediasoup [24] là một thư viện đa phương tiện mã nguồn mở cho Node.js, hỗ trợ các tínhnăng như SFU (Selective Forwarding Unit) và MCU (Multipoint Control Unit) dé xử lý và
truyén tai media trong các cuộc hop video va hội thao trực tuyến Mediasoup được thiết kế
dé hoạt động với WebRTC, cung cấp khả năng mở rộng và hiệu suất cao, giúp xây dựngcác ứng dụng phát trực tiếp và truyền thông thời gian thực
WebRTC (Web Real-Time Communication)[25]: là một công nghệ ma nguồn mở chophép trình duyệt và các ứng dụng di động thực hiện các cuộc gọi âm thanh, video và truyền
dữ liệu trực tiếp mà không cần plugin WebRTC sử dụng các giao thức peer-to-peer détruyền tai đữ liệu, giúp giảm độ trễ và cải thiện chất lượng kết nối trong các ứng dụng phát
trực tiếp và hội nghị truyền hình Dưới đây là ví dụ về WebRTC:
Trang 16Web RTC Connection Diagram
Hình 4: Ví dụ về WebRTC với máy chủ báo hiệu[26]
Socket.IO [27] là một thư viện JavaScript cho Node.Js, cho phép xây dựng các ứng dụng
web thời gian thực bằng cách cung cấp một giao thức truyền tải hai chiều giữa client vàserver Với khả năng tự động kết nối lại và phát hiện client ngắt kết nối, Socket.IO rất phùhợp cho các ứng dụng cần giao tiếp liên tục và ôn định như chat trực tuyến và phát trựctiếp Dưới đây là ví dụ về Socket.IO:
Trang 17Python Socket.IO [29] là phiên bản của Socket.IO cho Python, cung cấp các tính năngtương tự như phiên bản Node.js Nó giúp các nhà phát triển Python xây dựng các ứng dung
web thời gian thực một cách dé dang, cho phép giao tiếp hai chiều giữa client và server, hỗ
trợ các tính năng như broadcasting, rooms, va namespaces.
Trang 18CHƯƠNG 2: CƠ SỞ LÝ THUYET
2.1 Lý thuyết về mạng thần kinh
2.1.1 Lý thuyết về mạng thần kinh
Một mang Neural Network[33] có ø đầu vào mỗi ngõ vào, mỗi ngõ vào xi có trọng số Wi
Hình 6 đưới đây minh hoạ về câu tạo của một mạng thần kinh:
Hình 6: Cau tạo một mạng thần kinh[34]
Các trọng số wi, Wa, Wn trong công thức (1) thay đổi trong quá trình học của mangNeural Network Weighted Sum của một lớp 4n được xác định như sau:
n
» xiWj (1)
(=1
Một hệ số quan quan trọng là wo được gọi la bias, hệ số này rất quan trọng vì nếu phương
trình Weighted Sum không có hệ số tự do wo thì phương trình của sẽ trở thành
¡/=i#¡w; = 0, phương trình này luôn qua gốc tọa độ nên không tông quát của một phương
trình đường thắng nên cộng thêm một hệ số tự do để phương trình Weighted Sum có dạng
sau đây:
Trang 19> xim + Wo (2)
i=1
Tổng có trọng số (weighted sum) là một hàm tuyến tinh, không phan ánh đúng bản chat
phi tuyến của nhiều quá trình dự báo thực tế Thực tế, mô hình dự báo thường có các quan
hệ phi tuyến, có thể tăng hoặc giảm không theo quy luật tuyến tính Vì vậy, cần áp dụngmột hàm kích hoạt phi tuyến, như hàm hardlim, để chuyền đổi hàm tuyến tính này thành
hàm phi tuyến Nhờ đó, giá trị dự báo y được xác định một cách chính xác hơn, phản ánh
đúng sự phức tạp của quá trình dự báo.
Mạng Neural nhân tạo được huấn luyện theo 3 kiểu học của máy học là học có giám sát
(Supervised learning[35]), học không giám sát (Unsupervised learning[36]) và học tăng cường (Reinforcement learning[37]).
2.1.2 Định nghĩa mạng noron nhân tao (Artificial Neural Network
-ANN)438|
Là một hệ thống tính toán được lay cảm hứng từ cấu trúc và chức năng của não người Nóbao gồm nhiều đơn vị tính toán đơn giản gọi là nơ-ron (neurons), được kết nối với nhauthành các lớp (layers) Mục đích chính của mạng no-ron là học cách biểu diễn và xử ly dit
liệu theo cách mà não người làm, nham thực hiện các tác vụ như phân loại, dự đoán, vànhận diện mẫu Hình 7 dưới đây là cau trúc và cách hoạt động của ANN:
Trang 20Input layer Hidden layer Output layer
Inputs a Outputs
Các cấu trúc cơ bản của mạng nơ-ron nhân tạo bao gồm:
- Neuron (Nơ-ron):
1 Đầu vào (Inputs): Mỗi no-ron nhận một sỐ lượng đầu vào từ các nơ-ron khác
hoặc từ dữ liệu đầu vào ban đầu
2 Trọng số (Weights): Mỗi đầu vào được gán một trọng số, biểu thị mức độ quan
trọng của đầu vào đó
3 Hàm kích hoạt (Activation Function): Sau khi nhận đầu vào và tính toán tổng
trọng số của các đầu vào, một hàm kích hoạt sẽ được áp dụng dé quyét dinh dau racủa no-ron Cac hàm kích hoạt phổ biến bao gồm ReLU, sigmoid, va tanh
- Cac Lớp (Layers):
1 Lớp Dau Vào (Input Layer): Nhận đữ liệu đầu vào và truyền dữ liệu đó vào các
lớp tiếp theo
2 Lớp An (Hidden Layers): Các lớp nằm giữa lớp đầu vào và lớp dau ra, nơi diễn
ra hầu hết quá trình tính toán và học của mạng nơ-ron
3 Lớp Dau Ra (Output Layer): Sản sinh đầu ra cuối cùng của mang, phan ánh kết
quả của quá trình học.
10
Trang 21- Qua Trình Huan Luyện (Training Process):
1 Truyền Tiến (Forward Propagation): Quá trình truyền dữ liệu từ lớp đầu vào
qua các lớp ân đến lớp đầu ra
2 Tinh Toán Lỗi (Error Calculation): So sánh đầu ra của mạng với giá trị mong
muốn (ground truth) đề tính toán lỗi
3 Truyền Ngược (Backpropagation): Điều chỉnh trọng số của các nơ-ron dựa trên
lỗi đã tính toán dé giảm thiểu sai số trong các lần huấn luyện tiếp theo Quá trình
nay sử dụng thuật toán gradient descent.
- Ưu Điểm và Ứng Dụng của Mạng Nơ-ron Nhân Tạo:
1 Ưu điểm:
e Kha Năng Học Từ Dữ Liệu: ANN có khả năng học từ dữ liệu và cải thiện hiệu
suất theo thời gian
e Khả Năng Tổng Quát: Mạng nơ-ron có thé học và tông quát hóa các mẫu phức
tạp từ dữ liệu, làm cho nó phù hợp với nhiều bài toán khác nhau
2 Ứng Dụng:
e Nhận Dạng Hình Ảnh: Phân loại và nhận diện các đối tượng trong hình ảnh
e Xử Lý Ngôn Ngữ Tự Nhiên (NLP): Dịch máy, phân loại văn bản, và trích xuất
thông tin.
e Du Đoán và Phân Tích Dữ Liệu: Dự đoán xu hướng thị trường, phân tích dữ liệu
khách hàng, và dự báo thời tiết
2.1.3 Convolutional Neural Network (CNN)
Convolutional Neural Networks[12] (CNNs) là một loại mạng nơ-ron nhân tạo được sử
dụng phổ biến trong xử lý hình ảnh và video CNNs có khả năng học và trích xuất các đặctrưng từ dữ liệu đầu vào thông qua các lớp convolutional, pooling va fully connected
11
Trang 22Convolutional Layers: Lớp này áp dụng các bộ loc (filters) lên hình ảnh dé trích xuất cácđặc trưng như cạnh, góc, và các mẫu phức tạp hơn Hình § dưới đây là cau trúc của một
mang CNN:
Fully
Convolution Connected
Hình 8: Cấu trúc của một CNN[14]
Pooling Layers: Lớp này giảm kích thước của đữ liệu đầu ra từ lớp convolutional dé giảm
số lượng tham số và tính toán trong mạng
Fully Connected Layers: Lớp này thực hiện phân loại dựa trên các đặc trưng đã trích xuất
được từ các lớp trước đó.
Ưu điểm: CNN là khả năng tự động trích xuất đặc trưng từ đữ liệu đầu vào và cùng với đó
là hiệu suất cao trong các bài toán nhận dạng và phân loại hình ảnh Trong công việc nhận
diện cảm xúc thi CNN có thé được huấn luyện dé nhận diện các biéu cảm khuôn mặt thông
qua việc học các đặc trưng đặc biệt từ các hình ảnh khuôn mặt.
2.1.4 Multi-task Cascaded Convolutional Networks (MTCNN)
MTCNN{15] là một kiến trúc mạng nơ-ron sâu được thiết kế để thực hiện cả việc phát hiệnkhuôn mặt và căn chỉnh khuôn mặt cùng lúc Hình 9 dưới đây là một kiến trac MTCNN:
12
Trang 23Conv:3X3 Coọnv:3x3 Conv: 3x3 face
Conv:3x3 Conv:3x3 Conv: 3x3 Convi2x2 - fully
MP: B MP: i MP: is connect (|| fae? classification
e P-Net (Proposal Network): Tìm kiếm các vùng có khả năng chứa khuôn mặt
Ở bước đầu tiên sẽ sử dụng mạng FCN (Fully Convolutional Network[40]) Mạng FCNkhác mạng CNN ở chỗ mạng FCN không sử dụng lớp Dense layer P-Net được sử dụng dé
có được các windows tiêm năng va bounding box regression vectors của chúng (tọa độ).
13
Trang 24Bounding box regression[41] là kỹ thuật để dự đoán vị trí của bounding box khi cần pháthiện đối tượng (ở đây là khuôn mặt) Sau khi có được tọa độ của bounding boxes một vàitỉnh chỉnh được thực hiện để loại bỏ một số bounding boxes overlap với nhau (xem trong
code sẽ có) Đâu ra của bước này là tât cả bounding boxes sau khi đã thực hiện sàng lọc.
Ở đây có dùng PRelu layer[42] (giá trị không âm thì giữ nguyên, giá trị âm sẽ được nhân
với hệ số, hệ số này được học trong quá trình training) Chú ý sau PReLu layer 3 tách thành
2 nhánh, nhánh 4-2 dùng dé dự đoán tọa độ của bounding box, nhánh 4-1 dùng dé dự đoán
xác suât xuât hiện khuôn mặt trong bounding box.
e R-Net (Refinement Network): Xác nhận va tinh chỉnh các đề xuất từ P-Net
Tất cả bounding boxes từ P-Net được đưa vào R-Net Chú ý rằng R-Net là mạng CNN chứkhông phải FCN R-Net giảm số lượng bounding boxes xuống, tinh chỉnh lại tọa độ, có áp
Đầu ra của R-Net được sử dụng làm đầu vào của O-Net Trong O-Net có đưa ra vi trí cua
facial landmarks (2 mắt, mũi, 2 vị trí của miệng) Như hình trên có thê thấy gần cuối có 3nhánh: xác suất xuất hiện khuôn mặt, tọa độ bounding box, tọa độ của facial landmarks
(mỗi vị trí có toa độ x va y, cái này ảnh hưởng đến số lượng units trong layer).
Ưu điểm: MTCNN là kha năng phát hiện và căn chỉnh khuôn mặt hiệu quả ngay cả trong
các điều kiện khó khăn như ánh sang yếu hoặc khuôn mặt bị che khuất một phần và tốc độ
xử lý nhanh chóng và độ chính xác cao MTCNN giúp xác định vi trí và căn chính khuôn
mặt trước khi đưa vào các mô hình nhận diện cảm xúc, đảm bảo rằng dữ liệu đầu vào đượcchuẩn hóa và phù hop
14
Trang 252.1.5 VGG16
VGGI6[13] là một kiến tric CNN do nhóm Visual Geometry Group tại Đại học Oxfordphát triển VGG16 có 16 lớp với 13 lớp convolutional và 3 lớp fully connected VGG16 sửdụng các lớp convolutional với bộ lọc nhỏ (3x3) và các lớp pooling dé giảm kích thước củađầu vảo, giúp mạng học được các đặc trưng phức tạp hơn Nó được đặc trưng bởi độ sâucủa nó, bao gồm 16 lớp, trong đó có 13 lớp chập và 3 lớp được kết nối day đủ VGG-16nổi tiếng vì tinh đơn giản và hiệu quả cũng như khả năng đạt được hiệu suất mạnh mẽ trongcác tác vụ thị giác máy tính khác nhau, bao gồm phân loại hình ảnh và nhận dạng đối tượng.Kiến trúc của mô hình có một chồng các lớp tích chập, theo sau là các lớp tông hợp tối đa,với độ sâu tăng dần Thiết kế này cho phép mô hình tìm hiểu các cách biểu diễn phân cấpphức tạp của các tính năng trực quan, dẫn đến những dự đoán mạnh mẽ và chính xác Mặc
dù đơn giản so với các kiến trúc gần đây hơn, VGG-16 van là lựa chọn phổ biến cho nhiềuứng dung deep learning do tính linh hoạt và hiệu suất tuyệt vời của nó Hình 10 dưới đây
là hình minh hoạ một kiến trúc VGG16:
Hinh 10: Kién trac VGG16[17]
Kién trac VGG-16 la mang no ron tích chập sâu (CNN) được thiết kế cho các nhiệm vụ
phân loại hình ảnh Nó được giới thiệu bởi Nhóm Hình hoc Trực quan tại Dai hoc Oxford.
VGG-16 được đặc trưng bởi sự đơn giản và kiến trúc thống nhất, giúp dé hiểu và thực hiện
15
Trang 26Cấu hình VGG-16 thường bao gồm 16 lớp, trong đó có 13 lớp chập và 3 lớp được kết nốiday đủ Các lớp này được tô chức thành các khối, trong đó mỗi khối chứa nhiều lớp tíchchập, theo sau là lớp tổng hợp tối đa dé lay mẫu xuống.
Lớp đầu vào: Kích thước đầu vào là (224, 224, 3).
Lớp tích chập (64 bộ lọc, bộ lọc 3 x 3, phần đệm giống nhau):
e Hai lớp tích chập liên tiếp với 64 bộ lọc mỗi lớp và kích thước bộ lọc là 3x3
e Phần đệm tương tự được áp dụng dé duy trì kích thước không gian
Lớp gộp tối đa (2x2, bước 2):
e Lớp gộp tối đa với kích thước nhóm là 2x2 và sai chân là 2
Lớp tích chập (128 bộ lọc, bộ lọc 3 x 3, phần đệm giống nhau):
e Hai lớp tích chập liên tiếp với 128 bộ lọc mỗi lớp và kích thước bộ lọc là 3x3
Lớp gộp tối đa (2x2, bước 2):
e Lớp gop tối đa với kích thước nhóm là 2x2 và sai chân là 2
Lớp gộp tối đa (2x2, bước 2):
e©_ Lớp gộp tối đa với kích thước nhóm là 2x2 và sai chân là 2
Ngăn xếp các lớp chập và gộp tối đa:
e Hai lớp tích chập bổ sung sau ngăn xếp trước đó
Trang 27e© Lớp đầu tiên có kích thước đầu vào là 25088 và kích thước đầu ra là 4096.
e Lớp thứ hai có kích thước đầu vào là 4096 và kích thước dau ra là 4096
e Lớp thứ ba có kích thước đầu vào là 4096 và kích thước dau ra là 1000, tương ứng
với 1000 lớp trong ILSVRC.
¢ Kích hoạt Softmax được áp dụng cho dau ra của lớp được kết nối day đủ thứ ba dé
phân loại.
Kiến trúc này tuân theo các thông số kỹ thuật được cung cấp, bao gồm việc sử dụng chức
năng kích hoạt ReLU và xác suất xuất ra lớp được kết nối đầy đủ cuối cùng cho 1000 lớp
sử dụng kích hoạt softmax.
Sự khác biệt chính giữa cấu hình VGG-16 C và D nằm ở việc sử dụng kích thước bộ lọctrong một số lớp chập Mặc dù cả hai phiên bản chủ yêu sử dụng bộ lọc 3x3, nhưng ở phiênbản D, có những trường hợp bộ lọc 1x1 được sử dụng thay thé Sự thay đổi nhỏ này dẫn
đến sự khác biệt về số lượng tham SỐ, trong đó phiên bản D có SỐ lượng tham số cao hơn
một chút so với phiên bản C Tuy nhiên, cả hai phiên bản đều duy trì kiến trúc và nguyên
tắc tổng thể của mẫu VGG-16
Dé thực hiện ban địa hóa, cần thay thế điểm lớp băng tọa độ vi trí hộp giới hạn VỊ trí hộp
giới hạn được biểu thị bằng vecto 4-D (tọa độ trung tâm (x, y), chiều cao, chiều rộng) Có
hai phiên bản kiến trúc bản địa hóa, một phiên ban là hộp giới hạn được chia sẻ giữa các
ứng viên khác nhau (đầu ra là vectơ 4 tham số) và phiên bản còn lại là hộp giới hạn dành
riêng cho lớp (đầu ra là vectơ tham số 4000 ) Bài báo đã thử nghiệm cả hai cách tiếp cậntrên kiến trúc VGG -16(D) Ở đây, cũng cần thay đổi tốn thất từ ton thất phân loại sanghàm tồn thất hồi quy (chang hạn như MSE ) dé xử lý độ lệch của tổn thất dự đoán so vớithực tế
17
Trang 28conv3-512 -512 | conv3-512
convl-512 | conv3-512 | conv3-512
conv3-512 conv3-512 | conv3-512
conv3-512 conv3-512 | conv3-512
convl-512
soft-max
Hình 11: Cấu hình VGG[43]
Hạn chế của VGGI6 [17]:
e Quá trình dao tạo rất chậm (mô hình VGG ban đầu được đào tạo trên GPU Nvidia
Titan trong 2-3 tuần)
e Kich thước của trọng lượng imageNet được huấn luyện VGG-16 là 528 MB Vi vậy,
nó tôn khá nhiều dung lượng 6 đĩa và băng thông khiến nó không hiệu quả
e 138 triệu tham sô dân đên van dé bùng nô độ doc.
18
Trang 292.2 Lý thuyết tối ưu mô hình máy học
2.2.1 SGD (Stochastic Gradient Descent)
Từ "stochastic" có nghĩa là một hệ thống hoặc một quá trình được liên kết với một xác suất
ngẫu nhiên Do đó, trong Stochastic Gradient Descent, một vài mẫu được chọn ngẫu nhiên
thay vì toàn bộ tập dữ liệu cho mỗi lần lặp Trong Gradient Descent, có một thuật ngữ gọi
là "batch", biểu thị tổng số mẫu từ tập dữ liệu được sử dụng dé tính toán gradient cho mỗilần lặp Trong tối ưu hóa Gradient Descent điển hình, như Batch Gradient Descent, lô đượccoi là toàn bộ tập dữ liệu Mặc dù, việc sử dụng toàn bộ tập dữ liệu thực sự hữu ích dé điđến cực tiểu theo cách ít ồn ào hon và ít ngẫu nhiên hơn, nhưng van đề nảy sinh khi tập dit
liệu lớn hơn.
Trong trường hợp có một triệu mẫu trong tập dữ liệu, nếu sử dụng kỹ thuật tối ưu hóaGradient Descent điển hình thì sẽ phải sử dụng tất cả một triệu mẫu đề hoàn thành một lầnlặp trong khi thực hiện Gradient Descent, và nó phải được thực hiện cho mỗi lần lặp chođến khi đạt đến cực tiểu Do đó, nó trở nên rất tốn kém về mặt tính toán để thực hiện Vàvan đề này được giải quyết bằng Stochastic Gradient Descent Trong SGD, nó chỉ sử dụngmột mẫu duy nhất, tức là kích thước lô của một mẫu, đề thực hiện mỗi lần lặp Mẫu đượcxáo trộn ngẫu nhiên và được chọn để thực hiện lặp lại.
Trong SGD, gradient của chi phí hàm của một ví dụ duy nhất tai mỗi lần lặp thay vì tổnggradient của ham chi phí cua tất cả các ví du Vì chi có một mẫu từ tập dữ liệu được chọn
ngẫu nhiên cho mỗi lần lặp, nên đường dẫn mà thuật toán thực hiện dé đến cực tiểu thường
ồn ào hơn so với thuật toán Gradient Descent điển hình của bạn Nhưng điều đó khôngquan trọng lắm vì đường đi của thuật toán không quan trọng, miễn là chúng ta đạt đến cựctiểu và với thời gian đào tạo ngắn hơn đáng kể
2.2.2 Adam (Adaptive Moment Estimation)
Khác với SGD (stochastic gradient descent), một phương pháp dé tối ưu objective functiontrong deep learning, Adam áp dụng các learning rate khác nhau cho mỗi parameter dựa vào
19
Trang 30các tham số betal (first momentum of gradient) và beta2 (second momentum of gradient).Adam có ưu điểm của hai optimization algorithm phổ biến khác là Adaptive gradient
algorithm và Root mean square propagation.
Hiện nay, Adam là một thuật toán phổ biến và được hỗ trợ trong nhiều framework khácnhau, chăng hạn như TensorFlow, Keras, và Torch Việc sử dụng Adam từ thư viện củacác framework khá là tiện lợi, cần lưu ý đến bốn tham số chính như sau:
e alpha: hay còn được biết đến là learning rate; tham số này phan ánh tỷ lệ cập nhật
của các trọng số trong quá trình huấn luyện; giá trị của tham số càng lớn, thì tốc độ
học ban đầu càng nhanh
e befal: tỉ lệ giảm dan theo cấp số nhân cho the first moment estimates
e beta2: tỉ lệ giảm dan theo cấp số nhân cho the second moment estimates
e epsilon: một giá trị lớn hơn 0 và rất nhỏ nhằm tránh lỗi DIV/0 trong quá trình thực
thi.
Các tác giả cũng đã đề nghị nên sử dụng bộ tham số (0.001, 0.9, 0.999, 10-8) cho (alpha,
betal, beta2, epsilon) [61].
2.2.3 Adamax
Adamax là một biến thé của thuật toán tối ưu hóa Adam được sử dụng trong học máy và
học sâu đê tôi ưu hóa quá trình huân luyện các mạng nơ-ron.
Tương tự như Adam, Adamax cũng duy trì một trung bình động của các động mômen
đầu tiên và thứ hai của gradient Tuy nhiên, thay vì sử dung mômen thứ hai của gradient
như trong Adam, Adamax sử dụng norm L-infinity của gradient Điều này hữu ích trongnhững tình huống mà các gradient rất thưa thớt hoặc có phương sai rất cao
Việc sử dung norm L-infinity trong Adamax làm cho nó ôn định hon Adam khi xử lý cácgradient thưa thớt Ngoài ra, sự vắng mặt của thuật ngữ mômen thứ hai cho phép đạt
được sự hội tụ nhanh hơn và yêu câu bộ nhớ ít hơn.
20
Trang 31Nhìn chung, Adamax là một thuật toán tối ưu hóa mạnh mẽ có thé giúp tăng tốc quá trìnhhuấn luyện các mạng nơ-ron sâu và cải thiện hiệu suất của chúng, đặc biệt là trong nhữngtình huống mà các gradient thưa thớt hoặc có phương sai cao.
2.3 Lý thuyết về công nghệ phát trực tiếp
2.3.1 Giao thức WebRTC
WebRTC[44] (Web Real-Time Communication) là một tập hợp các tiêu chuẩn cho phépcác trình duyệt web hoặc ứng dụng di động có thể thực hiện giao tiép audio, video va dữ
liệu thời gian thực mà không cần cài đặt thêm plugin hay phần mềm nào khác WebRTC
được phát triển bởi Google và hiện đang là một phần của hầu hết các trình duyệt hiện đại
như Google Chrome, Mozilla Firefox, Microsoft Edge va Safari Hình 18 dưới đây là hình
minh hoạ về một kiến trúc WebRTC:
The web
Your browser
GHEE itor ved developers (CC Pi torbrowsermaters C777 overrideable by browser makers
Hinh 12: Kién trac WebRTC[45]
Đặc điểm chính của WebRTC là Peer-to-peer Communication: WebRTC cho phép truyềnthông trực tiếp giữa hai thiết bị (peer), không cần qua máy chủ trung gian Điều này giúp
giảm độ trễ và tăng hiệu suất.
21
Trang 32Signaling Signaling
App
WebRTC
Caller Callee
Hình 13: WebRTC - kiến trúc JSEP[46]
Media Streams: Hỗ trợ truyền tải các luồng media (audio và video) với độ trễ thấp, chất
lượng cao.
Data Channels: Cho phép truyền tải dữ liệu tùy ý giữa các peer, phù hợp cho các ứng dụngnhư trò chơi trực tuyến, chia sẻ tệp tin, và các ứng dụng thời gian thực khác
NAT Traversal: Sử dung ICE (Interactive Connectivity Establishment) để vượt qua NAT
va firewall, giúp kết nối peer-to-peer dé dang hon.
Secure Communication: Tất ca các kết nối WebRTC đều được mã hóa dé đảm bảo tinh bảo mật và riêng tư Media streams được mã hóa băng SRTP (Secure Real-time TransportProtocol) và data channels được mã hóa bằng DTLS (Datagram Transport Layer Security)
WebRTC có rất nhiều ứng dụng thực tế, từ các cuộc gọi video, hội nghi trực tuyến, đến các
ứng dụng thực tế ảo (VR) và thực tế tăng cường (AR) Một số ví dụ cụ thé bao gồm: Video
call, Live streaming: phát trực tiép, chat trực tuyén.
22
Trang 332.3.2 Websocket
WebSocket[47] là một giao thức truyền thông dựa trên TCP, được thiết kế để cung cấp mộtkênh giao tiếp hai chiều toàn thời gian giữa client và server Giao thức này được chuẩn hóabởi IETF đưới RFC 6455 và hỗ trợ trong hau hết các trình duyệt hiện đại
Hình 14: Client, Server hoạt động với WebSocket[48]
Đặc điểm chính của WebSocket:
e©_ Full-duplex Communication: WebSocket cho phép giao tiếp hai chiều giữa client
va server đồng thời Client có thé gửi dữ liệu đến server và nhận đữ liệu từ servercùng một lúc mà không cần phải chờ phản hồi
e Low Latency: Được thiết kế dé giảm độ trễ trong truyền thông so với các giao thức
truyền thong như HTTP, WebSocket sử dụng một kết nối duy nhất đề truyền tải dir
liệu, không cần phải mở và đóng kết nói liên tục
e Protocol Agnostic: WebSocket có thé được sử dụng dé truyền tải bat kỳ loại dit liệu
nào, bao gồm cả văn bản và nhị phân Điều này làm cho WebSocket trở thành một
lựa chọn linh hoạt cho nhiều loại ứng dụng khác nhau
23
Trang 34e Persistent Connection: Kết nỗi WebSocket duy tri liên tục, giup truyền dt liệu một
cách hiệu quả hơn so với việc mở và đóng kết nối HTTP liên tục Điều này đặc biệt
hữu ích cho các ứng dụng yêu cầu cập nhật dữ liệu thường xuyên như trò chơi trực
tuyến, chat, và các ứng dụng thời gian thực
e Lightweight Header: WebSocket sử dụng header nhẹ, giúp giảm overhead và tăng
hiệu suất truyền tải đữ liệu
WebSocket được sử dụng rộng rãi trong các ứng dụng yêu cầu giao tiếp thời gian thực và
độ trễ thấp Một số ví dụ cụ thể bao gồm: Ứng dụng web thời gian thực, nhắn tin và thông
báo.
2.3.3 So sánh webrtc va websocket
WebRTC và WebSocket đều là các công nghệ mạnh mẽ dé truyền thông thời gian thực,
nhưng chúng phục vụ các mục đích khác nhau và có các đặc điểm riêng biệt
Bảng 1: So sánh WebRTC và WebSocket
Đặc điểm WebRTC WebSocket
Muc dich Truyén thông thời gian thực | Truyền thông đữ liệu hai
(audio, video, dữ liệu) chiêu giữa client và server Kiêu kết nôi Peer-to-peer Client-server
Giao tiếp Độ trễ thấp, tối ưu cho |Độ trễ thấp, tôi ưu cho
truyền tải media truyền tải đữ liệu văn bản và
nhị phân
Bảo mật Mã hóa theo mặc định | Có thê sử dụng mã hóa TLS
(SRTP cho media, DTLS
cho data)
Co ché NAT ICE (Interactive | Khong hỗ trợ trực tiếp, cần
Connectivity cau hinh thém néu can thiét
Establishment)
24
Trang 35Trường hợp sử dụng Video call, chat trực tuyến, Ứng dụng web thời gian
chia sẻ màn hình, VR thực, game trực tuyến, chat,
thông báo
Sử dụng WebRTC khi: Bạn cần truyền tải audio, video, hoặc dữ liệu thời gian thực giữa
các peer một cách trực tiếp Vi du, cho các ứng dụng video call, hội nghị trực tuyến, hoặc
chia sẻ màn hình.
Sử dụng WebSocket khi: Bạn cần một kênh giao tiếp hai chiều liên tục giữa client vàserver đề truyền tải dữ liệu văn bản hoặc nhị phân Ví dụ, cho các ứng dụng chat, thôngbáo thời gian thực, hoặc game trực tuyến
2.3.4 Cách 2 peer thiết lập kết nối với nhau
Quá trình thiết lập kết nồi giữa hai peer trong WebRTC gồm nhiều bước phức tạp, sử dụng
các kỹ thuật và giao thức như SDP (Session Description Protocol)[49] va ICE (Interactive Connectivity Establishment)[50].
e Signaling: Ban dau, hai peer cần trao đổi thông tin về cách thiết lập kết nối Thông
tin này bao gồm SDP (Session Description Protocol) và ICE candidates Quá trình
signaling thường được thực hiện qua một máy chu signaling sử dụng WebSocket,
HTTP[51] hay bất kỳ giao thức nào khác mà cả hai peer có thé liên lạc được
e ICE Gathering: Mỗi peer thu thập các dia chỉ (ICE candidates) mà nó có thé sử
dụng dé kết nối Cac ICE candidates này có thé là địa chi IP và cổng của máy tính
cua peer, địa chỉ của máy chủ STUN (Session Traversal Utilities for NAT)[52], hoặc địa chỉ của máy chủ TURN (Traversal Using Relays around NAT)[53].
e Exchange of SDP and ICE Candidates: Hai peer trao đôi SDP va ICE candidates
thông qua signaling server SDP chứa thông tin về định dang media (codec), các
kênh media (audio, video), và các tham số khác cần thiết đề thiết lập kết nối
e ICE Connectivity Checks: Sử dụng các ICE candidates, hai peer thực hiện kiém
tra kết nối dé tìm ra con đường tốt nhất dé truyền thông Quá trình này liên quan đến
25
Trang 36việc gửi các gói tin kiểm tra (STUN binding request) qua lại giữa các peer để xác
định địa chỉ nào có thể sử dụng được
e Establishing Media and Data Channels: Khi kết nối ICE đã được thiết lập, các
kênh media (audio và video) và các kênh dữ liệu sẽ được thiết lập giữa hai peer Các
luồng media sẽ được mã hóa bằng SRTP và các luồng đữ liệu sẽ được mã hóa bằngDTLS[54] dé đảm bảo tinh bảo mật
e Secure Communication: Mọi dữ liệu truyền qua kết nỗi WebRTC đều được mã
hóa để đảm bảo tính bảo mật Các kết nối SRTP và DTLS đảm bảo rằng dữ liệu
không bị nghe trộm hoặc giả mạo.
Sau đây là một ví dụ:
e Peer A khởi tạo một phiên kết nói và tạo một offer SDP, sau đó gửi offer này đến
Peer B qua signaling server.
e Peer B nhận offer SDP từ Peer A, tạo một answer SDP và gửi answer này trở lại
Peer A qua signaling server.
e Cả hai peer bắt đầu quá trình ICE gathering và gửi các ICE candidates cho nhau qua
signaling server.
e Khi cả hai peer đã thu thập du ICE candidates và xác định được con đường kết nối
tốt nhất, họ sẽ thiết lập các kênh media và data channels
2.3.5 Mediasoup
Mediasoup[24] là một thư viện media server mạnh mẽ, mã nguồn mở, được sử dụng déxây dựng các ứng dụng truyén thông thời gian thực dựa trên WebRTC Mediasoup hỗ trợcác tính năng như truyền tải và điều khiển media streams, mixing, recording, và forwarding
media streams g1ữa các peer.
Đặc điểm chính của Mediasoup:
e©_ Scalability: Mediasoup được thiết kế dé xử lý một số lượng lớn kết nối đồng thời
Nó có thé chia sẻ tải giữa nhiều lõi CPU, giúp mở rộng hệ thống dé dàng
26
Trang 37Flexibility: Mediasoup cung cấp API phong phú và linh hoạt, cho phép các nhà pháttriển tùy chỉnh và cau hình theo nhu cầu cụ thé của ứng dụng.
Interoperability: Hỗ trợ chuân WebRTC, dé dàng tích hợp với các ứng dụng và trình
Các thành phần của Mediasoup:
Router: Thành phần chính của Mediasoup, chịu trách nhiệm định tuyến các luồng
media giữa các Producer và Consumer.
Transport: Quản lý các kết nối giữa Router và các peer, có thê là PlainTransport,
WebRtcTransport hoặc PipeTransport.
Producer: Đại điện cho một nguồn media stream (audio, video) từ một peer
Consumer: Đại diện cho một điểm đích media stream (audio, video) tới một peer
DataProducer: Đại diện cho một kênh dữ liệu từ một peer.
DataConsumer: Đại diện cho một kênh dữ liệu tới một peer.
Cách hoạt động của Mediasoup:
Initialization: Khi một peer muốn kết nối, nó sẽ khởi tạo một kết nốiWebRtcTransport đến Mediasoup Router
Media Publication: Peer gửi media stream (audio, video) đến Mediasoup thông qua
Producer.
Media Subscription: Các peer khác có thé đăng ký nhận media stream từ Mediasoup
thông qua Consumer.
Data Channels: Peer có thể gửi và nhận đữ liệu thông qua DataProducer và
DataConsumer.
27