You are on page 1of 75

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC CẦN THƠ


KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG


LUẬN VĂN TỐT NGHIỆP


NGÀNH CÔNG NGHỆ THÔNG TIN

Đề tài

HỆ THỐNG HỖ TRỢ THEO DÕI TÌNH TRẠNG GIAO THÔNG


QUA VIDEO DỰA TRÊN MÔ HÌNH FASTER R-CNN

Sinh viên thực hiện : Bùi Nhật Tài


Mã số : B1606838
Khóa : 42

Cần Thơ, 01/2021


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG


LUẬN VĂN TỐT NGHIỆP


NGÀNH CÔNG NGHỆ THÔNG TIN

Đề tài

HỆ THỐNG HỖ TRỢ THEO DÕI TÌNH TRẠNG GIAO THÔNG


QUA VIDEO DỰA TRÊN MÔ HÌNH FASTER R-CNN

Giáo viên hướng dẫn: Sinh viên thực hiện:


TS. Trần Nguyễn Minh Thư Bùi Nhật Tài
NCS. Vũ Lê Quỳnh Phương Mã số: B1606838
Khóa : 42

Cần Thơ, 01/2021


NHẬN XÉT CỦA GIẢNG VIÊN

----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
----------------------------------------------------------------------------------
Cần Thơ, ngày tháng năm
(GVHD ký và ghi rõ họ tên)
LỜI CẢM ƠN

Trước hết, con xin cảm ơn công ơn sinh thành và dưỡng dục của Cha Mẹ.
Cha Mẹ là người luôn quan tâm chăm sóc, cho con ăn học nên người. Mọi thành
công của con có bây giờ cũng như sau này, đều nhờ bởi công ơn của Cha Mẹ. Con
xin chúc cha mẹ luôn được thật nhiều sức khỏe, bình an và luôn sống vui vẻ bên con
cháu.
Thứ hai, em xin cảm ơn các anh chị. Anh chị đã luôn quan tâm, giúp đỡ, tạo
điều kiện tốt nhất để cho em có thời gian học tập. Em xin chúc anh chị luôn khỏe
mạnh, hạnh phúc, thành công và gặp nhiều may mắn trong cuộc sống.
Tiếp đến, em xin cảm ơn quý thầy cô nói chung, cũng như cô Trần Nguyễn
Minh Thư nói riêng. Cô là người đã trực tiếp hướng dẫn, tận tình giúp đỡ, chỉ bảo,
để em có thể hoàn thành thật tốt đề tài. Em mong sau này sẽ có nhiều cơ hội hơn
nữa để có thể học hỏi những kiến thức cũng như kinh nghiệm quý báu từ cô cũng
như từ quý thầy cô khác. Em xin chúc cô cùng các quý thầy cô luôn có thật nhiều
sức khỏe để có thể truyền đạt kiến thức đến cho mọi người. Thăng tiến trong sự
nghiệp và luôn luôn vui vẻ, hạnh phúc bên gia đình.
Em cũng xin cảm ơn chị Vũ Lê Quỳnh Phương và đơn vị Công An phường
Vĩnh Thanh Vân – TP Rạch Giá – tỉnh Kiên Giang đã hỗ trợ thông tin, cung cấp dữ
liệu, tài liệu để em có thể hoàn thành được luận văn này. Em xin chúc chị Phương
luôn khỏe mạnh và mau chóng thành công trên con đường học vấn. Em cũng xin
chúc các anh (chị) ở đơn vị Công An phường Vĩnh Thanh Vân luôn hoàn thành xuất
sắc các nhiệm vụ được giao và được nhân dân yêu thương.
Cuối cùng, mình cũng xin cảm ơn các bạn đã luôn chia sẻ, cùng nhau sát cánh
trong học tập, giúp đỡ nhau trong lúc khó khăn. Mình xin chúc các bạn luôn khỏe
mạnh, có kết quả học tập thật tốt cũng như sau này có công việc ổn định đúng theo
mong muốn.
Tuy có nhiều cố gắng trong quá trình thực hiện đề tài,nhưng không thể tránh
khỏi những sai sót. Em rất mong nhận được sự đóng góp ý kiến quý báu của quý
Thầy Cô để bài luận văn này được hoàn thiện hơn.
Cần Thơ, ngày 11 tháng 01 năm 2021
Người viết
Bùi Nhật Tài
Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

MỤC LỤC
DANH MỤC HÌNH................................................................................................iv
DANH MỤC BẢNG..............................................................................................vii
ABSTRACT..........................................................................................................viii
TÓM TẮT............................................................................................................... ix
PHẦN GIỚI THIỆU...............................................................................................1
1. Đặt vấn đề..........................................................................................................1
2. Lịch sử giải quyết vấn đề...................................................................................2
3. Mục tiêu đề tài...................................................................................................3
4. Đối tượng và phạm vi nghiên cứu......................................................................4
5. Phương pháp nghiên cứu...................................................................................4
6. Kết quả đạt được................................................................................................4
7. Bố cục luận văn.................................................................................................4
PHẦN NỘI DUNG..................................................................................................5
CHƯƠNG 1. MÔ TẢ BÀI TOÁN..........................................................................5
1. Mô tả chi tiết bài toán........................................................................................5
2. Vấn đề và giải pháp liên quan đến bài toán........................................................6
2.1. Mạng Neural nhân tạo.................................................................................6
2.2. Nhận diện đối tượng....................................................................................6
2.3. Mạng Neural tích chập (Convolutional Neural Network – CNN)...............7
2.3.1. Khái niệm.............................................................................................7
2.3.2. Mô hình cấu trúc...................................................................................7
2.4. Feature Network..........................................................................................9
2.4.1. VGG16 Convolutional Neural Network...............................................9
2.4.2. ResNet50............................................................................................10
2.5. Region Proposal Network.........................................................................11
2.5.1. Selective Search..................................................................................11
2.5.2. Region Proposal Network và Anchor.................................................12
2.6. R-CNN và các phiên bản cải tiến..............................................................13
2.6.1. R-CNN................................................................................................13
2.6.2. Fast R-CNN........................................................................................14
2.6.3. Faster R-CNN.....................................................................................15
2.7. Intersection over Union (IoU)...................................................................15

BÙI NHẬT TÀI_B1606838 i


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

2.8. Non-Maximum Suppression......................................................................16


2.9. Tăng cường dữ liệu (Data Augmentation).................................................17
2.10. Thư viện Tensorflow, Keras....................................................................18
2.10.1. Thư viện Tensorflow........................................................................18
2.10.2. Thư viện Keras.................................................................................18
2.11. Công cụ cắt ảnh từ video Free Video to JPG Converter..........................21
2.12. Công cụ gán nhãn ảnh labelImg..............................................................22
2.13. Công cụ chuyển đổi format annotation Roboflow...................................22
2.14. API gửi SMS – Nexmo...........................................................................22
2.15. API gửi email – SendGrid.......................................................................22
2.16. Thư viện thiết kế giao diện Pyqt5............................................................23
2.17. Hệ quản trị cơ sở dữ liệu MySQL...........................................................23
CHƯƠNG 2. THIẾT KẾ VÀ CÀI ĐẶT..............................................................24
1. Thiết kế hệ thống.............................................................................................24
2. Cài đặt giải thuật..............................................................................................26
2.1. Chuẩn bị dữ liệu........................................................................................26
2.1.1. Thu thập dữ liệu, gán nhãn.................................................................26
2.1.2. Xử lý dữ liệu đầu vào cho mô hình.....................................................30
2.2. Xây dựng mô hình.....................................................................................30
2.2.1. Mạng trích xuất đặc trưng - VGG16...................................................30
2.2.2. Mạng gợi ý vùng - RPN......................................................................32
2.2.3. Mạng nhận diện - RCNN....................................................................33
2.3. Huấn luyện, đánh giá mô hình...................................................................34
2.3.1. Huấn luyện..........................................................................................34
2.3.2. Kiểm tra độ chính xác của mô hình....................................................35
2.4. Dự đoán với dữ liệu mới, thông báo và lưu kết quả..................................36
3. Xây dựng cơ sở dữ liệu logs............................................................................37
4. Xây dựng giao diện người dùng – GUI............................................................37
CHƯƠNG 3. KẾT QUẢ THỰC NGHIỆM.........................................................44
1. Mô trường thực nghiệm...................................................................................44
2. Tập dữ liệu.......................................................................................................44
3. Kết quả kiểm tra, đánh giá mô hình.................................................................50
PHẦN KẾT LUẬN................................................................................................58

BÙI NHẬT TÀI_B1606838 ii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

1. Kết quả đạt được..............................................................................................58


2. Hướng phát triển..............................................................................................59
TÀI LIỆU THAM KHẢO.....................................................................................60

BÙI NHẬT TÀI_B1606838 iii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

DANH MỤC HÌNH

Hình 1: Ùn tắc giao thông ở TP HCM.......................................................................1


Hình 2: Ảnh minh họa vùng giao thông được quy định để xác định lưu lượng giao
thông.......................................................................................................................... 5
Hình 3: Cấu trúc mạng neural nhân tạo.....................................................................6
Hình 4: Ảnh minh họa nhận diện đối tượng xe máy..................................................6
Hình 5: Mô tả hoạt động của cửa sổ trượt (Sliding Windows)..................................7
Hình 6: Ví dụ cấu trúc các lớp của một mạng CNN..................................................8
Hình 7: Thủ tục Max-pooling cho vùng 2x2.............................................................8
Hình 8: Cấu trúc mạng VGG16.................................................................................9
Hình 9: Cấu trúc một khối Residual Block..............................................................10
Hình 10: Cấu trúc mạng ResNet50..........................................................................11
Hình 11: Ảnh sau khi segment bằng thuật toán Graph Based Image Segmentation12
Hình 12: Ảnh minh họa phương pháp biểu diễn Region proposal...........................12
Hình 13: Biểu diễn Region proposal bằng Anchor..................................................13
Hình 14: Mô hình hoạt động R-CNN......................................................................13
Hình 15: Mô hình hoạt động của Fast R-CNN........................................................14
Hình 16: Mô hình hoạt động của Faster R-CNN.....................................................15
Hình 17: Cách tính chỉ số IoU.................................................................................15
Hình 18: Ví dụ cách đánh giá chỉ số IoU.................................................................16
Hình 19: Ảnh minh họa Non-maximum suppression..............................................16
Hình 20: So sánh NMS và Soft-NMS......................................................................17
Hình 21: Công thức cập nhật Si...............................................................................17
Hình 22: Ảnh trước và sau khi áp dụng augment....................................................17
Hình 23: Tham số lớp Conv2D................................................................................18
Hình 24: Tham số lớp MaxPooling2D.....................................................................19
Hình 25: Tham số lớp Dense...................................................................................20
Hình 26: Tham số lớp Dropout................................................................................20
Hình 27: Tham số lớp Flatten..................................................................................21
Hình 28: Tham số lớp Adam...................................................................................21
Hình 29: Giao diện ứng dụng Free Video to JPG Converter...................................22
Hình 30: Sơ đồ hoạt động của hệ thống...................................................................24
Hình 31: Ảnh minh họa các xe được gán nhãn trong một ảnh.................................25
Hình 32: Các xe được đếm trong vùng định sẵn......................................................26
Hình 33: Vẽ khung bao quanh đối tượng.................................................................27
Hình 34: Chọn nhãn cho đối tượng vừa được vẽ khung..........................................27
Hình 35: Ảnh minh họa một file annotations XML (pascalVOC format)...............28
Hình 36: Ảnh minh họa một file annotations TXT (YOLO format)........................28
Hình 37: Ảnh minh họa file classes.txt (YOLO format)..........................................28
Hình 38: Ảnh minh họa annotations csv file (Retinanet format).............................29
Hình 39: Các format có thể chuyển đổi trong Roboflow.........................................29
Hình 40: Quá trình trích xuất đặc trưng ở mạng VGG16.........................................31

BÙI NHẬT TÀI_B1606838 iv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 41: Ảnh minh họa quá trình “convolution” với kích thước ma trận là 5x5, kích
cỡ cửa sổ trượt là 3x3..............................................................................................31
Hình 42: Ảnh minh họa quá trình Maxpooling với vùng 2x2..................................31
Hình 43: Ảnh minh họa quá trình hoạt động ở mạng RPN......................................32
Hình 44: Ảnh minh họa quá trình hoạt động ở mạng nhận diện..............................33
Hình 45: Kích thước tensor sau khi qua từng lớp “Flatten”, “Dense”, “Dropout” và
đầu ra tương ứng......................................................................................................34
Hình 46: Kịch bản kiểm tra đánh giá mô hình theo từng bộ tham số khác nhau với
từng tập dữ liệu kiểm tra..........................................................................................35
Hình 47: Vùng quy định đếm xe..............................................................................36
Hình 48: Thông tin bảng logs..................................................................................37
Hình 49: Giao diện chức năng dự đoán tình trạng giao thông.................................37
Hình 50: Giao diện config.......................................................................................38
Hình 51: Ảnh minh họa việc chọn điểm là đỉnh của vùng đếm xe (các điểm màu
xanh)........................................................................................................................ 39
Hình 52: Ảnh minh họa việc chọn điểm bên trong vùng đếm xe (điểm màu đỏ).....39
Hình 53: Ảnh minh họa khi nhấn “enter” sau khi chọn đủ các điểm là đỉnh của vùng
đếm xe và một điểm bên trong vùng đếm xe...........................................................40
Hình 54: Kết quả đếm xe ở frame thứ 10.................................................................40
Hình 55: Nội dung SMS thông báo tình trạng giao thông.......................................41
Hình 56: Nội dung email thông báo tình trạng giao thông.......................................41
Hình 57: Giao diện theo dõi tình trạng giao thông (logs)........................................42
Hình 58: Tìm kiếm tình trạng giao thông “medium”...............................................42
Hình 59: Ảnh minh họa việc chọn ngày “filter”......................................................43
Hình 60: Ảnh sau khi “D-click” vào link ảnh ở cột image......................................43
Hình 61: Cảnh quay và góc quay của góc CAM1....................................................44
Hình 62: Cảnh quay và góc quay của góc CAM3....................................................45
Hình 63: Cảnh quay và góc quay của góc CAM5....................................................45
Hình 64: Cảnh quay và góc quay của góc CAM5 khi trời mưa...............................45
Hình 65: Biểu đồ thể hiện số lượng đối tượng ứng với từng nhãn trong tập train ban
đầu........................................................................................................................... 46
Hình 66: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn trong tập train sau
khi gom nhãn...........................................................................................................47
Hình 67: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn trong tập đánh giá
................................................................................................................................. 47
Hình 68: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn trong tập test1 góc
CAM3 (180 ảnh).....................................................................................................48
Hình 69: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn trong tập test2 góc
CAM1 (100 ảnh).....................................................................................................48
Hình 70: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn trong tập test3 góc
CAM5 khi chưa xoay(100 ảnh)...............................................................................49
Hình 71: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn trong tập test4 góc
CAM5 sau khi xoay 15 độ (100 ảnh).......................................................................49

