Từ tập dữ liệu hình ảnh đầu vào, các mô hỉnh học máy có thể được đảo tạo đề nhận dạng các đối tượng được phân loại trước và phát hiện chúng trong nhiều bồi cảnh khác nhau.. Kỹ thuật này
Trang 1
TRUONG DAI HOC CONG NGHE THONG TIN &
TRUYEN THONG VIET HAN Khoa Khoa Hoc May Tinh
Sinh viên thực hiện: ABCTrần Chánh Tín
Quảng Hoàng Sơn
Giảng viên hướng dẫn: TS: Lê Thị Thu-
NgaAAATS.Huynh Ngoc Thọ
Trang 2Da Nang, 21 thang 05 nam 2024
TRUONG DAI HOC CONG NGHE THONG TIN &
TRUYEN THONG VIET HAN Khoa Khoa Hoc May Tinh
ABEQuang Hoang Son Ma: 2117375
Trang 3Giảng viên hướng dẫn: TSkê- Thị Phư-
Ngàn TS.Huỳnh Ngọc Thọ
Da Nang, 21 thang 05 nam 2622024
NHẬN XÉT CUA GIANG VIEN HUONG DAN
CHU Ki CUA GIANG VIEN HUONG DAN
Trang 4LOI CAM ON Trước hết, em xin cảm ơn tất cả các thầy cô bộ môn Khoa học Máy tính đã luôn đồng
hành cùng chúng em trong suốt những năm bước vào đại học, giúp chúng em học cách
tự lập và tự khám phá những điều mới mẻ Thầy cô đã giúp đỡ chúng em rất nhiều trong việc định hướng việc học
Thứ hai, em xin cảm ơn người hướng dẫn của em, vì sự kiên nhẫn, tận tâm và kiến thức sâu rộng của thầy, người đã hỗ trợ em trong suốt quá trình nghiên cứu và thực hiện Những hướng dẫn, góp ý, phản hồi của thầy Huỳnh Ngọc Thọ đã giúp em hiểu rõ hơn về lĩnh vực nghiên cứu và nâng cao trình độ chuyên môn của mình
Em không thé quên sự nỗ lực, hỗ trợ của gia đình và bạn bè trong suốt quá trình học tập
và thực hiện đồ án Những lời động viên, tin tưởng và yêu thương vô điều kiện của mọi
người đã tiếp thêm cho em động lực mạnh mẽ đề vượt qua khó khăn và hoàn thành dự
án một cách thành công
Xin chân thành cảm ơn và chúc sức khỏe, thành công tới tất cả mọi người!
Trân trọng,
Trang 5MUC LUC LỜI CẢM 0 )\ HH n1 n t2 12212121 rag 4
TỪ VIẾT TẮÁTT 55c S2 12E12E112112111211211121121121121.211 212212121212 og 7 DANH MỤC HÌNH ẢNH 52-55 52 E122E12E121121121121.2112 222 reo 8 GIỚI THIỆU 2c S2E122E12E12112112112112112111121121222111212 21121 cn gen 1 Chuirong 1 TONG QUAN VE CHU DE voces ceccsscscssscesesseesvsssessessesseseseevsveecevseeaercsseeets 3 1.1 = TONG QUAN HOC TAP SAU Looe ceccecccsccsssesseessesssessessvsssesevsssesevssessnsscseesseevsseees 3 1.1.1 Gidi thidu vé Hoe sau cccccseccecsessessessesstssessvssesesssestsstessestsseseeaneseeees 3
1.1.2 Học sâu hoạt động như thế nào? 2T ng HH HH HH Hee 4
1.2 MẠNG THÂN KINH TUYỆT VỜI (CNN) s5 ng rrtere 4 1.3 PHƯƠNG PHÁP NHẬN DẠNG ĐỐI TƯỢNG - 5 5c t2 cty 4
1.3.1 Mạng thần kinh chuyên đôi dựa trên khu vực (R-CNN) 4
1.3.2 R-CNNFagt 0 HH HH HH HH eeag 6
1.3.3 R-CNN FasfT Q21 n HT n1 1111k kg 0555115 k6 7
1.4 _ GIỚI THIỆU VỀ YOLO (You Only Look Onee) ss- 5c sccscEtEEsrrerrryet 9 1.4.1 YOLO là gì? SH HH HH HH Hang erre 9 1.4.2 Kiến trúc YOLO 222 2212122112122 eeeerrree 10 1.43 ĐầuraYOLO Q.22 2n HH2 H 2H n2 tre 11 1.4.4 _ Dự đoán trên nhiều bản đồ tinh năng 55-5 SE 2E errerryo 12
¬- ˆ)' “1a ằ 13
1.4.6 Mất chức năng c2 11211211 1 111 nga 14
1.4.7 Dự đoán hộp giới hạn - 2 222 1221122111211 1211211121112 5151811 reg 15
1.4.8 _ Sự đàn áp không tối ổa 5c St TT HH HH HH rờg 16 1.4.9 YOLO hoat dong nhu thé nd0? 0.0.0 cecceccseesceseseesseeeseeseesessessesessesecaseseeees 16 1.4/10 YOLOVÑ TH HH HH HH tt ng rêu 18 1.4.11 Bài học chính 55c E THErEHHn HH HH teen ườn 24
15 TẬP DỮLIỆU Ặ22 2222112122221 2122212112121 ere 24 1.5.1 Tập dữ liệu để huấn luyện Model - 5+ 2x E111 1E rtrrerien 24
1.5.2 — Các loại bo ditt léuei ies cecccccccccccuccccvscesevccccauauseecececeeeeeeeueanaes 25
Trang 61.5.4 _ Phân bổ thời gian cho các quy trình hoàn thành dự án Machine Learning 26
Chương2_ PHẦN TÍCH VÀ THIẾT KẾ HỆ THÓNG 252252 2E 27 1.6 MÔ TẢ VẤN ĐỀ c nnnnnnnHnHnH n1 1221 ererrag 27 1.7 PHÂN TÍCH THIẾT KỂ 55+ 2 2E 82212171 1127 EEEEeerrrei 27 1.7.1 Xác định tác nhân của hệ thống 5 ST E1 2t te ng 27 1.7.2 Sơ đồ hoạt động - sc SE HH Hy rrrya 29 1.8 THU THẬP VÀ XỬ LÝ DỮ LIỆU 52 5+2 E2 22121122121 2EEEEerrxe 31 1.8.1 Thu thập dữ liệu - 2S TT HH 221tr rrye 31
1.8.2 Quy trình thu thập đữ liệu S2 22222211122 212 Hye 32 1.8.3 _ Quy trình thu thập đữ liệu S2 22221211122 2H He 33
1.8.4 Ghi nhãn đữ liệu 55c 2S TH HH net 33 1.9 ĐÀO TẠO MÔ HÌNH YOLOVR 2-55 5 2H 2 21212 trerrrerre 36
1.9.1 Tạo tập đữ liệu đào tạo cece ce 1012 n2 HH xe ha ke 36 1.9.2 Đào tạo các mô hình YOLOv8 trên Google Colab cee 37
1.9.3 Tinh chỉnh mô hình 2 + 22S E122 1211211211211 2E Ea 43 1.9.4 Đánh giá mô hình huấn luyện - 5 SE xE E1 2111 1E errree 43 Chương 3_ XÂY DỰNG HỆ THỐNG 2-5 ST 1211211211 11 181812 cH re 46 1.10 XÂY DỰNG VÀ LẮP ĐẶT HỆ THÓNG 5c SE Hee 46 1.10.1 Xây dựng hệ thống - ST 1 TH H1 HH1 HH ngu g 46 1.10.2 Cau trúc thư mục hệ thống - 2-52 E2 111 E1 E12 112122121.8 tr run 47 1.11 XÂY DỰNG VÀ LẮP ĐẶT HỆ THÓNG 5c Street 48 KẾT LUẬN VÀ ĐỀ XUẤTT 2 s2 2 1221221212112 errreg 50 TÀI LIỆU THAM KHẢO -.- 2s 5 E2122112211111 2112111 22.21 HE Hee 51
Trang 7TU VIET TAT
TU VIET TAT NGHIA
CNN Mạng lưới thần kinh chuyên đôi
trí tuệ nhân tạo Trí tuệ nhân tạo
API Giao diện lập trình ứng dụng
GPU Bộ xử lý đô họa
TPU Đơn vị xử lý kéo
R-CNN Mạng lưới thân kinh chuyển đôi dựa trên khu vực
YOLO Bạn chỉ nhìn một lần
AP Độ chính xác trung bình
IOU Giao lộ qua Union
Trang 8
DANH MỤC HÌNH ẢNH Hinh 1-1 Deep Learning là một tập hợp con của Machine Learning - 13 Hình 1-2 Sơ đồ đường ống trong mô hình R-CNN - 5c c2 2 2e 15
Hình 1-3 Kiến trúc của Fast R-CNN đơn mô hình -2 22 2222222222222 csxe2 16 Hình 1-4 Kiến trúc của mô hinh Faster R-CNN ccccscccsscesssseessteecstessseestessesseseeessnensees 18 Hình 1-5 Đánh giá tốc độ của ba mô hình R-CNN 5-2 2s EceEErerrr xe 19
Hình 1-6 Dòng thời gian YOLO - (01120121 1121111 11111111111 111 111111111112 11 1 11 111 Ha 20
Hình 1-7 Kiến trúc YOLO -2: ©2+2222222112221122111271122711221112211 21121121 20 Hình 1-8 Kiến trúc một đầu ra của mô hình YOLO - 22: ©2+222+22222x22x+z2xzszxe2 22
Hình 1-9 Bản đồ đặc trưng của mạng YOLO với hình dạng đầu vảo sac: 22 Hình I-10 Xác định hộp neo cho một đối ¡0 ce tees cr teeeeeetieeeees 23
Hình 1-11 Xác định tham số IoU -s:25:2222+22222222122E3122E1122E122E122 22 2E tre 24
Hình I-I2 Công thức ước lượng khung giới hạn từ khung neo c222- c5 25
Hình 1-13 Triệt tiêu không tối đổa - - S1 1 1E 1211211211 1 212tr ree 26
Hình 1-14 Các bước xử lý trong mô hình YOLO - 2 2 22121 x 1211 12 xa 27 Hình 1-15 Kiến trúc YOLOy8 - 5 22 2 1E 212221211211 211211212122 1e 29 Hình I-I6 Trực quan hóa hộp neo trong YOLÔ 0 2211122222 1122 Hy yu 30 Hình 1-17 Đầu phát hiện của YOLOv5, được hiền thị trong netron.app -: 30 Hình 1-18 Đầu phát hiện YOLOv8, được hiển thị trong netron.app s-csccc¿ 31 Hình 1-19 Mô-đun YOLOv8§ 2Ÿ mới 2 2: 221212211211 11111512 118111181 8211112111 kg 32 Hình 1-20 Kham tang cường ảnh bản cờ c0 1 221222112 112 215 2115 112gr rườy 33 s001081/8978:049)09 10999 11 5 34 Hình I-22 Time spent analyzing dafa - - 0 2212211221112 1121111511511 11528 tk 36
Hình 2-1 Sơ đồ ca sử dụng toàn hệ thống - - St E11 1E 111tr 38 Hình 2-2 Sơ đồ hoạt động - - s1 SE 112121121121 11 121110 HH tr tưệy 40 Hình 2-3 Hình ảnh minh họa đữ liệu chúng ta cần thu thập - 555cc c2 42
Hình 2-4 Tập dữ liệu của dự án 0 Q0 2122221111211 122 1011125151111 1n ru 43
Hình 2-5 Gán nhãn đữ liệu bằng hộp giới hạn - Sn SE E1 12tr rey 44
Hình 2-6 Dán nhãn bằng công cụ LabelÌMe c1 12111121212 111 1112122111811 ervey 44 Hình 2-7 Tọa độ các khung bao quanh đối tượng được dán nhãn c 55-2 45 Hình 2-§ Cầu trúc thư mục đữ liệu huấn luyện Yolov8 L c c1 12H he 46 Hình 2-9 Cầu trúc thư mục đữ liệu huấn luyện Yolov8 L c c1 12H he 47
Hình 2-10 Tạo Jupyter trên Google Colab - c1 2c 2111211211111 111 1111121111111 1111 1 xk 48
Hinh 2-11 Két nối téi thu myc YOLOv8 trén Google Drive cty 48
Hinh 2-12 Cai dat thu muc m6 hinh YOLOv8 vao Google Drive cee 48 Hinh 2-13 Giải nén file data.zIp trong thư mục YolOv8 trên Google Drive 49
Hình 2-14 Sắp xếp lại tập tin - -c St TT 2n 1211 1211 2tr 49
Hình 2-15 Cầu trúc thư mục sau khi cài đặt YOLOv§ và giải nén đata.zïp 50
9
Trang 9Hinh 2-16 Tao tép datal.yaml chứa thông tin cấu hình huấn luyện 5s: 50 Hình 2-L7 Nội dung trong tệp data Ï yaml - - c1 2212221122111 2515 1111 2112 hưey 31 Hình 2-1§ Đào tạo mô hình YOLOvẩ Q TQ Q0 HH ng 2k TT ng 1 nn ng k 1 1111k kẻ 51
Hinh 2-19 Can nang file sau khi huấn luyện - 2L 2 2221111222111 He rưu 52
Hình 2-20 Đánh giá kết quả huấn luyện mô hình trên tập đữ liệu thir nghiém 52
Hình 3-1 Hệ thông nhận biết và cảnh báo cháy, khói cho quản trị viên 56
Hình 3-2 Cảnh báo đã được gửi đến Máy chủ 5 SH 1n ghe 57
Hình 3-3 Cảnh báo đã được gửi tới Email quản tTỊ c2 222122212222 rse 57
Hình 3-4 Cầu trúc thư mục của Hệ thốn - 2-2221 2 2E1221125121121112122211 1121.226 58
10
Trang 10GIỚI THIỆU
a Báo cáo vấn dé
Nhận dạng đối tượng trong trí tuệ nhân tạo (AI) là một kỹ thuật máy học có khả năng phát hiện và xác định đối tượng trong hình ảnh hoặc video Nó tạo điều kiện phát triển các ứng dụng thông minh như xe tự lái, quản lý giao thông, an ninh, chăm sóc sức khỏe, chơi game và giải trí
Từ tập dữ liệu hình ảnh đầu vào, các mô hỉnh học máy có thể được đảo tạo đề nhận dạng các đối tượng được phân loại trước và phát hiện chúng trong nhiều bồi cảnh khác nhau Kỹ thuật này dựa trên các thuật toán học máy, chăng hạn như mạng lưới thân kinh sâu, để tìm hiểu cách phân biệt giữa các đối tượng khác nhau và xác định tọa độ của chúng trong hình ảnh
Nhận dạng đối tượng trong AI có ứng dụng rộng rãi trong nhiều ngành khác nhau như chăm sóc sức khỏe, công nghệ thông tin, giải trí, an ninh và giao thông van tai No
tăng tốc và cải thiện việc xử lý dữ liệu, giảm sự phụ thuộc vào sự can thiệp của con
người Vì vậy, trên cơ sở những kiến thức đã học, hiểu biết về công nghệ điện tử và xử
lý hình ảnh, cùng với sự đồng ý của cố vấn TS Phạm Nguyễn Minh Nhựt, tôi chọn đề tài: “Xây dựng hệ thống giám sát nhiều camera cảnh báo khói lửa” trong phòng chống cháy nổ”
b Mục đích và phạm vì của chủ đề
Mục tiêu:
Đề tài: "Xây dựng hệ thống phát hiện lửa và cảnh báo" nhằm mục đích nhận điện
khói, lửa dựa trên đặc điểm đặc trưng của hình ảnh và video Việc triển khai sẽ được
thực hiện băng ngôn ngữ lập trình Python đề xử lý hình ảnh thông qua phân mêm máy tính
Phạm vi của chủ đề:
Thu thập dữ liệu: Thu thập dữ liệu hình ảnh, video về cháy, khói trong môi trường Dán nhãn đữ liệu: Dán nhãn các đối tượng trong hình ảnh và video, tập trung vào lửa và khói
Tách đữ liệu: Chia tập dữ liệu được gan nhãn thành tập huấn luyện và xác thực
Xây dựng mô hình YOLOv8: Sử dụng YOLOv8 dé xây dựng mô hình nhận biết
lửa và khói
Đào tạo mô hình: Huấn luyện mô hình trên tập dữ liệu được gan nhãn
II
Trang 11Sau phân mở đâu, luận án có cầu trúc gôm 4 chương:
Chương I, Tổng quan về chủ đề Trong chương này, tôi sẽ cung cấp một cái nhìn tong quan vé chủ đề này Hơn nữa, tôi sẽ thảo luận về các công nghệ được sử dụng, Hệ thống Yolo và các yêu cầu hệ thống
Chương 2, Phân tích và thiết kế hệ thống Trong chương này, tôi sẽ cung cấp các
mô tả chỉ tiết về kiến trúc và cách triển khai đào tạo mô hình YOLOv8 Ngoài ra, tôi sẽ
minh họa luồng xử lý của chương trình bằng cách tạo biểu đồ và thiết kế hệ thong Chương 3, Xây dựng hệ thống - Xây dựng ứng dụng xử lý ảnh nhận biết lửa và khói Trong chương này tôi sẽ giới thiệu cách xây dựng và cài đặt hệ thông Tôi đánh giá hệ thông bằng thực nghiệm
Cuối cùng là Kết luận, Đề xuất, Tài liệu tham khảo và Phụ lục liên quan đến đề tài
12
Trang 12Chuong1 TONG QUAN VE CHU DE
1.1 TONG QUAN HOC TAP SAU
1.1.1 Giới thiệu về Học sâu
Deep Learning là một thuật toán lấy cảm hứng từ hoạt động của bộ não con người,
đặc biệt ở khả năng xử lý nhiều lớp biểu diễn cụ thể và trừu tượng Cách tiếp cận này giúp làm rõ ý nghĩa của các loại đữ liệu khác nhau Deep Learming tập trung giải quyết các vấn đề liên quan đến mạng lưới thần kinh nhân tạo để nâng cao các công nghệ như nhận dạng giọng nói, thị giác máy tính và xử lý ngôn ngữ tự nhiên Một số ứng dụng trong thê giới thực của Deep Learming bao gồm điều khiển xe và robot tự động, nhận dạng hình ảnh, phát hiện các bệnh hiếm gặp và hệ thống khuyến nghị trên các nền tảng như Facebook, Amazon, Netflix, v.v
Deep Leaming là một tập hợp con của Machine Leaming, thê hiện sự khác biệt
chính so với ML truyền thông ở một số khía cạnh quan trọng Nó dựa trên một tập hợp
các thuật toán cô gắng mô hình hóa đữ liệu trừu tượng ở mức cao bằng cách sử dụng nhiều lớp xử lý có cầu trúc phức tạp hoặc cách khác là thông qua các phép biến đôi phi tuyến tính khác nhau
Artificial Intelligence Machine Learning
Any technique that enables computers
to mimic human intelligence, using logic, if-then rules,
decision trees, and
machine learning (including deep
learning)
A subset of AI that includes abstruse statistical techniques that enable machines
to improve at tasks with experience The category includes deep learning
Hinh 1-] Deep Learning là một tập hop con cua Machine Learning
13
Trang 131.1.2 Học sâu hoạt động như thế nào?
Deep Learning (DL) gắn liền với việc cung cấp cho hệ thông máy tính một lượng
dữ liệu khong 16
Dữ liệu này được cung cấp thông qua mạng lưới thần kinh nhân tạo
Các mạng này là các cầu trúc logic yêu cầu một loạt câu hỏi đúng/sai hoặc trích xuất một giá trị số cho từng bit dữ liệu truyền qua chúng và phân loại nó dựa trên các
cau tra loi nhận được
Nhiệm vụ của Deep Learming tập trung phát triển các mạng này nên chúng được goi la Deep Neural Networks—mang logic có độ phức tạp cân thiệt dé xử lý các tập dữ
liệu phân loại lớn
12 MẠNG THẢN KINH TUYET VOI (CNN)
Mạng nơ-ron tích chập (CNN), còn được gọi là mạng nơ-ron tích chập, là một trong những mô hình Deep Learning phố biến và có tác động nhất trong lĩnh vực thi giác máy tính
Ứng dụng: Nhận đạng hình ảnh, phân tích video hoặc giải quyết các vấn đề về xử
lý ngôn ngữ tự nhiên
Tai sao chung ta can CNN?
Mạng nơ-ron thông thường gặp phải vấn đề về số lượng trọng số khi xử lý hình ảnh:
- Một mạng lưới thần kinh điển hình bao gồm ba thành phân: lớp đầu vào, lớp đầu
ra và lớp ân Mỗi nút trong một lớp được kết nồi với tất cả các nút ở lớp trước (lớp được
kết nối đầy đủ)
- Trọng lượng W: giữa lớp đầu vào và lớp ân
- Với ƠNN, một nơ-ron trong một lớp chỉ được kết nối với một số nơ-ron ở lớp
trước, điều này có thể giải quyết vẫn đề về số lượng lớn tham số trong khi vẫn nắm bắt
được các đặc điểm của hình ảnh
Với ƠNN, một nơ-ron trong một lớp chỉ được kết nối với một số nơ-ron ở lớp
trước, điều này có thể giải quyết vẫn đề về số lượng lớn tham số trong khi vẫn nắm bắt
được các đặc điểm của hình ảnh
1.3 PHƯƠNG PHÁP NHẬN DẠNG ĐỎI TƯỢNG
1.3.1 Mạng thần kinh chuyển đổi dựa trên khu vực (R-CNN)
R-CNN (Regions with CNN Features) là một lớp mô hình phát hiện đặc điểm dựa
trên CNN do Ross Girshick và các cộng tác viên phát triển Lớp này bao gồm ba mô
14
Trang 14hình chính: R-CNN, Fast R-CNN và Faster R-CNN, được thiết kế cho các tác vụ ban địa
hóa đối tượng và phát hiện đôi tượng
R-CNN được Ross Girshick và các đồng nghiệp tại UC Berkeley, một trong những trung tâm nghiên cứu AI hàng đầu thế giới giới thiệu lần đầu tiên vào năm 2014 Nó có thê được coi là một trong những ứng dụng nền tảng ban đầu của mạng nơ ron tích chập
cho các nhiệm vụ định vị, phát hiện và phân đoạn đối tượng
Kiến trúc của R-CNN bao gồm ba thành phân chính:
- Đề xuất vùng: Nó chịu trách nhiệm tạo và trích xuất các vùng được đề xuất chứa các đối tượng được bao bọc bởi các hộp giới hạn
- Trích xuất tính năng: Nó trích xuất các tính năng đề hỗ trợ nhận đạng hình ảnh từ các đề xuất khu vực thông qua kiến trúc mạng nơ-ron tích chập sâu
- Phân loại: Dựa trên các tính năng đầu vào từ bước trước, nó sẽ phân loại các hình
ảnh có trong vùng đề xuất vào các nhãn chính xác
R-CNN: Regions with CNN features
aeroplane? ne |
Hình 1-2 Sơ đồ đường Ống trong mô hình R-CNN
Chúng tôi quan sát thay các hình ảnh phụ được trích xuất ở bước 2, dẫn đến một số
lượng lớn (khoảng 2000) đề xuất khu vực Sau đó, CNN sâu được áp đụng ở bước 3 để
tính toán các đặc điểm và mô hình dự đoán các nhãn ở bước 4, giống như một nhiệm vụ
phân loại hình ảnh thông thường
Đây là một ứng dụng tương đối đơn giản và dễ hiểu của CNN cho bài toán định vị
và phát hiện đối tượng
Như đã đề cập, thuật toán R-CNN là một cách tiếp cận mạnh mẽ và dễ hiểu, hoạt
động tốt so với các thuật toán học máy trước đó Tuy nhiên, hạn chế của nó nằm ở việc
trích xuất các đề xuất vùng, dẫn đến số lượng ảnh lớn (khoảng 2000), dẫn đến thời gian huấn luyện kéo dài và xử lý tốn nhiều tài nguyên
15
Trang 151.3.2 R-CNN Fast
Dựa trên sự thành công của R-CNN, Ross Girshick (lúc này đã chuyển sang Microsoft Research) đã đề xuất một phần mở rộng đề giải quyết các vấn đề của R-CNN trong một bài báo vào năm 2015 với tiêu đề ngắn gọn: "Fast R-CNN"
Bài viết nêu bật những hạn chế của R-CNN, bao gồm:
- Đào tạo thông qua quy trình gồm nhiều bước: Quy trình bao gồm việc chuẩn bị
và vận hành ba mô hình riêng biệt
- Chi phí đào tạo cao về số lượng hộp giới hạn và thời gian đào tạo: Mô hình đào
tạo CNN chuyên sâu về số lượng lớn đề xuất khu vực cho mỗi hình ảnh, khiến quá trình
này diễn ra rất chậm
- Phát hiện đối tượng chậm: Tốc độ xử lý không đủ đề đảm bảo hiệu suất thời gian
thực
Điểm đột phá của Fast R-CNN là việc sử dụng một mô hình duy nhất thay vì một
đường dân đề phát hiện các vùng và thực hiện phân loại đồng thời
Kiến trúc của mô hình bao gồm việc trích xuất các đặc điểm từ một tập hợp các đề
xuất vùng được lấy từ một hình ảnh, sau đó được truyền qua CNN sâu Một CNN đã được huấn luyện trước, chăng han nhu VGG-16, duoc str dung đề trích xuất đặc trưng
Phân cuối cùng của đeep CNN bao gồm một lớp tùy chỉnh được gọi là lớp Region of Interest Pooling (Rol Pooling), chịu trách nhiệm trích xuất các đặc điểm cho một vùng
cụ thê của hình ánh đầu vào
Sau đó, các tính năng được nỗi với nhau bằng một lớp được kết nỗi đầy đủ Cuối
cùng, mô hình được chia thành hai đầu ra: một đầu ra để dự đoán nhãn thông qua lớp softmax và một đầu ra khác đề dự đoán các hộp giới hạn (ký hiệu là bbox) dựa trên hỗồi quy tuyến tính Quá trình này sau đó được lặp lại nhiều lần cho từng Vùng quan tâm (Rol) trong mot hinh ảnh
Hinh 1-3 Kién trúc của Fast R-CNN đơn mô hình
l6
Trang 16làm cong hình ảnh của đề xuất vùng như trong R-CNN, chúng tôi trực tiếp xác định vị trí phép chiếu của đề xuất vùng trên bản đồ đặc trưng thông qua phép chiếu Rol Vị trí này có liên quan đến vị trí trong ảnh gốc Sau đó, đầu ra được chuyên qua các lớp gộp
Rol và các lớp được kết nỗi đầy đủ đề thu được vectơ đặc tính Rol Sau đó, đầu ra được
chia thành hai nhánh Một nhánh hỗ trợ xác định phân bố xác suất giữa các lớp cho
Vùng quan tâm (Rol) thông qua hàm softmax và nhánh còn lại xác định tọa độ của hộp giới hạn thông qua độ lệch hồi quy
Mồ hình này nhanh hơn đáng kế cả về đào tạo và dự đoán; tuy nhiên, nó vẫn yêu cầu một tập hợp các đề xuất vùng được đề xuất cùng với mỗi hình ảnh đầu vào
1.3.3 R-CNN EFaster
Kiến trúc được thiết kế để đề xuất và tĩnh chỉnh các đề xuất khu vực như một phần
của quá trình đào tạo, được gọi là Mạng đề xuất khu vực (RPN) Các vùng này sau đó được sử dụng cùng với mô hình Fast R-CNN trong thiết kế mô hình thống nhất Những cải tiến này giúp giảm số lượng đề xuất khu vực, đồng thời tăng tốc thời gian suy luận
của mô hình đề đạt hiệu suất gần như thời gian thực với độ chính xác tối ưu Tốc độ đạt
được 5 khung hình mỗi giây trên GPU
Mặc dù là một mô hình thống nhất duy nhất nhưng kiến trúc này là sự kết hợp của hai mô-đun:
- Mạng đề xuất khu vực (RPN): CNN đề xuất các khu vực và phân loại các đối
tượng cần kiểm tra thêm trong các khu vực đó
- R-CNN nhanh: Một CNN trích xuất các tính năng từ các đề xuất khu vực và đưa
Trang 17Hình 1-4 Kiến trúc của mô hình Faster R-CNN
Ở giai đoạn đầu, CNN sâu được sử dụng để tạo bản đồ đặc trưng Không giống như Fast R-CNN, kiến trúc này không tạo Vùng quan tâm (Rols) trực tiếp trên bản đỗ
đối tượng Thay vào đó, nó sử dụng bản đồ đặc điểm làm đầu vào để xác định các đề
xuất khu vực thông qua RPN (Mạng đề xuất khu vực) Đồng thời, các bản đồ đặc trưng đóng vai trò là đầu vào cho bộ phân loại đề phân loại các đối tượng trong các đề xuất
khu vực được xác định bởi mạng RPN
RPN hoạt động bằng cách lấy đầu ra của CNN sâu đã được huấn luyện trước, chuyển bản đồ đặc trưng qua một mạng nhỏ và tạo ra nhiều đề xuất khu vực cùng với các nhãn dự đoán cho chủng Đề xuất khu vực là các hộp giới hạn đựa trên các hộp hoặc
hình dạng cô định được xác định trước được thiết kế để tăng tốc và nâng cao hiệu quả tạo đề xuất khu vực Các dự đoán nhãn là nhị phân, cho biết liệu đề xuất khu vực có
chứa đối tượng hay không
18
Trang 18R-CNN Test-Time Speed
Fast R-CNNI 2.3
Faster R-CNN| 0.2
Hình 1-5 Đánh giá tốc độ của ba mô hình R-CNN
Theo Hinh 1.4, chung ta co thé quan sát thấy Faster R-CNN có tốc độ xử lý nhanh
hơn đáng kề so với hai mô hình tiền nhiệm Với tốc độ xử lý thời gian thực, mô hình này
được áp dụng rộng rãi trong những năm gân đây
1.4 GIOI THIEU VE YOLO (You Only Look Once)
1.4.1 YOLO la gi?
You Only Look Once (YOLO) dé xuat str dung mang than kinh toàn điện đề đưa ra các dự đoán về các hộp giới hạn và xác suất của lớp cùng một lúc Nó khác với cách tiếp
cận được thực hiện bởi các thuật toán phát hiện đối tượng trước đó, vốn sử dụng lại các
bộ phân loại đề thực hiện phát hiện
Theo một cách tiếp cận khác biệt về cơ bản đề phát hiện đối tượng, YOLO đã đạt được kết quả tiên tiến, đánh bại các thuật toán phát hiện đối tượng theo thời gian thực
Một số phiên bản mới của cùng một mô hình đã được đề xuất kẻ từ lần phát hành
đầu tiên của YOLO vào năm 2015, mỗi phiên bản đều dựa trên và cải tiền phiên bản tiền nhiệm Đây là dòng thời gian thể hiện sự phát triển của YOLO trong những năm gần đây
19
Trang 19YOLO timeline
YOLO-9000 YOLO-v3 | YOLO-v5 YOLO-v2
Hinh 1-6 Dong thoi gian YOLO
Mạng phát hiện có 24 lớp chập theo sau là 2 lớp được kết nói đầy đủ Các lớp chập 1x I xen kẽ làm giảm không gian đặc trưng của các lớp trước đó Chúng tôi giữ lại các
lớp chập trong nhiệm vụ phân loại ImageNet tại
1.4.2 Kién trac YOLO
Thuật toán YOLO lấy hình ảnh làm đầu vào và sau đó sử dụng mạng nơ-ron tích chập sâu đơn giản đề phát hiện các đối tượng trong ảnh Kiến trúc của mô hình CNN tạo thành xương sống của YOLO được trình bày bên dưới
Conv Layer Com Layer Conv Layers v Layer
Hình 1-7 Kiến trúc YOLO
Mạng phát hiện có 24 lớp chập theo sau là 2 lớp được kết nói đầy đủ Các lớp chập 1x I xen kẽ làm giảm không gian đặc trưng của các lớp trước đó Chúng tôi huấn luyện trước các lớp chập trong nhiệm vụ phân loại ImageNet ở độ phân giải bằng một nửa
(hình ảnh đầu vào 224 x 224) và sau đó tăng gấp đôi độ phân giải đề phát hiện
20 lớp chập đầu tiên của mô hình được huấn luyện trước bằng ImageNet bằng cách cắm vào lớp tổng hợp trung bình tạm thời và lớp được kết nối đầy đủ Sau đó, mô hình
được đào tạo trước này được chuyển đổi đẻ thực hiện phát hiện vì nghiên cứu trước đó
20
Trang 20thiện hiệu suât Lớp được kết nội đây đủ cuôi cùng của YOLO dự đoán cả xác suât của lớp và tọa độ hộp giới hạn
YOLO chia hình ảnh đầu vào thành lưới S x S Nếu tâm của một đối tượng rơi vào một ô lưới thì ô lưới đó có nhiệm vụ phát hiện đối tượng đó Mỗi ô lưới dự đoán B hộp
giới hạn và điểm tin cậy cho các hộp đó Những điểm tin cậy này phản ánh mức độ tin
cậy của mô hình đối với việc chiếc hộp chứa một đối tượng và mức độ chính xác mà nó cho rằng chiếc hộp được dự đoán
YOLO dự đoán nhiều hộp giới hạn trên mỗi ô lưới Tại thời điểm đào tạo, chúng
tôi chỉ muốn một bộ đự đoán hộp giới hạn chịu trách nhiệm cho từng đối tượng YOLO chỉ định một người dự đoán “chịu trách nhiệm” dự đoán một đối tượng dựa trên dự đoán nào có IOU hiện tại cao nhất với sự thật cơ bản Điều này dẫn đến sự chuyên môn hóa
giữa các yếu tô dự đoán hộp giới hạn Mỗi công cụ dự đoán sẽ hoạt động tốt hơn trong việc dự đoán các kích thước, ty lệ khung hình hoặc loại đối tượng nhất định, cải thiện điểm thu hồi tông thể
Một kỹ thuật quan trọng được sử dụng trong các mô hình YOLO là triệt tiêu không
tối đa (NMS) NMS là bước xử lý hậu kỳ được sử dụng để cải thiện độ chính xác và
hiệu quả của việc phát hiện đối tượng Trong phát hiện đối tượng, thông thường sẽ có
nhiều khung giới hạn được tạo cho một đối tượng trong ảnh Các khung giới hạn này có thé chong lên nhau hoặc đặt ở các vị trí khác nhau nhưng chúng đều đại điện cho cùng một đối tượng NMS được sử dụng để xác định và loại bỏ các hộp giới hạn dư thừa hoặc
không chính xác và xuất ra một hộp giới hạn duy nhất cho từng đối tượng trong ảnh
1.43 Đầu ra YOLO
Đầu ra của mô hình YOLO là một vectơ sẽ bao gồm các thành phân sau:
y =i
Trong đó:
- pola xác suất dự đoán của một đối tượng xuất hiện trong hộp giới hạn
-ét,,t,,t,.t,>égiip xác định hộp giới hạn Tọa độ trung tâm t„:f;ở đâu và t,.fy kích thước chiều rộng và chiều đài của hộp giới hạn
-&P¡,P› Đ.>¿là vectơ phân bồ xác suất của các lớp
Việc hiệu đầu ra là kha quan trong dé chung ta co thé cầu hình chính xác các tham
số khi huấn luyện mô hình thông qua các nguồn mở như darknet Vì vậy đầu ra sẽ được xác định bởi số lớp theo công thức (n_classes+5) Nếu bạn huấn luyện 80 lớp, bạn sẽ có đầu ra là 85 Trong trường hợp bạn áp dụng 3 neo/ô, số lượng tham số đầu ra sẽ là:
(n a„„„,+5)< 3255
21
Trang 21
` ` SH ==ã
~ Or Sai
Hình 1-8 Kiến trúc một đầu ra của mô hình YOLO
Hình ảnh gốc là bản đồ đặc trưng 13x13 Trên mỗi ô của bản đồ đặc trưng, chúng
ta chọn lần lượt 3 hộp neo có kích thước khác nhau: Hộp 1, Hộp 2, Hộp 3 sao cho tâm của các hộp neo trùng với ô Khi đó đầu ra của YOLO là một vectơ ghép của 3 hộp giới
hạn Các thuộc tính của hộp giới hạn được mô tả ở dòng cudi cùng trong hình
1.4.4 Dự đoán trên nhiều bản đồ tính năng
Cac ban đồ đặc trưng ban đầu có kích thước nhỏ giúp dự đoán các vật thể lớn Các
bản đồ đặc trưng sau đây có kích thước lớn hơn trong khi hộp neo được giữ cô định về kích thước nên sẽ giúp dự đoán các vật thể nhỏ
26 x 26
Hình 1-9 Bản đồ đặc trưng của mạng YOLO voi hinh dang dau vao
Đầu ra là 3 bản đồ đặc trưng có kích thước lần lượt là 13x13 , 26x26 và 52x52
22
Trang 22Trên mỗi ô của bản đồ đặc trưng, chúng ta sẽ áp đụng 3 hộp neo đề dự đoán đối tượng Như vậy, số lượng hộp neo khác nhau trong mô hình YOLO sẽ là 9 (3 bản đỗ tính năng x 3 hộp neo)
Đồng thời, trên bản đồ đặc trưng hình vuông Sx§, mô hình YOLO tạo ra một số
hộp neo: ŠxŠx3 Vậy 36 lượng hộp neo trên một hình ảnh sẽ là:
(13 x13+26 x 26+52 x52)x3=10647(hộp neo)
1.4.5 Hộp neo
Dé tim hộp giới hạn cho một đối tượng, YOLO sẽ cần các hộp neo làm cơ sở cho
việc ước tính Các hộp neo này sẽ được xác định trước và sẽ bao quanh đối tượng tương đối chính xác Sau đó, thuật toán hộp giới hạn hồi quy sẽ tính chỉnh hộp neo đề tạo hộp giới hạn dự đoán cho đối tượng Trong mô hình YOLO:
- Mỗi đối tượng trong ảnh huấn luyện được phân bổ vào một hộp neo Trong trường hợp có 2 hộp neo trở lên bao quanh đối tượng, chúng ta sẽ xác định hộp neo có loU cao nhất với hộp giới hạn chan ly mat dat
B bounding box
candidates in total
The “responsible” predictor
in cell i has the highest loU
with the ground truth
Truth bounding box
Hình 1-10 Xác định hộp neo cho một đối tượng
- Từ Cell ¡ chúng ta có thể xác định được 3 ô neo có viền màu xanh như trong
hình Cả ba hộp neo này đều giao nhau với hộp giới hạn của đối tượng Tuy nhiên, chỉ
23
Trang 23cao nhất so với hộp giới hạn chân ly mat dat
Chúng tôi sẽ làm rõ hơn IOU (pred, Truth) là gi IOU (UnterSECTION OVER
UNION) la ham danh giá độ chính xác của bộ dò tìm đôi tượng trên một tập dữ liệu cụ thê IOU được tinh bang:
Area of Overlap loU =
Các hộp giới hạn được dán nhãn thủ công trong tập huấn luyện và tập kiểm tra
Nếu IOU > 0,5 thì dự đoán được coi là tốt
obj bị Ay y\9 obj ^
Las — Ss > (a;;” + Anoobj (1 — WF) (Cy — Ci)? + > »› 1, *(p;(e) — pi(c))?
¡¿=0 7=0 ¿=0 cCỞ
cell contain object probability distribution classes
L= Thu
24
Trang 24Vi các công thức trên khá phức tạp và khó hiểu đối với những người mới bắt đầu như chúng ta nên chúng ta có thê đơn giản hóa mục đích của chúng như sau:
- L„„: Là hàm tốn thất của hộp giới hạn dự báo so với thực tế
- L„: Là hàm mất mát của phân bố xác suất Tổng đầu tiên mắt khả năng dự đoán
có vật thê trong ô hay không? Và tổng thứ hai là mất phân phối xác suất nếu có trong
đối tượng ô
1.4.7 Dự đoán hộp giới hạn S
Đề dự đoán hộp giới hạn cho một đôi tượng, chúng fa dựa vào phép biên đôi từ
hộp neo và ô
Cho một hộp neo có kích thước (p¿¿w, Pp„)¿trong một ô nằm trên bản đồ đặc trưng
với góc trên cùng bên trai của nó là (c¿¿x,c,)¿, mô hình dự đoán 4 tham số (t,, t„,t„, t;)
trong đó 2 tham số đầu tiên là phần bù so với góc trên cùng bên trái của ô và 2 tham số cuối cùng là tỷ lệ so với hộp neo Và các tham số này sẽ giúp xác định dự đoán khung giới hạn b có tâm (b¿¿x,b,)¿và kích thước (b¿¿w,b,)¿thông qua hàm sigmoid và hàm
mũ như các công thức dưới đây:
Trang 25giới hạn sẽ được xác định dựa trên cả hộp neo và ô chứa nó Điều nay giup kiém soat vi
trí của hộp giới hạn được dự đoán ở đâu đó xung quanh vị trí của ô và hộp giới hạn mà không đi quá xa ra ngoài các giới hạn này
1.4.8 Sự đàn áp không tối đa
Do thuật toán YOLO dự đoán có nhiêu khung giới hạn trên một ảnh nên đôi với các ô
nằm gần nhau thì khả năng các khung hình bị chồng chéo là rất cao Trong trường hợp
đó, YOLO sẽ cần loại bỏ mức không tôi đa đề giảm đáng kế số lượng khung hình được
tạo
Các bước triệt tiêu không tôi đa:
- Bước 1 : Đầu tiên chúng ta sẽ tìm cách giảm số lượng khung giới hạn bằng cách lọc ra tất cả các khung giới hạn có xác suất chứa đối tượng nhỏ hơn một ngưỡng nhất định, thường là 0,5
- Bước 2 : Đối với các hộp giới hạn giao nhau, tính năng chặn không tối đa sẽ chọn hộp giới hạn có xác suất chứa đối tượng cao nhất Sau đó tính chỉ số nhiễu [oU với các khung giới hạn còn lại
Nếu chỉ số này lớn hơn ngưỡng chứng tỏ hai khung giới hạn có độ chồng chéo rất cao Chúng ta sẽ xóa các hộp giới hạn có xác suât thâp hơn và giữ lại hộp giới hạn có xác suất cao nhất Cuối cùng, chúng ta thu được một hộp giới hạn duy nhất cho một đối
tượng
Before non-max suppression After non-max suppression
Non-Max Suppression
Hình 1-13 Triệt tiêu khong toi da
1.4.9 YOLO hoạt động như thế nào?
Mô hình này hoạt động bằng cách trước tiên chia hình ảnh đầu vào thành một lưới các ô,
trong đó mỗi ô chịu trách nhiệm dự đoán các hộp giới hạn nêu tâm của nó nằm trong ô
Mỗi ô lưới (tức là bất kỳ ô nào trong lưới) dự đoán các hộp giới hạn được xác định đựa
26
Trang 26trên tọa độ x, y (thường là tọa độ trung tâm, một số phiên bản là tọa độ góc trên cùng bên trái) và chiều rộng, chiều cao và độ tin cậy về khả năng chứa các đối tượng bên
trong Ngoài ra, dự đoán nhãn cũng được thực hiện trên mỗi hộp giới hạn
Đầu vảo của mô hình là một hình ảnh, mô hình sẽ xác định xem hình ảnh có vật thể nào hay không, sau đó xác định tọa độ của vật thé trong anh Hinh anh dau vao duoc chia
Class probability map
Hình 1- 14 Các bước xử lý trong mô hình YOLO
Với đầu vào là 1 ảnh, đầu ra của mô hình là ma trận 3 chiều có kích thước
SxSx(5xNÑ+M) với số tham số trên mỗi ô là (5xN+M) với N và M lần lượt là số Hộp và
Lớp mà mỗi ô cần dự đoán Ví dụ với hình trên chia thành 7x7 ô, mỗi ô cần dự đoán 2 ô giới hạn và 3 đôi tượng: chó, ô tô, xe đạp, đầu ra là 77x13, mỗi ô sẽ có 13 tham số, kết quả là 7x7x13 Kêt quả trả về hộp giới hạn (7x7x2=98)
Phương pháp tính toán |5 * N+M]:
- Dự đoán của mỗi khung giới hạn bao gồm 5 thành phần: (x, y, w, h, dự đoán) với (x, y) là tọa độ tâm của khung giới hạn, (w, h) lần lượt là chiều rộng và chiều cao của
khung giới hạn hộp, dự đoán được xác định Pr |Object]* IoU
- Với hình ảnh trên, như chúng ta đã tính toán, mỗi ô sẽ có 13 tham SỐ, chúng ta có thê hiểu đơn giản như sau, tham số thứ I sẽ cho biết ô đó có chứa đối tượng nào hay không P(ObJect), các tham số 2, 3, 4, 5 sẽ trả về x, y, w, h của Boxl Các tham 36 6, 7,
27
Trang 27§, 9, 10 tương tự như Box2, các tham số II, 12, 13 lần lượt là xác suất hộp chứa object1(P(doglobject), object2(P(carlobject) ), object3( P(xe dap|vat thé))
1.4.10 YOLO v8
YOLOv§ là mô hình YOLO tiên tiến mới nhất có thê được sử dụng đề phát hiện
đối tượng, phân loại hình ảnh và phân đoạn cá thê YOLOv§ được phát triển bởi
Ultralytics, người cũng đã tạo ra mô hình YOLOvS có sức ảnh hưởng và mang tính định hình trong ngành YOLOv§ bao gồm nhiều thay đôi và cải tiễn về trải nghiệm kiến trúc
và nhà phát triển so với YOLOv5
YOLOv§ đang được phát triển tích cực tính đến thời điểm viết bài này, vì Ultralytics đang nghiên cứu các tính năng mới và phản hồi phản hồi từ cộng đồng Thật
vậy, khi Ultralytics phát hành một mô hình, nó sẽ nhận được sự hỗ trợ lâu dài: tổ chức
làm việc với cộng đồng đề tạo ra mô hình tốt nhất có thẻ
YOLOv8 đạt được độ chính xác cao trên COCO Ví dụ: mô hình YOLOv8m mô hình trung bình đạt được mÁP 50,2% khi đo trên COCO Khi được đánh giá dựa trên Roboflow 100, một tập dữ liệu đánh giá cụ thê hiệu suất của mô hình trên nhiều miền dành riêng cho nhiệm vụ khác nhau, YOLOv8§ đạt điểm cao hơn đáng kế so với YOLOv§ Thông tin thêm về điều này được cung cấp trong phân tích hiệu suất của chúng tôi ở phần sau của bài viết
Hơn nữa, các tính năng tiện lợi dành cho nhà phát triển trong YOLOv8 rất đáng
kê Trái ngược với các mô hình khác nơi các nhiệm vụ được chia thành nhiều tệp Python
khác nhau mà bạn có thê thực thi, YOLOv§ đi kèm với CLI giúp việc đảo tạo mô hình trở nên trực quan hơn Đây là gói bỗ sung cho gói Python cung cấp trải nghiệm mã hóa
liền mạch hơn so với các mô hình trước đó
Cộng đồng xung quanh YOLO rất đáng chú ý khi bạn đang cân nhắc một mô hình
để sử dụng Nhiều chuyên gia thị giác máy tính biết về YOLO và cách nó hoạt động, đồng thời có rất nhiều hướng dẫn trực tuyến về cách sử dụng YOLO trong thực tế Mặc
dù YOLOv8 mới được viết vào thời điểm viết bài này nhưng có rất nhiều hướng dẫn trực tuyến có thể trợ giúp
YOLOv8 chưa có bài báo nào được xuất bản, vì vậy tôi thiếu hiểu biết trực tiếp về
phương pháp nghiên cứu trực tiếp và các nghiên cứu cắt bỏ được thực hiện trong quá trình tạo ra nó Như đã nói, tôi đã phân tích kho lưu trữ và thông tin có sẵn về mô hình
đề bắt đầu ghi lại những tính năng mới trong YOLOv8
Hình ảnh sau đây do người dùng GitHub RangeKing thực hiện hiển thị trực quan
chỉ tiết về kiến trúc của mạng
28
Trang 29Hình 1-16 Trực quan hóa hép neo trong YOLO
Các hộp neo nỗi tiếng là một phần phức tạp trong các mô hình YOLO trước đó, vi chúng có thê biều thị sự phân phôi của các hộp của điểm chuân mục tiêu chứ không phải
sự phân phối của tập đữ liệu tùy chỉnh
Hình 1-17 Đầu phát hiện của YOLOv5, được hiển thị trong netron.app
Tính năng phát hiện không có neo giúp giảm số lượng dự đoán hộp, giúp tăng tốc
độ ngăn chặn không tôi đa (NMS), một bước xử lý hậu ky phức tạp giúp sàng lọc các phát hiện ứng viên sau khi suy luận
Trang 30
Concat
Split
split (2) Reshape
Transpose
1x6x8400
Hinh 1-18 Dau phát hiện YOLOv8, duoc hién thi trong netron.app
Đối lưu 6x6 đầu tiên của thân đã được thay thế bằng 3x3, khối xây dựng chính đã được thay đôi và C2f thay thế C3 Mô-đưn này được tóm tắt trong hình bên dưới, trong
do "f" la s6 lượng tính năng, "e" là tốc độ mở rộng và CBS là một khối bao gồm Conv, BatchNorm va SiLU sau nay
Trong C2f, tat ca cac dau ra từ Nút cổ chai (tên ưa thích cho hai chuyển đổi 3x3 có kết nối còn lại) được nối với nhau Trong khi ở C3 chỉ có đầu ra của Nút cỗ chai cuối
cùng được sử dụng
31