CS231 NMTGMT

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN MÔN NHẬP MÔN THỊ GIÁC MÁY TÍNH

Đếm số lượng người tham gia giao thông đội mũ bảo hiểm

Huỳnh Dương Tiến - 22521465


Lê Trung Nhân – 20520666
Đoàn Công Tài - 22521271

1
Thành phố Hồ Chí Minh, 06/2024

2
PHÂN CÔNG CÔNG VIỆC
STT MSSV Họ và tên Mức độ hoàn thành
1 22521465 Huỳnh Dương Tiến 100%
2 20520666 Lê Trung Nhân 100%
3 22521271 Đoàn Công Tài 100%

3
MỤC LỤC
CHƯƠNG 1 TỔNG QUAN VỀ BÀI TOÁN _________________________________________________________ 5
1.1 Lí do lựa chọn đề tài _____________________________________________________________________________ 5
1.2 Phát biểu bài toán ______________________________________________________________________________ 6
1.2.1 Mô tả bài toán ___________________________________________________________________________________________ 6
1.2.2 Input __________________________________________________________________________________________________ 6
1.2.3 Output ________________________________________________________________________________________________ 7
1.2.4 Mục tiêu _______________________________________________________________________________________________ 7

CHƯƠNG 2 PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN ________________________________________________ 8


2.1 Hướng giải quyết bài toán __________________________________________________________________________ 8
2.2 Mô hình phát hiện người (Yolov8m) _________________________________________________________________ 8
2.2.1 Giới thiệu về YoloV8 _______________________________________________________________________________________ 8
2.2.2 Áp dụng vào bài toán ______________________________________________________________________________________ 9
2.3 Mô hình phân loại _______________________________________________________________________________ 10
2.3.1 Dataset ________________________________________________________________________________________________ 10
2.3.2 VGG16+KNN _____________________________________________________________________________________________ 11
2.3.2.1 Giới thiệu mô hình VGG16 ______________________________________________________________________________ 11
2.3.2.2 KNN ______________________________________________________________________________________________ 12
2.3.3 CNN __________________________________________________________________________________________________ 12
2.3.3.1 Giới thiệu về mô hình CNN _____________________________________________________________________________ 12
2.3.3.2 Áp dụng vào bài toán __________________________________________________________________________________ 15
2.3.4 Resnet_18 ______________________________________________________________________________________________ 15
2.3.4.1 Giới thiệu mô hình Resnet_18. ___________________________________________________________________________ 15
2.3.4.2 Áp dụng vào bài toán . _________________________________________________________________________________ 18
2.4 Mô hình theo dõi (DeepSORT) ______________________________________________________________________ 20
2.4.1 Giới thiệu về DeepSORT ____________________________________________________________________________________ 20
2.4.2 Áp dụng vào bài toán ______________________________________________________________________________________ 21

CHƯƠNG 3 THỰC NGHIỆM VÀ ĐÁNH GIÁ MÔ HÌNH _____________________________________________ 22


3.1 Thực nghiệm và đánh giá mô hình phân loại____________________________________________________________ 22
3.1.1 Độ đo ___________________________________________________________________________________________________ 22
3.1.2 Kết quả : ________________________________________________________________________________________________ 22
3.2 Thực nghiệm và đánh giá tổng thể mô hình _____________________________________________________________ 23
3.2.1 Cách đánh giá____________________________________________________________________________________________ 23
3.2.2 Kết quả và nhận xét _______________________________________________________________________________________ 23

CHƯƠNG 4 ĐÁNH GIÁ NHỮNG ƯU ĐIỂM VÀ HẠN CHẾ __________________________________________ 25


4.1 Ưu điểm ________________________________________________________________________________________ 25
4.2 Nhược điểm _____________________________________________________________________________________ 25
TÀI LIỆU THAM KHẢO __________________________________________________________________________ 26

4
CHƯƠNG 1 TỔNG QUAN VỀ BÀI TOÁN
1.1 Lí do lựa chọn đề tài

