Đang tải... (xem toàn văn)
KHOA: KỸ THUẬT& KHOA HỌC MÁY TÍNH
TIỂU LUẬN
MÔN ĐỒ ÁN CƠ SỞ 1
ĐỀ TÀI:
NHẬN DIỆN BIỂN BÁO GIAO THÔNG
SINH VIÊN: NGUYỄN HIẾU KHA – 31012202530
Trang 2BẢNG PHÂN CÔNG NHIỆM VỤ
STT
công việc được
-Viết báo cáo-Thuyết trình
-Viết báo cáo-Thuyết trình
100%
Trang 33.Mục Tiêu Nghiên Cứu 6
4.Đối Tượng và Phạm Vi Nghiên Cứu 6
5.Phương Pháp Nghiên Cứu 6
PHẦN NỘI DUNG 7
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN 7
1.1 Tầm quan trọng của biển báo giao thông 7
1.2 Thách thức và hạn chế của biển báo giao thông 7
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 8
2.1 Học sâu - Deep Learning 8
2.2 Mạng nơ-ron tích chập - Convolutional Neural Network 9
2.3 Densenet 9
2.4 Mạng dư - Residual Networks (ResNet) 12
2.5 Keras 15
2.6 Các thư viện được sử dụng 15
CHƯƠNG 3: CHƯƠNG TRÌNH VÀ GIẢI THÍCH 20
Trang 4DANH MỤC HÌNH ẢNH
Hình 1 Hình ảnh về mạng lưới Deep Learning Nguồn: thedatascientist.com 7 Hình 2 Cấu trúc DenseNet và Resnet Nguồn: paperswithcode.com 9
Hình 3 Một mạng lưới gồm 5 DenseBlock được liên kết với nhau với số lớp k = 4 Mỗi lớp đều lấy kết quả từ lớp ở Block phía trước Nguồn: paperswithcode.com 10
Hình 4 DenseBlock và các layer 10
Hình 5 Đồ thị về tỷ lệ lỗi khi huấn luyện và thử nghiệm Nguồn: geeksforgeek.org 11 Hình 6 Mô tả về công thức được sử dụng trong ResNet với hàm kích hoạt relu Nguồn: geeksforgeeks.org 12
Hình 7 Ví dụ về ImageNet Bên trái: cái Mô hình VGG-19 (19,6 tỷ FLOP) làm tài liệu tham khảo.Ở giữa: một mạng đơn giản Với 34 lớp tham số (3,6 tỷ FLOP) Bên phải: mạng dư có 34 lớp tham số (3,6 tỷ FLOP) Nguồn: arxiv.org [7] 13
Hình 8 Sự ngắn gọn trong việc sử dụng API Keras để làm việc Nguồn: keras.io 15 Hình 9 Phân chia dữ liệu 17
Hình 10 Xây dựng mô hình CNN 17 Hình 11 Hình ảnh minh họa sự mất mát 18
Hình 12 Hình ảnh minh họa kết quả đạt được 18
Hình 13 Tập dữ liệu được sử dụng để xây dựng mô hình CNN 21 Hình 14 Khai báo thư viện Keras.23
Hình 15 Tạo model Keras 23
Hình 16 Compile model Keras 24 Hình 17 Training model Keras 24 Hình 18 Lưu model Keras.24
Trang 5Hình 22 Tạo hàm xử lý ảnh 26 Hình 23 Tiến hành xử lý ảnh 27 Hình 24 Chạy file chương trình 28 Hình 25 Cửa sổ sau khi mở file 29
Hình 26 Chọn biển báo từ máy tính 30
Hình 27 Chọn 1 ảnh bất kì trong folder 26 31
Hình 28 Sau khi nhấn Open để tài ảnh lên phần mềm nhận diện 32 Hình 29 Bấm nút nhận diện và xem kết quả 33
Hình 30 Ví dụ về biển báo giao thông ‘Giới hạn tốc độ’ 34 Hình 31 Ví dụ về biển báo giao thông 'Cấm xe'.35
Hình 32 Ví dụ về biển báo giao thông ' Dừng ' 36
PHẦN MỞ ĐẦU
Trang 61.Lý Do Chọn Đề Tài
Trong thời đại công nghệ hiện đại, sự phát triển của trí tuệ nhân tạo và máy học đã mở ra những cánh cửa mới cho việc giải quyết các vấn đề phức tạp trong đời sống hàng ngày Trong lĩnh vực giao thông, việc nhận diện biển báo đóng một vai trò quan trọng trong việc nâng cao an toàn giao thông và giảm thiểu tai nạn Để đáp ứng nhu cầu này, việc áp dụng các thuật toán học sâu, như mạng nơ-ron tích chập (CNN), đã thu hút sự quan tâm lớn từ cộng đồng nghiên cứu và công nghệ.
Tại Việt Nam, tình trạng an toàn giao thông đường bộ vẫn còn diễn biến phức tạp, số người tử vong vì tài nạn giao thông vẫn còn mức cao do tình trạng không tuân thủ luật giao thông và quan trọng nhất vẫn là vì ý thức của người điều khiển giao thông còn kém Biển báo giao thông được nhận diện tự động sẽ giúp người tham gia giao thông rất nhiều nhằm đưa ra những cảnh báo kịp thời, chính xát để giảm ùn tắc và an toàn hơn.
Việc ứng dụng công nghệ thông tin để giải quyết các vấn đề trong lĩnh vực giao thông đang là một chủ đề nóng ở nước ta hiện nay Vấn đề phát triển giao thông thông minh để giảm thiểu ùn tắc, tai nạn và tiết kiệm nguồn lực cũng được thảo luận trong nhiều hội thảo, diễn đàn như diễn đàn cấp cao Công nghệ Thông tin – Truyền thông Việt Nam (Vietnam ICT Summit), 2015 Phát hiện và nhận dạng biển báo giao thông là một công cụ hỗ trợ trong hệ thống giao thông thông minh Các hệ thống như vậy đang được phát triển và ứng dụng trong ngành công nghiệp tự động hóa, thông minh ở một số quốc gia phát triển trên thế giới Ở Việt Nam, cũng có một số nghiên cứu về lĩnh vực này
2.Lịch Sử Nghiên Cứu Vấn Đề
Lịch sử nghiên cứu về nhận diện biển báo giao thông đã trải qua những bước đột phá đáng kể từ những phương pháp truyền thống đến các phương pháp dựa trên trí tuệ nhân tạo và học máy Các nghiên cứu trước đây đã giúp cải thiện hiệu suất nhận diện và giảm thiểu sai số, tuy nhiên vẫn còn nhiều thách thức cần được vượt qua, đặc biệt là trong việc nhận diện các biển báo có điều kiện ánh sáng và thời tiết khác nhau.
3.Mục Tiêu Nghiên Cứu
Mục tiêu của nghiên cứu này là áp dụng và tối ưu hóa thuật toán CNN để nhận diện biển báo giao thông với độ chính xác cao và đáng tin cậy, kể cả trong điều kiện ánh sáng và thời tiết biến đổi.
Trang 7Đối tượng của nghiên cứu là các biển báo giao thông thông thường được sử dụng trên các tuyến đường phổ biến Phạm vi của nghiên cứu sẽ tập trung vào việc nhận diện và phân loại các loại biển báo này trong các điều kiện khác nhau, từ ban ngày đến ban đêm, từ điều kiện ánh sáng tốt đến điều kiện ánh sáng yếu.
5.Phương Pháp Nghiên Cứu
Nghiên cứu sẽ sử dụng các phương pháp và kỹ thuật của máy học, đặc biệt là mạng nơ-ron tích chập (CNN), để xây dựng một hệ thống nhận diện biển báo giao thông Các bước tiếp theo bao gồm tiền xử lý dữ liệu, xây dựng mô hình CNN, huấn luyện mô hình và đánh giá hiệu suất của hệ thống.
Thông qua việc thực hiện nghiên cứu này, hy vọng rằng sẽ đóng góp vào việc cải thiện hiệu suất và độ tin cậy của hệ thống nhận diện biển báo giao thông, từ đó nâng cao an toàn và hiệu quả của giao thông đường bộ.
PHẦN NỘI DUNG
Trang 8CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN1.1.Tầm quan trọng của biển báo giao thông
Biển báo giao thông trên biển không chỉ là những dấu hiệu tĩnh đơn giản, mà còn đóng vai trò không thể phủ nhận trong việc đảm bảo an toàn và trật tự trên mặt biển Với vai trò như là các hướng dẫn và cảnh báo, chúng đóng góp đáng kể vào việc điều hướng các phương tiện và tàu thuyền trên biển một cách an toàn và hiệu quả.
Một trong những yếu tố quan trọng nhất mà biển báo giao thông mang lại là sự an toàn Bằng cách cung cấp thông tin về các vùng nguy hiểm, điều kiện thời tiết và các điểm cảnh báo khác, chúng giúp tàu thuyền và phương tiện biển tránh xa các tình huống nguy hiểm và giảm thiểu nguy cơ xảy ra tai nạn Đồng thời, chúng cũng giúp hạn chế và giải quyết các tình huống khẩn cấp trên biển một cách nhanh chóng và hiệu quả, từ đó bảo vệ tính mạng và tài sản của những người tham gia giao thông biển.
Ngoài ra, biển báo giao thông còn đóng vai trò quan trọng như là phương tiện truyền thông và liên lạc giữa các phương tiện và cơ quan quản lý biển Chúng tạo ra một hệ thống liên lạc hiệu quả, giúp thông tin về tình hình trên biển được truyền tải một cách nhanh chóng và chính xác Điều này không chỉ giúp tăng cường khả năng đối phó với các tình huống khẩn cấp mà còn đảm bảo rằng các hoạt động giao thông biển được thực hiện một cách hợp lý và an toàn.
1.2.Thách thức và hạn chế của biển báo giao thông
Một trong những thách thức lớn nhất là sự đa dạng và phức tạp của các loại biển báo giao thông Từ biển báo hướng đi đến biển báo cảnh báo và hạn chế tốc độ, mỗi loại biển báo đều có một mục đích và quy định riêng Sự phức tạp này làm tăng độ khó trong việc thiết kế, triển khai và duy trì hệ thống biển báo.
Thêm vào đó, khả năng hiểu biết và tuân thủ của người tham gia giao thông cũng là một thách thức đáng kể Người lái xe hoặc người điều khiển tàu thuyền không luôn tuân thủ các biển báo giao thông do nhiều lý do khác nhau như sơ suất, thiếu hiểu biết hoặc hành vi bất cẩn.
Điều kiện môi trường cũng có ảnh hưởng đến hiệu quả của các biển báo giao thông Thời tiết xấu, ánh sáng yếu, sương mù hay tình trạng đường trơn trượt có thể làm giảm khả năng nhận diện và hiệu quả của các biển báo, gây ra nguy cơ tai nạn và gây khó khăn cho việc duy trì an toàn giao thông.
Trang 9Cuối cùng, việc cung cấp nguồn lực tài chính đủ để duy trì hệ thống biển báo trong thời gian dài có thể là một thách thức đối với các cơ quan quản lý giao thông Việc phải đối mặt với những hạn chế này yêu cầu sự quản lý thông minh và kế hoạch đầu tư hợp lý từ phía các nhà quản lý giao thông.
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT2.1 Học sâu - Deep Learning
Deep learning là một tập hợp con của học máy sử dụng mạng lưới thần kinh nhiều lớp, được gọi là mạng lưới thần kinh sâu, để mô phỏng khả năng ra quyết định phức tạp của bộ não con người [1] Một số dạng deep learning hỗ trợ hầu hết trí tuệ nhân tạo (AI) trong cuộc sống của chúng ta ngày nay.
Deep learning thúc đẩy nhiều ứng dụng và dịch vụ cải thiện tự động hóa, thực hiện các nhiệm vụ phân tích và vật lý mà không cần sự can thiệp của con người Nó nằm đằng sau các sản phẩm và dịch vụ hàng ngày [1]
Hình 1 Hình ảnh về mạng lưới Deep Learning Nguồn: thedatascientist.com.
2.2 Mạng nơ-ron tích chập - Convolutional Neural Network
Convolutional Neural Network (CNN hoặc ConvNet) còn được gọi là mạng nơ-ron tích chập [2] Đây được xem là một trong những mô hình của Deep Learning – tập hợp các thuật toán để có mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý có cấu trúc phức tạp hơn [2] Hiểu đơn giản, CNN là một dạng của mạng nơ-ron sâu, được áp dụng phổ biến nhất để phân tích hình ảnh một cách trực quan hơn Hiện tại,
Trang 10chưa có định nghĩa nào về thuật toán CNN chính xác nhất [2] Mạng CNN được thiết kế với mục đích xử lý dữ liệu thông qua nhiều lớp (layers) Ngoài ra, CNN có thể giúp tạo ra được hệ thống thông minh, phản ứng với độ chính xác tương đối cao [2]
Kunihiko Fukushima và Yann LeCun đã đề xuất mạng lưới thần kinh tích chập vào những năm 1980 và 1989, đồng thời áp dụng phương pháp lan truyền ngược để huấn luyện mạng lưới thần kinh trong việc nhận dạng mã Zip viết tay [2] Trong suốt những năm 1990, Yann LeCun và nhóm nghiên cứu của ông tiếp tục phát triển nghiên cứu, đạt đỉnh cao với kiến trúc "LeNet-5", được sử dụng cho việc nhận dạng tài liệu [2] Từ đó, nhiều kiến trúc CNN biến thể đã được phát triển, kèm theo sự xuất hiện của các bộ dữ liệu mới như MNIST và CIFAR-10, cũng như các cuộc thi như Thử thách nhận dạng hình ảnh quy mô lớn ImageNet (ILSVRC) Một số kiến trúc nổi tiếng bao gồm:
AlexNet
VGGNet2.2 Mạng nơ-ron tích chập - Convolutional Neural Network GoogLeNet
ResNet
LeNet-5 – được biết đến như 1 kiến trúc CNN cổ điển
Convolutional Neural Network (CNN hoặc ConvNet) còn được gọi là mạng nơ-ron tích chập [2] Đây được xem là một trong những mô hình của Deep Learning – tập hợp các thuật toán để có mô hình dữ liệu trừu tượng hóa ở mức cao bằng cách sử dụng nhiều lớp xử lý có cấu trúc phức tạp hơn [2] Hiểu đơn giản, CNN là một dạng của mạng nơ-ron sâu, được áp dụng phổ biến nhất để phân tích hình ảnh một cách trực quan hơn Hiện tại, chưa có định nghĩa nào về thuật toán CNN chính xác nhất Mạng CNN được thiết kế với mục đích xử lý dữ liệu thông qua nhiều lớp (layers) [2] Ngoài ra, CNN có thể giúp tạo ra được hệ thống thông minh, phản ứng với độ chính xác tương đối cao [2]
2.3 Densenet
Densenet là mạng tích chập(CNN) được kết nối dày đặc Nó rất giống với ResNet nhưng có một số khác biệt cơ bản [3] ResNet sử dụng một phương pháp bổ sung có nghĩa là lấy đầu ra trước đó làm đầu vào cho lớp trong tương lai và trong DenseNet lấy tất cả đầu ra trước đó làm đầu vào cho lớp trong tương lai như trong hình trên Có thể nói, DenseNet là một dạng ứng dụng của mạng nơ-ron tích chập (CNN), trong đó các lớp sau được lấy từ các lớp trước để tính toán [3] Điều này tạo ra một mạng nơ-ron có cấu trúc kết nối chặt chẽ, giúp tăng cường khả năng học và hiệu suất của mô hình [3]
Trang 11Hình 2 Cấu trúc DenseNet và Resnet Nguồn: paperswithcode.com.
DenseBlock là một mô-đun được sử dụng trong các mạng thần kinh tích chập(CNN), kết nối trực tiếp tất cả các lớp (với kích thước bản đồ đặc trưng phù hợp) với nhau Kể từ đó, lớp thứ lth có l đầu vào(inputs) và nó sẽ được chuyển cho L – l lớp tiếp theo (L: tổng số lớp, l: lớp hiện lại) Và từ đó nó sẽ tạo nên sự liên kết dày đặc trong mạng lưới [4]
Trang 12Hình 3 Một mạng lưới gồm 5 DenseBlock được liên kết với nhau với số lớp k = 4 Mỗilớp đều lấy kết quả từ lớp ở Block phía trước Nguồn: paperswithcode.com.
Hình 4 DenseBlock và các layer.
Trang 132.4 Mạng dư - Residual Networks (ResNet)
Sau kiến trúc đầu tiên dựa trên CNN (AlexNet) chiến thắng cuộc thi ImageNet 2012, mọi kiến trúc chiến thắng tiếp theo sử dụng nhiều lớp hơn trong một mạng nơ-ron sâu để giảm tỷ lệ lỗi [5] Điều này hoạt động cho ít lớp hơn, nhưng khi chúng ta tăng số lớp, có một vấn đề phổ biến trong học sâu gọi là đạo hàm biến mất/bùng nổ (vanishing) [5] Điều này làm cho đạo hàm trở thành 0 hoặc quá lớn Do đó, khi chúng ta tăng số lớp, tỷ lệ lỗi khi huấn luyện và kiểm tra cũng tăng [5]
Vanishing là vấn đề xảy ra khi huấn luyện các mạng nơ ron nhiều lớp [5] Khi huấn luyện, giá trị đạo hàm là thông tin phản hồi của quá trình lan truyền ngược [5] Giá trị này trở nên vô cùng nhỏ tại các lớp nơ ron đầu tiên khiến cho việc cập nhật trọng số mạng không thể xảy ra [6]
Hình 5 Đồ thị về tỷ lệ lỗi khi huấn luyện và thử nghiệm Nguồn: geeksforgeek.org.
Mạng Residual: Để giải quyết vấn đề về đạo hàm biến mất, kiến trúc này giới thiệu khái niệm gọi là Residual Blocks Trong mạng này, chúng ta sử dụng một kỹ thuật gọi là kết nối trực tiếp Kết nối trực tiếp kết nối các hoạt động của một lớp đến các lớp tiếp theo bằng cách bỏ qua một số lớp ở giữa [5] Điều này tạo thành một khối residual ResNets được tạo thành bằng cách xếp các khối residual này cùng nhau [5] Phương pháp đằng sau mạng này là thay vì các lớp học ánh xạ cơ bản, chúng ta cho phép mạng phù hợp với ánh xạ residual [5] Đó là H(x), ánh xạ ban đầu, để mạng phù hợp với công thức : [5]
F(x) ∶= H(x) – x
Trang 14Hình 6 Mô tả về công thức được sử dụng trong ResNet với hàm kích hoạt relu Nguồn:geeksforgeeks.org.
Trang 15Hình 7 Ví dụ về ImageNet Bên trái: cái Mô hình VGG-19 (19,6 tỷ FLOP) làm tài liệutham khảo.Ở giữa: một mạng đơn giản Với 34 lớp tham số (3,6 tỷ FLOP) Bên phải:
mạng dư có 34 lớp tham số (3,6 tỷ FLOP) Nguồn: arxiv.org [7].
Trang 162.5 Keras
Keras là API cấp cao của nền tảng TensorFlow [8] Nó cung cấp một giao diện dễ tiếp cận, hiệu quả cao để giải quyết các vấn đề về máy học (ML), tập trung vào học sâu hiện đại Keras bao gồm mọi bước trong quy trình học máy, từ xử lý dữ liệu đến điều chỉnh siêu tham số cho đến triển khai[8] Nó được phát triển với trọng tâm là cho phép thử nghiệm nhanh [8]
Với Keras, ta có toàn quyền truy cập vào khả năng mở rộng và khả năng đa nền tảng của TensorFlow Có thể chạy Keras trên TPU Pod hoặc các cụm GPU lớn vàcũng có thể xuất các mô hình Keras để chạy trong trình duyệt hoặc trên thiết bị di động [8]
Keras được thiết kế để đơn giản hóa công bằng cách đạt được các mục tiêu sau: [8] o Cung cấp giao diện đơn giản, nhất quán.
o Tối thiểu hóa số lượng hành động cần thiết cho các trường hợp sử dụng thông thường.
o Cung cấp các thông báo lỗi rõ ràng, hữu ích.
o Tuân thủ nguyên tắc tiết lộ dần về độ phức tạp: Bắt đầu dễ dàng và bạn có thể hoàn thành các luồng công việc nâng cao bằng cách học từng bước o Hỗ trợ viết mã ngắn gọn, dễ đọc.
Hình 8 Sự ngắn gọn trong việc sử dụng API Keras để làm việc Nguồn: keras.io.
2.6.Các thư viện được sử dụng
Trang 17from keras.layers import MaxPooling2D
-Flatten là quá trình chuyển đổi tất cả các mảng 2D kết quả thành một vectơ tuyến tính dài liên tục.
from keras.layers import Flatten
-Dense được sử dụng để thực hiện kết nối đầy đủ của mạng nơ-ron, bước thứ tư của CNN.
from keras.layers import Dense
-Tkinter là giao diện Python cho bộ công cụ Tk GUI
-Để tạo hộp thoại tệp (trình chọn tệp), bạn có thể sử dụng filedialog from tkinter import filedialog
- Tk là để tạo ra một cửa sổ nhỏ trên màn hình import tkinter as tk
- Thư viện PIL cho phép người dùng thực hiện một số tác vụ liên quan đến xử lý hình ảnh.
- Mudule os cho phép chúng ta thao tác với tệp và thư mục.
- Tensorfow là thư viện mã nguồn mở dùng cho tính toán số học sử dụng đồ thị luồng dữ liệu.
- OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính (computer vision), xử lý ảnh và máy học, và các tính năng tăng tốc GPU trong hoạt động thời gian thực.
- Pandas sử dụng một cấu trúc dữ liệu riêng là Dataframe Pandas cung cấp rất nhiều
chức năng xử lý và làm việc trên cấu trúc dữ liệu này
Ứng Dụng Vào Bài Toán
Bước 1: Khám phá tập dữ liệu
Thư mục train có chưa 43 thư mục con mỗi thư mục đại diện cho một lớp khác nhau được đánh số thứ tự từ 0 đến 42 sử dụng module OS ta sẽ lặp lại trên tất cả các lớp để kết nối các hình ảnh với nhãn tương ứng của chúng.
Thư viện PIL được sử dụng để chuyển hình ảnh thành một mảng.
Sau đó ta sẽ lưu tất cả các hình ảnh và nhãn của chúng vào lists data và labels.
Trang 18Chúng ta cần chuyển các lists thành các numpy array để làm đầu vào cho model.
Kích thước của dữ liệu là (39209, 30, 30, 3), có nghĩa là có 39209 hình ảnh, mỗi ảnh có kích thước 30×30 pixel, số 3 ở cuối thể hiện dữ liệu là hình ảnh màu (giá trị RGB) Sử dụng phương thức train_test_split () của sklearn để phân chia bộ dữ liệu thành train set và test set.
Sử dụng phương thức to_categorical của keras.utils để xử lý các nhãn của y_train và y_test bằng one-hot encoding.
Hình 9 Phân chia dữ liệu.
Bước 2: Xây dựng mô hình CNN.
Để phân loại các hình ảnh thành các danh mục tương ứng, chúng ta sẽ xây dựng mô hình CNN (Convolutional Neural Network) CNN là mô hình tốt nhất cho mục đích phân loại hình ảnh.
Kiến trúc mô hình CNN của chúng ta như sau:
Trang 19Hình 10 Xây dựng mô hình CNN.
Bước 3: Training và xác thực mô hình.
Sau khi xây dựng kiến trúc mô hình, chúng ta sẽ huấn luyện mô hình bằng cách sử dụng model.fit () Chúng ta hãy thử với batch size là 32 và 64 nhận thấy mô hình hoạt động tốt hơn với batch size là 64 và sau 15 epochs độ chính xác đã được ổn định.
Mô hình của chúng ta đã đạt đến độ chính xác ~ 95% trên tập training set Sử dụng matplotlib để vẽ biểu đồ tương quan giữa độ chính xác và sự mất mát.
Hình 11 Hình ảnh minh họa sự mất mát.