Xây dựng ứng dụng nhận dạng biển báo giao thông đường bộ tại tỉnh lộ luận văn thạc sĩ công nghệ thông tin Xây dựng ứng dụng nhận dạng biển báo giao thông đường bộ tại tỉnh lộ luận văn thạc sĩ công nghệ thông tin Xây dựng ứng dụng nhận dạng biển báo giao thông đường bộ tại tỉnh lộ luận văn thạc sĩ công nghệ thông tin Xây dựng ứng dụng nhận dạng biển báo giao thông đường bộ tại tỉnh lộ luận văn thạc sĩ công nghệ thông tin
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG *** XÂY DỰNG ỨNG DỤNG NHẬN DẠNG BIỂN BÁO GIAO THÔNG ĐƯỜNG BỘ TẠI TỈNH LỘ LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN Đồng Nai, Năm 2022 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC LẠC HỒNG *** XÂY DỰNG ỨNG DỤNG NHẬN DẠNG BIỂN BÁO GIAO THƠNG ĐƯỜNG BỘ TẠI TỈNH LỘ Chun ngành: Cơng nghệ thông tin Mã số: 8480201 Đồng Nai, Năm 2022 LỜI CẢM ƠN Được đồng ý Khoa Sau Đại học - Trường Đại học Lạc Hồng giảng viên hướng dẫn TS em thực đề tài “Xây dựng ứng dụng nhận dạng biển báo giao thông đường Tỉnh lộ” Lời đầu tiên, em xin chân thành cảm ơn Ban Giám Hiệu nhà trường, cảm ơn quý Thầy/Cô Khoa Sau Đại học quý Thầy/Cô giảng viên truyền đạt dạy cho em thời gian theo học cao học Trường Đại học Lạc Hồng Hơn hết, em xin chân thành cảm ơn thầy TS tận tình hướng dẫn, góp ý, bảo tạo điều kiện thuận lợi để em hoàn thành luận tốt văn Em xin gửi lời cảm ơn đến anh chị, đồng nghiệp, bạn lớp quan tâm giúp đỡ em suốt thời gian học tập làm luận văn Em xin bày tỏ lòng biết ơn sâu sắc động viên từ Cha Mẹ, người thân gia đình hỗ trợ em thực luận văn HỌC VIÊN LỜI CAM ĐOAN Tôi cam đoan kết đạt luận văn sản phẩm cá nhân tơi, kết đạt trình học tập nghiên cứu Trong toàn nội dung luận văn, điều trình bày cá nhân tổng hợp từ nhiều nguồn tài liệu Tất tài liệu tham khảo có xuất xứ rõ ràng trích dẫn hợp pháp Tơi xin hồn tồn chịu trách nhiệm cho lời cam đoan HỌC VIÊN TRƯỜNG ĐẠI HỌC LẠC HỒNG KHOA SAU ĐẠI HỌC TÓM TẮT LUẬN VĂN (Dùng cho học viên người hướng dẫn) Đề tài: Xây dựng ứng dụng nhận dạng biển báo giao thông đường Tỉnh lộ Ngành: Công nghệ thông tin Mã số: 8480201 Học viên: Người hướng dẫn: NỘI DUNG TÓM TẮT Nội dung giao kết - Thu thập liệu hình ảnh biển báo giao thông đường số tuyến đường Biên Hòa - Đồng Nai - Nghiên cứu kỹ thuật nhận dạng biển báo giao thơng - Xây dựng chương trình nhận dạng dựa hình ảnh thu thập Tiến hành chạy thử nghiệm đánh giá kết Cách giải vấn đề - Sử dụng ngơn ngữ lập trình Python chạy Google Colab - Tham khảo quy chuẩn biển báo giao thông Việt Nam - Sử dụng công cụ YOLO phiên liệu hình ảnh để huấn luyện, dị tìm biển báo giao thông - Chạy thử nghiệm đánh giá kết Đánh giá mặt khoa học kết - Học viên nghiên cứu tài liệu từ cơng trình liên quan internet để tiến hành áp dụng kỹ thuật vào luận văn - Dựa kết nghiên cứu, khảo sát, học viên sử dụng ngơn ngữ lập trình Python để nhận dạng biển báo giao thơng - Chương trình chạy thử nghiệm thực hệ điều hành Windows Những vấn đề tồn so với nội dung giao (nếu có) Đồng Nai, ngày NGƯỜI HƯỚNG DẪN tháng HỌC VIÊN năm 2022 MỤC LỤC Trang phụ bìa Lời cảm ơn Lời cam đoan Tóm tắt luận văn Danh mục bảng Danh mục hình Mở Đầu Chương - TỔNG QUAN 1.1 Tình hình nghiên cứu nước 1.1.1 Cơng trình nước ngồi có liên quan 1.1.2 Cơng trình nước có liên quan 1.2 Mục tiêu đề tài 1.3 Đối tượng nghiên cứu 1.4 Phương pháp nghiên cứu 1.5 Tổng quan nhận dạng nhận dạng biển báo giao thông Chương - CƠ BẢN VỀ XỬ LÝ ẢNH SỐ VÀ NHẬN DẠNG 2.1 Giới thiệu 2.2 Xử lý ảnh 2.2.1 Ảnh số, điểm ảnh cách mô tả 2.2.2 Ghi nhận ảnh 2.2.3 Canny Edge detector 2.2.4 Sliding window 10 2.3 Artifical Intelligence, machine learning, deep learning 11 2.3.1 Khái niệm phân nhóm 11 2.3.2 Mạng nơ-ron tích chập CNN (Convolutional Neural Network) 13 2.3.3 Hàm kích hoạt (activation function) neural network 18 2.3.4 Hàm mát (loss funtion) 20 2.4 Phát vật thể (Object detection) 22 2.4.1 Các khái niệm liên quan 22 2.4.2 Giới thiệu phiên YOLO 24 2.4.3 Kiến trúc output mô hình YOLO 25 2.4.4 Dự báo YOLO nhiều feature map 28 2.4.5 Hàm tính IoU 29 2.4.6 Anchor box 29 2.4.7 Loss function 31 2.4.8 Dự báo bounding box từ anchor box 32 2.4.9 Hàm non-max suppression 33 2.5 Sơ lược ngôn ngữ mơi trường lập trình 34 2.5.1 LabVIEW 34 2.5.2 Python 36 2.5.3 Colaboratory 38 Chương - KẾT QUẢ VÀ BÀN LUẬN 40 3.1 Giới thiệu 40 3.2 Thu thập xếp liệu 42 3.2.1 Thu thập liệu 42 3.2.2 Sắp xếp liệu 43 3.3 Tăng cường liệu ảnh 45 3.3.1 Khái niệm 45 3.3.2 Các phương pháp 46 3.3.3 Thuật toán giao diện chương trình tăng cường liệu ảnh 48 3.4 Chọn mơ hình YOLOv5 chạy mơi trường Colaboratory 49 3.4.1 Lưu đồ tổng qt mơ tả q trình huấn luyện 49 3.4.2 Gán nhãn cho ảnh liệu ảnh 50 3.4.3 Huấn luyện mơ hình YOLOv5 mơi trường Colaboratory 51 3.4.4 Kết đánh giá độ xác 56 Chương - KẾT LUẬN VÀ KIẾN NGHỊ 58 Tài liệu tham khảo Phụ lục DANH MỤC BẢNG Bảng 2.1 Tổng hợp tác vụ computer vision 23 Bảng 3.1 Các biển báo cấm thường gặp tỉnh lộ 40 Bảng 3.2 Các biển báo nguy hiểm thường gặp tỉnh lộ 41 Bảng 3.3 Các biển báo hiệu lệnh, khác thường gặp tỉnh lộ 42 Bảng 3.4 Các biển báo sử dụng liệu huấn luyện 43 Bảng 3.5 Các phương pháp biến đổi hình ảnh dùng tăng cường liệu ảnh 47 50 Bắt đầu Gán nhãn ảnh Tải ảnh Chọn cấu hình Đào tạo Tính mAP ĐẠT Sai Đúng Kết thúc Hình 3.7 Lưu đồ tổng quát huấn luyện nhận diện biển báo giao thông 3.4.2 Gán nhãn cho ảnh liệu ảnh Đến đây, có liệu ảnh thu nhận camera, tăng cường liệu ảnh chương trình viết LabVIEW 2020, chọn mơ hình huấn luyện thích hợp YOLOv5 Tiếp theo sử dụng chương trình tiện ích tên “labelImg” để giúp cho q trình gán nhãn nhanh xác, xem hình 3.8 51 Hình 3.8 Giao diện chương trình gán nhãn cho biển báo ảnh Vào thư mục chứa file “predefined_classes.txt” (định nghĩa lớp), “… \windows_v1.8.1\data”, để cập nhật tên hay nhãn hay classes biển báo cần phát Chạy chương trình “labelImg”, xuất cửa sổ có giao diện hình 3.8 Chọn “Open Dir” nhập vào thư mục chứa file ảnh (trong có chứa biển báo cần phát hiện), “…\TrafficSigns_20class_dataset\train\images” Chọn “Change Save Dir” nhập vào thư mục chứa kết gán nhãn file text (trong có chứa tên biển báo (hay lớp) ứng với vùng chọn biển báo), “…\TrafficSigns_20class_dataset\train\labels” Chọn “ PascalVOC” để chuyển qua định dạng “yolo YOLO” Chọn “Create/nRecBox”, chọn vùng chứa biển báo ảnh chọn tên hay nhãn tương ứng với biển báo Chọn “Save” chuyển qua ảnh 3.4.3 Huấn luyện mơ hình YOLOv5 mơi trường Colaboratory Các bước huấn luyện phát biển báo giao thông mô hình YOLOv5: (1) Cài đặt thư viện kèm theo YOLOv5 môi trường Colaboratory Để sử dụng Colab, tạo account Google Đăng nhập vào mục Google Drive, tạo tập tin với ứng dụng Colaboratory, cách click 52 chuột phải, chọn “Ứng dụng khác” đến “Kết nối ứng dụng khác”, xuất hộp thoại chứa ứng dụng Google, nhập vào tìm kiếm “Colab” chọn “Colaboratory”, bấm nút “TIẾP TỤC” để cài đặt tập tin có phần mở rộng “ipynb” tạo tab trình duyệt, đặt tên “YOLOv5_Custom_TrafficSigns”, xem hình 3.9 Hình 3.9 Cách tạo tập tin Colaboratory Google Drive Đến đây, chúng tơi có mơi trường để chạy dịng mã Python Tiếp theo, thiết lập cấu hình GPU menu “Thời gian chạy”, chọn mục “Thay đổi loại thời gian chạy”, hộp thoại “Cài đặt sổ tay” xuất hiện, chọn “GPU” mục “Trình tăng tốc phần cứng” click vào nút “Lưu”, click vào nút “Kết nối” góc phải hình để kết nối với Colaboratory, nhập vào dịng mã để tải cài đặt thư viện kèm theo YOLOv5, xem hình 3.10 53 Hình 3.10 Thiết lập trình tăng tốc phần cứng với GPU Sau chạy khối lệnh, cách click chuột trái vào biểu tượng hình tam giác xám trịn bên trái khối lệnh, thư mục “yolov5” xuất bên trái, xem hình 3.11 Bước tải liệu ảnh gán nhãn biển báo giao thông lên Colaboratory, để huấn luyện phát biển báo giao thơng theo mơ hình YOLOv5 Hình 3.11 Cài đặt YOLOv5 thư viện phụ thuộc kèm theo (2) Tải liệu ảnh gán nhãn Bộ liệu ảnh sau gán nhãn phân thành ba thư mục có tên “test”, “train”, “valid”; mà bên gồm có hai thư mục có tên 54 “images”, “labels” Trong đó, tập tin có phần mở rộng “txt” thư mục “labels”, chứa thơng tin vị trí biển báo ảnh cần phát hiện, ảnh tương ứng chứa thư mục “images” Ngoài ba thư mục trên, cịn tập tin “data.yalm”, chứa thơng tin số lượng biển báo cần phát đường dẫn đến ba thư mục Tất tải lên Colaboratory để chuẩn bị cho trình huấn luyện, xem hình 3.12 Hình 3.12 Tải lên liệu ảnh gồm ba thư mục (“test”, “train”, “valid”) mà bên chứa hai thư mục (“images”, “labels”) tập tin “data.yalm” (3) Xác định cấu hình kiến trúc mơ hình huấn luyện YOLOv5 Chạy khối lệnh, xem hình 3.13, cập nhật số biển báo giao thơng hay số lớp (classes) sở file "data.yaml" vào biến "num_classes" Bên cạnh đó, thơng số xác định cấu hình lưu file “custum_yolov5s.yaml” (phiên “s”) 55 Hình 3.13 Các khối lệnh cập nhật số lớp, xác định cấu hình trình huấn luyện (4) Thực trình huấn luyện Kết trình huấn luyện, tạo thành hai file weights tương ứng “best.pt” “last.pt” lưu “ /yolov5/runs/train/weights”, xem hình 3.14 Chúng ta lưu hai file chứa trọng số Google Drive hay máy vi tính để sử dụng lại tương lai Hình 3.14 Quá trình huấn luyện với cấu hình chọn 56 Các kết đo lường tổn thất trình huấn luyện hiệu suất lưu vào tệp nhật ký xác định có tên “yolov5s_results” 3.4.4 Kết đánh giá độ xác (5) Kết đánh giá độ xác mơ hình YOLOv5 với cấu hình chọn Khi chọn số lần chạy nhỏ mAP (mean Average Precision hay độ xác trung bình) khoảng 24%, xem hình 3.15, nhỏ sử dụng kết trình huấn luyện trường hợp Hình 3.15 Trực quan hóa kết q trình huấn luyện, đồ thị mơ tả độ xác trung bình với số lần chạy nhỏ Kết hình 3.16 có epoch 4096, chạy gần ngày đêm mơi trường Colab với GPU miễn phí 24 Tuy nhiên, kết nhận diện biển báo lại ấn tượng đoạn video thu đường Cẩm Mỹ - Long Thành, dù có vài bounding box dự báo nhầm băng-rơn treo lề đường, IoU chúng nhỏ 0,5 nên video hiển thị thoáng qua chưa thực đánh dấu biển báo giả 57 Hình 3.16 Trực quan hóa kết q trình huấn luyện, đồ thị mơ tả độ xác trung bình với số lần chạy lớn Hình 3.17 Một vài hình ảnh phát biển báo giáo thơng tuyến đường Cẩm Mỹ - Long Thành: hình bên trái biển báo nguy hiểm “đường giao không ưu tiên”, hình bên phải biển báo “tốc độ giới hạn 50 km/giờ” 58 Chương – KẾT LUẬN VÀ KIẾN NGHỊ Qua chương 3, đến kết luận: - Đã thu nhận số liệu ảnh biển báo giao thông vài tuyến đường địa phận Đồng Nai - Viết chương trình tăng cường liệu ảnh LabVIEW 2020, - Hồn thành q trình gán nhãn cho ảnh liệu, - Đề xuất mơ hình YOLOv5 để huấn luyện phát biển báo giao thông theo thời gian thực với độ xác trung bình (mAP) 75% Hướng phát triển đề tài: - Bổ sung hình ảnh nhiều vào liệu ảnh, điều kiện ánh sáng khác nhau: ban đêm, bị chói ngược sáng, thời tiết mưa - Khảo sát ảnh hưởng trình tăng cường liệu ảnh đến mAP, như: thay đổi góc nhìn, chèn nhiễu, làm mờ ảnh nhằm huấn luyện cho mơ hình hiểu để loại bỏ tác nhân này, làm cho ảnh rõ xác - Sử dụng phiên xác YOLOv5 phiên “m”, “x” nhằm tăng độ xác đương nhiên làm tăng thời gian đáp ứng lên Điều khơng ảnh hưởng nhiều đến khả đáp ứng nhanh YOLOv5 - Nếu có điều kiện tài để phục vụ chun sâu em trang bị máy chủ có GPU mạnh thời gian huấn luyện mơ hình giảm xuống không bị ngắt sau 24 (như chạy Colab miễn phí) Đồng nghĩa chọn epoch cao độ xác cao 75% Cùng liệu ảnh đầu vào, mô hình huấn luyện “RetinaNet” cho độ xác cao thời gian nhận dạng kéo dài TÀI LIỆU THAM KHẢO [1] Muhammad Shafique, Muhammad Fahim, Prashant Pydipogub (2013), Robust lane detection and object tracking School of Engineering, Blekinge Institute of Technology, SE – 371 79 Karlskrona, Sweden [2] Md Rezwanul Haque, Md Milon Islam, Kazi Saeed Alam, Hasib Iqbal, Md Ebrahim Shaik, “A Computer Vision based Lane Detection Approach” (2019), I.J Image, Graphics and Signal Processing, 2019, 3, 27-34 [3] Suvarna Shirke and R.Udayakumar, “Lane Datasets for Lane Detection” (2019), International Conference on Communication and Signal Processing, April 4-6, 2019, India [4] Seungwoo Yoo, Hee Seok Lee, Heesoo Myeong, Sungrack Yun, Hyoungwoo Park, Janghoon Cho, Duck Hoon Kim, “End-to-End Lane Marker Detection via Row-wise Classification” (2020), arXiv:2005.08630v1 [cs.CV] May 2020 [5] K Arun Kumar, S.Gowtham, M.Manoj Kumar, Dr.A Lakshmi, “Automatic recognition of sign-boards using myrio” (2018), International Journal of Pure and Applied Mathematics, Volume 119 No 12 2018, 14555-14562 [6] Trương Quốc Bảo, Truong Hùng Chen Trương Quốc Định, “Phát nhận dạng biển báo giao thông đường sử dụng đặc trưng hog mạng nơron nhân tạo” (2015), Tạp chí khoa học Trường Đại học Cần Thơ [7] Ian T Young, Jan J Gerbrands, Lucas J van Vliet (2004), Fundamentals Of Image Processing, Printed in The Netherlands at the Delft University of Technology [8] Thomas Klinger (2003), Image Processing with LabVIEW™ and IMAQ™ Visio, Publisher(s): Pearson, ISBN: 9780130474155 [9] John Canny, “A Computational Approach To Edge Detection” (1986), IEEE Transactions on Pattern Analysis and Machine Intelligence, 8(6):679–698 [10] Akshay S, Rahul A, Yashwanth Brahma B M, “Traffic Sign Board Detection Using Canny Edge Detection” (2018), Journal of Advanced Research in Dynamical and Control Systems [11] Khái niệm sliding window (cửa sổ trượt), https://minhng.info/tutorials/xu-lyanh-opencv-cua-so-truot-sliding-window.html [12] Sơ lược LabVIEW, https://www.ni.com/en-vn/shop/labview.html [13] Sơ lược Python, https://www.python.org/ [14] Sơ lược môi trường Colaboratory, https://colab.research.google.com/notebooks/welcome.ipynb?hl=vi#scrollTo=5f CEDCU_qrC0 [15] Bộ liệu ảnh “za_traffic_2020” tác giả Phan Huy Hoàng, https://www.kaggle.com/phhasian0710/za-traffic-2020 [16] Image Augmentation Techniques for Training Deep Learning Models, https://www.analyticsvidhya.com/blog/2021/03/image-augmentationtechniques-for-training-deep-learning-models/ PHỤ LỤC BỐN LOẠI BIỂN BÁO GIAO THƠNG ĐƯỜNG BỘ (hình ảnh lấy từ website: baogiaothong.vn)