BÙI NHẬT TÀI_B1606838 v


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 72: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng VGG16) dưới
dạng biểu đồ đường.................................................................................................51
Hình 73: Kết quả thực nghiệm trên tập test2 góc CAM1 (sử dụng VGG16) dưới
dạng biểu đồ đường.................................................................................................52
Hình 74: Kết quả thực nghiệm trên tập test3 góc CAM5 (sử dụng VGG16) dưới
dạng biểu đồ đường.................................................................................................54
Hình 75: Kết quả thực nghiệm trên tập test4 góc CAM5(sử dụng VGG16) sau khi
xoay một góc 15 độ dưới dạng biểu đồ đường.........................................................55
Hình 76: Biểu đồ so sánh kết quả mAP của các tập kiểm tra 1, 2, 3, 4....................56
Hình 77: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng RESNET50) dưới
dạng biểu đồ đường.................................................................................................56
Hình 78: Kết quả thực nghiệm trên tập test2 góc CAM1 (sử dụng RESNET50) dưới
dạng biểu đồ đường.................................................................................................57
Hình 79: Kết quả nhận diện khi đường đông xe......................................................58

BÙI NHẬT TÀI_B1606838 vi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

DANH MỤC BẢNG


Bảng 1: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng VGG16).............50
Bảng 2: Kết quả chi tiết mAP đối với từng nhãn trên tập test1 góc CAM3.............50
Bảng 3: Kết quả thực nghiệm trên tập test2 góc CAM1 (sử dụng VGG16).............51
Bảng 4: Kết quả mAP chi tiết đối với từng nhãn trên tập test2 góc CAM1.............52
Bảng 5: Kết quả thực nghiệm trên tập test3 góc CAM5 (sử dụng VGG16).............53
Bảng 6: Kết quả chi tiết mAP đối với từng nhãn trên tập test3 góc CAM5.............53
Bảng 7: Kết quả thực nghiệm trên tập test4 góc CAM5 (sử dụng VGG16) sau khi
xoay một góc 15 độ.................................................................................................54
Bảng 8: Kết quả chi tiết mAP đối với từng nhãn trên tập test4 góc CAM5.............55
Bảng 9: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng RESNET50)......56
Bảng 10: Kết quả thực nghiệm trên tập kiểm tra góc CAM1 (sử dụng RESNET50)
................................................................................................................................. 57

BÙI NHẬT TÀI_B1606838 vii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

ABSTRACT
Currently, traffic congestion in Vietnam still occurs frequently. Especially the rush
hours (time to go to school, to work, after school, after work). in order to partly
avoid these situations. It is necessary to have a support system that provides
information of traffic flow on key roads with traffic cameras such as junctions,
crossroads, in front of hospital gates, markets ... Estimating the traffic density from
the traffic cameras, besides helping the functional forces can divide and divert
traffic in time. It can also help road users see congested roads to avoid. The thesis
uses the Faster R-CNN model to detect vehicles in traffic on the road. Thereby
estimating the density and sending alerts to the user. Experimental data were taken
in front of the Kien Giang hospital’s gates, including 1260 photos for training, 360
images for model evaluation and 3 sets of images for testing. The first set of 180
images has the same camera angle as the training set. The second set and the third
set each contain 100 images with different camera angles and different camera
angles from the training set. The results are about 92% accuracy in detection of
vehicles for the first set, 75% for the second set and 85% for the third set.

BÙI NHẬT TÀI_B1606838 viii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

TÓM TẮT
Hiện nay tình trạng ùn tắc giao thông ở Việt Nam vẫn còn thường xuyên xảy ra.
Đặc biệt là các khung giờ cao điểm (đầu giờ đi học, đi làm, giờ tan học, tan làm).
Để có thể phần nào giúp tránh được tình trạng trên. Chúng ta cần có một hệ thống
hỗ trợ cung cấp thông tin về lưu lượng giao thông trên các tuyến đường chủ chốt có
camera giao thông như: ngã ba, ngã tư, trước cổng bệnh viện, chợ... Việc theo dõi
lưu lượng giao thông từ các camera giao thông, ngoài việc giúp các lực lượng chức
năng có thể phân làn, phân luồng giao thông kịp thời. Bên cạnh đó, còn có thể giúp
người tham gia giao thông thấy được các đường đang ùn tắc để né tránh. Đề tài sử
dụng mô hình Faster R-CNN để phát hiện các phương tiện đang tham gia giao
thông trên đường. Qua đó theo dõi lưu lượng và gửi cảnh báo tới cho người dùng.
Dữ liệu thực nghiệm được lấy trước cổng bệnh viện tỉnh Kiên Giang gồm 1260 ảnh
để huấn luyện, 360 ảnh để tìm tham số tối ưu cho mô hình và 3 bộ ảnh để kiểm tra,
đánh giá hiệu quả của mô hình. Bộ thứ nhất gồm 180 ảnh có cùng góc camera với
tập huấn luyện. Bộ thứ hai và bộ thứ ba mỗi bộ gồm 100 ảnh với những góc camera
khác nhau và khác với góc camera của tập huấn luyện. Kết quả đạt khoảng 92% độ
chính xác phát hiện các phương tiện giao thông đối với bộ kiểm tra thứ nhất, 75%
đối với bộ thứ hai và 85% đối với bộ thứ ba.

PHẦN GIỚI THIỆU


1. Đặt vấn đề
Hiện nay, ùn tắc giao thông ở Việt Nam vẫn là một vấn đề nan giải. Đặc
biệt là ở những thành phố lớn nơi dân cư tập trung đông đúc. Tình trạng kẹt xe
ngày càng nghiêm trọng kéo theo tình trạng ô nhiễm tiếng ồn, ô nhiễm không
khí do khí thải của các phương tiện tham gia giao thông đã trở thành nỗi khiếp
đảm của những người xung quanh cũng như những người trực tiếp tham gia giao
thông1.

1
https://vnexpress.net/topic/ket-xe-o-sai-gon-ngay-cang-nghiem-trong-21884

BÙI NHẬT TÀI_B1606838 ix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 1: Ùn tắc giao thông ở TP HCM2


Có nhiều nguyên nhân dẫn đến tình trạng này như: ý thức của người điều
khiển phương tiện tham gia giao thông; hạ tầng giao thông còn kém, phương
tiện cá nhân tham gia giao thông cao; tình trạng lấn chiếm vỉa hè để buôn bán;
việc phân luồng, phân làn xe chạy, điều phối giao thông, đèn tín hiệu ở nút giao
nhau chưa tốt…
Để phần nào khắc phục được tình trạng nêu trên, việc ứng dụng Công nghệ
thông tin để hỗ trợ cho việc theo dõi lưu lượng giao thông, điều phối giao thông,
đèn tín hiệu ở nút giao nhau là cực kỳ cần thiết, dựa trên các camera giao thông
đã được bố trí sẵn.
Trước đây đã có một số bài toán thực hiện việc kiểm soát lưu lượng giao
thông như đề tài của tác giả Julian Nubert và các cộng sự hoặc đề tài của tác giả
Donato Impedovo nhưng vẫn chưa có bài toán nào đi sâu vào đặc trưng giao
thông ở Việt Nam.
2. Lịch sử giải quyết vấn đề
Tác giả Julian Nubert và các cộng sự đã có nghiên cứu xây dựng một hệ
thống ước tính lưu lượng giao thông sử dụng mạng neural tích chập áp dụng vào
giao thông ở Singapore [ CITATION Jul18 \l 1033 ]. Dữ liệu được thu thập trực
tiếp từ các camera giao thông ở Singapore. Nhóm tác giả đã lấy ảnh từ tất cả các
camera hơn một tuần và chọn ra 03 camera phù hợp nhất. Trong đó thu thập
được nhiều tình trạng mật độ giao thông khác nhau qua nhiều ngày trong điều

2
https://i1-vnexpress.vnecdn.net/2017/07/14/ket-xe-2-9200-1482292733-4126-1500022784.jpg?
w=680&h=0&q=100&dpr=1&fit=crop&s=9-ukZlq-eoH4mMOSIx4WsA

BÙI NHẬT TÀI_B1606838 x


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

kiện đường thông thoáng và không bị cây che phủ hoặc bị cản trở bởi các vật
khác. Tổng cộng nhóm tác giả đã thu thập được 4582 ảnh. Sau đó chia ngẫu
nhiên 90% làm tập huấn luyện, 10% làm tập đánh giá. Họ cũng quy định 5 lớp
cho các ảnh là: “Empty” với 0-8 xe hơi (hầu như đường trống), “Low” với 9-20
xe hơi (chỉ có một ít xe), “Medium” với <50 xe hơi (đường hơi đông), “High”
với <100 xe hơi (đường đông hoặc các làn đường đều phủ kín xe) và “Traffic
Jam” với >100 xe hơi (giao thông hầu như bị ứ đọng, không di chuyển). Nhóm
tác giả sử dụng mô hình CNN thay vì Recurrent Neural Network (RNNs) vì
RNNs sẽ xử lý dữ liệu dạng liên tục, có thứ tự; còn dữ liệu thu thập cho nghiên
cứu này được thực hiện theo cách mỗi 20 giây sẽ trích 1 ảnh. Sau quá trình huấn
luyện và tối ưu bằng một số phương pháp áp dụng “transfer learning” trên
Inception V3, “class imbalance”, “class imbalance” và “masking” thì kết quả thu
được mô hình với độ chính xác 74,3%. Ở bài toán này tác giả đã áp dụng cụ thể
cho tình trạng giao thông ở Singapore. Tuy nhiên, để tiếp cận và áp dụng cho
tình trạng giao thông ở Việt Nam với điều kiện phương tiện giao thông đa dạng
hơn, hầu hết là xe máy thì cần phải có phương pháp cải tiến hoặc mô hình khác
tối ưu hơn.
Tác giả Nguyễn Chiến Thắng đã xây dựng một hệ thống đếm phương tiện
giao thông trên đường sử dụng kết hợp Nhận diện đối tượng và Theo dõi đối
tượng [CITATION Tha20 \l 1033 ]. Tác giả đã sử dụng MobileNet SSD để nhận
diện đối tượng và sau đó thực hiện theo dõi đối tượng với MOSSE Tracker. Đầu
tiên tác giả định sẵn một đường kẻ ngang (laser line). Sau đó lặp qua các đối
tượng đã được theo dõi để cập nhật lại vị trí mới (nếu có). Trong quá trình lặp
nếu có đối tượng vượt qua “laser line” thì đếm thêm 1 xe mới và bỏ theo dõi đối
tượng đó, nếu không thì tiếp tục theo dõi đối tượng. Mỗi 5 khung hình tác giả
cho nhận diện đối tượng lại một lần, nếu có đối tượng mới xuất hiện thì tiến
hành theo dõi. Sau đó lặp lại bước kiểm tra các đối tượng đã được theo dõi xem
có vượt quá “laser line” chưa. Ở bài này, tác giả đã sử dụng mô hình đã huấn
luyện MobileNet SSD. Với dữ liệu kiểm tra là video giao thông dài khoảng 5
giây. Tuy nhiên, ở bài này tác giả chủ yếu tập trung vào nhận diện xe hơi (4
bánh). Do đó, để áp dụng vào đặc trưng giao thông ở Việt Nam, cần có một đề
tài khác xử lý nhận diện nhiều loại phương tiện giao thông hơn (xe máy, xe đạp).
Trong một nghiên cứu khác, tác giả Donato Impedovo và các cộng sự
[ CITATION Don19 \l 1033 ], đã xây dựng mô hình dự đoán mật độ giao thông
dựa vào quá trình phát hiện đối tượng. Giai đoạn đầu các giải thuật: Haar
Cascade, You Only Look Once (YOLO), Single Shot MultiBox Detector (SSD)
và Mask R-CNN đã được thực nghiệm phát hiện đối tượng và so sánh kết quả

BÙI NHẬT TÀI_B1606838 xi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

với nhau để chọn ra giải thuật phù hợp cho giai đoạn thứ hai là dự đoán mật độ
giao thông. Dữ liệu sử dụng cho giai đoạn đầu tiên (phát hiện đối tượng) gồm 03
video. Thứ nhất là “M-30”, video được lấy gồm có 7520 khung hình với độ phân
giải là 640x480 (30fps) vào ngày nắng. Thứ hai là “M-30-HD”, video được lấy
gồm có 9390 khung hình với độ phân giải HD 1280x720 (30fps) nhưng vào
khung cảnh ngày có mây. Video cuối là “Urban1” gồm có 23435 khung hình với
độ phân giải thấp 480x320 (25 fps). Nhóm tác giả tiến hành “detect” theo từng
frame, sau đó ghi nhận kết quả về độ chính xác phát hiện các phương tiện giao
thông và thời gian thực thi. Công việc được thực hiện trên máy tính có hệ điều
hành Ubuntu 18.04, trang bị AMD Ryzhen threadripper 1920x 12 cores, Nvidia
Titan RTX 24GB RAM, 64 GB RAM DDR4. Đối với giải thuật Mask R-CNN,
kết quả thu được trên tập dữ liệu “M-30” có độ chính xác 89%. Trên tập “M-30-
HD” thu được kết quả tốt hơn với độ chính xác 91%. Nhưng đối với tập
“Urban1” thì kết quả độ chính xác chỉ là 41%. Thời gian thực thi đều là 2,4s –
3,0s một frame. Như vậy cho thấy, độ chính xác cũng phụ thuộc một phần vào
chất lượng của hình ảnh. Tuy độ chính xác cao nhưng thời gian thực thi cho một
frame khá lớn 2,4s – 3,0s. Nên không thể đáp ứng cho việc real-time detection.
Với tập dữ liệu được lấy ở Urban cũng chủ yếu là xe 4 bánh do đó để áp dụng
vào Việt Nam với các loại xe tham gia giao thông đa dạng, cần một đề tài khác
phù hợp hơn.
3. Mục tiêu đề tài
Với tình trạng giao thông hiện nay ở Việt Nam như đã nêu trên. Một hệ
thống đưa ra những tín hiệu cảnh báo tình trạng giao thông dựa vào camera giao
thông, để hỗ trợ cho các cơ quan chức năng có thể phân làn, phân luồng, điều
phối giao thông, điều chỉnh tín hiệu đèn giao thông kịp thời là cần thiết. Bên
cạnh đó, hệ thống cũng có thể giúp các tài xế tránh được tuyến đường đang ùn
tắc hay có thể theo dõi, đánh giá lưu lượng sau này nhờ vào những dữ liệu đã
lưu trữ trước đó.
Đề tài xây dựng hệ thống theo dõi lưu lượng giao thông với đặc trưng các
phương tiện giao thông ở Việt Nam (phần lớn là xe máy) và thực nghiệm đánh
giá trên tập dữ liệu được cung cấp từ Công An phường Vĩnh Thanh Vân – TP
Rạch Giá – Kiên Giang. Vị trí camera Đường Lê Lợi (đối diện bệnh viện tỉnh
Kiên Giang). Tùy vào mật độ giao thông mà hệ thống gửi thông báo bằng SMS.
Sau đó lưu vào cơ sở dữ liệu để có thể theo dõi và đánh giá sau này.
4. Đối tượng và phạm vi nghiên cứu

