Hình 1: Ùn tắc giao thông ở TP HCM 2Có nhiều nguyên nhân dẫn đến tình trạng này như: ý thức của người điềukhiển phương tiện tham gia giao thông; hạ tầng giao thông còn kém, phươngtiện cá
Trang 1KHOA 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
Trang 2KHOA 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
Khóa : 42
Cần Thơ, 01/2021
Trang 3
-Cần Thơ, ngày tháng năm (GVHD ký và ghi rõ họ tên)
Trang 4Trướ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ànhcô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ẹ Conxin 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 conchá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ỏemạ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ễnMinh 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ơnnữ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ũngnhư 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ềusứ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ườngVĩ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ươngluôn khỏe mạnh và mau chóng thành công trên con đường học vấn Em cũng xinchúc các anh (chị) ở đơn vị Công An phường Vĩnh Thanh Vân luôn hoàn thành xuấtsắ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ánhtrong 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ỏemạ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 theomong 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ánhkhỏ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
Trang 6MỤ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
Trang 72.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
Trang 81 Kết quả đạt được 58
2 Hướng phát triển 59
TÀI LIỆU THAM KHẢO 60
Trang 9DANH 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
Trang 10Hì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
Trang 11Hình 72: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng VGG16) dướidạng biểu đồ đường 51Hình 73: Kết quả thực nghiệm trên tập test2 góc CAM1 (sử dụng VGG16) dướidạng biểu đồ đường 52Hình 74: Kết quả thực nghiệm trên tập test3 góc CAM5 (sử dụng VGG16) dướidạng biểu đồ đường 54Hình 75: Kết quả thực nghiệm trên tập test4 góc CAM5(sử dụng VGG16) sau khixoay một góc 15 độ dưới dạng biểu đồ đường 55Hình 76: Biểu đồ so sánh kết quả mAP của các tập kiểm tra 1, 2, 3, 4 56Hình 77: Kết quả thực nghiệm trên tập test1 góc CAM3 (sử dụng RESNET50) dướidạng biểu đồ đường 56Hình 78: Kết quả thực nghiệm trên tập test2 góc CAM1 (sử dụng RESNET50) dướidạng biểu đồ đường 57Hình 79: Kết quả nhận diện khi đường đông xe 58
Trang 12DANH 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
Trang 13
Currently, traffic congestion in Vietnam still occurs frequently Especially the rushhours (time to go to school, to work, after school, after work) in order to partlyavoid these situations It is necessary to have a support system that providesinformation of traffic flow on key roads with traffic cameras such as junctions,crossroads, in front of hospital gates, markets Estimating the traffic density fromthe traffic cameras, besides helping the functional forces can divide and diverttraffic in time It can also help road users see congested roads to avoid The thesisuses the Faster R-CNN model to detect vehicles in traffic on the road Therebyestimating 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, 360images for model evaluation and 3 sets of images for testing The first set of 180images has the same camera angle as the training set The second set and the thirdset each contain 100 images with different camera angles and different cameraangles from the training set The results are about 92% accuracy in detection ofvehicles for the first set, 75% for the second set and 85% for the third set
Trang 14TÓ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õilư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ứcnă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úpngườ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 giaothô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ớitậ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 camerakhá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 Đặcbiệ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 xengày càng nghiêm trọng kéo theo tình trạng ô nhiễm tiếng ồn, ô nhiễm khôngkhí 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 giaothông1
1 https://vnexpress.net/topic/ket-xe-o-sai-gon-ngay-cang-nghiem-trong-21884
Trang 15Hình 1: Ùn tắc giao thông ở TP HCM 2
Có nhiều nguyên nhân dẫn đến tình trạng này như: ý thức của người điềukhiển phương tiện tham gia giao thông; hạ tầng giao thông còn kém, phươngtiệ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 giaonhau 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 giaothô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 giaothô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àogiao thông ở Singapore [ CITATION Jul18 \l 1033 ] Dữ liệu được thu thập trựctiếp từ các camera giao thông ở Singapore Nhóm tác giả đã lấy ảnh từ tất cả cáccamera 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
Trang 16kiệ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ậtkhác Tổng cộng nhóm tác giả đã thu thập được 4582 ảnh Sau đó chia ngẫunhiên 90% làm tập huấn luyện, 10% làm tập đánh giá Họ cũng quy định 5 lớpcho 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à “TrafficJam” với >100 xe hơi (giao thông hầu như bị ứ đọng, không di chuyển) Nhómtá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êncứ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ấnluyện và tối ưu bằng một số phương pháp áp dụng “transfer learning” trênInception 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 chotình trạng giao thông ở Việt Nam với điều kiện phương tiện giao thông đa dạnghơ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áctố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ệngiao thông trên đường sử dụng kết hợp Nhận diện đối tượng và Theo dõi đốitượng [CITATION Tha20 \l 1033 ] Tác giả đã sử dụng MobileNet SSD để nhậndiện đối tượng và sau đó thực hiện theo dõi đối tượng với MOSSE Tracker Đầutiên tác giả định sẵn một đường kẻ ngang (laser line) Sau đó lặp qua các đốitượng đã được theo dõi để cập nhật lại vị trí mới (nếu có) Trong quá trình lặpnếu có đối tượng vượt qua “laser line” thì đếm thêm 1 xe mới và bỏ theo dõi đốitượ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ếnhà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ấnluyện MobileNet SSD Với dữ liệu kiểm tra là video giao thông dài khoảng 5giâ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 (4bá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ôngdựa vào quá trình phát hiện đối tượng Giai đoạn đầu các giải thuật: HaarCascade, 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ả
Trang 17vớ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 03video Thứ nhất là “M-30”, video được lấy gồm có 7520 khung hình với độ phângiải là 640x480 (30fps) vào ngày nắng Thứ hai là “M-30-HD”, video được lấygồm có 9390 khung hình với độ phân giải HD 1280x720 (30fps) nhưng vàokhung 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ừngframe, sau đó ghi nhận kết quả về độ chính xác phát hiện các phương tiện giaothô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ềuhành Ubuntu 18.04, trang bị AMD Ryzhen threadripper 1920x 12 cores, NvidiaTitan 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àochất lượng của hình ảnh Tuy độ chính xác cao nhưng thời gian thực thi cho mộtframe 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ụngvà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ácphù 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 giaothông, để hỗ trợ cho các cơ quan chức năng có thể phân làn, phân luồng, điềuphố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êncạnh đó, hệ thống cũng có thể giúp các tài xế tránh được tuyến đường đang ùntắ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ácphương tiện giao thông ở Việt Nam (phần lớn là xe máy) và thực nghiệm đánhgiá trên tập dữ liệu được cung cấp từ Công An phường Vĩnh Thanh Vân – TPRạch Giá – Kiên Giang Vị trí camera Đường Lê Lợi (đối diện bệnh viện tỉnhKiê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
Trang 18Đố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 4bá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ênGiang
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ôngThự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 giaothông
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
Trang 19PHẦ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ôngtrong vùng đó sẽ được cho nhận dạng và đếm số lượng Cụ thể cứ mỗi 20 giây tatrí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ựavào số lượng xe mà kết luận xem ảnh thuộc nhãn nào Nhãn được người dùngquy đị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 NeuralNetworks: 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
Trang 209 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)[ CITATIONErk11 \l 1033 ] là một mô hình tính toán được xây dựng dựa trên các mạngneural 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àihay bên trong chảy qua mạng trong quá trình học
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ânloạ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ánnhỏ, thứ nhất là xác định các “bounding box” quanh đối tượng Thứ hai là vớimỗi “bounding box” đó thì đối tượng bên trong là gì và với bao nhiêu phần trămchắ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/
Trang 219.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êntiế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 matrận như mô tả hình dưới:
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ọncá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àngtrên ảnh Ma trận kết quả bên phải thu được khi nhân từng phần tử bêntrong ma trận 3x3 với ma trận 5x5
5 http://deeplearning.stanford.edu/wiki/images/6/6c/Convolution_schematic.gif
Trang 22“convolution” từ lớp trước đó Do đó, chúng có các kết nối cục bộ Mỗineural ở lớp kế tiếp sinh ra từ kết quả của filter áp đặt lên một vùng ảnhcụ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ắngtì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
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ộtfeature map giúp detect một vài feature trong bức ảnh Lợi ích lớn nhấtcủ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ụcpooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất trongvùng đầu vào 2x2
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
Trang 23Như ví dụ trên thì qua lớp Max Pooling, số lượng neural giảm đi phânnửa Do đó có thể nói rằng, Max Pooling sẽ chọn ra trong số các đặctrư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 poolingtớ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íchchập Mô hình đã đạt được độ chính xác 92,7% - top 5 trong dự ánImageNet Một dự án có hơn 14 triệu ảnh được gán nhãn bằng tay, vớihơn 20000 đối tượng
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 Convcuố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
Trang 24Mạng ResNet10 (R) là một mạng CNN được thiết kế để làm việc vớihàng trăm hoặc hàng nghìn lớp chập Một vấn đề xảy ra khi xây dựngmạ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ụngtrong quá trình training Thuật toán sẽ đi từ “output layer” đến “inputlayer” 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ớikhi 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) đượcdù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àmthay đổ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à VanishingGradients
Mạng ResNet ra đời nhằm giải quyết vấn đề trên Bằng cách sử dụngcá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
Trang 25Hình 10 : Cấu trúc mạng ResNet50 11
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ụngstride (2,2) BatchNorm, MaxPooling (3,3)
o Stage 2 : Convolutiontal block sử dụng 3 filter với size64x64x256, f=3, s=1 Có 2 Identity blocks với filter size64x64x256, 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ủacá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 ImageSegmentation 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/
Trang 26Hình 11: Ảnh sau khi segment
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ôngthể xác định được Do đó, cần nhóm các vùng màu với nhau để làmRegion 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ủacá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ủahình chữ nhật tương ứng
Để biểu diễn Region proposal, thông thường người ta sử dụng hìnhchữ 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 minhhọ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
Trang 27Ý tưởng của Anchor là thay vì dự đoán 2 góc ta sẽ dự đoán điểm trungtâm C (x_center, y_center) và width, height của hình chữ nhật (ảnh minh họa12B) Như vậy mỗi anchor được xác định bằng 4 tham số (x_center, y_center,width, height).
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, SupportVector 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ưngtrong các vùng đó Tiếp đến là dùng các đặc trưng đó và SVM để xác địnhxem trong mỗi 2000 vùng đó có chứa đối tượng gì
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
Trang 28Tuy nhiên, R-CNN vẫn còn nhược điểm lớn đó là số lượng Regionproposals còn quá nhiều (khoảng 2000 vùng) Do đó, nhiều vùng khôngchứa vật thể nhưng vẫn được đưa vào CNN dẫn đến tốc độ xử lý của giảithuật phải tốn tới 47 giây/ảnh.
ROI pooling lớp là một dạng của “pooling layer” Điểm khác so vớimax 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ĩatrước
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ậmthuật toán
18 https://cdn-images-1.medium.com/max/628/1*nIKpJwQ9gLqh0OhKEzNpkQ.png
Trang 299.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ảiquyết mấu chốt là giải thuật Selective Search Tác giả đã thay SelectiveSearch 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 đốitượng và phần trăm có đối tượng trong vùng đó
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ếptheo 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ượnghay không
19 https://www.researchgate.net/profile/Akif_Durdu/publication/334987612/figure/fig3/AS:788766109224961
The.ppm
@1565067903984/High-level-diagram-of-Faster-R-CNN-16-for-generic-object-detection-2-Inception-v2-20 https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/
Trang 30Chỉ 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:
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
Non-maximum suppression sẽ bao gồm một danh sách “proposals” đượcsắ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 đặttrước “threshold” Việc chọn lựa giá trị ngưỡng chính là chìa khóa thành côngcủ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
Trang 31Để 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ệnbằ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
Trang 32TensorFlow25 là một thư viện phần mềm mã nguồn mở dành cho máyhọc được phát triển bởi Google TensorFlow có thể chạy song song trênnhiề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ácinterface 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 matrậ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ệnPython cho các mạng neural nhân tạo Keras hoạt động như một giaodiệ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
Trang 33 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ácgiá 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ànhmộ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
Trang 34 Đầ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ị 0vào với một tỷ lệ nhất định nhằm tránh tình trạng “overfitting” trongquá 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àmnhư sau:
Trang 35Hì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 theokhung 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
Trang 36Hì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àntoà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 pascalVOCformat, một format được sử dụng bởi ImageNet31 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 formatannotation một cách nhanh chóng Trong bài toán này, ta sử dụng chuyểnpascalVOC 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âydựng để kết nối giữa các ứng dụng Nexmo cung cấp nhiều API như gửiSMS, 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ệnthoạ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
Trang 37SendGrid cho phép dùng thử miễn phí, gửi và nhân 100 email mỗingà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ứcnă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ậpvào nhiều bộ phận của máy tính cũng như di động như định vị, kết nốiNFC, 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úpngười dùng xây dựng một ứng dụng “GUI” một cách dễ dàng và nhanhchó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 trongquá 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 MySQLcò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ảnthí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/