Bài toán đếm số lượng người đội mũ bảo hiểm khi tham gia giao thông có nhiều
ứng dụng thực tế, đặc biệt trong các lĩnh vực liên quan đến an toàn giao thông,
quản lý đô thị và an ninh. Dưới đây là một số ví dụ cụ thể:

1. An toàn giao thông:

o Giám sát và cải thiện tuân thủ luật lệ giao thông: Bằng cách đếm số lượng
người đội mũ bảo hiểm, các cơ quan chức năng có thể đánh giá mức độ tuân thủ
quy định đội mũ bảo hiểm, từ đó đưa ra các biện pháp tăng cường ý thức chấp
hành của người tham gia giao thông.

o Phân tích tai nạn giao thông: Thống kê về số lượng người đội mũ bảo hiểm có
thể được sử dụng để phân tích các vụ tai nạn giao thông, đánh giá tác động của
việc đội mũ bảo hiểm trong việc giảm thiểu chấn thương và tử vong.

2. Quản lý đô thị:

o Điều chỉnh chính sách giao thông: Dữ liệu về số lượng người đội mũ bảo hiểm
có thể giúp các nhà quản lý đô thị hiểu rõ hơn về hành vi của người tham gia giao
thông, từ đó đưa ra các chính sách phù hợp để đảm bảo an toàn.

o Quy hoạch và cải thiện cơ sở hạ tầng: Việc theo dõi số lượng người đội mũ bảo
hiểm giúp nhận biết các khu vực có tỷ lệ đội mũ bảo hiểm thấp, từ đó tập trung
vào các chiến dịch giáo dục hoặc cải thiện cơ sở hạ tầng.

3. An ninh và giám sát:

o Phát hiện hành vi bất thường: Trong một số hệ thống giám sát an ninh, việc
đếm số lượng người đội mũ bảo hiểm có thể giúp phát hiện những hành vi bất
5
thường hoặc những người không tuân thủ quy định, hỗ trợ công tác bảo đảm trật
tự an ninh.

4. Nghiên cứu và phát triển:

o Phân tích xu hướng và thói quen: Dữ liệu về việc đội mũ bảo hiểm giúp các nhà
nghiên cứu hiểu rõ hơn về xu hướng và thói quen của người dân, từ đó có thể phát
triển các chiến dịch giáo dục hoặc sản phẩm an toàn mới.
o Đánh giá hiệu quả của các chiến dịch tuyên truyền: Bằng cách đếm số lượng người đội mũ
bảo hiểm trước và sau khi thực hiện các chiến dịch tuyên truyền, có thể đánh giá được hiệu quả
của những chiến dịch này.

➢ Tóm lại, việc đếm số lượng người đội mũ bảo hiểm có thể cung cấp những thông
tin quan trọng giúp cải thiện an toàn giao thông, quản lý đô thị hiệu quả, và nâng
cao nhận thức của cộng đồng về an toàn cá nhân.

1.2 Phát biểu bài toán


1.2.1 Mô tả bài toán

Bài toán đếm số lượng người đội mũ bảo hiểm là một ứng dụng điển hình của việc
sử dụng công nghệ xử lý hình ảnh và học sâu trong thực tế. Kết quả của bài toán
này có thể giúp cải thiện an toàn giao thông, quản lý đô thị hiệu quả hơn và nâng
cao nhận thức của cộng đồng về việc tuân thủ quy định an toàn.

1.2.2 Input

Các đoạn video được ghi lại tại các điểm giao thông hoặc khu vực cần theo dõi.

6
Hình 1: Ảnh minh họa Input

1.2.3 Output

Số lượng người tham gia giao thông có đội mũ bảo hiểm được hiển thị lên
ngay trên khung hình video.

Hình 2: Ảnh minh họa Output

1.2.4 Mục tiêu


Đếm số lượng người đội mũ bảo hiểm trong một môi trường nhất định (chẳng hạn
như trên một con đường, tại một ngã tư, hoặc trong một khu vực đô thị) trong một
khoảng thời gian cụ thể.

7
CHƯƠNG 2 PHƯƠNG PHÁP GIẢI QUYẾT BÀI TOÁN