BÙI NHẬT TÀI_B1606838 xii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Đối tượng nghiên cứu: theo dõi lưu lượng các loại xe như: xe hai bánh, xe 4
bánh trở lên và xe các loại ưu tiên
Phạm vi nghiên cứu: dữ liệu thu thập ở trước cổng bệnh viện tỉnh Kiên
Giang
5. Phương pháp nghiên cứu
Sử dụng mô hình Faster R-CNN để nhận diện các phương tiện giao thông
Thực nghiệm, đánh giá độ chính xác của mô hình thông qua ảnh
Tiến hành theo dõi lưu lượng thông qua video được lấy từ camera giao
thông.
6. Kết quả đạt được
Xây dựng được hệ thống theo dõi lưu lượng giao thông với độ chính xác
tương đối cao (khoảng 90%)
Hệ thống áp dụng được với nhiều góc camera và thời tiết (nắng, nhiều mây,
mưa).
7. Bố cục luận văn
Phần giới thiệu
Giới thiệu tổng quát về đề tài.
Phần nội dung
Chương 1 : Mô tả bài toán theo dõi hệ thống hỗ trợ theo dõi tình trạng
giao thông qua video dựa trên mô hình Faster R-CNN.
Chương 2 : Thiết kế, cài đặt giải thuật, xây dựng cơ sở dữ liệu, trình bày
các bước xây dựng hệ thống.
Chương 3 : Kiểm thử hệ thống và đánh giá độ chính xác, tốc độ của hệ
thống.
Phần kết luận
Trình bày kết quả đạt được và hướng phát triển hệ thống.

BÙI NHẬT TÀI_B1606838 xiii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

PHẦN NỘI DUNG


CHƯƠNG 1. MÔ TẢ BÀI TOÁN
8. Mô tả chi tiết bài toán

Bài toán đặt ra sẽ sử dụng dữ liệu trực tiếp từ camera giao thông. Sau đó,
quy định một vùng trên hình ảnh thu được từ camera, để khi có xe lưu thông
trong vùng đó sẽ được cho nhận dạng và đếm số lượng. Cụ thể cứ mỗi 20 giây ta
trích xuất hình ảnh một lần. Hình ảnh thu được sẽ đưa qua hệ thống nhận dạng
để nhận dạng các phương tiện đang tham gia giao thông trong vùng. Sau đó dựa
vào số lượng xe mà kết luận xem ảnh thuộc nhãn nào. Nhãn được người dùng
quy định tùy theo từng vùng (nông thôn, thành thị,…). Nếu sau 5 lần kết luận,
trung bình nhãn nào lớn nhất thì thông báo nhãn đó sẽ được gửi đi bằng SMS.
Sau đó lưu kết quả vào cơ sở dữ liệu.

Hình 2: Ảnh minh họa vùng giao thông được quy định
để xác định lưu lượng giao thông
Hệ thống được xây dựng trên mô hình Faster R-CNN (Faster Regions –
Convolutional Neural Network). Mô hình là sự kết hợp giữa 03 mạng Neural
Networks: Mạng trích xuất đặc trưng (Feature Network), Mạng đề xuất vùng có
chứa đối tượng (Region Proposal Network - RPN), Mạng nhận diện đối tượng
(Detection Network) (R-CNN Network). Kết quả được gửi qua SMS (Nexmo)
và Email (SendGrid). Cơ sở dữ liệu được sử dụng là MySQL.

BÙI NHẬT TÀI_B1606838 xiv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

9. Vấn đề và giải pháp liên quan đến bài toán


9.1. Mạng Neural nhân tạo
Mạng Neural nhân tạo (Artificial Neural network – ANN)[ CITATION
Erk11 \l 1033 ] là một mô hình tính toán được xây dựng dựa trên các mạng
neural sinh học. Nó gồm có một nhóm các neural nhân tạo (nút) nối với nhau, và
xử lý thông tin bằng cách truyền theo các kết nối và tính giá trị mới tại các nút
(cách tiếp cận connectionism đối với tính toán).
Trong nhiều trường hợp, mạng neural nhân tạo là một hệ thống thích ứng
(adaptive system) tự thay đổi cấu trúc của mình dựa trên các thông tin bên ngoài
hay bên trong chảy qua mạng trong quá trình học.

Hình 3: Cấu trúc mạng neural nhân tạo3


9.2. Nhận diện đối tượng
Nhận diện đối tượng (Object Detection)4 là quá trình tìm kiếm vị trí và phân
loại đối tượng trong một ảnh. Đầu vào của bài toán nhận diện đối tượng là một
ảnh, và đầu ra sẽ là vị trí của các đối tượng trong ảnh. Bài toán gồm 2 bài toán
nhỏ, thứ nhất là xác định các “bounding box” quanh đối tượng. Thứ hai là với
mỗi “bounding box” đó thì đối tượng bên trong là gì và với bao nhiêu phần trăm
chắc chắn.

Hình 4: Ảnh minh họa nhận diện đối tượng xe máy

3
https://cs231n.github.io/assets/nn1/neural_net2.jpeg
4
https://www.geeksforgeeks.org/object-detection-vs-object-recognition-vs-image-segmentation/

BÙI NHẬT TÀI_B1606838 xv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

9.3. Mạng Neural tích chập (Convolutional Neural Network – CNN)


