Professional Documents
Culture Documents
Baocaofinal
Baocaofinal
TIỂU LUẬN
MÔN ĐỒ ÁN CƠ SỞ 1
ĐỀ TÀI:
NHẬN DIỆN BIỂN BÁO GIAO THÔNG
Lớp: 22DAI/DMT/HTDL
GIẢNG VIÊN: ĐINH THỊ THU HƯƠNG
1
BẢNG PHÂN CÔNG NHIỆM VỤ
-Tinh chỉnh mô
hình
-Thuyết trình
-Thuyết trình
-Thuyết trình
2
MỤC LỤC
3
DANH MỤC HÌNH ẢNH
4
Hì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
5
1.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.
6
Đố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.
7
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN
1.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.
Ngoài ra, việc duy trì và bảo dưỡng hệ thống biển báo cũng đòi hỏi chi phí đáng kể. Các
biển báo cần phải được kiểm tra định kỳ để đảm bảo rằng chúng vẫn đảm bảo độ rõ ràng,
độ bền và tính hiệu quả trong việc truyền đạt thông điệp giao thông.
8
Cuố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ẾT
2.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].
9
chư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]
10
Hì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]
11
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.
12
2.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
13
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.
14
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].
15
2.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
-Conv2D được sử dụng để thực hiện phép toán tích chập, bước đầu tiên của CNN.
from keras.layers import Conv2D
-MaxPoling2D được sử dụng để thực hiện thao tác gộp, bước thứ hai của CNN.
16
from 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
17
Chú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.
18
Hì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.
19
Hình 12. Hình ảnh minh họa kết quả đạt được.
Bước 4: Kiểm tra mô hình với test set.
Tập dữ liệu của chúng ta có chứa 1 thư mục test và 1 file test.csv. Chúng ta cần phải trích
xuất hình ảnh và nhãn tương ứng bằng cách sử dụng pandas. Sau đó, để dự đoán mô hình,
chúng ta phải thay đổi kích thước hình ảnh thành 30 × 30 pixel và tạo một mảng numpy
chứa tất cả dữ liệu hình ảnh. Sử dụng precision_score của sklearn.metrics để dự đoán các
nhãn của bộ test. Có thể thấy ta đã đạt được độ chính xác là 95% trong mô hình này.
Cuối cùng, chúng ta sẽ lưu mô hình đã đào tạo bằng cách sử dụng hàm model.save () của
Keras.
model.save(‘sautrain.h5’)
Bước 5: Thiết Kế Giao Diện Người Dùng (GUI)
Bây giờ chúng ta sẽ xây dựng giao diện người dùng bằng Tkinter. Tkinter là một bộ công
cụ GUI trong thư viện python tiêu chuẩn. Tạo một tệp mới là gui.py trong cùng thư mục
của project và sao chép đoạn code dưới đây vào file. Bạn có thể chạy file này bằng cách
nhập lệnh sau vào cmd: "python gui.py"
Trong đoạn code này, trước tiên ta phải import mô hình đã được training từ trước là
"sautrain.h5" . Và sau đó, xây dựng GUI để upload hình ảnh và một nút để gọi hàm
classify(). Hàm classify() chuyển đổi hình ảnh thành kích thước (1, 30, 30, 3). Sau đó,
chúng ta dự đoán các lớp, model.predict (image) trả về cho chúng ta một số trong khoảng
(0-42) đại diện cho lớp mà nó thuộc về.
20
CHƯƠNG 3: CHƯƠNG TRÌNH VÀ GIẢI THÍCH
3.1 Dataset
Để huấn luyện một mô hình Deep Learning trước tiên ta cần chuẩn bị một tập dữ liệu. tập
dữ liệu là yếu tố vô cùng quan trọng trong việc huấn luyện mô hình. Vì dữ liệu ở các môi
trường khác nhau (cường độ ánh sáng, vật thể bị méo dạng,..), thì pixel của các ảnh khác
nhau. Do đó, tập dữ liệu các lớn giúp mô hình học được vật thể ở nhiều trạng thái môi
trường khác nhau, từ đó tăng khả năng chính xác khi dự đoán ngoài thực tế.
Tập dữ liệu thường được ch Hình 8. Sự ngắn gọn trong việc sử dụng API Keras để làm
việc. Nguồn: keras.io ia làm 3 tập:
1) Tập training: tập training thường có kích thước lớn nhất. Tập training thường được
dán nhãn và cho trước nhãn để tính toán loss function và cập nhập các tham số để
mô hình tăng độ chính xác.
2) Tập validation (hay tập development): Tập validation thường được chia ra từ tập
training. Tập validation là không được dùng để cập nhập các tham số của mô hình,
mà nó chỉ được dùng để đánh giá xem mô hình có cần điều chỉnh parameter lại
hay không, có bị high bias hay high variance hay không.
3) Tập test: tập test được dùng để đánh giá lại mô hình có hiệu quả hay không. Dữ
liệu của tập test phải chưa từng xuất hiện trong tập training để có thể đánh giá mô
hình ngoài thực tế.
Các tập training, validation, test thường được chia với tỉ lệ 60/20/20 với tập dữ liệu
không quá lớn và được chia tỉ lệ 98/1/1 hoặc 99.5/0.1/0.4 với tập dữ liệu rất lớn (khoảng
1 triệu mẫu).
Trong việc phân loại biển báo giao thông trong ảnh, tập datasets được sử dụng là các biển
báo giao thông của Đức được công khai nguồn dữ liệu trên trang web Kaggle [12].
Tại tập datasets này, chúng tôi sử dụng file Train.zip bao gồm 9030 mẫu biển báo của 43
class để tiến hành training và file Test.zip để tiến hành kiểm tra lại.
21
Hình 13. Tập dữ liệu được sử dụng để xây dựng mô hình CNN.
Trong đó, tập dữ liệu training mẫu biển báo giao thông của Đức với 43 class được
gán nhãn như sau:
BẢNG 3.1: NHÃN VÀ TÊN CÁC BIỂN BÁO TRONG BÀI TOÁN PHÂN LOẠI
22
3 Tốc độ giới hạn 60km/h 25 Đường đang thi công
4 Tốc độ giới hạn 70km/h 26 Cảnh báo có đèn tín hiệu
5 Tốc độ giới hạn 80km/h 27 Cảnh báo có người đi bộ
6 Hết đoạn đường giới hạn 28 Cảnh báo có học sinh đi qua
80km/h
7 Tốc độ giới hạn 100km/h 29 Cảnh báo có xe đạp đi qua
8 Tốc độ giới hạn 120km/h 30 Cảnh báo tuyết lở
9 Cấm vượt 31 Cảnh báo thú hoang đi qua
10 Cấm xe trên 3,5 tấn vượt 32 Hết tất cả lệnh cấm
11 Giao nhau với đường 33 Rẽ phải phía trước
không ưu tiên
12 Giao nhau với đường ưu 34 Rẽ trái phía trước
tiên
13 Biển cảnh báo nguy hiểm 35 Đi thẳng
14 Biển dừng lại 36 Đi thẳng hoặc rẽ phải
15 Biển đường cấm 37 Đi thẳng hoặc rẽ trái
16 Cấm xe trên 3.5 tấn 38 Hướng phải đi vòng sang
phải
17 Cấm đi ngược chiều 39 Hướng trái đi vòng sang trái
18 Biển nguy hiểm khác 40 Nơi giao nhau chạy
theo
vòng xuyến
19 Nguy hiểm khi rẽ trái 41 Hết đoạn đường cấm vượt
20 Nguy hiểm khi rẽ phải 42 Hết đoạn đường cấm vượt
với xe trên 3.5 tấn
21 Chỗ ngoặt nguy hiểm
- Với đề tài này, nhóm chúng tôi huấn luyện mô hình trên thư viện Keras.
Đây là một mã nguồn mở dành cho Neural Network. Keras là một
framework cấp cao, cung cấp một số công cụ trừu tượng, 4 module được
dược sử dụng chủ yếu trong Keras bao gồm : Keras models, Keras layers,
Keras losses, Keras optimizers. Có 5 bước cơ bản để huấn luyện và kiểm
tra mô hình dùng các hàm đã xây dựng sẵn của Keras.
Bước 1: Khai báo các module cần thiết của thư viện Keras.
23
VD: Khai báo các thư viện cần thiết để thực hiện huấn luyện 3 kiến trúc bên trên
Bước 2: Tạo model bằng cách sử dụng các hàm trong thư
viện Keras: VD: Tạo một Convolutional Layer 2D,
Maxpooling và Dropout
24
Bước 5: Lưu model để sử dụng sau này:
- Sau quá trình training, chúng ta sẽ nhận được file lưu trọng số của model,
lúc này chúng ta sẽ tiến hành xây dựng giao diện người dùng sử dụng thư
viện Tkinter của Python và load model để nhận diện biển báo.
Hình 19. Khai báo thư viện Tkinter và Keras để tạo giao diện người dung.
25
Hình 20. Tạo mảng gồm các nhãn của biển báo.
26
Hình 22. Tạo hàm xử lý ảnh.
27
CHƯƠNG 4: KẾT QUẢ
Các bước thực hiện chương trình phần mềm nhận diện biển báo giao thông
1) Chạy file chương trình : Chúng ta thực hiện mở folder “ThienCanh” sau đó mở file ‘code
chay chuong trinh.py’
28
2) Sau khi mở file thì màn hình sẽ xuất hiện cửa sổ dưới đây
29
3) Click vào “ Tai bien bao len “ để chọn biển báo từ máy tính
- Sau khi hoàn thanh bước 3 thì chúng ta sẽ mở 1 file ảnh biển báo giao thông bất kỳ ở
trong các folder “anh test code”, “dulieuanhtrain”, “meta” hoặc chúng ta có thể tải ảnh
từ trang web google để nhận diện.
Ví dụ: nhóm chúng em chọn ảnh trong file “dulieuanhtrain” để nhận diện thì máy tính sẽ
mở ra 42 folder nhỏ để chúng ta có thể lựa chọn bất kỳ như sau:
- Để chọn ảnh nhận diện, chúng ta sẽ mở 1 foler bất kỳ sau đó chọn 1 ảnh trong folder đó
30
Ví dụ: Nhóm chúng em mở folder 26 thì sẽ hiện ra rất nhiều ảnh và sẽ chọn 1 ảnh bất kỳ
để nhận diện
- Chọn ảnh sau đó nhấn Open để tải ảnh lên phần mềm nhận diện
31
Hình 28. Sau khi nhấn Open để tài ảnh lên phần mềm nhận diện.
- Bấm vào “Nhan dien” và xem kết quả hiển thị trên màn hình
32
Ví dụ về biển báo giao thông 'Giới hạn tốc độ (30km/h)'
Hình 30. Ví dụ về biển báo giao thông ‘Giới hạn tốc độ’.
33
Ví dụ về biển báo giao thông “Dừng”
34
PHẦN KẾT LUẬN
Trong quá trình thực hiện dự án này, chúng tôi đã đạt được một mô hình nhận diện
biển báo giao thông với độ chính xác đáng kể, đạt tới mức 95%. Điều này là một bước
tiến quan trọng và đầy ý nghĩa đối với việc nâng cao hiệu suất và an toàn giao thông
trên các tuyến đường.
Tuy nhiên, dự án của chúng tôi vẫn còn khá đơn giản và hạn chế ở một số khía cạnh.
Do đó, chúng tôi nhận thức rõ ràng về những hướng phát triển tiềm năng để cải thiện
và mở rộng dự án trong tương lai.
Một trong những hướng đi quan trọng mà chúng tôi sẽ tiếp tục khám phá là thiết kế
các dự án kết hợp phức tạp hơn. Điều này bao gồm việc tích hợp nhiều loại dữ liệu và
đặc trưng khác nhau vào mô hình, từ thông tin hình ảnh đến dữ liệu từ cảm biến và hệ
thống GPS. Việc này sẽ giúp tăng tính tổng quát và đa dạng hóa mô hình, từ đó cải
thiện khả năng nhận diện và dự đoán trên các tình huống giao thông phức tạp.
Ngoài ra, chúng tôi cũng đặc biệt quan tâm đến việc mở rộng áp dụng mô hình nhận
diện này trên các đối tượng khác nhau, không chỉ là biển báo giao thông. Bằng cách sử
dụng thông tin được trích xuất từ ảnh thu thập, chúng tôi tin rằng mô hình có thể được
áp dụng trên nhiều loại đối tượng khác nhau như người, động vật, xe máy và nhiều hơn
nữa. Điều này mở ra nhiều cơ hội mới và tiềm năng trong việc ứng dụng trí tuệ nhân
tạo vào các lĩnh vực khác nhau ngoài giao thông.
Tóm lại, dự án này không chỉ là một bước tiến quan trọng trong việc phát triển một mô
hình nhận diện biển báo giao thông, mà còn là điểm khởi đầu cho những nỗ lực tiếp
theo của chúng tôi trong việc nghiên cứu và ứng dụng trí tuệ nhân tạo vào các vấn đề
thực tiễn và hữu ích trong xã hội. Chúng tôi hướng đến một tương lai năng động và
phát triển, với những dự án đa dạng và tích hợp, góp phần vào sự tiện bộ và an toàn
cho cộng đồng.
35
TÀI LIỆU THAM KHẢO
[4] G. Huang, Z. Liu, L. Van Der Maaten, and K. Q. Weinberger, “Densely connected
Convolutional Networks,” 2017 IEEE Conference on Computer Vision and Pattern
Recognition (CVPR), Jul. 2017. doi:10.1109/cvpr.2017.243
[7] K. He, X. Zhang, S. Ren, and J. Sun, “Deep residual learning for image recognition,”
2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Jun.
2016. doi:10.1109/cvpr.2016.90
[8] “Keras: The high-level API for tensorflow : Tensorflow Core,” TensorFlow,
https://www.tensorflow.org/guide/keras (accessed Apr. 15, 2024).
36