2.1 Hướng giải quyết bài toán

• Bước 1 : Để giải quyết bài toán này đầu tiên nhóm mình sẽ sử dụng một
mô hình phát hiện đối tượng để phát hiện người tham gia giao thông, trong
bài toán này nhóm em sử dụng Yolov8

• Bước 2: Khi phát hiện được người , chúng em sẽ cắt lấy phần hình ảnh
chứa phần đầu của người được phát hiện, sau đó sử dụng mô hình phân
loại để phân loại xem người đó có đội mũ bảo hiểm hay không.

• Bước 3: Sau khi phân loại, nếu người đó đội mũ bảo hiểm thì người đó sẽ
được được theo dõi bằng thuật toán theo dõi, và đếm dựa trên ID

2.2 Mô hình phát hiện người (Yolov8m)


2.2.1 Giới thiệu về YoloV8

YOLOv8 (You Only Look Once version 8) là phiên bản cải tiến mới nhất của một
trong những kiến trúc mạng sâu phổ biến nhất trong lĩnh vực phát hiện đối tượng
8
(object detection). YOLO ban đầu được giới thiệu bởi Joseph Redmon và các
đồng nghiệp, và đã trải qua nhiều phiên bản nâng cấp, với YOLOv8 được thiết kế
để cải thiện hiệu suất, độ chính xác và tốc độ so với các phiên bản trước đó.
− Kiến trúc mô hình :

2.2.2 Áp dụng vào bài toán


− Đọc video qua từng khung hình sau đó sử dụng mô hình Yolov8m (mô
hình được train sẵn trên tập dữ liệu COCO) để phát hiện ra người tham gia
giao thông

− Sau khi phát hiện được người mô hình trả về các thông tin (x1,y1,x2,y2)
lần lượt là tọa độ của góc trên bên trái hộp giói hạn và góc dưới bên phải
hộp giới hạn.

9
− Sau đó dựa vào các thông tin này để cắt ra phần hình ảnh chứa đầu của
người đó

2.3 Mô hình phân loại


2.3.1 Dataset
• Dữ liệu bao gồm 2254 ảnh chứa phần đầu của người tham gia giao thông .

• Chứa 2 class : WithHelmet và WithoutHelmet

• Bộ dữ liệu được chia làm 3 tập:

+Train : 1957 hình (1005 ảnh WithoutHelmet, 952 ảnh WithoutHelmet)

+Val : 257 hình (128 ảnh WithHelmet,129 WithoutHelmet)