9.3.1. Khái niệm
Convolutional Neural Network [ CITATION Yan98 \l 1033 ] (CNNs
– Mạng nơ-ron tích chập là một trong những mô hình Deep Learning tiên
tiến được sử dụng nhiều trong các bài toán nhận dạng các đối tượng trong
ảnh.
“Convolutional” là một cửa sổ trượt (Sliding Windows) trên một ma
trận như mô tả hình dưới:

Hình 5: Mô tả hoạt động của cửa sổ trượt (Sliding Windows)5

Các “convolutional layer” có các “parameter”(kernel) đã được học để


tự điều chỉnh lấy ra những thông tin chính xác nhất mà không cần chọn
các đặc trưng. Ở ví dụ trên, bên trái là ma trận 5x5 thể hiện ảnh trắng đen
đã được số hóa với giá trị mỗi điểm ảnh là 0 hoặc 1. Sliding windows là
một ma trận có kích thước nhỏ hơn (3x3) tương ứng với vùng màu vàng
trên ảnh. Ma trận kết quả bên phải thu được khi nhân từng phần tử bên
trong ma trận 3x3 với ma trận 5x5.
9.3.2. Mô hình cấu trúc
Mạng CNN là một tập hợp các lớp “Convolution” chồng lên nhau, sử
dụng các hàm kích hoạt phi tuyến tính như “ReLU”, “sigmoid” và “tanh”
để kích hoạt trọng số trong các node. Mỗi lớp sau khi kích hoạt sẽ tạo ra
thông tin trừu tượng hơn cho các lớp tiếp theo. Các lớp liên kết với nhau
thông qua cơ chế “convolution”. Nghĩa là, lớp tiếp theo là kết quả
5
http://deeplearning.stanford.edu/wiki/images/6/6c/Convolution_schematic.gif

BÙI NHẬT TÀI_B1606838 xvi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

“convolution” từ lớp trước đó. Do đó, chúng có các kết nối cục bộ. Mỗi
neural ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnh
cục bộ của neural trước đó. Ngoài ra có một số lớp khác như
pooling/subsampling lớp dùng để chắt lọc lại các thông tin hữu ích hơn
(loại bỏ các thông tin nhiễu).
Trong quá trình huấn luyện mạng (training) CNN tự động học các giá
trị qua các lớp filter. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố gắng
tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel >
edges > shapes > facial > high-level features. Lớp cuối cùng được dùng để
phân lớp ảnh.

Hình 6: Ví dụ cấu trúc các lớp của một mạng CNN6


Việc map từ input lớp sang hidden lớp là một “feature map”. Một
“convolutional layer” bao gồm các feature map khác nhau. Mỗi một
feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất
của trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN.
Lớp pooling thường được sử dụng ngay sau lớp “convolutional” để
đơn giản hóa thông tin đầu ra để giảm bớt số lượng neural. Thủ tục
pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trong
vùng đầu vào 2x2.

Hình 7: Thủ tục Max-pooling cho vùng 2x27

6
https://miro.medium.com/max/1040/1*3BRLw4lsANPEfGgimG3YVQ.png
7
https://ujwlkarn.files.wordpress.com/2016/08/screen-shot-2016-08-10-at-3-38-39-am.png

BÙI NHẬT TÀI_B1606838 xvii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Như ví dụ trên thì qua lớp Max Pooling, số lượng neural giảm đi phân
nửa. Do đó có thể nói rằng, Max Pooling sẽ chọn ra trong số các đặc
trưng, đặc trưng nào là đặc trưng nhất.
Hai lớp cuối cùng của các kết nối trong mạng là một lớp kết nối đầy
đủ (fully connected layer). Lớp này nối tất cả neural từ lớp max pooling
tới tất cả neural của tầng ra.
9.4. Feature Network
9.4.1. VGG16 Convolutional Neural Network
VGG168 là một pre-trained model với cấu trúc của mạng Neural tích
chập. Mô hình đã đạt được độ chính xác 92,7% - top 5 trong dự án
ImageNet. Một dự án có hơn 14 triệu ảnh được gán nhãn bằng tay, với
hơn 20000 đối tượng.

Hình 8: Cấu trúc mạng VGG169

Cấu trúc một mạng VGG16 bao gồm 16 lớp: 2 hoặc 3 lớp
“Convolution” (Conv), tiếp đó là 1 lớp Max Pooling 2D. Ngay sau Conv
cuối cùng là 1 “Flatten layer” để chuyển ma trận 4 chiều của “Conv layer”
về ma trận 2 chiều. Tiếp nối sau đó là các Fully-connected layers và 1
“Softmax layer”. Do VGG được huấn luyện trên tập dữ liệu của ImageNet
có 1000 class nên ở “Fully-connected layer” cuối cùng sẽ có 1000 units.
9.4.2. ResNet50

8
https://neurohive.io/en/popular-networks/vgg16/
9
https://neurohive.io/wp-content/uploads/2018/11/vgg16-neural-network.jpg

BÙI NHẬT TÀI_B1606838 xviii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Mạng ResNet10 (R) là một mạng CNN được thiết kế để làm việc với
hàng trăm hoặc hàng nghìn lớp chập. Một vấn đề xảy ra khi xây dựng
mạng CNN với nhiều lớp chập sẽ xảy ra hiện tượng “Vanishing Gradient”
dẫn tới quá trình học tập không tốt.
Backpropagation Algorithm là một kỹ thuật thường được sử dụng
trong quá trình training. Thuật toán sẽ đi từ “output layer” đến “input
layer” và tính toán “gradient” của “cost function” tương ứng cho từng
“parameter” (weight) của mạng. “Gradient Descent” sau đó được sử dụng
để cập nhật các “parameter” đó. Toàn bộ quá trình sẽ được lặp lại cho tới
khi các “parameter” được hội tụ. Hyperparameter (số Epoch - số lần mà
training set được duyệt qua một lần và “weights” được cập nhật) được
dùng để định nghĩa cho số lượng vòng lặp để thực hiện quá trình này. Nếu
số Epoch quá nhỏ thì mô hình sẽ cho ra kết quả không tốt. Ngược lại, nếu
số Epoch quá lớn thì thời gian huấn luyện sẽ rất lâu. Trong thực tế
Gradients thường sẽ có giá trị nhỏ dần khi đi xuống các lớp thấp hơn. Dẫn
đến kết quả là các cập nhật thực hiện bởi Gradients Descent không làm
thay đổi nhiều weights của các lớp đó và làm chúng không thể hội tụ và
mạng sẽ không thu được kết quả tốt. Hiện tượng như vậy gọi là Vanishing
Gradients.
Mạng ResNet ra đời nhằm giải quyết vấn đề trên. Bằng cách sử dụng
các kết nối tắt gọi là Residual Block. Kết nối trực tiếp đầu vào của lớp (n)
với (n+x) được hiển thị dạng mũi tên cong.

Hình 9: Cấu trúc một khối Residual Block

10
https://viblo.asia/p/gioi-thieu-mang-resnet-vyDZOa7R5wj

BÙI NHẬT TÀI_B1606838 xix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 10: Cấu trúc mạng ResNet5011

Cấu trúc mạng bao gồm các lớp như ảnh trên:
o Zero-Padding: đầu vào với kích thước (3,3)
o Stage 1 : Tích chập (Conv1) với 64 filters với shape(7,7), sử dụng
stride (2,2). BatchNorm, MaxPooling (3,3).
o Stage 2 : Convolutiontal block sử dụng 3 filter với size
64x64x256, f=3, s=1. Có 2 Identity blocks với filter size
64x64x256, f=3.
o Stage 3 : “convolutional” sử dụng 3 filter size 128x128x512,
f=3,s=2. Có 3 Identity blocks với filter size 128x128x512, f=3.
o Stage 4 : “convolutional” sử dụng 3 filter size 256x256x1024,
f=3,s=2. Có 5 Identity blocks với filter size 256x256x1024, f=3.
o Stage 5 :”convolutional” sử dụng 3 filter size 512x512x2048,
f=3,s=2. Có 2 Identity blocks với filter size 512x512x2048, f=3.
o The 2D Average Pooling : sử dụng với kích thước (2,2).
o The Flatten.
o Fully Connected (Dense) : sử dụng softmax activation.
9.5. Region Proposal Network
9.5.1. Selective Search
Giải thuật Selective Search12 là giải thuật dựa vào độ tương đồng của
các đặc trưng trong ảnh như màu sắc, kết cấu, kích thước và hình dạng để
đưa ra các Region proposals có khả năng chứa các đối tượng.
Đầu tiên, ảnh được segment qua thuật toán Graph Based Image
Segmentation. Kết quả như ảnh sau:

11
https://images.viblo.asia/fe5b21e5-3ad3-4419-93e0-7aa77a662bdd.png
12
https://www.learnopencv.com/selective-search-for-object-detection-cpp-python/

BÙI NHẬT TÀI_B1606838 xx


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 11: Ảnh sau khi segment


bằng thuật toán Graph Based Image Segmentation13
Tuy nhiên, không thể sử dụng kết quả trên để làm Region proposals
vì 2 lý do: Thứ nhất, một đối tượng có thể có 2 màu hoặc nhiều hơn. Thứ
hai, các đối tượng bị che mất một phần như cái đĩa dưới cái chén không
thể xác định được. Do đó, cần nhóm các vùng màu với nhau để làm
Region proposals dựa vào độ tương đồng của các đặc trưng như màu sắc,
kết cấu, kích thước và hình dạng.
9.5.2. Region Proposal Network và Anchor
Region Proposal Network (RPN)14 là một mạng CNN nhận đầu vào là
ảnh với kích thước bất kì và cho đầu ra là region proposal (tập vị trí của
các hình chữ nhật có thể chứa vật thể), cùng với xác suất chứa vật thể của
hình chữ nhật tương ứng.
Để biểu diễn Region proposal, thông thường người ta sử dụng hình
chữ nhật. Ví dụ A(x_min, y_min) và B(x_max, y_max) với x_min <
x_max và y_min < y_max (2 điểm ở 2 góc hình chữ nhật như ảnh minh
họa 12A). Tuy nhiên, do các giá trị dự đoán có thể vượt ra ngoài khỏi ảnh.
Nên người ta sử dụng một kỹ thuật khác để biểu diễn Region proposal đó
là Anchor.

Hình 12: Ảnh minh họa phương pháp biểu diễn Region proposal
13
https://www.learnopencv.com/selective-search-for-object-detection-cpp-python/
14
https://deepmlml.com/rpn-explained.html

BÙI NHẬT TÀI_B1606838 xxi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Ý tưởng của Anchor là thay vì dự đoán 2 góc ta sẽ dự đoán điểm trung


tâm C (x_center, y_center) và width, height của hình chữ nhật (ảnh minh họa
12B). Như vậy mỗi anchor được xác định bằng 4 tham số (x_center, y_center,
width, height).

Hình 13: Biểu diễn Region proposal bằng Anchor15


9.6. R-CNN và các phiên bản cải tiến
9.6.1. R-CNN
Regions with convolutional neural networks (R-CNN) 16 là thuật toán
sử dụng kết hợp giữa các giải thuật như Selective Search, CNN, Support
Vector Machine (SVM). Đầu tiên, dùng giải thuật Selective Search để lấy
ra khoảng 2000 vùng trong ảnh mà trong đó có khả năng chứa đối tượng
(gọi là Region proposals). Sau đó dùng CNN để trích xuất ra các đặc trưng
trong các vùng đó. Tiếp đến là dùng các đặc trưng đó và SVM để xác định
xem trong mỗi 2000 vùng đó có chứa đối tượng gì.

Hình 14: Mô hình hoạt động R-CNN17

15
Nguồn ảnh: sách deep learning for computer vision.
16
https://nttuan8.com/bai-11-object-detection-voi-faster-r-cnn/
17
https://dpzbhybb2pdcj.cloudfront.net/elgendy/v-5/Figures/image016.png

BÙI NHẬT TÀI_B1606838 xxii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Tuy nhiên, R-CNN vẫn còn nhược điểm lớn đó là số lượng Region
proposals còn quá nhiều (khoảng 2000 vùng). Do đó, nhiều vùng không
chứa vật thể nhưng vẫn được đưa vào CNN dẫn đến tốc độ xử lý của giải
thuật phải tốn tới 47 giây/ảnh.
9.6.2. Fast R-CNN
Để cải thiện tốc độ tính toán, tác giả của giải thuật R-CNN đã cải tiến
giải thuật của mình lên với tên gọi Fast R-CNN [ CITATION Gir15 \l
1033 ] bằng cách thay vì đưa 2000 vùng vào mạng CNN, thì tác giả đưa
ảnh đầu vào qua mạng CNN một lần duy nhất. Ảnh sau khi qua mạng
CNN sẽ thu được Feature Map với kích thước nhỏ hơn ảnh gốc rất nhiều.
Tiếp đến, sử dụng một “ROI Pooling layer” để đưa các vùng ảnh về kích
thước vuông và reshape về cùng một kích thước đầu ra. Kết quả thu được
đưa tiếp qua các lớp FCs và có được một “output” gọi là ROI feature
vector. Cuối cùng là “predict class” và “offset” của “bounding box” cho
vùng ảnh đó để lấy kết quả đầu ra như đã làm với R-CNN.
ROI pooling lớp là một dạng của “pooling layer”. Điểm khác so với
max pooling hay average pooling là bất kể kích thước của tensor input,
ROI pooling luôn cho ra “output” có kích thước cố định được định nghĩa
trước.

Hình 15: Mô hình hoạt động của Fast R-CNN18


Như vậy, Fast R-CNN đã nhanh hơn R-CNN thông thường rất nhiều
vì đã bỏ qua được phần lớn thời gian xử lý 2000 ảnh với CNN. Tuy nhiên,
việc sử dụng Selective Search trên Feature map vẫn là vấn đề làm chậm
thuật toán.

18
https://cdn-images-1.medium.com/max/628/1*nIKpJwQ9gLqh0OhKEzNpkQ.png

BÙI NHẬT TÀI_B1606838 xxiii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

9.6.3. Faster R-CNN


Để cải thiện tốc độ tối ưu nhất có thể, một tác giả khác Shaoqing Ren
đã cho ra Faster R-CNN [ CITATION Ren15 \l 1033 ], tập trung giải
quyết mấu chốt là giải thuật Selective Search. Tác giả đã thay Selective
Search bằng một mạng CNN gọi là Region Proposal Network, nhiệm vụ
của mạng này là học và cho ra đâu là vùng ảnh nên chọn để tìm kiếm đối
tượng và phần trăm có đối tượng trong vùng đó.

Hình 16: Mô hình hoạt động của Faster R-CNN19


Cụ thể là ảnh đầu vào sẽ được qua CNN để lấy Feature map. Sau đó,
dùng RPN để lấy các vùng ảnh có khả năng chứa đối tượng. Các bước tiếp
theo giống như giải thuật Fast R-CNN. Dùng “ROI Pooling layer” để
reshape, rồi sau đó sử dụng một số lớp FCs tiếp theo để predict class,
offset của “bounding box”.
9.7. Intersection over Union (IoU)
IoU được sử dụng trong bài toán nhận diện đối tượng, để đánh giá xem
“bounding box” dự đoán đối tượng khớp với “ground truth” của đối tượng
hay không.

Hình 17: Cách tính chỉ số IoU20

19
https://www.researchgate.net/profile/Akif_Durdu/publication/334987612/figure/fig3/AS:788766109224961
@1565067903984/High-level-diagram-of-Faster-R-CNN-16-for-generic-object-detection-2-Inception-v2-
The.ppm
20
https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/

BÙI NHẬT TÀI_B1606838 xxiv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Chỉ số IoU trong khoảng [0,1]. IoU càng gần 1 thì “bounding box” dự
đoán càng gần “ground truth”. Ảnh minh họa:

Hình 18: Ví dụ cách đánh giá chỉ số IoU21


9.8. Non-Maximum Suppression
Sau khi thực hiện nhận diện đối tượng, sẽ thu được rất nhiều “proposals”
(hình minh họa). Trong đó, có rất nhiều “proposals” là “bounding box” của một
đối tượng duy nhất, dẫn đến việc dư thừa. Non-maximum Suppression (NMS) ra
đời để giải quyết việc này22.

Hình 19: Ảnh minh họa Non-maximum suppression23


Non-maximum suppression sẽ bao gồm một danh sách “proposals” được
sắp xếp theo độ chính xác. Sau đó, loại bỏ những vùng có IoU lớn hơn threshold
đã định trước. Chỉ giữ lại những vùng có độ tin cậy cao.
Ở thuật toán này có một điểm yếu là bị phụ thuộc vào giá trị ngưỡng đặt
trước “threshold”. Việc chọn lựa giá trị ngưỡng chính là chìa khóa thành công
của mô hình. Tuy nhiên, việc chọn giá trị ngưỡng này trong các bài toán khá
khó. Nếu box có giá trị IoU lớn hơn ngưỡng cho trước nó sẽ bị loại bỏ ngay cả
trường hợp độ chính xác của box đó cao. Tương tự như vậy, nếu box có độ
chính xác cao nhưng giá trị IoU nhỏ hơn ngưỡng sẽ vẫn được giữ lại.

21
https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_examples.png
22
https://www.phamduytung.com/blog/2019-12-13-nms/
23
https://arxiv.org/pdf/1704.04503.pdf

BÙI NHẬT TÀI_B1606838 xxv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Để giải quyết điểm yếu trên tác giả Navaneeth Bodla [ CITATION Nav17 \l
1033 ] đã đưa ra cải tiến là thay vì loại bỏ hoàn toàn proposal thì sẽ giảm giá trị
confidence của box đi như ảnh bên dưới.

Hình 20: So sánh NMS và Soft-NMS

Trong đó, giá trị si sẽ được cập nhật theo công thức

Hình 21: Công thức cập nhật Si

9.9. Tăng cường dữ liệu (Data Augmentation)


“Data augmentation”24 một kỹ thuật để tăng tính đa dạng của tập huấn luyện
bằng cách áp dụng các phép biến đổi ngẫu nhiên (nhưng thực tế) như xoay hình
ảnh, lật ngược, đổi màu…

Hình 22: Ảnh trước và sau khi áp dụng augment


9.10. Thư viện Tensorflow, Keras
9.10.1. Thư viện Tensorflow

24
https://www.tensorflow.org/tutorials/images/data_augmentation

BÙI NHẬT TÀI_B1606838 xxvi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

TensorFlow25 là một thư viện phần mềm mã nguồn mở dành cho máy
học được phát triển bởi Google. TensorFlow có thể chạy song song trên
nhiều CPU và GPU, với nhiều mở rộng CUDA tùy chọn cho việc tính toán
đa năng trên các GPU. TensorFlow được viết bằng C++ và thao tác
interface bằng Python nên rất phổ biến hiện nay26.
Kiến trúc TensorFlow hoạt động được chia thành 3 phần: Tiền xử lý
dữ liệu, dựng mô hình, huấn luyện và ước tính độ chính xác cho mô hình.
Tất cả những tính toán trong TensorFlow đều dựa trên Tensor. Tensor
là 1 vector hay ma trận n-chiều không gian, đại diện cho tất cả các loại dữ
liệu (ảnh, text, âm thanh…). Shape của Tensor thể hiện số chiều của ma
trận hay mảng.
9.10.2. Thư viện Keras
- Keras27 là một thư viện mã nguồn mở của Google cung cấp giao diện
Python cho các mạng neural nhân tạo. Keras hoạt động như một giao
diện cho thư viện TensorFlow. Ưu điểm nổi bật của Keras so với các thư
viện deep learning là cú pháp dễ sử dụng và trực quan của nó. Ngoài ra
nó còn có thể chạy trên cả CPU và GPU28.
- Một số hàm sử dụng trong mô hình:
o Conv2D: lớp tích chập. Tham số của lớp như ảnh sau:

Hình 23: Tham số lớp Conv2D


 Nếu tham số use_bias = True thì một “bias vector” sẽ được thêm
vào trong đầu ra.

25
https://vi.wikipedia.org/wiki/TensorFlow
26
https://topdev.vn/blog/tensorflow-la-gi/
27
https://en.wikipedia.org/wiki/Keras
28
https://trituenhantao.github.io/2020/08/21/keras-la-gi-gioi-thieu-ve-keras/

BÙI NHẬT TÀI_B1606838 xxvii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

 Nếu hàm kích hoạt activation khác “None” thì hàm kích hoạt sẽ
được áp dụng vào đầu ra của lớp. Hàm kích hoạt sẽ thường là
ReLU, Sigmoid, Linear, Softmax, tanh…
 Hàm kích hoạt ReLU sẽ giúp đầu ra của lớp không tồn tại giá trị
0. Nghĩa là hàm kích hoạt ReLU sẽ thay các giá trị âm bằng giá trị
0.
 Hàm kích hoạt Sigmoid đổi các giá trị (<-5) thành giá trị 0 và các
giá trị (>5) thành giá trị 1. Giá trị trả về của hàm kích hoạt này sẽ
luôn là 0 hoặc 1.
 Hàm kích hoạt Softmax là một hàm biến đổi vector hiện tại hành
một vector phân loại xác suất. Với các phần tử của vector đầu ra
có giá trị nằm trong khoảng (0,1) và có tổng bằng 1.
 Đầu vào sẽ là 4D tensor (batch_shape, channels, rows, cols) nếu
định dạng của dữ liệu là “channels_first” hoặc (batch_shape,
rows, cols, channels) nếu định dạng của dữ liệu là “channels_last”
 Đầu ra cũng là 4D tensor (batch_shape, filters, new_rows,
new_cols) nếu là “channels first” hoặc (batch_shape, new_rows,
new_cols, filters) nếu là “channels last”.
o MaxPooling2D: Giảm đầu vào bằng cách lấy Max của các giá trị
trong vùng được định sẵn (Ví dụ 2x2). Tham số như ảnh sau:

Hình 24: Tham số lớp MaxPooling2D


 Vùng lấy Max được định nghĩa bởi tham số pool_size
 Cửa sổ trượt sẽ được thay đổi qua mỗi kích thước bởi tham số
strides
 Nếu padding có hai giá trị là “valid” và “same”. Nếu giá trị là
“valid” thì sẽ không được đệm. Ngược lại nếu giá trị là “same” thì
đầu ra sẽ được đệm và sẽ có cùng kích thước dài và rộng so với
đầu vào.
 Đầu vào 4D tensor (batch_size, rows, cols, channels) nếu là
channels last hoặc (batch_size, channels, rows, cols) nếu là
channels first.

BÙI NHẬT TÀI_B1606838 xxviii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

 Đầu ra 4D tensor (batch_size, pooled_rows, pooled_cols,


channels) nếu là channels last hoặc (batch_size, channels,
pooled_rows, pooled_cols) nếu là channels first.
o Dense: lớp kết nối đầy đủ (Fully connected layer). Có các tham số
như sau:

Hình 25: Tham số lớp Dense


 Units: một số nguyên dương, số chiều đầu ra của lớp.
 Activation: hàm kích hoạt (ReLU, Softmax, Linear…)
 Use_bias: có sử dụng bias hay không
o Dropout: áp dụng “dropout” cho đầu vào. Ngẫu nhiên cho giá trị 0
vào với một tỷ lệ nhất định nhằm tránh tình trạng “overfitting” trong
quá trình “training”. Tham số như sau:

Hình 26: Tham số lớp Dropout


o Flatten: làm phẳng đầu vào mà không ảnh hưởng tới kích thước bó
“batch size”. Ví dụ nếu đầu vào có kích thước (32, 64, 64) với 32 là
batch size thì kết quả sau khi “flatten” sẽ là (32, 4096). Tham số hàm
như sau:

BÙI NHẬT TÀI_B1606838 xxix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 27: Tham số lớp Flatten


 Data_format: channels last hoặc channels first
o Adam: là một phương pháp “optimizer” bằng cách giảm “gradient”
dựa trên ước tính thích ứng của “moment” bậc nhất và bậc hai.

Hình 28: Tham số lớp Adam


o train_on_batch: Huấn luyện trên từng bó (batch) dữ liệu
o predict_on_batch: Dự đoán trên một bó (batch) dữ liệu.
9.11. Công cụ cắt ảnh từ video Free Video to JPG Converter
Công cụ Free Video to JPG Converter29 có thể cắt ảnh từ video theo
khung hình, thời gian, hoặc theo một số lượng ảnh nhất định từ video.

29
https://www.dvdvideosoft.com/products/dvd/Free-Video-to-JPG-Converter.htm

BÙI NHẬT TÀI_B1606838 xxx


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 29: Giao diện ứng dụng Free Video to JPG Converter
Ảnh sau khi cắt sẽ có cùng độ phân giải với video và phần mềm hoàn
toàn miễn phí.
9.12. Công cụ gán nhãn ảnh labelImg
LabelImg30 là một công cụ để gán nhãn ảnh được viết bằng Python và
Qt cho phần giao diện.
Kết quả gán nhãn sẽ được lưu dưới dạng file XML trong pascalVOC
format, một format được sử dụng bởi ImageNet 31. Dự án ImageNet là một
cơ sở dữ liệu ảnh lớn với hơn 14 triệu ảnh được gán nhãn bằng tay.
ImageNet được thiết kế để sử dụng trong nghiên cứu nhận dạng đối tượng.
Bên cạnh đó LabelImg còn hỗ trợ YOLO format, lưu dưới dạng file txt.
9.13. Công cụ chuyển đổi format annotation Roboflow
Roboflow32 là một công cụ chuyển đổi hình ảnh thô thành mô hình thị
giác máy tính. Roboflow còn cung cấp những công cụ tiền xử lý hình ảnh,
huấn luyện mô hình, vẽ biểu đồ kết quả, chia sẻ dữ liệu…
Ngoài ra, Roboflow còn hỗ trợ chuyển đổi qua lại giữa các format
annotation một cách nhanh chóng. Trong bài toán này, ta sử dụng chuyển
pascalVOC format qua RetinaNet format.
9.14. API gửi SMS – Nexmo
Nexmo33 (hiện tại là đã đổi tên thành Vonage). Là một API được xây
dựng để kết nối giữa các ứng dụng. Nexmo cung cấp nhiều API như gửi
SMS, Voice, Video, Verify…
Nexmo hỗ trợ nhiều ngôn ngữ như: Python, Java, NodeJS, PHP,
Ruby,… Giúp các lập trình viên có thể dễ dàng tiếp cận và sử dụng nhất.
Nexmo có chính sách dùng thử miễn phí, chỉ gửi SMS cho số điện
thoại đã được đăng ký trước. Nếu trả phí sẽ được gửi SMS cho tất cả các
số điện thoại như thường.
9.15. API gửi email – SendGrid
SendGrid34 là một API cung cấp dịch vụ gửi email và các dịch vụ
SMTP khác. SendGrid cũng có hỗ trợ nhiều ngôn ngữ như: Python, Java,
NodeJS, PHP, C#, Go, Ruby…và phương thức để gửi email Web API và
SMTP Relay.

30
https://github.com/tzutalin/labelImg
31
http://www.image-net.org/
32
https://roboflow.com/
33
https://developer.nexmo.com/
34
https://sendgrid.com/

BÙI NHẬT TÀI_B1606838 xxxi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

SendGrid cho phép dùng thử miễn phí, gửi và nhân 100 email mỗi
ngày cho đến mãi mãi. Ngoài ra còn có các gói trả phí với đầy đủ các chức
năng và dịch vụ của SendGrid.
9.16. Thư viện thiết kế giao diện Pyqt5
Qt là một thư viện C++ đa nền tảng. Cung cấp các API để truy cập
vào nhiều bộ phận của máy tính cũng như di động như định vị, kết nối
NFC, Bluetooth… và phát triển giao diện người dùng.
Pyqt535 là sự liên kết Python và Qt phiên bản 5. Cho phép Python
được sử dụng làm ngôn ngữ phát triển ứng dụng thay thế cho C ++ trên tất
cả các nền tảng được hỗ trợ bao gồm iOS và Android.
Với sự kết hợp giữ sự đơn giản của Python, và tốc độ của C++. Giúp
người dùng xây dựng một ứng dụng “GUI” một cách dễ dàng và nhanh
chóng hơn. Đặc biệt là thư viện hoàn toàn miễn phí.
9.17. Hệ quản trị cơ sở dữ liệu MySQL
MySQL36 là hệ quản trị cơ sở dữ liệu mã nguồn mở phổ biến nhất thế
giới và được các nhà phát triển Oracle Corporation rất ưa chuộng trong
quá trình phát triển ứng dụng. MySQL được viết bằng C, C++. Do đó,
chúng có tốc độ truy xuất cao, ổn định và dễ sử dụng. Ngoài ra MySQL
còn hoạt động trên đa nền tảng và có tính bảo mật cao.
MySQL có thể tải miễn phí từ trang chủ 37. Có rất nhiều phiên bản
thích hợp với nhiều hệ điều hành hiện nay.

35
https://pypi.org/project/PyQt5/
36
https://vi.wikipedia.org/wiki/MySQL
37
https://www.mysql.com/

BÙI NHẬT TÀI_B1606838 xxxii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

CHƯƠNG 2. THIẾT KẾ VÀ CÀI ĐẶT

1. Thiết kế hệ thống
Hệ thống đề xuất hoạt động như sơ đồ sau:

Hình 30: Sơ đồ hoạt động của hệ thống

BÙI NHẬT TÀI_B1606838 xxxiii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Đầu tiên, dữ liệu huấn luyện là video được lấy từ camera giao thông. Sau đó,
dùng “Video to JPG Converter” để cắt ảnh ra từ video mỗi 5 frame. Ảnh thu được
sẽ dùng “LabelImg” để gán nhãn những xe có thể quan sát rõ được bằng mắt, những
xe không bị che khuất quá 2/3 như ảnh minh họa sau:

Hình 31: Ảnh minh họa các xe được gán nhãn trong một ảnh
Sau mỗi ảnh đã được gán nhãn, thu được một file xml (pascal VOC format)
gọi là “annotation file”. Lấy file này và file ảnh kèm theo, đưa vào “Roboflow” để
chuyển định dạng thành “Simple annotation” (Ratinanet format), dạng chuẩn dữ
liệu huấn luyện cho mô hình và phân chia thành các tập huấn luyện, tập đánh giá.
Sau khi chuyển xong, ở mỗi tập huấn luyện và tập đánh giá sẽ gồm có một file csv
và các ảnh kèm theo.
Tiếp đó sử dụng tập huấn luyện để huấn luyện mô hình xây dựng được từ
Tensorflow và Keras. Sau khi huấn luyện xong, sử dụng tập đánh giá để đánh giá
mô hình đã huấn luyện được. Tùy chỉnh lại các tham số và tiến hành huấn luyện lại
nếu kết quả đánh giá không được tốt.
Sau khi đã huấn luyện được mô hình có độ chính xác tốt (~90%). Tiến hành
kiểm tra với dữ liệu mới. Dữ liệu mới cũng là một video được thu từ camera giao
thông. Tuy nhiên ở video mới này, mỗi 20 giây mới lấy một ảnh ra. Ảnh này sẽ
được tiền xử lý thành dạng chuẩn đầu vào của mô hình và đưa vào mô hình đã được
huấn luyện ở trên để dự đoán các xe có trong ảnh kèm theo vị trí của xe đó. Dựa vào
vị trí của các xe, xác định số lượng xe đang có ở trong vùng đếm xe đã định sẵn như
ảnh minh họa sau:

BÙI NHẬT TÀI_B1606838 xxxiv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 32: Các xe được đếm trong vùng định sẵn


Dựa vào loại xe, số xe trong vùng đưa ra kết luận ảnh thuộc nhãn nào. Sau mỗi
5 lần kết luận, tức là khoảng 1 phút 40 giây. Thông báo bằng SMS sẽ được gửi đi
dựa vào kết quả trung bình cao nhất của 5 lần kết luận. Sau đó kết quả sẽ được lưu
vào cơ sở dữ liệu.
2. Cài đặt giải thuật
2.1. Chuẩn bị dữ liệu
2.1.1. Thu thập dữ liệu, gán nhãn
Từ video thu thập được, ảnh sẽ được lấy mỗi 5 khung hình 38 bằng
ứng dụng Free Video to JPG Converter.
Sau khi có ảnh, tiếp tục sử dụng labelImg để gán nhãn cho các ảnh.
Nhãn được quy định bao gồm: xe 2 bánh, xe 4 bánh và xe ưu tiên. Ảnh
minh họa quá trình gán nhãn cho 01 ảnh.

38
https://miai.vn/2020/01/13/ket-hop-object-detection-va-object-tracking-xay-dung-he-thong-dem-phuong-
tien-giao-thong-tren-duong/

BÙI NHẬT TÀI_B1606838 xxxv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 33: Vẽ khung bao quanh đối tượng

Hình 34: Chọn nhãn cho đối tượng vừa được vẽ khung
Cứ lặp lại cho đến khi gán hết nhãn cho các đối tượng trong ảnh
(chỉ chọn đối tượng có thể nhìn thấy rõ bằng mắt, đối tượng không bị
che khuất bởi một đối tượng khác hoặc các cảnh vật xung quanh).
Kết quả ảnh đã được gán nhãn (Annotations file) sẽ được lưu cùng
thư mục với thư mục ảnh đó, với định dạng file XML (nếu chọn
pascalVOC format) hoặc dạng file TXT (nếu chọn YOLO format).

BÙI NHẬT TÀI_B1606838 xxxvi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 35: Ảnh minh họa một file annotations XML


(pascalVOC format)
Trong pascalVOC format (ảnh minh họa trên), mỗi đối tượng là
một “object” có nhãn là “name”, khung bao quanh đối tượng nằm trong
“bndbox”, có tọa độ là “xmin”, “ymin”, “xmax”, “ymax”. Trong đó,
xmin - ymin là góc trên bên trái, xmax – ymax là góc dưới bên phải của
khung bao quanh đối tượng.

Hình 36: Ảnh minh họa một file annotations TXT (YOLO format)

Hình 37: Ảnh minh họa file classes.txt (YOLO format)


Trong YOLO format (02 ảnh minh họa 36, 37), ảnh đầu thể hiện
01 file annotations của các đối tượng được gán nhãn có trong một ảnh.
Cột đầu là nhãn (dạng số) tương ứng với số dòng của tên nhãn đối
tượng (số dòng được đếm từ 0). Ví dụ, ở dòng đầu tiên ảnh minh họa

BÙI NHẬT TÀI_B1606838 xxxvii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

thứ nhất. Cột thứ nhất có số 0, tương ứng với đối tượng có nhãn là 2
bánh (dòng số 0 trong file classes.txt - ảnh minh họa thứ 02). Tương tự
với dòng 2, dòng 3 của ảnh minh họa thứ nhất. Các đối tượng đều có
nhãn là 1 (dạng số). Nghĩ là tên nhãn của đối tượng là “4 bánh”. Bốn
cột tiếp theo lần lượt là tọa độ của đối tượng được gán nhãn “xmin”,
“ymin”, “xmax”, “ymax”. Ở format này không lưu đường dẫn của file
ảnh, vì file annotations này sẽ được lưu cùng với file ảnh.
Tuy nhiên, đối với mô hình Faster R-CNN, cụ thể ở bài toán này.
Ta sử dụng simple annotation format (Retinanet format). Kết quả các
khung bao quanh đối tượng, nhãn, đường dẫn tới ảnh sẽ chỉ nằm trong
01 file duy nhất. Trong đó, mỗi dòng có dạng (Path to file, Xmin,
Ymin, Xmax, Ymax, label). Một ảnh sẽ có thể có nhiều dòng trong file
tùy thuộc vào số lượng đối tượng được gán nhãn trong ảnh đó.

Hình 38: Ảnh minh họa annotations csv file (Retinanet format)
Do đó, sử dụng Roboflow để chuyển từ pascalVOC format hoặc
YOLO format sang simple annotation format (Retinanet format).
Roboflow hỗ trợ chuyển đổi qua lại giữa rất nhiều format như ảnh bên
dưới.

Hình 39: Các format có thể chuyển đổi trong Roboflow


Cuối cùng, thu được 03 tập dữ liệu train, kiểm tra, valid đã được
gán nhãn với format simple annotations (RetinaNet format).
2.1.2. Xử lý dữ liệu đầu vào cho mô hình

BÙI NHẬT TÀI_B1606838 xxxviii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Ảnh đầu vào đầu tiên sẽ được “resize” về kích thước chung
(height, width, channels) = (720, 1280, 3). Đây là kích thước của ảnh
trong tập huấn luyện. Sau đó, ảnh sẽ tiếp tục được “resize” về kích
thước được quy định ban đầu ở tham số “im_size” theo đó nếu
“im_size” bằng 600 thì kích thước của ảnh sau khi được “resize” sẽ là
(height, width, channels) = (600, 1066, 3). Tỷ lệ scale ở đây sẽ là 1.2
(bằng 720/600), do đó width mới của ảnh sẽ là 1066 (bằng 1280/1.2).
Ảnh sau khi được “resize” thì các giá trị pixel sẽ được chuyển về
dạng float 32 để tiếp tục bước chuẩn hóa, giúp mô hình được hội tụ
nhanh hơn. Trước khi thực hiện chuẩn hóa, chuyển đổi RGB về BGR
theo chuẩn màu trong OpenCV. Với mô hình VGG16 thì “channel-
mean” đã được tính sẵn là [103.939, 116.779, 123.68]. Để thực hiện
chuẩn hóa, trừ lần lượt các giá trị cột [0, 1, 2] cho các số “channel-
mean” ở trên theo đúng thứ tự. Cuối cùng là mở rộng thêm 1 chiều cho
mảng ở trên để làm chuẩn đầu vào của mô hình, do Keras sử dụng dạng
“channel last” nên dữ liệu cuối cùng sẽ có dạng [batch_size, height,
width, channels]. Nếu là dự đoán một ảnh mới thì batch_size sẽ bằng 1.
Bên cạnh đó, riêng khi huấn luyện mô hình. Các dữ liệu trước khi
được xử lý sẽ được sử dụng “augmentation” để tăng cường sự về sự đa
dạng của dữ liệu. Cụ thể sử dụng “horizontal flip” để lật ngang ảnh, ví
dụ trong thực tế nếu xe đi từ trái qua phải, sau khi sử dụng “horizontal
flip” ta sẽ có thêm ảnh xe chạy từ phải qua trái. Qua đó làm cho dữ liệu
được đa dạng hơn, giúp mô hình có thể dự đoán tốt hơn.
2.2. Xây dựng mô hình
Mô hình được xây dựng trên ba mạng neural chính là: mạng trích xuất
đặc trưng, mạng gợi ý vùng và mạng nhận diện.
2.2.1. Mạng trích xuất đặc trưng - VGG16
Ở mạng này, sử dụng những mạng phân loại ảnh đã được huấn
luyện, nổi tiếng như VGG16 và ResNet50. Cụ thể trong bài toán này sử
dụng mạng VGG16 để trích xuất ra những đặc trưng từ ảnh. Cấu tạo từ
05 khối. Mỗi khối gồm 2 hoặc 3 lớp chập (Convolutional 2D) với hàm
kích hoạt “ReLU”, “padding” là “same” để đổi các giá trị âm về giá trị
0 và giữ nguyên kích thước của “feature maps”, kích thước cửa sổ trượt
là (3,3) và một lớp gộp “MaxPooling2D” lấy max vùng 2x2 để lựa chọn
ra điểm đặc trưng nhất trong những đặc trưng. Đầu vào của mạng này
sẽ là một tensor 4D (batch size, rows, cols, channels). Đầu ra cũng là

BÙI NHẬT TÀI_B1606838 xxxix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

một tensor 4D (batch size, new rows, new cols, num_features) gọi là
“feature map”.
Quá trình hoạt động của của mô hình khi ở mạng này được mô tả
như ảnh sau:

Hình 40: Quá trình trích xuất đặc trưng ở mạng VGG16

Ảnh đầu vào sau khi được xử lý để làm đầu vào cho mô hình như
đã trình bày ở trên sẽ có dạng tensor 4D (batch size, rows, cols,
channels) tương ứng với (1, 600, 1066, 3) (1 ảnh, height = 600, width =
1066, channels = RGB = 3). Tiếp đó, tensor đầu vào sẽ được đưa vào
mô hình mạng VGG16. Ở đó, tensor được trải qua các lớp Conv2D và
MaxPooling2D. Quá trình tính toán được mô tả như ảnh bên dưới:

Hình 41: Ảnh minh họa quá trình “convolution”


với kích thước ma trận là 5x5, kích cỡ cửa sổ trượt là 3x3.

Hình 42: Ảnh minh họa quá trình Maxpooling với vùng 2x2

BÙI NHẬT TÀI_B1606838 xl


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Kết quả sau khi qua mạng VGG16 sẽ thu được một tensor 4D
(batch size, new rows, new cols, num_features) tương ứng với (1 ảnh,
37, 66, 512) gọi là feature maps.
2.2.2. Mạng gợi ý vùng - RPN
Mạng gợi ý vùng (Region proposal network – RPN): sử dụng 03
mạng đơn với 03 lớp tích chập để tạo ra một số “bounding boxes” gọi là
“Region of interests” (ROIs). Chúng có khả năng cao chứa đối tượng.
Đầu tiên sử dụng “feature maps” lấy được từ mạng trích xuất đặc trưng
ở trên đưa qua một cửa sổ trượt với kích thước (3,3), hàm kích hoạt là
“ReLU”, padding là “same”. Sau đó tiếp tục sử dụng 2 cửa sổ trượt với
kích thước (1,1) hàm kích hoạt lần lượt là “sigmoid” và “linear” để cho
ra các vùng gợi ý và xác suất chứa đối tượng của các vùng đó. Đầu vào
của mạng này sẽ là “feature maps” và đầu ra sẽ là vùng gợi ý và xác
suất chứa đối tượng tương ứng.
Quá trình hoạt động được mô tả như ảnh sau:

Hình 43: Ảnh minh họa quá trình hoạt động ở mạng RPN
Feature maps sau khi qua lớp Conv2D của mạng RPN thì vẫn có
kích thước tensor như cũ do padding của lớp Conv2D là “same”. Tiếp
đó, sau khi qua lớp Conv2D có hàm kích hoạt là “softmax” sẽ thu được
tensor (1, 37, 66, 9) tương ứng (1 ảnh, rows, cols, số anchors). Số
anchors là số lượng “anchor boxes” sẽ được dự đoán tại mỗi điểm trên
“feature maps”, được tính bằng tích chiều dài của “anchor sizes” và
“anchor ratios” với “anchor sizes” bằng [128, 256, 512] và “anchor
ratios” bằng [1:1, 1:2*√ 2, 2*√ 2:1]. Tensor này sẽ được dùng để đưa ra
xác suất có đối tượng trong các vùng gợi ý. Song song đó, khi qua lớp
Conv2D có hàm kích hoạt là “linear” thì sẽ thu được tensor (1, 37, 66,
36) tương ứng với (1 ảnh, rows, cols, số anchors * 4). Tensor này sẽ
được dùng để dự đoán vị trí của vùng được gợi ý.

BÙI NHẬT TÀI_B1606838 xli


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Kết quả sau khi qua mạng RPN sẽ thu được 02 tensor dùng để dự
đoán vị trí các vùng gợi ý và xác suất chứa đối tượng tương ứng của
chúng.
2.2.3. Mạng nhận diện - RCNN
Mạng nhận diện (Detection Network – RCNN Network): sử dụng
kết quả từ hai lớp trên để tính toán kết luận nhãn và “bounding box”
cuối cùng của đối tượng. Lớp đầu tiên của mạng này là
“RoiPoolingConv”. Lớp này sẽ biến đổi, thu nhỏ số chiều của tensor
đầu vào từ tensor 4D thành 3D tương ứng với đầu ra dựa trên các tham
số là kích thước gộp (Pooling size) và “num rois”. Đầu vào của lớp này
sẽ là danh sách 02 tensor 4D (1, rows, cols, channels) và [1, num rois,
4] (x, y, w, h). Đầu ra của lớp này là 01 tensor 3D (1, num_rois,
channels, pool_size, pool_size). Tiếp theo được làm phẳng (flatten) và
đưa liên tiếp qua 02 lớp “fully connected” (Dense) và 02 lớp “dropout”
được xen kẽ với nhau. Cuối cùng sử dụng hai hàm kích hoạt là
“softmax” và “linear” để đưa ra nhãn và “bounding box” cho đối tượng
được dự đoán trong ảnh. Sau khi có kết quả sẽ tính toán “Intersection of
Union” và “non max suppression” (NMS) để tính toán độ tin cậy và
loại bỏ những “bounding boxes” có độ chính xác thấp, chỉ giữ lại một
“bounding box” tương ứng với một nhãn của đối tượng được dự đoán.
Tránh tình trạng một nhãn mà có tới 02 hoặc 03 “bounding boxes”. Kế
đến là tính toán để đưa thông số tọa độ “bounding boxes” từ “feature
maps” về tọa độ hình có kích thước hình ban đầu.
Quá trình hoạt động được mô tả như ảnh:

Hình 44: Ảnh minh họa quá trình hoạt động ở mạng nhận diện

Đầu vào của lớp “RoI Pooling” này cụ thể là 2 tensor 4D (1, 37,
66, 512) và (1, 256, 4). Với “Pooling size” là 7x7 và “num rois” là 256
thì đầu ra tương ứng là một tensor 3D (1, 256, 7, 7, 512). Sau đó đầu ra

BÙI NHẬT TÀI_B1606838 xlii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

được làm phẳng (Flatten) và tiếp tục trải qua 02 lớp kết nối đầy đủ
(Dense) và “Dropout”. Kích thước sẽ thay đổi như ảnh mô tả sau:

Hình 45: Kích thước tensor sau khi qua từng lớp “Flatten”,
“Dense”, “Dropout” và đầu ra tương ứng
Kết quả đầu ra của lớp này thu được 02 tensor có kích thước (1,
256, 4) và (1, 256, 12) tương ứng với (1 ảnh, num rois, num classes) và
(1 ảnh, num rois, 4 * (num classes – 1)). Đó chính là nhãn và “bounding
box” tương ứng. Sau khi trải qua một số bước tính toán “IoU”, “NMS”
sẽ thu được những “bounding box” có độ tin cậy cao (>70%) (ngưỡng
có thể tùy chỉnh) và cuối cùng là tính toán chuyển các tọa độ về với
đúng kích thước ảnh ban đầu.
2.3. Huấn luyện, đánh giá mô hình
2.3.1. Huấn luyện
- Trước khi huấn luyện, tiến hành thiết lập các tham số cho mô hình như:
o Num_rois: số lượng RoIs được xử lý trong 1 lần (4, 256, 512,
1024)
o num_epochs: số lần lặp qua toàn bộ dữ liệu huấn luyện (10, 20, 30,
…, 80)
o epoch_length: số lượng “record” được duyệt trong 1 epoch (1000)
o Im_size: kích thước nhỏ nhất của ảnh, sử dụng để “resize” ảnh đầu
vào (300, 600)

BÙI NHẬT TÀI_B1606838 xliii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

o anchor_box_scales: tỷ lệ của “anchor box” ([64, 128, 256], [128,


256, 512], [32, 64, 128])
o Augmentation: thực hiện các xử lý dữ liệu làm đa dạng dữ liệu
huấn luyện (horizontal flip, vertical flip, rotate 90)
- Tiếp đó, dữ liệu trong tập train sẽ được trộn lên vào tạo thành các bó dữ
liệu. Sau đó từng bó sẽ được đưa vào mô hình để huấn luyện. Qua mỗi
bó thì độ chính xác và chỉ số lỗi sẽ được ghi nhận. Sau mỗi epoch mô
hình sẽ được tối ưu bằng SGD39. Cứ như vậy cho tới hết số lần epoch.
2.3.2. Kiểm tra độ chính xác của mô hình
Sau khi có được mô hình đã huấn luyện. Sử dụng tập kiểm tra để
đánh giá độ chính xác cho mô hình. Lúc này tập kiểm tra sẽ không sử
dụng “augmentation”. Từng ảnh sẽ được đưa qua mô hình để dự đoán
các nhãn và “bounding boxes” trong ảnh. Sau đó so sánh với các nhãn và
“bounding boxes” đã được gán nhãn từ ban đầu để đánh giá chính xác
của mô hình.
Kịch bản huấn luyện, đánh giá, kiểm tra theo từng tham số của mô
hình với từng tập dữ liệu kiểm tra được mô tả như ảnh sau:

Hình 46: Kịch bản kiểm tra đánh giá mô hình


theo từng bộ tham số khác nhau với từng tập dữ liệu kiểm tra

39
https://keras.io/api/optimizers/sgd/

BÙI NHẬT TÀI_B1606838 xliv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

2.4. Dự đoán với dữ liệu mới, thông báo và lưu kết quả
Đầu tiên quy định một vùng đếm xe, khi xe ở trong vùng sẽ được đếm
như ảnh sau:

Hình 47: Vùng quy định đếm xe

Lần lượt chọn các điểm là đỉnh của vùng đếm xe (các điểm màu xanh
lá) và một điểm nằm trong vùng đếm xe (điểm màu đỏ). Những xe bên
ngoài vùng trên do quá nhỏ hoặc không đủ nguyên xe nên mô hình sẽ
không nhận diện được. Vì vậy, chỉ tính các xe đi vào vùng trên.
Ảnh sau khi được dự đoán bởi mô hình sẽ trả ra một “dics” gồm các
“boxes”, nhãn kèm theo và độ chính xác của nhãn đó. Trước đó là giai đoạn
tính toán “IoU” và “non_max_suppression” để loại bỏ những “bounding
boxes” dư thừa. Và tính toán đưa những giá trị tọa độ của các “bounding
boxes” từ kích thước của “feature map” về giá trị có kích thước của ảnh đầu
vào.
Phần dự đoán sẽ lấy những box có độ chính xác >70%. Độ lớn của box
bao quanh đối tượng sẽ tùy thuộc vào vị trí thực mà mô hình dự đoán được.
(x1,y1,x2,y2)
Sau mỗi 5 lần kết luận. Nhãn có số lần kết luận nhiều nhất sẽ được gửi
thông báo đi bằng SMS và email. Sử dụng Nexmo để gửi SMS đến số điện
thoại đã được định sẵn. Và SendGrid để gửi email. Thông báo thời gian và
tình hình giao thông hiện tại. Sau đó lưu kết quả vào cơ sở dữ liệu.

BÙI NHẬT TÀI_B1606838 xlv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

3. Xây dựng cơ sở dữ liệu logs


Xây dựng một cơ sở dữ liệu để lưu trữ thông tin kết quả lưu lượng được dự
đoán. Bao gồm: ngày, giờ, số lượng xe hai bánh, bốn bánh, xe ưu tiên, tình trạng
mật độ (low, medium, traffic jam) và hình ảnh kèm theo.
Thông tin bảng được mô tả như ảnh sau:

Hình 48: Thông tin bảng logs


4. Xây dựng giao diện người dùng – GUI
Sử dụng thư viện Pyqt5 để thiết kế giao diện. Xây dựng hệ thống gồm 02
chức năng chính: dự đoán tình trạng giao thông dựa trên video được lấy từ
camera giao thông và theo dõi tình trạng giao thông được lưu lại trên cơ sở dữ
liệu.
Giao diện chức năng dự đoán tình trạng giao thông dựa trên video được
thiết kế như ảnh sau:

BÙI NHẬT TÀI_B1606838 xlvi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 49: Giao diện chức năng dự đoán tình trạng giao thông

Trong đó:
- Nút FROM FILE: chọn file video.
- Nút PLAY: Bắt đầu xử lý video.
- Nút Config: Mở giao diện config để tùy chỉnh các tham số cho ứng
dụng.
- Nút RESET: Làm trống form nhập bao gồm path file, phone number,
email
- Input text Phone number: nhập số điện thoại cần gửi thông tin đến
- Input text Email: nhập email cần gửi thông tin đến. Có thể nhập nhiều
email (mỗi email cách nhau bởi dấu chấm phẩy ;)
Khi người dùng nhấn vào nút Config thì giao diện config sẽ được hiện lên
như ảnh minh họa sau:

BÙI NHẬT TÀI_B1606838 xlvii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 50: Giao diện config


Trong đó:
- Process image every X frame: xử lý ảnh mỗi X khung hình (VD 10)
- Create new thread every X frame: tạo luồng mới để xử lý mỗi X khung
hình (VD 6)
- Check result every X frame: kiểm tra kết quả của các luồng mỗi X khung
hình (VD 20)
- Send SMS every X frame: gửi kết quả cho người dùng mỗi X khung hình
(VD 50)
- Rotate image: Xoay ảnh một góc X độ trước khi dự đoán. Mặc định là 0
(không xoay).
- Send sms: Có gửi sms và email hay không.
- Status: Quy định số lượng xe để đưa ra kết luận về tình trạng giao thông
hiện tại. Tình trạng sẽ được quy định bằng Low < Min < Medium < Max
< Traffic jam. Với “Low”, “Medium” và “Traffic jam” là các tình trạng
giao thông.
Sau khi chọn các tham số cho ứng dụng; điền thông tin “phone number”,
“Email”; chọn file video và nhấn nút play. Một khung ảnh sẽ được hiện lên
để người dùng chọn vùng đếm xe. Người dùng lần lượt click chuột trái để
chọn các điểm là các đỉnh của vùng đếm xe. Điểm của vùng đếm xe sẽ có
màu xanh. Khi chọn trên 02 điểm, ứng dụng sẽ tự động nối các điểm đó lại
bằng đường màu vàng. Ảnh minh họa:

BÙI NHẬT TÀI_B1606838 xlviii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 51: Ảnh minh họa việc chọn điểm là đỉnh của vùng đếm xe
(các điểm màu xanh)
Khi chọn đủ các đỉnh của vùng đếm xe (lưu ý không cần chọn lại điểm ban
đầu), tiếp tục click chuột phải để chọn một điểm bên trong vùng vừa chọn
(điểm có màu đỏ). Điểm này sẽ hỗ trợ tính toán các xe bên trong vùng và
ngoài vùng dựa vào phép toán vị trí tương đối của 2 điểm đối với đường
thẳng. Ảnh minh họa:

Hình 52: Ảnh minh họa việc chọn điểm bên trong vùng đếm xe (điểm màu đỏ)
Trong quá trình vẽ có thể sử dụng phím “backspace” để xóa lần lượt các
điểm vừa chọn (mỗi lần xóa một điểm).
Khi chọn đủ các điểm là các đỉnh của vùng đếm xe (ít nhất 03 điểm) và 01
điểm bên trong vùng đếm xe. Nhấn phím “Enter” để xác nhận các điểm. Lúc
này ứng dụng sẽ nối các điểm của vùng đếm xe lại. Ảnh minh họa:

BÙI NHẬT TÀI_B1606838 xlix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 53: Ảnh minh họa khi nhấn “enter” sau khi chọn đủ các điểm là đỉnh
của vùng đếm xe và một điểm bên trong vùng đếm xe
Đến đây nhấn phím bất kỳ để kết thúc bước chọn vùng đếm xe và đầu xử lý.
Sau một thời gian xử lý, ứng dụng sẽ show kết quả đếm xe sau mỗi 10
frame như đã quy định ở bước config.

Hình 54: Kết quả đếm xe ở frame thứ 10


Tiếp đó, theo như tham số đã quy định ở bước config. Cụ thể ở ví dụ này,
frame thứ 50 kết quả tình trạng giao thông sẽ được gửi cho người dùng
thông qua sms và email. Đối với email, nội dung sẽ được kèm theo ảnh.

BÙI NHẬT TÀI_B1606838 l


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 55: Nội dung SMS thông báo tình trạng giao thông

Hình 56: Nội dung email thông báo tình trạng giao thông
Cứ như vậy hệ thống sẽ tiếp tục xử lý cho đến hết video.
Tiếp theo là giao diện theo dõi tình trạng giao thông dựa vào “log” được lưu
lại trên cơ sở dữ liệu. Ảnh minh họa:

BÙI NHẬT TÀI_B1606838 li


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 57: Giao diện theo dõi tình trạng giao thông (logs)
Thông tin gồm có: Ngày (Date), giờ (Time) ghi nhận tình trạng giao thông;
số lượng xe 2 bánh (Bike), 4 bánh (Car), xe ưu tiên (Priority); tình trạng
giao thông (status) và ảnh kèm theo.
Chức năng “search” sẽ tìm kiếm theo tình trạng giao thông (status). Ảnh sau
minh họa việc tìm theo tình trạng “medium”.

Hình 58: Tìm kiếm tình trạng giao thông “medium”


Chức năng “filter” sẽ lọc theo ngày ghi nhận tình trạng giao thông (Date).
Ảnh minh họa chọn ngày lọc:

BÙI NHẬT TÀI_B1606838 lii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 59: Ảnh minh họa việc chọn ngày “filter”


Ngoài ra, khi “double click” vào link ảnh ở cột “image” thì ảnh minh họa
kèm theo sẽ được hiện lên.

Hình 60: Ảnh sau khi “D-click” vào link ảnh ở cột image
Dựa vào việc có thể truy xuất lại kết quả theo dõi tình trạng giao thông theo
từng thời gian như trên. Giúp cho việc theo dõi, đánh giá được dễ dàng, và
có thể dựa vào đó để đưa ra các giải pháp giúp khắc phục tình trạng giao
thông xấu.

BÙI NHẬT TÀI_B1606838 liii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

CHƯƠNG 3. KẾT QUẢ THỰC NGHIỆM

1. Mô trường thực nghiệm


Quá trình huấn luyện, đánh giá, kiểm tra mô hình được thực hiện trên
Google Colab với cấu hình Intel(R) Xeon(R) CPU @ 2.20GHz 2 Core, 12 GB
RAM, GPU Tesla P100-PCIE-16GB.
Quá trình demo dự đoán với các video kiểm tra được thực hiện trên máy
tính Dell Inspiron n3443b Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz (4
CPUs), 8 GB RAM, GPU NVIDIA GeForce 920M.

2. Tập dữ liệu
Dữ liệu được cung cấp bởi Công An phường Vĩnh Thanh Vân – TP Rạch
Giá – tỉnh Kiên Giang. Gồm có 03 góc camera (CAM1, CAM3, CAM5). Vị trí
đặt camera đường Lê Lợi (đối diện bệnh viện tỉnh Kiên Giang). Các video clip
dữ liệu đều có thời lượng gần 1 tiếng. Độ phân giải ở góc CAM1 và CAM5 là
1920x1080, FPS lần lượt là: 15 khung hình/giây và 12 khung hình/giây. Riêng
độ phân giải ở góc CAM3 là 1280x720, FPS: 10 khung hình/giây. Cảnh quay ở
video clip góc CAM1 là vào ban ngày, trời nắng, thời gian từ 10 giờ 13 phút
sáng ngày 01-11-2020 đến 11 giờ 13 phút sáng cùng ngày. Cảnh quay ở video
clip góc CAM3 cũng vào ban ngày, trời nắng, thời gian từ 10 giờ tới 11 giờ sáng
ngày 09-09-2019. Video clip góc CAM5 có thời gian từ 16 giờ 23 phút tới 17
giờ 23 phút chiều ngày 12-11-2020, cảnh quay ban đầu trời nắng nhưng tới
khoảng 16 giờ 50 phút thì trời bắt đầu mưa trong vòng khoảng 15 phút. Các ảnh
sau mô tả lại góc quay của CAM1, CAM3 và CAM5.

Hình 61: Cảnh quay và góc quay của góc CAM1

BÙI NHẬT TÀI_B1606838 liv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 62: Cảnh quay và góc quay của góc CAM3

Hình 63: Cảnh quay và góc quay của góc CAM5

Hình 64: Cảnh quay và góc quay của góc CAM5 khi trời mưa

Dữ liệu huấn luyện, đánh giá và kiểm tra sẽ được lấy từ video ở góc CAM3.
Ảnh được lấy mỗi 5 frame, sau đó được ngẫu nhiên phân chia thành các tập

BÙI NHẬT TÀI_B1606838 lv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

huấn luyện, đánh giá và kiểm tra. Tập dữ liệu huấn luyện gồm 1260 ảnh. Có tỷ
lệ các phương tiện giao thông được gán nhãn như trong biểu đồ sau:

Hình 65: Biểu đồ thể hiện số lượng đối tượng ứng với từng nhãn
trong tập train ban đầu

Từ tập dữ liệu ban đầu trên, dựa vào đặc trưng của dữ liệu và phương pháp
ra đưa ra kết luận ùn tắc. Nhãn được gom lại thành 2 bánh, 4 bánh và xe ưu tiên,
với tỷ lệ như ảnh sau ('bike', 15767), ('car', 2658), ('priority', 183):

BÙI NHẬT TÀI_B1606838 lvi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 66: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn
trong tập train sau khi gom nhãn

Tập dữ liệu “valid” gồm 360 ảnh. Có tỷ lệ các phương tiện ('bike', 4551),
('car', 753), ('priority', 59) như ảnh sau:

Hình 67: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn
trong tập đánh giá

Tập dữ liệu kiểm tra 1 (test1) gồm 180 ảnh được chia ra từ video góc
CAM3, có tỷ lệ các phương tiện ('bike', 2222), ('car', 349), ('priority', 30) như
ảnh sau:

BÙI NHẬT TÀI_B1606838 lvii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 68: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn
trong tập test1 góc CAM3 (180 ảnh)

Tập dữ liệu kiểm tra 2 (test2) gồm 100 ảnh được lấy từ video ở góc CAM1.
Ảnh được lấy mỗi 5 frame từ đầu video cho đến khi đủ 100 ảnh. Có tỷ lệ các
phương tiện ('bike', 601), ('car', 71) như ảnh sau:

Hình 69: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn
trong tập test2 góc CAM1 (100 ảnh)

Tập dữ liệu kiểm tra 3 (test3) gồm 100 ảnh được lấy từ video ở góc CAM5.
Ảnh được lấy từ toàn bộ video. Có tỷ lệ các phương tiện ('bike', 669), ('car', 82),
('priority', 1) như ảnh sau:

BÙI NHẬT TÀI_B1606838 lviii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 70: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn
trong tập test3 góc CAM5 khi chưa xoay(100 ảnh)

Nhận thấy góc CAM5 bị lệch so với góc CAM3 (tập dữ liệu huấn luyện).
Do đó kết quả đánh giá sẽ không được tốt. Để cải thiện vấn đề trên, cần xoay
ảnh một góc khoảng 15 độ để giảm bớt độ lệch. Giúp mô hình nhận diện được
tốt hơn. Tập dữ liệu kiểm tra 4 (test4) gồm 100 ảnh được lấy từ video ở góc
CAM5 sau khi đã xoay một góc 15 độ. Ảnh được lấy từ toàn bộ video. Có tỷ lệ
các phương tiện ('bike', 584), ('car', 79), ('priority', 2) như ảnh sau:

Hình 71: Biểu đồ thể hiện số lượng xe tương ứng với từng nhãn
trong tập test4 góc CAM5 sau khi xoay 15 độ (100 ảnh)

BÙI NHẬT TÀI_B1606838 lix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

3. Kết quả kiểm tra, đánh giá mô hình


Kết quả kiểm tra trên tập test1 góc CAM3 với những tham số khác nhau
cho ra kết quả như trong các bảng sau. Những tham số khác nhau qua từng lần
sẽ được tô màu vàng (in đậm + in nghiêng):
Bảng 1: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng VGG16)
Lần\ Image Anchor box Num Num Time
Augmentation Acc loss mAP
config size scales epochs rois s/img
1 300 [64, 128, 256] 80 256 V,h,90 ~1.5s 0.959 0.435 0.873
2A 600 [128, 256, 512] 9 256 h ~2.8s 0.915 0.667 0.928
2B 600 [128, 256, 512] 19 256 h ~2.8s 0.93 0.463 0.912
3A 600 [128, 256, 512] 8 512 h ~2.6s 0.938 0.632 0.900
3B 600 [128, 256, 512] 18 512 h ~2.6s 0.927 0.483 0.924
4 150 [32, 64, 128] 20 256 h ~1.1s 0.983 0.707 0.644
5A 300 [64, 128, 256] 30 256 h ~1.5 0.972 0.378 0.879
5B 300 [64, 128, 256] 40 256 h ~1.5 0.982 0.299 0.850
5C 300 [64, 128, 256] 50 256 h ~1.5 0.986 0.257 0.821
5D 300 [64, 128, 256] 59 256 h ~1.5 0.988 0.216 0.836
5E 300 [64, 128, 256] 70 256 h ~1.5 0.991 0.194 0.824
5F 300 [64, 128, 256] 80 256 h ~1.5 0.992 0.186 0.848
5G 300 [64, 128, 256] 90 256 h ~1.5 0.993 0.172 0.807

