1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông

38 5 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nhận Diện Biển Báo Giao Thông
Tác giả Nguyễn Hiếu Kha, Trần Đỗ Công Minh, Nguyễn Thế Anh, Trương Trí Đức
Người hướng dẫn Đinh Thị Thu Hương
Trường học Khoa Kỹ Thuật & Khoa Học Máy Tính
Chuyên ngành Đồ Án Cơ Sở 1
Thể loại tiểu luận
Định dạng
Số trang 38
Dung lượng 2,87 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN (8)
    • 1.1. Tầm quan trọng của biển báo giao thông (8)
    • 1.2. Thách thức và hạn chế của biển báo giao thông (8)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (9)
    • 2.1. Học sâu - Deep Learning (9)
    • 2.2. Mạng nơ-ron tích chập - Convolutional Neural Network (9)
    • 2.3. Densenet (10)
    • 2.4. Mạng dư - Residual Networks (ResNet) (13)
    • 2.5. Keras (16)
    • 2.6. Các thư viện được sử dụng (16)
  • CHƯƠNG 3: CHƯƠNG TRÌNH VÀ GIẢI THÍCH (21)
    • 3.1 Dataset (21)
    • 3.2 Huấn Luyện mô hình (23)
  • CHƯƠNG 4: KẾT QUẢ (28)
  • TÀI LIỆU THAM KHẢO (38)

Nội dung

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

GIỚI THIỆU TỔNG QUAN

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.

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

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.

CƠ SỞ LÝ THUYẾT

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.

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, 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:

 VGGNet2.2 Mạng nơ-ron tích chập - Convolutional Neural Network

 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]

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]

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]

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.

Hình 4 DenseBlock và các layer.

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]

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.

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].

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.

Các thư viện được sử dụng

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

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.

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.

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:

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.

Hình 11 Hình ảnh minh họa sự mất mát.

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ề.

CHƯƠNG TRÌNH VÀ GIẢI THÍCH

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ế.

Sai số tập validation 22% 16% 30% 1% Đánh giá mô hình

Mô hình bị high variance (overfitting)

Mô hình bị high bias (underfitting)

Mô hình bị cả high bias và high variance

Mô hình hoạt động ổn định

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

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.

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

2 Tốc độ giới hạn 50km/h 24 Đường bị hẹp bên phải

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

80km/h 28 Cảnh báo có học sinh đi qua

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 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

Huấn Luyện mô hình

- 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.

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

Hình 14 Khai báo thư viện Keras.

 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,

 Bước 3 : Compile model bằng lệnh sau:

- Hàm optimizer có thể là ‘adam’, ‘sdg’,RMSprop, …

- Hàm Loss dùng để tính toán chất lượng của model từ đó tìm cách giảm thiểu trong quá trình đào tạo.

 Bước 4 : Train model và test model bằng lệnh sau:

 Bước 5 : Lưu model để sử dụng sau này:

3.3 Tạo giao diện người dùng

- 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.

 Bước 1 : Khai báo thư viện của Tkinter và Keras

Hình 19 Khai báo thư viện Tkinter và Keras để tạo giao diện người dung.

 Bước 2 : Tạo mảng lưu lại nhãn của 43 lớp mẫu biển báo

VD: Tạo cho 23 biển báo

Hình 20 Tạo mảng gồm các nhãn của biển báo.

 Bước 4 : Tạo các hàm để xử lý và đưa ra kết quả

Hình 22 Tạo hàm xử lý ảnh.

 Bước 5 : Gọi hàm vừa khai báo và tiến hành classify

Hình 23 Tiến hành xử lý ảnh.

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’

2) Sau khi mở file thì màn hình sẽ xuất hiện cửa sổ dưới đây

Hình 25 Cửa sổ sau khi mở file.

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 đó

 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

Hình 27 Chọn 1 ảnh bất kì trong folder 26.