+Test : 40 hình(20 ảnh WithHelmet, 20 ảnh WithoutHelmet

Hình 3: Ảnh minh họa bộ dataset

10
2.3.2 VGG16+KNN
2.3.2.1 Giới thiệu mô hình VGG16
− VGG16 là một mạng nơ-ron tích chập (CNN) được sử dụng phổ biến cho các

nhiệm vụ xử lý ảnh, bao gồm phân loại ảnh, phát hiện đối tượng và trích xuất đặc

trưng. Mô hình này được giới thiệu bởi nhóm nghiên cứu của Visual Geometry Group

(VGG) tại Đại học Oxford trong bài báo "Very Deep Convolutional Networks for

Large-Scale Image Recognition" của K. Simonyan và A. Zisserman vào năm 2014.

− ImageNet Large Scale Visual Recognition Challenge (ILSVRC) là một cuộc thi

thường niên về thị giác máy tính, nơi các đội giải quyết các nhiệm vụ bao gồm định vị

đối tượng và phân loại hình ảnh. VGG16, được đề xuất bởi Karen Simonyan và

Andrew Zisserman vào năm 2014, đã đạt được thứ hạng cao nhất trong cả hai nhiệm

vụ, phát hiện các đối tượng từ 200 lớp và phân loại hình ảnh thành 1000 loại.

− Mô hình này đạt được độ chính xác kiểm tra top 5 92,7% trên tập dữ liệu

ImageNet, chứa 14 triệu hình ảnh thuộc 1000 lớp.

− Áp dụng vào bài toán:

• Bước 1: Đưa ảnh từ input đầu vào về kích thước 128 * 128 * 3

• Bước 2: weights=’imagenet’ chỉ ra rằng mô hình sẽ được khởi tạo với các
trọng số đã được huấn luyện trên tập dữ liệu ImageNet.

• Bước 3: include_top=False có nghĩa là phần đầu ra (fully


connected layers ở cuối mô hình) sẽ không được bao gồm. Điều này cho phép
chúng ta sử dụng mô hình như một bộ trích xuất đặc trưng.
11
• Bước 4: Lấy đầu ra từ lớp MaxPool cuối cùng , với số chiều là 8192 chiều

2.3.2.2 KNN
− K-Nearest Neighbors (KNN) là một thuật toán học máy đơn giản nhưng mạnh mẽ
được sử dụng nhiều cho toán phân loại. Cơ chế hoạt động của KNN dựa trên việc
tìm các điểm dữ liệu gần nhất trong không gian đặc trưng để dự đoán hoặc phân loại
cho một điểm dữ liệu mới.

− Áp dụng vào bài toán:


• Sử dụng kỹ thuật cross validation để chọn ra số cây quyết định tối ưu nhất dựa
trên train accuracy và validate accuracy, ta thu được biểu đồ bên dưới

• Từ biểu đồ bên, có thể thấy với số cây quyết định bằng 253, ta thu được mô
hình có accuracy trên cả tập train lẫn tập validate rất cao

2.3.3 CNN
2.3.3.1 Giới thiệu về mô hình CNN

12
Trong mạng neural, mô hình mạng neural tích chập (CNN) là 1 trong những mô
hình để nhận dạng và phân loại hình ảnh. Trong đó, xác định đối tượng và nhận
dạng khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử dụng rộng rãi.

CNN phân loại hình ảnh bằng cách lấy 1 hình ảnh đầu vào, xử lý và phân loại nó
theo các hạng mục nhất định (Ví dụ: Chó, Mèo, Hổ, ...). Máy tính coi hình ảnh
đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân giải của hình ảnh. Dựa trên
độ phân giải hình ảnh, máy tính sẽ thấy H x W x D (H: Chiều cao, W: Chiều rộng,
D: Độ dày). Ví dụ: Hình ảnh là mảng ma trận RGB 6x6x3 (3 ở đây là giá trị
RGB).

Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu vào sẽ
chuyển nó qua 1 loạt các lớp tích chập với các bộ lọc (Kernals), tổng hợp lại các
lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm Softmax để phân loại
đối tượng có giá trị xác suất giữa 0 và 1. Hình dưới đây là toàn bộ luồng CNN để

xử lý hình ảnh đầu vào và phân loại các đối tượng dựa trên giá trị.

Lớp tích chập - Convolution Layer


Tích chập là lớp đầu tiên để trích xuất các tính năng từ hình ảnh đầu vào. Tích
chập duy trì mối quan hệ giữa các pixel bằng cách tìm hiểu các tính năng hình ảnh
bằng cách sử dụng các ô vương nhỏ của dữ liệu đầu vào. Nó là 1 phép toán có 2
đầu vào như ma trận hình ảnh và 1 bộ lọc hoặc hạt nhân.

Xem xét 1 ma trận 5 x 5 có giá trị pixel là 0 và 1. Ma trận bộ lọc 3 x 3

Sau đó, lớp tích chập của ma trận hình ảnh 5 x 5 nhân với ma trận bộ lọc 3 x 3 gọi
là 'Feature Map' như hình bên dưới.

Sự kết hợp của 1 hình ảnh với các bộ lọc khác nhau có thể thực hiện các hoạt động
như phát hiện cạnh, làm mờ và làm sắc nét bằng cách áp dụng các bộ lọc. Ví dụ
dưới đây cho thấy hình ảnh tích chập khác nhau sau khi áp dụng các Kernel khác
nhau.
Bước nhảy - Stride
13
Stride là số pixel thay đổi trên ma trận đầu vào. Khi stride là 1 thì ta di chuyển các
kernel 1 pixel. Khi stride là 2 thì ta di chuyển các kernel đi 2 pixel và tiếp tục như
vậy. Hình dưới là lớp tích chập hoạt động với stride là 2.

Đường viền - Padding


Đôi khi kernel không phù hợp với hình ảnh đầu vào. Ta có 2 lựa chọn:

Chèn thêm các số 0 vào 4 đường biên của hình ảnh (padding).

Cắt bớt hình ảnh tại những điểm không phù hợp với kernel.
Hàm phi tuyến - ReLU
ReLU viết tắt của Rectified Linear Unit, là 1 hàm phi tuyến. Với đầu ra là: ƒ (x) =
max (0, x).

Tại sao ReLU lại quan trọng: ReLU giới thiệu tính phi tuyến trong ConvNet. Vì
dữ liệu trong thế giới mà chúng ta tìm hiểu là các giá trị tuyến tính không âm.

Có 1 số hà phi tuyến khác như tanh, sigmoid cũng có thể được sử dụng thay cho
ReLU. Hầu hết người ta thường dùng ReLU vì nó có hiệu suất tốt.

Lớp gộp - Pooling Layer


Lớp pooling sẽ giảm bớt số lượng tham số khi hình ảnh quá lớn. Không gian
pooling còn được gọi là lấy mẫu con hoặc lấy mẫu xuống làm giảm kích thước
của mỗi map nhưng vẫn giữ lại thông tin quan trọng. Các pooling có thể có nhiều
loại khác nhau:

Max Pooling

Average Pooling

Sum Pooling

Max pooling lấy phần tử lớn nhất từ ma trận đối tượng, hoặc lấy tổng trung bình.
Tổng tất cả các phần tử trong map gọi là sum pooling.

14
2.3.3.2 Áp dụng vào bài toán

Bước 1: Khởi tạo Mô hình.


Bước 2: Thêm các Lớp Convolutional và Pooling
Bước 3: Làm phẳng
Bước 4: Tổng kết Mô hình
Bước 5: Biên dịch Mô hình
Bước 6: Huấn luyện Mô hình

Hình ảnh source code

Hình ảnh source code

2.3.4 Resnet_18
2.3.4.1 Giới thiệu mô hình Resnet_18.
ResNet-18 là một mô hình mạng nơ-ron tích chập (Convolutional Neural
Network - CNN) được giới thiệu bởi nhóm nghiên cứu của Microsoft trong bài
15
báo "Deep Residual Learning for Image Recognition" (Học Sâu Còn Lại cho
Nhận Diện Hình Ảnh) vào năm 2015. Đây là một phần của họ mạng ResNet
(Residual Network), được thiết kế để giải quyết vấn đề gradient biến mất
(vanishing gradient) khi huấn luyện các mạng sâu hơn.

Cấu Trúc của ResNet-18:


ResNet-18 bao gồm 18 lớp có thể học được, được sắp xếp theo cách sau:

− Conv1: Lớp tích chập ban đầu với kernel kích thước 7x7, stride 2, và 64 bộ lọc, theo sau
là lớp Batch Normalization và hàm kích hoạt ReLU.

− MaxPool: Lớp gộp tối đa với kích thước 3x3 và stride 2.

− Conv2_x: 2 khối Residual, mỗi khối bao gồm 2 lớp tích chập 3x3 với 64 bộ lọc.

− Conv3_x: 2 khối Residual, mỗi khối bao gồm 2 lớp tích chập 3x3 với 128 bộ lọc.

− Conv4_x: 2 khối Residual, mỗi khối bao gồm 2 lớp tích chập 3x3 với 256 bộ lọc.

− Conv5_x: 2 khối Residual, mỗi khối bao gồm 2 lớp tích chập 3x3 với 512 bộ lọc.

− Average Pooling: Lớp gộp trung bình.

− Fully Connected (FC): Lớp kết nối đầy đủ với số lượng đầu ra tương ứng với số lượng
lớp của bài toán phân loại (ví dụ: 1000 cho ImageNet).

16
Kiến trúc mô hình Resnet_18

Khối Residual
Khối Residual là thành phần chính của ResNet và được thiết kế để giải quyết vấn đề
gradient biến mất. Một khối Residual bao gồm một con đường chính (main path) với các
lớp tích chập và một con đường tắt (shortcut connection). Con đường tắt này cho phép
truyền tải thông tin trực tiếp từ đầu vào đến đầu ra của khối mà không cần thông qua các
lớp tích chập trung gian. Công thức của một khối Residual như sau:

y=F(x,{Wi})+x

Trong đó:

− x là đầu vào của khối Residual.


− F(x,{Wi})là đầu ra của các lớp tích chập.
− y là đầu ra cuối cùng của khối Residual.

Lợi Ích của ResNet-18

17
− Giải Quyết Gradient Biến Mất: Các kết nối tắt trong khối Residual giúp
duy trì gradient trong quá trình huấn luyện, cho phép mô hình học sâu hơn
mà không gặp phải vấn đề gradient biến mất.

− Huấn Luyện Dễ Dàng: ResNet-18 dễ huấn luyện hơn so với các mô hình
mạng sâu truyền thống nhờ vào cấu trúc khối Residual.

− Hiệu Suất Tốt: Dù có số lượng lớp tương đối ít so với các phiên bản
ResNet sâu hơn, ResNet-18 vẫn đạt hiệu suất tốt trên nhiều tập dữ liệu hình
ảnh khác nhau.

➢ ResNet-18 là một trong những mô hình cơ bản nhưng mạnh mẽ, được sử dụng
rộng rãi trong các ứng dụng thị giác máy tính, từ phân loại hình ảnh đến phát
hiện đối tượng và phân đoạn hình ảnh.

2.3.4.2 Áp dụng vào bài toán .


− Tải mô hình Resnet_18 đã được huấn luyện trước :

− Transfom ảnh trước khi train :

− transforms.Compose được sử dụng để kết hợp nhiều chuyển đổi lại với nhau.

− transforms.Resize(256): Thay đổi kích thước cạnh ngắn của hình ảnh thành

18
256 pixel, giữ nguyên tỷ lệ khung hình.

− transforms.CenterCrop(224): Cắt phần trung tâm của hình ảnh với kích thước
224x224 pixel.

− transforms.ToTensor(): Chuyển đổi hình ảnh thành tensor của PyTorch (với
giá trị pixel trong khoảng [0, 1]).
− transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]):
Chuẩn hóa tensor hình ảnh sử dụng giá trị trung bình và độ lệch chuẩn (thường
dùng cho các mô hình đã được huấn luyện trước như ImageNet).