Qua kết quả trên, khi so sánh lần 1 và 2. Nhận thấy kích thước ảnh (image
size) càng lớn (300 >< 600) thì thời gian xử lý một ảnh càng lâu (1,5s >< 2,8s).
Tuy nhiên, độ chính xác khi dự đoán ảnh mới (mAP) sẽ càng cao (0.873 ><
0.911). Nhưng nếu cho kích thước ảnh quá nhỏ (150) thì khả năng bỏ sót chi tiết
quan trọng khá cao. Cụ thể như ở lần 4, thời gian thực thi giảm không đáng kể
so với lần 1 (1,1s >< 1,5s) tuy nhiên độ chính xác (mAP) lại giảm khá nhiều
(0.644 >< 0.873).
Bảng 2: Kết quả chi tiết mAP đối với từng nhãn trên tập test1 góc CAM3
Lần\ mAP mAP mAP of bike mAP of car mAP of priority
1 0.873 0.818 0.833 0.966
2A 0.928 0.894 0.938 0.951
2B 0.912 0.939 0.855 0.940
3A 0.900 0.886 0.877 0.937
3B 0.924 0.883 0.907 0.982
4 0.644 0.520 0.418 0.995
5A 0.879 0.843 0.809 0.985
5B 0.850 0.794 0.772 0.985
5C 0.821 0.767 0.793 0.903
5D 0.836 0.777 0.771 0.960
5E 0.824 0.747 0.745 0.978
5F 0.848 0.799 0.764 0.981
5G 0.807 0.736 0.805 0.880

