Sử dụng mạng Residual (ResNet) để nhận diện biển báo giao thông

MỤC LỤC

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

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.

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

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]. Mô tả về công thức được sử dụng trong ResNet với hàm kích hoạt relu.

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

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

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

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

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

Để 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). 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 (). 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.

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

Hình 9. Phân chia dữ liệu.
Hình 9. Phân chia dữ liệu.

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

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

- 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. - 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.
Hình 19. Khai báo thư viện Tkinter và Keras để tạo giao diện người dung.

KẾT QUẢ

Tiến hành xử lý ảnh. 2) Sau khi mở file thì màn hình sẽ xuất hiện cửa sổ dưới đây. - 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. - Để 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. 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.

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