Cập nhật thông tin chi tiết về Nhận Diện Biển Báo Giao Thông mới nhất trên website Sachlangque.net. Hy vọng nội dung bài viết sẽ đáp ứng được nhu cầu của bạn, chúng tôi sẽ thường xuyên cập nhật mới nội dung để bạn nhận được thông tin nhanh chóng và chính xác nhất.
Như tiêu đề, hôm nay mình sẽ hướng dẫn các bạn xây dựng một mạng CNN đơn giản để nhận diện biển báo giao thông. Với tập dữ liệu gồm tất cả 42 biển báo giao thông với các điều kiện khác nhau như thiếu sáng, biển báo bị nghiêng, ảnh chụp mờ…
Bài toán yêu cầu đầu vào là 1 ảnh chụp được từ biển báo giao thông và đầu ra là tên tương ứng của biển báo, với số lượng biển báo giao thông là cố định và đây là bài toán phân biệt nên chúng ta sẽ coi đây là bài toán phân loại ảnh, với số lớp cần phân loại chính là số lượng loại biển báo giao thông cần xác định. Vì hình ảnh các biển báo rất khác nhau và có thể dễ dàng phân biệt bằng mắt thường nên dữ liệu phân lớp khá đơn giản và ít sự nhập nhằng. Vì thế chúng ta sẽ cần một mô hình deep learning đơn giản là có thể xử lý được việc này.
Import thư viện
Đầu tiên bạn vào đây để tải về bộ dữ liệu gồm các biển báo đã được đánh nhãn và lưu các thông tin trong file csv. Đây là bộ dữ liệu biển báo giao thông của Đức, gồm 42 loại biển báo khác nhau. Bạn tải về và giải nén ra thư mục của project
Bạn đổi lại biến path theo đường dẫn trên máy bạn
Như các bài thông thường, chúng ta sẽ tiến hành chia tập dữ liệu ảnh thành tập train và tập validation
Với các label chúng ta sẽ chuyển sang dạng One-hot encoding để xử lý
Complie mô hình
Khởi tạo đồ thị kết quả mô hình
Training
Tiến hành chạy file code
Train on 31368 samples, validate on 7841 samples Epoch 1/10 31368/31368 [==============================] - 9s 286us/step - loss: 1.2740 - acc: 0.6416 - val_loss: 0.2135 - val_acc: 0.9367 Epoch 2/10 31368/31368 [==============================] - 5s 175us/step - loss: 0.3047 - acc: 0.9056 - val_loss: 0.1006 - val_acc: 0.9726 Epoch 3/10 31368/31368 [==============================] - 6s 204us/step - loss: 0.1999 - acc: 0.9378 - val_loss: 0.0703 - val_acc: 0.9795 Epoch 4/10 31368/31368 [==============================] - 6s 199us/step - loss: 0.1576 - acc: 0.9522 - val_loss: 0.0603 - val_acc: 0.9829 Epoch 5/10 31368/31368 [==============================] - 5s 171us/step - loss: 0.1335 - acc: 0.9577 - val_loss: 0.0497 - val_acc: 0.9847 Epoch 6/10 31368/31368 [==============================] - 5s 171us/step - loss: 0.1175 - acc: 0.9648 - val_loss: 0.0543 - val_acc: 0.9853 Epoch 7/10 31368/31368 [==============================] - 5s 171us/step - loss: 0.1043 - acc: 0.9674 - val_loss: 0.0456 - val_acc: 0.9865 Epoch 8/10 31368/31368 [==============================] - 5s 172us/step - loss: 0.0962 - acc: 0.9699 - val_loss: 0.0517 - val_acc: 0.9860 Epoch 9/10 31368/31368 [==============================] - 5s 172us/step - loss: 0.0849 - acc: 0.9741 - val_loss: 0.0475 - val_acc: 0.9876 Epoch 10/10 31368/31368 [==============================] - 5s 172us/step - loss: 0.0820 - acc: 0.9756 - val_loss: 0.0424 - val_acc: 0.9885Sau khi thực hiện xong, chúng ta sẽ đánh giá lại mô hình bằng kết quả quá trình training:
Sau khi qua trình training thành công, chúng ta sẽ đánh giá lại bằng tập test
Tính toán độ chính xác:
Kết quả đạt được là 95.5%, vậy là mô hình khá chính xác rồi.
0.9558986539984164Lưu mô hình
Sau khi tiến hành traininig lại mô hình nhiều lần chúng ta sẽ thu được một mô hình tốt nhất và sử dụng nó để deploy lên hệ thống thực. Việc này được thực hiện như sau:
Cảm ơn các bạn đã theo dõi bài viết hẹn gặp lại trong những bài viết tiếp theo.
Nhận Diện Biển Báo Giao Thông Bằng Cnn &Amp; Keras
Thế Nào Là Nhận Diện Biển Báo Giao Thông
Có rất nhiều loại biển báo giao thông khác nhau như biển báo giới hạn tốc độ, biển cấm đi vào, tín hiệu giao thông, rẽ trái hoặc phải, trẻ em băng qua đường, cấm xe nặng vượt qua, v.v. Nhận diện biển báo giao thông là quá trình nhận biết nội dung biến báo và xác định biển báo đó thuộc loại nào.
Giới Thiệu Về Project
Nội Dung Chính
Tập Dữ Liệu Sử Dụng
Chúng ta sẽ sử dụng tập dữ liệu công khai có sẵn tại kaggle. Tải xuống tập dữ liệu Traffic Signs Dataset.
Tập dữ liệu chứa hơn 50.000 hình ảnh về các biển báo giao thông khác nhau, nó được phân loại thành 43 lớp. Dữ liệu phân chia khá là không đồng đều, một số lớp có rất nhiều hình ảnh trong khi một số lớp lại có rất ít. Tập dữ liệu có một thư mục train chứa các hình ảnh bên trong mỗi lớp và một thư mục test chứa các hình ảnh dùng để thử nghiệm mô hình.
Yêu Cầu Của Project
Để thực hiện project này yêu cầu bạn cần có kiến thức về Keras, Matplotlib, Scikit-learning, Pandas, PIL và phân loại hình ảnh.
Xây Dựng Mô Hình
Chúng ta sẽ thực hiện project này với 4 bước sau:
Khám phá tập dữ liệu
Xây dựng mô hình CNN
Training và xác thực
Kiểm tra mô hình với bộ dữ liệu test set
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.
[/crayon]
Bước 2: Xây dựng mô hình CNN
Kiến trúc mô hình CNN của chúng ta như sau:
2 Conv2D layer (filter=32, kernel_size=(5,5), activation=”relu”)
MaxPool2D layer ( pool_size=(2,2))
Dropout layer (rate=0.25)
2 Conv2D layer (filter=64, kernel_size=(3,3), activation=”relu”)
MaxPool2D layer ( pool_size=(2,2))
Dropout layer (rate=0.25)
Flatten layer to squeeze the layers into 1 dimension
Dense Fully connected layer (256 nodes, activation=”relu”)
Dropout layer (rate=0.5)
Dense layer (43 nodes, activation=”softmax”)
[/crayon]
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 chúng tôi (). 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.
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 chúng tôi 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.
Thiết Kế Giao Diện Người Dùng (GUI)
Trong đoạn code này, trước tiên ta phải import mô hình đã được training từ trước là “traffic_classifier.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_classes(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ề.
Cách Nhận Biết Biển Báo Giao Thông
Cách học và thi bằng lái hạng B2 quả là một điều khá khó khăn với một số người. Bởi số lượng câu hỏi lý thuyết lên đến 450 câu. Trong đó số lượng câu hỏi về các dạng biển báo và nhận biết biển báo giao thông là một điều khá khó khăn. Nếu học không đúng cách thì việc nhớ được những biển báo đó là điều không dễ. Vậy nên việc trang bị cho mình một số cách nhận biết biển báo giao thông là một việc cần thiết đúng không nào.
Cách nhận biết biển báo giao thông
Có rất nhiều loại biển báo giao thông mà bạn trông thấy hằng ngày, những việc nhận biết và nhớ các loại biển báo này thì bạn không nên bỏ qua các mẹo sau đây:
Biển báo cấm biểu thị các điều cấm có hình tròn, viền đỏ, nền trắng
Biển báo nguy hiểm biểu thị các điều nguy hiểm có hình tam giác vàng, viền đỏ, nền vàng
Biển báo hiệu lệnh có hình tròn xanh, hình vẽ trắng: gặp biển này bắt buộc phải thi hành
Biển chỉ dẫn hình vuông hoặc hình chữ nhật màu xanh, hình vẽ trắng
Biển báo cấm xe nhỏ sẽ cấm luôn xe lớn
Biển cấm xe ô tô con sẽ cấm luôn xe ba bánh, xe lam
Biển cấm xe rẽ trái sẽ cấm luôn xe quay đầu
Ngược lại biển cấm xe quay đầu thì xe được phép rẽ trái
Nếu biển màu xanh cho phép xe quay đầu thì xe không được phép rẽ trái
Biển “STOP” thì tất cả các xe phải dừng lại kể cả xe ưu tiên trong mọi trường hợp
Mẹo thi bằng lái B2 phần biển báo
Nếu gặp biển cấm có ghi số 14m thì chọn đáp án không được phép
Nếu biển báo cấm ô tô vượt thì tất cả các loại ôtô đều không được vượt
Ngược lại nếu biển cấm xe tải vượt thì xe ô tô con và ô tô khách được vượt
Biển báo hiệu cầu vượt liên thông là biển báo hình chữ nhật có chữ trên biển
Biển báo hiệu cầu vượt cắt ngang là biển báo hình tròn không có chữ trên biển
Biển báo hình vuông màu xanh vẽ mũi tên dài bên phải nằm song song với xe khách và mũi tên ngắn hướng thẳng đứng báo hiệu có làn đường dành cho ô tô khách
Biển báo màu xanh hình vuông vẽ mũi tên dài nằm dưới song song với xe khách và mũi tên ngắn hướng mũi tên dài về bên phải báo hiệu rẽ ra đường có làn đường dành cho ô tô khách
Thi bằng lái xe B2 sẽ vô cùng khó nếu bạn không biết được cách để học những câu hỏi lý thuyết hay những chiếc biển báo giao thông. Trong khi những phần này là những phần rất dễ lấy điểm. Thế nên việc biết cách nhận biết biển báo giao thông là một việc rất cần thiết đúng không.
Tìm Hiểu Về Hệ Thống Nhận Dạng Biển Báo Giao Thông
Công nghệ nhận dạng biển báo giao thông sử dụng camera phía trước để nhận diện tín hiệu giao thông trên đường. Khi nhận diện được biển báo, phần mềm nhận dạng ký tự sẽ diễn giải những gì biển báo hiển thị và chuyển chúng tới bảng táp-lô và/hoặc màn hình hiển thị thông tin giải trí.
Tìm hiểu về hệ thống nhận dạng biển báo giao thông
Chúng sẽ hiển thị cho tới khi xe có sự thay đổi. Ví dụ như sau khi giới hạn tốc độ thay đổi, biển báo mới sẽ hiển thị.
Hệ thống nhận diện biển báo giao thông có cần thiết?
Công nghệ nhận dạng biển báo giao thông không phải là một tính năng bạn cần phải có nhưng đó là một trang bị hữu ích. Người lái cần quan sát mọi thứ khi lái xe, do đó, việc màn hình liên tục hiển thị tốc độ tối đa có thể không có giá trị, nếu bạn bỏ lỡ biển báo tốc độ cuối cùng.
Hãy lưu ý rằng công nghệ ô tô mới này có thể thỉnh thoảng bỏ lỡ biển báo, đặc biệt khi chúng bị che khuất. Một số hệ thống cũng sẽ không phát hiện sự thay đổi trong biển báo tốc độ điện tử thường xuất hiện trên các con đường cao tốc thông minh.
Tìm thấy trên
Một số mẫu xe hiện nay được trang bị tính năng này, bao gồm cả Audi A3, Volkswagen Passat và Jaguar XF. Jaguar XF sở hữu tính năng này như trang bị tiêu chuẩn. Các trang tạp chí xe hơi cho biết một vài chiếc xe như Ford S-Max và Volvo XC90 thậm chí có thể hạn chế tốc độ của xe theo giới hạn hiện tại.
Tương tự như
Hệ thống nhận dạng biển báo giao thông là cái tên của Ford dành cho công nghệ này nhưng các nhà sản xuất xe khác sẽ sử dụng cái tên khác như: Hỗ trợ biển báo giao thông (Traffic Sign Assist – Mercedes-Benz), Hỗ trợ biển báo (Sign Assist – Volkswagen), Thông tin biển báo trên đường (Road Sign Information – Volvo) và Tầm nhìn thông minh (Intelligent Vision – BMW).
Bạn đang xem bài viết Nhận Diện Biển Báo Giao Thông trên website Sachlangque.net. Hy vọng những thông tin mà chúng tôi đã chia sẻ là hữu ích với bạn. Nếu nội dung hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!