BÙI NHẬT TÀI_B1606838 lx


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Các giá trị được tô xanh (in đậm) là giá trị mAP nhỏ nhất của nhãn trong
lần kiểm tra tương ứng. Ở tập test1 này giá trị mAP của nhãn “priority” luôn tốt.
Giá trị mAP chung chỉ bị ảnh hưởng bởi các nhãn “bike” và “car”.

Acc

mAP

Loss

Hình 72: Kết quả thực nghiệm trên tập test1 góc CAM3
(sử dụng VGG16) dưới dạng biểu đồ đường

Kết quả kiểm tra trên tập test2 góc CAM1 với những tham số tương ứng
như lần kiểm tra trên tập test1.
Bảng 3: Kết quả thực nghiệm trên tập test2 góc CAM1 (sử dụng VGG16)
Lần\ Image Anchor box Num Num Time
Augmentation Acc loss mAP
config size scales epochs rois s/img
1 300 [64, 128, 256] 80 256 V,h,90 ~1.5s 0.959 0.435 0.711
2A 600 [128, 256, 512] 9 256 h ~2.8s 0.915 0.667 0.681
2B 600 [128, 256, 512] 19 256 h ~2.8s 0.93 0.463 0.674
3A 600 [128, 256, 512] 8 512 h ~2.6s 0.938 0.632 0.557
3B 600 [128, 256, 512] 18 512 h ~2.6s 0.927 0.483 0.557
4 150 [32, 64, 128] 20 256 h ~1.1s 0.983 0.707 0.358
5A 300 [64, 128, 256] 30 256 h ~1.5 0.972 0.378 0.701
5B 300 [64, 128, 256] 40 256 h ~1.5 0.982 0.299 0.636
5C 300 [64, 128, 256] 50 256 h ~1.5 0.986 0.257 0.750
5D 300 [64, 128, 256] 59 256 h ~1.5 0.988 0.216 0.642
5E 300 [64, 128, 256] 70 256 h ~1.5 0.991 0.194 0.670
5F 300 [64, 128, 256] 80 256 h ~1.5 0.992 0.186 0.624
5G 300 [64, 128, 256] 90 256 h ~1.5 0.993 0.172 0.625