− Tạo một lớp FC mới với số lượng đầu vào bằng với số lượng đầu vào của lớp
FC hiện tại , và số lượng đầu ra bằng 2.

− Trong bài toán này , em áp dụng kĩ thuật transfer learning , đóng băng tất cả
các lớp trước lớp FC. Train lớp FC vừa tạo với dữ liệu của mình. Sau khi train
xong lớp FC cuối cùng , mở băng tất cả các lớp trước đó và train tiếp.

− Ở phần huấn luyện lớp FC cuối cùng:

▪ Lý do chọn lr = 0.01:

+Khi tinh chỉnh lớp cuối cùng, cần cập nhật nhanh chóng để nó học
được các đặc trưng mới từ dữ liệu.

19
+Vì các lớp trước đó đã được huấn luyện tốt trên dữ liệu trước đó (ví dụ:
ImageNet), chỉ cần tinh chỉnh lớp cuối với tốc độ học cao hơn để thích nghi
với dữ liệu cụ thể của bài toán hiện tại.

▪ Lý do chọn momentum = 0.9:

+Động lượng giúp đẩy nhanh quá trình học bằng cách sử dụng thông tin từ các
gradient trước đó.

+Momentum = 0.9 là một giá trị thường được sử dụng trong nhiều bài toán, giúp
tăng tốc độ hội tụ và giảm dao động trong quá trình huấn luyện.