- Chọn ảnh sau đó nhấn Open để tải ảnh lên phần mềm nhận diện

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

Hình 29 Bấm nút nhận diện và xem kết quả.

 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 độ’.

 Ví dụ về biển báo giao thông 'Cấm xe'

Hình 31 Ví dụ về biển báo giao thông 'Cấm xe'.

 Ví dụ về biển báo giao thông “Dừng”

Hình 32 Ví dụ về biển báo giao thông ' Dừng '.

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.

Ngày đăng: 01/05/2024, 08:28

HÌNH ẢNH LIÊN QUAN

BẢNG PHÂN CÔNG NHIỆM VỤ - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
BẢNG PHÂN CÔNG NHIỆM VỤ (Trang 2)
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 - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
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 (Trang 5)
Hình 1. Hình ảnh về mạng lưới Deep Learning. Nguồn: thedatascientist.com. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 1. Hình ảnh về mạng lưới Deep Learning. Nguồn: thedatascientist.com (Trang 9)
Hình 2. Cấu trúc DenseNet và Resnet. Nguồn: paperswithcode.com. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 2. Cấu trúc DenseNet và Resnet. Nguồn: paperswithcode.com (Trang 11)
Hình 4. DenseBlock và các layer. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 4. DenseBlock và các layer (Trang 12)
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 - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
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 (Trang 12)
Hình 5. Đồ thị về tỷ lệ lỗi khi huấn luyện và thử nghiệm. Nguồn: geeksforgeek.org. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 5. Đồ thị về tỷ lệ lỗi khi huấn luyện và thử nghiệm. Nguồn: geeksforgeek.org (Trang 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: - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
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: (Trang 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) - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
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) (Trang 15)
Hình 9. Phân chia dữ liệu. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 9. Phân chia dữ liệu (Trang 18)
Hình 10. Xây dựng mô hình CNN. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 10. Xây dựng mô hình CNN (Trang 19)
Hình 12. Hình ảnh minh họa kết quả đạt được. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 12. Hình ảnh minh họa kết quả đạt được (Trang 20)
Hình 13. Tập dữ liệu được sử dụng để xây dựng mô hình CNN. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 13. Tập dữ liệu được sử dụng để xây dựng mô hình CNN (Trang 22)
BẢNG  3.1:  NHÃN  VÀ  TÊN  CÁC  BIỂN  BÁO  TRONG  BÀI  TOÁN  PHÂN  LOẠI - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
3.1 NHÃN VÀ TÊN CÁC BIỂN BÁO TRONG BÀI TOÁN PHÂN LOẠI (Trang 22)
Hình 19. Khai báo thư viện Tkinter và Keras để tạo giao diện người dung. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 19. Khai báo thư viện Tkinter và Keras để tạo giao diện người dung (Trang 26)
Hình 21. Tạo giao diện. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 21. Tạo giao diện (Trang 27)
Hình 23. Tiến hành xử lý ảnh. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 23. Tiến hành xử lý ảnh (Trang 28)
Hình 27. Chọn 1 ảnh bất kì trong folder 26. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 27. Chọn 1 ảnh bất kì trong folder 26 (Trang 31)
Hình 28. Sau khi nhấn Open để tài ảnh lên phần mềm nhận diện. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 28. Sau khi nhấn Open để tài ảnh lên phần mềm nhận diện (Trang 32)
Hình 29 Bấm nút nhận diện và xem kết quả. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 29 Bấm nút nhận diện và xem kết quả (Trang 33)
Hình 30. Ví dụ về biển báo giao thông ‘Giới hạn tốc độ’. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 30. Ví dụ về biển báo giao thông ‘Giới hạn tốc độ’ (Trang 34)
Hình 31. Ví dụ về biển báo giao thông 'Cấm xe'. - tiểu luận môn đồ án cơ sở 1 đề tài nhận diện biển báo giao thông
Hình 31. Ví dụ về biển báo giao thông 'Cấm xe' (Trang 35)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w