Lần 2 và 3 chỉ khác nhau ở tham số “num rois”. Nhận thấy khi “num rois”
bằng 512 thì thời gian thực thi sẽ nhanh hơn so với khi “num rois” bằng 256
(2,6s >< 2,8s) và độ chính xác (mAP) cũng cao hơn (0.924 ><0.916) khi cùng
góc camera với tập huấn luyện (góc CAM3). Tuy nhiên, khi khác góc camera so
với tập huấn luyện thì độ chính xác (mAP) lại thấp hơn (0.563 >< 0.572).

BÙI NHẬT TÀI_B1606838 lxi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Bảng 4: Kết quả mAP chi tiết đối với từng nhãn trên tập test2 góc CAM1
Lần\ config mAP mAP of bike mAP of car mAP of priority
1 0.711 0.613 0.826 None
2A 0.681 0.697 0.663 None
2B 0.674 0.928 0.384 None
3A 0.557 0.580 0.534 None
3B 0.557 0.510 0.619 None
4 0.358 0.430 0.279 None
5A 0.701 0.662 0.751 None
5B 0.636 0.620 0.657 None
5C 0.750 0.722 0.785 None
5D 0.642 0.633 0.663 None
5E 0.670 0.658 0.690 None
5F 0.624 0.646 0.607 None
5G 0.625 0.660 0.586 None

Khi góc camera khác so với góc camera trong tập huấn luyện (CAM1 ><
CAM3) thì độ chính xác khi dự đoán (mAP) nhìn chung sẽ thấp hơn. Độ chính
xác cao nhất khi kiểm tra trên góc CAM1 là 0.75, trong khi đó cao nhất ở góc
CAM3 (góc camera trong tập dữ liệu huấn luyện) là 0.924.
Giá trị mAP chung trong lần 5 chủ yếu bị ảnh hưởng bởi nhãn “bike”. Cho
thấy các tham số ở lần 5 cho ra kết quả nhận diện “bike” không được tốt.
Do tập test2 không có nhãn “priority” nên kết quả mAP của nhãn này sẽ là
None.

Acc

mAP

Loss

Hình 73: Kết quả thực nghiệm trên tập test2 góc CAM1
(sử dụng VGG16) dưới dạng biểu đồ đường