▪ Lý do chọn num_epochs=25 và patience=7:

+num_epochs=25: Cho phép mô hình huấn luyện trong 25 epoch để đảm bảo
lớp cuối cùng học được các đặc trưng mới.

+ patience=7: Sử dụng kỹ thuật dừng sớm (early stopping) để tránh overfitting.


Nếu mô hình không cải thiện sau 7 epoch, quá trình huấn luyện sẽ dừng lại.

− Ở phần huấn luyện toàn bộ mô hình:

▪ Lý do chọn lr = 0.001:

+Khi bỏ đóng băng toàn bộ mô hình, cần cập nhật nhiều trọng số. Một tốc độ học
thấp giúp đảm bảo quá trình cập nhật diễn ra từ từ, tránh làm lệch trọng số quá
nhanh.

+Tốc độ học thấp giúp mô hình giữ lại các đặc trưng tốt đã học trước đó trong khi
học thêm các đặc trưng mới.

2.4 Mô hình theo dõi (DeepSORT)


2.4.1 Giới thiệu về DeepSORT

20
DeepSORT (Simple Online and Realtime Tracking with a Deep Association
Metric) là một thuật toán dùng để theo dõi đối tượng trong video theo thời gian
thực, được phát triển để cải thiện thuật toán SORT (Simple Online and Realtime
Tracking). DeepSORT kết hợp việc theo dõi truyền thống bằng Kalman Filter và
Hungarian Algorithm với một mạng nơ-ron sâu để tăng cường độ chính xác trong
việc theo dõi đối tượng.