BÙI NHẬT TÀI_B1606838 lxii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Kết quả thực nghiệm trên tập test3 góc CAM5 (sử dụng VGG16) với các
tham số tương ứng như khi kiểm tra trên tập test1
Bảng 5: Kết quả thực nghiệm trên tập test3 góc CAM5 (sử dụng VGG16)
Lần\ Image Anchor box Num Num Time
Augmentation Acc loss mAP
config size scales epochs rois s/img
1 300 [64, 128, 256] 80 256 V,h,90 ~1.5s 0.959 0.435 0.529
2A 600 [128, 256, 512] 9 256 h ~2.8s 0.915 0.667 0.659
2B 600 [128, 256, 512] 19 256 h ~2.8s 0.93 0.463 0.874
3A 600 [128, 256, 512] 8 512 h ~2.6s 0.938 0.632 0.642
3B 600 [128, 256, 512] 18 512 h ~2.6s 0.927 0.483 0.594
4 150 [32, 64, 128] 20 256 h ~1.1s 0.983 0.707 0.709
5A 300 [64, 128, 256] 30 256 h ~1.5 0.972 0.378 0.718
5B 300 [64, 128, 256] 40 256 h ~1.5 0.982 0.299 0.630
5C 300 [64, 128, 256] 50 256 h ~1.5 0.986 0.257 0.726
5D 300 [64, 128, 256] 59 256 h ~1.5 0.988 0.216 0.580
5E 300 [64, 128, 256] 70 256 h ~1.5 0.991 0.194 0.628
5F 300 [64, 128, 256] 80 256 h ~1.5 0.992 0.186 0.669
5G 300 [64, 128, 256] 90 256 h ~1.5 0.993 0.172 0.593

Lần 1 và 5 khác nhau ở tham số “augmentation”. Lần 1 sử dụng cả lật


ngang (horizontal flip), lật dọc (vertical flip) và xoay 90 độ. Lần 5 chỉ sử dụng
lật ngang. Đối với phương tiện giao thông thì việc lật dọc và xoay 90 độ ảnh sẽ
không thực tế. Do đó độ chính xác (mAP) sẽ bị ảnh hưởng. Theo kết quả ở 3
bảng trên đã chứng minh điều đó (0.529 >< 0.695 bảng 3).

Bảng 6: Kết quả chi tiết mAP đối với từng nhãn trên tập test3 góc CAM5
Lần\ config mAP mAP of bike mAP of car mAP of priority
1 0.529 0.684 0.325 1.000
2A 0.659 0.654 0.628 1.000
2B 0.874 0.973 0.763 1.000
3A 0.642 0.696 0.616 0.333
3B 0.594 0.619 0.593 0.345
4 0.709 0.765 0.622 1.000
5A 0.718 0.743 0.731 0.333
5B 0.630 0.681 0.621 0.173
5C 0.726 0.724 0.703 1.000
5D 0.580 0.655 0.537 0.256
5E 0.628 0.683 0.602 0.333
5F 0.669 0.721 0.635 0.500
5G 0.593 0.592 0.632 0.200

Đặc trưng của tập dữ liệu test3 là có góc camera lệch, lượng xe đông. Do
góc camera đặt xa cổng bệnh viện nên lượng xe chủ yếu ở xa, không nằm trong
phạm vi các xe đã gán nhãn trong tập huấn luyện. Các yếu tố đó đã ảnh hưởng
tới việc nhận diện xe của mô hình. Do số lượng xe ưu tiên xuất hiện quá ít trong
tập này (1 xe được gán nhãn) nên kết quả nhận diện xe ưu tiên (nhãn priority)
không được ổn định.

BÙI NHẬT TÀI_B1606838 lxiii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Acc

mAP

Loss

Hình 74: Kết quả thực nghiệm trên tập test3 góc CAM5
(sử dụng VGG16) dưới dạng biểu đồ đường

Góc camera càng lệch nhiều so với góc camera trong tập dữ liệu huấn luyện
thì độ chính xác khi dự đoán ảnh mới (mAP) càng thấp. Do đó cần có bước xử lý
để đưa ảnh kiểm tra về một góc ít lệch nhất so với góc camera trong tập huấn
luyện.
Kết quả thực nghiệm trên tập test4 góc CAM5 (sử dụng VGG16) sau khi
xoay một góc 15 độ với các tham số tương tự như như khi kiểm tra trên tập
test1. Cho ra kết quả như bảng sau:
Bảng 7: Kết quả thực nghiệm trên tập test4 góc CAM5
(sử dụng VGG16) sau khi xoay một góc 15 độ
Lần\ Image Anchor box Num Num Time
Augmentation Acc loss mAP
config size scales epochs rois s/img
1 300 [64, 128, 256] 80 256 V,h,90 ~1.5s 0.959 0.435 0.674
2A 600 [128, 256, 512] 9 256 h ~2.8s 0.915 0.667 0.726
2B 600 [128, 256, 512] 19 256 h ~2.8s 0.93 0.463 0.823
3A 600 [128, 256, 512] 8 512 h ~2.6s 0.938 0.632 0.735
3B 600 [128, 256, 512] 18 512 h ~2.6s 0.927 0.483 0.749
4 150 [32, 64, 128] 20 256 h ~1.1s 0.983 0.707 0.671
5A 300 [64, 128, 256] 30 256 h ~1.5 0.972 0.378 0.628
5B 300 [64, 128, 256] 40 256 h ~1.5 0.982 0.299 0.583
5C 300 [64, 128, 256] 50 256 h ~1.5 0.986 0.257 0.629
5D 300 [64, 128, 256] 59 256 h ~1.5 0.988 0.216 0.576
5E 300 [64, 128, 256] 70 256 h ~1.5 0.991 0.194 0.608
5F 300 [64, 128, 256] 80 256 h ~1.5 0.992 0.186 0.691
5G 300 [64, 128, 256] 90 256 h ~1.5 0.993 0.172 0.675

Các giá trị được tô màu lục (in đậm) ở cột mAP có giá trị cao hơn giá trị
mAP khi kiểm tra trên tập test3 (khi chưa xoay).

BÙI NHẬT TÀI_B1606838 lxiv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Bảng 8: Kết quả chi tiết mAP đối với từng nhãn trên tập test4 góc CAM5
Lần\ config mAP mAP of bike mAP of car mAP of priority
1 0.674 0.621 0.719 0.889
2A 0.726 0.682 0.762 1.000
2B 0.823 0.829 0.807 1.000
3A 0.735 0.686 0.800 0.350
3B 0.749 0.680 0.812 1.000
4 0.671 0.719 0.607 1.000
5A 0.628 0.646 0.627 0.214
5B 0.583 0.578 0.607 0.063
5C 0.629 0.601 0.642 1.000
5D 0.576 0.518 0.647 0.289
5E 0.608 0.600 0.627 0.296
5F 0.691 0.698 0.701 0.214
5G 0.675 0.588 0.759 0.762

Khi so sánh bảng 8 với bảng 6, có thể nhận thấy các giá trị mAP của các
nhãn ở bảng 8 tốt hơn so với bảng 6. Như vậy cho thấy việc xoay camera trước
khi nhận diện cho ra kết quả nhận diện các nhãn tốt hơn so với việc không xoay.

Acc

mAP

Loss

Hình 75: Kết quả thực nghiệm trên tập test4 góc CAM5(sử dụng VGG16)
sau khi xoay một góc 15 độ dưới dạng biểu đồ đường

Biểu đồ sau thể hiện kết quả mAP trên các tập kiểm tra:

BÙI NHẬT TÀI_B1606838 lxv


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 76: Biểu đồ so sánh kết quả mAP của các tập kiểm tra 1, 2, 3, 4.
Nhìn vào biểu đồ trên nhận thấy kết quả mAP của tập test1 tốt nhất. Sau đó
tới tập test2, test3, test4 có kết quả mAP khá tương đồng.

Thử nghiệm kiểm tra với RESNET50.


Bảng 9: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng RESNET50)
Lần\ Image Anchor box Num Num Time
Acc loss mAP
config size scales epochs rois s/img
1A 600 [128, 256, 512] 11 256 ~6s 0.912 0.572 0.929
1B 600 [128, 256, 512] 21 256 ~6s 0.926 0.438 0.936
2A 300 [64, 128, 256] 10 256 ~5s 0.944 0.63 0.803
2B 300 [64, 128, 256] 20 256 ~5s 0.958 0.473 0.872
2C 300 [64, 128, 256] 30 256 ~5s 0.969 0.385 0.853

Acc
mAP

Loss

Hình 77: Kết quả thực nghiệm trên tập test1 góc CAM3
(sử dụng RESNET50) dưới dạng biểu đồ đường

BÙI NHẬT TÀI_B1606838 lxvi


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Kết quả kiểm tra khi sử dụng RESNET50 có độ chính xác (mAP) tốt hơn
(0.936>< 0.916). Tuy nhiên, thấy thời gian thực thi lâu hơn rất nhiều so với khi
sử dụng VGG16 (5s >< 1.5s).
Bảng 10: Kết quả thực nghiệm trên tập kiểm tra góc CAM1 (sử dụng RESNET50)
Lần\ Image Anchor box Num Num Time
Acc loss mAP
config size scales epochs rois s/img
1A 600 [128, 256, 512] 11 256 ~6s 0.912 0.572 0.708
1B 600 [128, 256, 512] 21 256 ~6s 0.926 0.438 0.657
2A 300 [64, 128, 256] 10 256 ~5s 0.944 0.63 0.479
2B 300 [64, 128, 256] 20 256 ~5s 0.958 0.473 0.652
2C 300 [64, 128, 256] 30 256 ~5s 0.969 0.385 0.708

Acc
mAP

Loss

Hình 78: Kết quả thực nghiệm trên tập test2 góc CAM1
(sử dụng RESNET50) dưới dạng biểu đồ đường

Kết quả kiểm tra trên tập test2 cho ra kết quả tương tự như khi kiểm tra trên
tập test1. Vẫn tốt hơn so với khi sử dụng VGG16, tuy nhiên tốn thời gian xử lý
hơn rất nhiều. Kết quả mAP trên tập test2 thấp hơn so với khi kiểm tra trên tập
test1.

BÙI NHẬT TÀI_B1606838 lxvii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

PHẦN KẾT LUẬN


1. Kết quả đạt được
- Xây dựng được hệ thống hỗ trợ theo dõi tình trạng giao thông qua video sử
dụng mô hình Faster R-CNN với độ chính xác trung bình tương đối tốt
(khoảng 85%).
- Hệ thống áp dụng trên video 1 với tình trạng thời tiết nắng, có mây, cùng góc
camera với tập huấn luyện đạt khoảng 92% độ chính xác.
- Hệ thống áp dụng trên video 2 với tình trạng thời tiết nắng khác góc camera
với tập huấn luyện đạt khoảng 75% độ chính xác.
- Hệ thống áp dụng trên video 3 với tình trạng thời tiết nắng, mưa khác góc
camera với tập huấn luyện, góc cam bị lệch khoảng 15 độ so với mặt đường
đạt khoảng 87% độ chính xác.
- Hệ thống áp dụng trên video 4 với tình trạng thời tiết nắng, mưa khác góc
camera với tập huấn luyện, cùng góc camera với video 3 nhưng đã được
xoay một góc 15 độ so với video gốc đạt khoảng 82% độ chính xác. Tuy độ
chính xác cao nhất có giảm nhưng độ chính xác trung bình của các nhãn đã
được tăng lên (cụ thể là chi tiết so sánh độ chính xác giữa các nhãn ở bảng 8
và bảng 6).
- Tuy nhiên khi tình trạng xe lưu thông đông đúc. Các xe chồng lấp lên nhau
như ảnh minh họa 79 thì mô hình không nhận dạng chính xác được (không
nhận được hết xe trong vùng). Từ đó có thể kết luận việc ước lượng mật độ
giao thông không thể dựa trên việc đếm xe được. Mà phải cần có một
phương pháp khác tối ưu hơn.

BÙI NHẬT TÀI_B1606838 lxviii


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

Hình 79: Kết quả nhận diện khi đường đông xe


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

- Việc đếm xe trong vùng khi có tình trạng kẹt xe xảy ra là không khả thi. Do
đó, cần thay đổi phương pháp xác định mật độ giao thông mà không dựa trên
việc đếm xe. Có thể chia nhãn theo từng ảnh, ảnh xe ít, xe trung bình, xe
đông, kẹt xe… Từ đó huấn luyện mô hình với những ảnh trên để có thể xác
định được tình trạng giao thông.

- Thời gian xử lý một ảnh còn tương đối chậm (~1.5s). Cần sử dụng một giải
thuật khác có tốc độ xử lý nhanh hơn như hiện nay (YoloV4, MobileNet
SSD) để có thể xử lý realtime các hình ảnh thu được trực tiếp từ camera giao
thông mà không cần thông qua video.

- Thêm một vài bước xử lý ở giai đoạn tăng cường dữ liệu như tăng giảm độ
sáng (brightness), tương phản (contrast) của ảnh, thể hiện các thời gian trong
ngày (sáng, trưa, chiều). Chuyển ảnh qua mức xám, thể hiện dữ liệu ban
đêm.

- Thu thập thêm nhiều dữ liệu huấn luyện từ nhiều góc camera khác nhau,
nhiều tình trạng thời tiết khác nhau để mô hình có thể nhận diện được tốt hơn
trong các trường hợp trên.

BÙI NHẬT TÀI_B1606838 lxix


Đề tài: Hệ thống hỗ trợ theo dõi tình trạng giao thông qua video dựa trên mô hình Faster R-CNN

TÀI LIỆU THAM KHẢO

[1] N. G. T. A. L. H. I. T. L. L. a. M. A. V. Julian Nubert, «Traffic Density


Estimation using a Convolutional Neural Network,» Fri, 05 Oct 2018.
[2] N. C. Thang, «MIAI,» 13 01 2020. [En línea]. Available:
https://miai.vn/2020/01/13/ket-hop-object-detection-va-object-tracking-xay-
dung-he-thong-dem-phuong-tien-giao-thong-tren-duong/. [Último acceso: 21 9
2020].
[3] F. B. V. D. a. G. P. Donato Impedovo, «Vehicular Traffic Congestion
Classification by Visual Features and Deep Learning Approaches: A
Comparison,» 28 November 2019.
[4] G. ErkamGuresen, «Procedia Computer Science,» Definition of artificial neural
networks with comparison to other networks, vol. 3, pp. 426-433, 2011.
[5] L. B. Y. B. a. P. H. Yann Lecun, «Gradient-based learning applied to document
recognition,» pp. 2278--2324, 1998.
[6] R. Girshick, «Fast R-CNN,» vol. abs/1504.08083, 2015.
[7] S. a. H. K. a. G. R. B. a. S. J. Ren, «NIPS,» Faster R-CNN: Towards Real-Time
Object Detection with Region Proposal Networks, pp. 91-99, 2015.
[8] B. S. R. C. a. L. S. D. Navaneeth Bodla, «Improving Object Detection With
One Line of Code,» CoRR, vol. abs/1704.04503, 2017.
[9] nguyen, [En línea].

BÙI NHẬT TÀI_B1606838 lxx

You might also like