Luồng hoạt động của DeepSORT

2.4.2 Áp dụng vào bài toán


• Sau khi có kết quả phân loại từ bước phân loại trước , nếu kết quả trả về là
“WithHelmet” thì các thông tin bounding box, độ tin cậy và ID lớp của người
đó sẽ được lưu vào danh sách ‘results_withelmet.’

• Sau khi duyệt qua tất cả các đối tượng đã được phát hiện trong khung hình,
những đối tượng được lưu bên trong ‘resuls_withhelmet’ sẽ được cập nhật.

• Nếu đối tượng lần đầu được cập nhật thì ít nhất sau n_init (bài này em sử
dụng n_init = 3) khung hình được phát hiện liên tiếp thì đối tượng đó mới
được coi là một track hợp lệ và được theo dõi.

21
• Mỗi đối tượng được theo dõi chỉ có một track_id duy nhất và sẽ được lưu vào
trong một set(), ta sẽ đếm số lượng track_id trong set() đó và tìm được kết
quả số người đội mũ bảo hiểm

CHƯƠNG 3 THỰC NGHIỆM VÀ ĐÁNH GIÁ MÔ HÌNH


3.1 Thực nghiệm và đánh giá mô hình phân loại
3.1.1 Độ đo
Để có thể đánh giá mức độ chính xác của hai mô hình đã áp dụng cho bài
toán, chúng em sử dụng độ đo Accuracy để làm việc này.
Độ đo "accuracy" (độ chính xác) là một trong những phép đo quan trọng
nhất để đánh giá hiệu suất của mô hình. Độ đo này đơn giản là tỷ lệ giữa số lượng
các dự đoán đúng và tổng số lượng mẫu trong tập dữ liệu kiểm tra.

3.1.2 Kết quả :


22
Chúng em sử dụng độ đo Accurancy để đánh giá ba mô hình trên hai tập dữ liệu
Validation và Test. Thu được kết quả như sau:

Kết quả accuracy khá cao trên cả tập validation và tập test cho thấy cả ba mô hình đã đạt
được hiệu suất tốt trong việc phân loại.

3.2 Thực nghiệm và đánh giá tổng thể mô hình


3.2.1 Cách đánh giá

• Vì mô hình Resnet_18 có kết quả phân loại tốt nhất nên nhóm em chọn làm mô
hình phân loại chính để sử dụng trong bài toán này.
• Để đánh giá tổng thể mô hình nhóm em sử dụng năm video dài lần lượt 1:46 ,
1:15 , 2:12 , 0:52, 0:24 phút ,với tôc độ khung hình 30fps được quay tại các địa
điểm , ánh sáng , mật độ giao thông khác nhau. Mục đích để mô phỏng sát nhất
các trường hợp ngoài thực tế.
• Các video được quay với góc ngang tầm mắt vì những video này được quay bằng
tay.
• Nhóm đã đếm thủ công số lượng người đội mũ bảo hiểm trong video , sử dụng kết
quả đếm được từ mô hình để đối sánh kết quả từ đó đánh mô hình.

3.2.2 Kết quả và nhận xét

23
• Giải thích bảng số liệu:

− Đếm đúng là số lượng người đội mũ bảo hiểm mà mô hình phát hiện và
đếm đúng (TP)
− Bỏ sót là số lượng người đội mũ bảo hiểm nhưng mô hình không phát hiện
và đếm được (FN)
− Đếm sai là số lượng người không đội mũ bảo hiểm nhưng được mô hình
phát hiện và đếm , hoặc những lần đếm trùng lặp của một đối tượng được
phát hiện.(FP)
− Tổng số người đội mũ thực tế là số lượng người đội mũ trong Video.
− Tổng số đêm được là số lượng người đội mũ mà mô hình trả về
− Precision đo lường tỷ lệ người đội mũ bảo hiểm được đếm đúng so với
tổng số người đội mũ bảo được mô hình đếm
− Recall đo lường tỷ lệ người đội mũ bảo được đếm đúng so với tổng số vật
thể thực tế.

• Nhận xét:

− Mô hình phát hiện và đếm người đội mũ khá tốt trong những video có mật
độ giao thông thấp, cụ thể trong video 1 và video 2 mô hình đếm đúng lần
24
lượt 42/45 người đội mũ thực tế, video 2 và video 4 phát hiện đúng toàn bộ,
video 3 cũng đếm đúng 27/36 người đội mũ thực tế.
− + Trong video 5 , có mật độ giao thông cao kết quả cho thấy mô hình hoạt động không
tốt, số lượng ID bị nhảy lớn dẫn đến tình trạng đếm sai rất nhiều.
− + Mô hình còn bỏ sót khá nhiều đối tượng.
− + Khi đối tượng di chuyển với tốc độ cao thì mô hình khó phát hiện và theo dõi đối
tượng.
− + Trường hợp người tham gia giao thông đội mũ khác không phải mũ bảo hiểm thì mô
hình có thể phân loại sai.

CHƯƠNG 4 ĐÁNH GIÁ NHỮNG ƯU ĐIỂM VÀ HẠN CHẾ


4.1 Ưu điểm

+ Mô hình hoạt động khá tốt trong môi trường ánh sáng tốt, mật độ giao thông
thấp, người tham gia giao thông di chuyển với tốc độ vừa phải.

+Mô hình phân loại hoạt động khá tốt , có thể phân loại được hầu hết các trường
hợp , mặc cho việc mũ bảo hiểm ở Việt Nam khá đa dạng về mẫu mã và màu sắc.

4.2 Nhược điểm

+ Ở những trường hợp mật độ giao thông cao, người đội mũ bị che khuất dẫn
đến tình trạng bị nhảy ID , làm cho mô hình đếm sai

+ Trong trường hợp người đội mũ khác mũ bảo hiểm như mũ lưỡi trai,khăc trùm
đầu,… mô hình dự đoán sai thành đội mũ, vấn đề này do dữ liệu chứa rất ít ảnh
về trường hợp này.

25
+Chưa thử nghiệm được mô hình trong các góc quay và điều kiện môi trường
khác nhau, dẫn đến chưa đánh giá được tổng quát mô hình.

+ Tốc độ xử lí khung hình chậm, chưa thể áp dụng vào thực tế.

TÀI LIỆU THAM KHẢO


• https://www.researchgate.net/publication/368646461_Object_Tracking_with_DeepSORT
• https://docs.ultralytics.com/vi
• https://arxiv.org/pdf/1409.1556
• https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html
• https://www.researchgate.net/publication/364345322_Resnet18_Model_With_Sequential_Layer_For_Computi
ng_Accuracy_On_Image_Classification_Dataset

26

You might also like