Biển báo giao thông đường bộ đóng vai trò quan trọng trong việc cung cấp thông tin và cảnh báo cho các tài xế và người tham gia giao thông. Tuy nhiên, việc phân loại chính xác các biển báo giao thông là một nhiệm vụ phức tạp đối với con người do số lượng biển báo rất đa dạng và các biến thể về màu sắc, hình dạng và kích thước. Mạng neural convolutional (CNN) đã được chứng minh là một công cụ mạnh mẽ trong xử lý hình ảnh và trí tuệ nhân tạo. Sự kết hợp giữa CNN và bài toán phân loại biển báo giao thông đường bộ có thể mang lại những tiềm năng lớn để xây dựng các hệ thống tự động nhận diện biển báo giao thông. Tuy nhiên, việc phân loại chính xác các biển báo giao thông đường bộ vẫn đối mặt với một số thách thức. Một trong số đó là sự biến đổi về ánh sáng, góc nhìn và môi trường xung quanh, có thể làm suy giảm khả năng phân loại của mạng CNN. Ngoài ra, sự đa dạng về hình dạng, màu sắc và nhiễu trong hình ảnh cũng làm tăng khó khăn cho quá trình phân loại chính xác.
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH
BÁO CÁO MÔN HỌC
CƠ SỞ VÀ ỨNG DỤNG AI
Đề tài:
PHÂN LOẠI BIỂN BÁO GIAO THÔNG
Sinh viên thực hiện:
Nguyễn Văn Trường Sinh 20119274
Giáo viên hướng dẫn:
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH
BÁO CÁO MÔN HỌC
CƠ SỞ VÀ ỨNG DỤNG AI
Đề tài:
PHÂN LOẠI BIỂN BÁO GIAO THÔNG
Sinh viên thực hiện:
Nguyễn Văn Trường Sinh 20119274
Giáo viên hướng dẫn:
Trang 3BẢN NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Nội dung thực hiện:
………
………
………
………
………
………
………
………
………
Nội dung báo cáo: ………
………
………
………
………
………
………
………
Điểm ………
Bảng phân công công việc trong nhóm:
1 Tìm kiếm tập dữ liệu Nguyễn Văn Trường Sinh
2 Thiết kế mô hình bằng mạng CNN Lý Hữu Đang
3 Thực hiện training mô hình Lý Hữu Đang
4 Thực hiện kiểm tra và đánh giá Nguyễn Văn Trường Sinh
Nguyễn Văn Trường Sinh
Trang 4CHƯƠNG 1 GIỚI THIỆU 1
1.1 Đ ẶT VẤN ĐỀ 1
1.2 M ỤC TIÊU CỦA ĐỀ TÀI 2
1.3 G IỚI THIỆU VỀ MẠNG N Ơ - RON TÍCH CHẬP (CNN) 3
1.4 G IỚI THIỆU VỀ THƯ VIỆN K ERAS 10
CHƯƠNG 2 THIẾT KẾ ỨNG DỤNG PHÂN LOẠI BIỂN BÁO GIAO THÔNG 11
2.1 Q UY TRÌNH THIẾT KẾ MÔ HÌNH : 11
2.1.1 Tìm hiểu về tập dữ liệu được sử dụng: 11
2.1.2 Thiết lập tập dữ liệu: 14
2.1.3 Xây dựng mô hình CNN: 15
2.1.4 Xây dựng mô hình kiểm tra: 17
2.2 K IỂM TRA MÔ HÌNH VỚI TẬP DỮ LIỆU KIỂM TRA : 18
2.2.1 Kiểm tra độ chính xác của mô hình: 18
2.2.2 Xây dựng giao diện sử dụng mô hình: 19
CHƯƠNG 3 KẾT QUẢ VÀ THẢO LUẬN 23
3.1 K ẾT QUẢ THỰC HIỆN : 23
3.1.1 Kết quả quá trình Training mô hình: 23
3.1.2 Kết quả quá trình Test mô hình: 26
3.2 T HẢO LUẬN VỀ MÔ HÌNH VÀ KẾT QUẢ : 30
TÀI LIỆU THAM KHẢO 31
Trang 5CHƯƠNG 1 GIỚI THIỆU
1.1 Đặt vấn đề
Biển báo giao thông đường bộ đóng vai trò quan trọng trong việc cungcấp thông tin và cảnh báo cho các tài xế và người tham gia giao thông Tuynhiên, việc phân loại chính xác các biển báo giao thông là một nhiệm vụ phứctạp đối với con người do số lượng biển báo rất đa dạng và các biến thể về màusắc, hình dạng và kích thước
Mạng neural convolutional (CNN) đã được chứng minh là một công cụmạnh mẽ trong xử lý hình ảnh và trí tuệ nhân tạo Sự kết hợp giữa CNN và bàitoán phân loại biển báo giao thông đường bộ có thể mang lại những tiềm nănglớn để xây dựng các hệ thống tự động nhận diện biển báo giao thông
Tuy nhiên, việc phân loại chính xác các biển báo giao thông đường bộvẫn đối mặt với một số thách thức Một trong số đó là sự biến đổi về ánh sáng,góc nhìn và môi trường xung quanh, có thể làm suy giảm khả năng phân loạicủa mạng CNN Ngoài ra, sự đa dạng về hình dạng, màu sắc và nhiễu tronghình ảnh cũng làm tăng khó khăn cho quá trình phân loại chính xác
Hình 1: Chức năng của một số cảm biến trên xe.
Trang 6Hình 1 thể hiện một số chức năng của cảm biến trên các xe ô tô hiện nay,
ví dụ có các cảm biến cảm nhận môi trường xung quanh như camera, sonar,laser, radar, lidar, GPS, Với việc tính toán các dữ liệu thu nhận được từ cáccảm biến bằng mô hình AI thì các cảm biến trên xe có chức năng phục vụ chocác tác vụ riêng biệt Ví dụ như radar thì có chức năng phát hiện điểm mù haycảnh bảo va chạm trước và sau xe, lidar để phát hiện người đi bộ và tránh vachạm với cách phương tiện khác, camera để kiểm tra xung quanh và phân loạicác biển số xe trên đường đi
Vì vậy, nghiên cứu này nhằm mục tiêu xây dựng và đánh giá một hệthống phân loại biển báo giao thông đường bộ bằng mạng CNN có khả năngphân loại chính xác và đáng tin cậy các biển báo trong môi trường thực tế Bằngcách tận dụng khả năng trí tuệ nhân tạo và học sâu của mạng CNN, hy vọngnghiên cứu này sẽ đóng góp vào cải thiện an toàn giao thông và giảm nguy cơtai nạn giao thông do thiếu sót trong việc phân loại biển báo giao thông
1.2 Mục tiêu của đề tài
Nghiên cứu này nhằm mục tiêu xây dựng và đánh giá một hệ thống phânloại biển báo giao thông đường bộ bằng mạng CNN Đây là một bước quantrọng trong việc cải thiện an toàn giao thông và giảm nguy cơ tai nạn giao thông
do thiếu sót trong việc nhận diện và phân loại các biển báo giao thông
Mục tiêu của nghiên cứu bao gồm xây dựng một mô hình mạng CNN cókhả năng học và trích xuất các đặc trưng quan trọng từ hình ảnh biển báo Môhình này sẽ được huấn luyện và tinh chỉnh bằng dữ liệu được gán nhãn, với mụctiêu đạt được độ chính xác cao trong việc phân loại các biển báo giao thông vàocác lớp phân loại tương ứng
Để đảm bảo tính đáng tin cậy của hệ thống phân loại, nghiên cứu sẽ sửdụng các phương pháp đánh giá hiệu suất thích hợp, bao gồm độ chính xác, độphủ và độ đo F1 Kết quả đạt được sẽ được so sánh với các phương pháp phânloại khác nhằm đánh giá tính hiệu quả của hệ thống
Trang 7Cuối cùng, hệ thống phân loại được xây dựng và đánh giá sẽ được đánhgiá độ tin cậy và ứng dụng trong các tình huống thực tế Điều này nhằm đảmbảo rằng hệ thống có khả năng phân loại chính xác các biển báo giao thôngtrong môi trường thực tế và đóng góp vào cải thiện an toàn và hiệu suất củagiao thông đường bộ.
Hình 2: Hệ thống Traffic Sign Assist trong xe ô tô hiện đại.
Ở hình 2 là một hệ thống Traffic Sign Assist được hãng xe Benz ra mắt năm 2019 Trong hệ thống này sử dụng cảm biến là camera để pháthiện các biển báo giao thông trên đoạn đường di chuyển, sau đó được xử lýbằng mô hình AI để phân loại và xác định được đây là biển báo gì Khi đó mànhình trên ô tô sẽ hiển thị thông tin của biển báo đó cho người lái biết để dễ dàngtuân thủ quy định về an toàn giao thông đường bộ
Mercedes-1.3 Giới thiệu về mạng Nơ-ron tích chập (CNN)
Mạng nơ-ron tích chập (CNN – Convolutional Neural Network) là mộtthuật toán Deep Learning có thể lấy hình ảnh đầu vào, phân biệt được các đặctrưng, đối tượng khác nhau trong ảnh và gán các giá trị trọng số (weight), độlệch (bias) cho từng đặc trưng, đối tượng Vai trò của mạng CNN là giảm chiều
Trang 8ảnh thành một dạng dễ xử lý hơn nhưng vẫn giữ lại được các đặc trưng quantrọng để có thể dự đoán tốt.
Ý tưởng của mô hình CNN là sử dụng các bộ lọc trên ảnh để trích xuấtcác đặc trừng ảnh trước khi đưa vào huấn luyện mạng Nơ-ron Sau khi đưa quacác bộ lọc, đặc trưng của ảnh sẽ được làm nổi bật từ đó có thể sử dụng chúng đểnhận diện hình ảnh
Hình 3: Lưu đồ của mô hình CNN
Hệ thống sử dụng mô hình CNN được mô tả như hình 3 Dữ liệu đầu vàođược gán nhãn Sau đó, tại quá trình phân chia dữ liệu, tập ảnh sẽ được phânthành tập ảnh huấn luyện (training), tập ảnh kiểm tra (test) và tập ảnh thẩm định(validation) Tập ảnh huấn luyện và tập ảnh thẩm định sẽ được đưa vào huấnluyện cho mô hình CNN để tìm ra bộ giá trị trọng số (weights) Từ bộ giá trịtrọng số huấn luyện được sẽ được thử trên bộ ảnh thử để đánh giá kết quả
Trang 9Mạng Nơ-rơn tích nhập CNN bao gồm các lớp sau:
Hình 4: Mô hình mạng CNN
- Lớp tích chập (Convolution Layer): Là lớp đầu tiên để trích xuất cácđặc trưng của ảnh đầu vào như góc, cạnh, màu sắc, đường ngang, dọc, các hìnhdạng nổi bật của hình ảnh đầu vào Tích chập duy trì mối quan hệ giữa cácPixel bằng cách sử dụng các ô vuông nhỏ của dữ liệu đầu vào Nó là một phéptoán có hai đầu vào như ma trận hình ảnh và một bộ lọc
Hình 5: Phép toán tích chập trong lớp tích chập
Trong hình 5, ta có một ảnh có ma trận 3 chiều (h x w x d) và bộ lọc (fh x fw
x d) và ngõ ra được tính như công thức:
( h – fh + 1) x ( w – fw + 1) x 1 Ngõ ra là một ma trận 2 chiều với chiều thứ 3 bằng 1
Trang 10Ví dụ, xét một ma trận 5 x 5 có các giá trị pixel là 0 và 1 Ma trận bộ lọc 3 x
3 như hình dưới:
Hình 6: Thực hiện phép nhân ma trận ảnh 5 x 5 với bộ lọc 3 x 3
Sau đó, lớp tích chập của ma trận hình ảnh 5 x 5 nhân với ma trận bộ lọc 3
x 3 gọi là “Feature Map”
Hình 7: Kết quả khi thực hiện phép nhân ma trận
Sự kết hợp của một ảnh với các bộ lọc khác nhau có thể thực hiện các hoạtđộng như phát hiện cạnh, góc, làm mờ và làm sắc nét
Bước nhảy (Stride) là số pixel thay đổi trên ma trận đầu vào Khi Stride là
1 thì ta di chuyển các Kernel 1 pixel Khi Stride là 2 thì ta di chuyển các Kernel
đi 2 pixel và tiếp tục như vậy Ở hình 7, ta thực hiện phép nhân ma trận vớibước nhảy là 1 (stride = 1)
Đường viền (Padding), như ở hình 7 ta thấy khi mỗi lần thực hiện phép
nhân ma trận thì kích thước Output luôn nhỏ hơn Input Tuy nhiên, giờ ta muốn
Trang 11ma trận output có kích thước bằng ma trận input ta chỉ việc thêm các giá trị 0 ởviền ngoài ma trận input như sau :
Hình 8: Ma trận 5 x 5 khi thêm đường viền 0 bên ngoài
Hình 8 là ma trận input 5 x 5 khi ta thêm các đường viền bên ngoài, ở đâyPadding = 1 gọi là convolution với padding = 1 Padding = k nghĩa là thêm kvector 0 vào mỗi phía của ma trận
Do đó, công thức tổng quát để tính ngõ ra với ngõ vào là ma trận m x n, bộ lọckích thước k x k và stride = s, padding = p như sau:
Trang 12Có một số hàm phi tuyến khác như Sigmoid, tanh nhưng hầu hết ta thường sửdụng hàm ReLU vì có hiệu suất tốt cũng như giảm được tình trạng vanishinggradient.
Hình 9 : Đồ thì hàm ReLU
- Lớp gộp (Pooing Layer) : chịu trách nhiệm làm giảm chiều kết quả tíchchập, giúp đơn giản hóa thông tin đầu ra để giảm bớt số lượng Nơ-ron Ví dụnhư sau khi di chuyển qua lớp Max pooling 2 x 2, ta sẽ chọn một điểm ảnh cógiá trị lớn nhất cho mỗi một vùng có kích thước 2 x 2, kết quả cho ra một hìnhảnh chỉ bằng ¼ hình ảnh ban đầu nhưng các đặc trưng của ảnh vẫn giữ lại được,thậm chí còn nổi bật hơn so với ban đầu
Trang 13Hình 10: Thực hiện Max Pooling 2 x 2 với ma trận 4 x 4
Ngoài Max Pooling, ta còn có một số các Poolong khác như Sum Pooling (lấytổng các phần tử trong map) và Average Pooling (lấy trung bình các phần tửtrong map)
Hình 11: So sánh Max Pooling và Average Pooling
- Lớp kết nối đầy đủ (Fully Connected Layer): Sau khi ảnh đi qua nhiềulớp ở trước thì mô hình đã học được tương đối các đặc trưng của ảnh Sau đó,lớp liên kết đầy đủ sẽ chuyển các ma trận đặc trưng thu được ở các tầng tướcthành Vector thể hiện xác suất dự đoạn Label của ảnh
Trang 14Hàm ngõ ra Softmax là hàm trung bình mũ tính toán xác suất xuất hiện của
một sự kiện Nói một cách khái quát, hàm softmax sẽ tính khả năng xuất hiệncủa một class trong tổng số tất cả các class có thể xuất hiện Sau đó, xác suấtnày sẽ được sử dụng để xác định class mục tiêu cho các input
Hàm Softmax luôn đưa giá trị trong khoảng từ (0:1] nên chúng được gọi là xácsuất
Công thức hàm Softmax như sau:
Trong đó, vector z là giá trị nhập vào cho hàm softmax
1.4 Giới thiệu về thư viện Keras
Keras là một open source cho Neural Network được viết bằng ngôn ngữPython Nó là một thư viện được phát triển vào năm 2005 bởi Francois Chollet– một kỹ sư nghiên cứu về Deep Learning Keras được coi là một thư viện highlevel với phần low level (back-end) có thể là TensorFlow, CNTK hoặc Theano.Keras được thiết kế để tạo ra một mô hình học sâu
Keras tận dụng được các kỹ thuật tối ưu hóa khác nhau để làm API chomạng thần kinh cấp cao dễ dàng và hiệu quả hơn Nó hỗ trợ nhiều tính năngnhư: API nhất quán, đơn giản và có thể mở rộng, cấu trúc tối thiểu – dễ dàngđạt được kết quả, hỗ trợ trên nhiều nền tảng back-end, thân thiện với ngườidùng chạy bằng CPU hay GPU, khả năng mở rộng tính toán cao Keras hỗ trợ
cả mạng CNN và RNN
Trang 15Hình 12: Chấm điểm các Framework được sử dụng trong Deep Learning
Hình 12, thư viện được sử dụng và chấm điểm bởi người dụng cao nhất làTensorFlow với các ưu điểm vượt trội, ngoài ra còn nhiều các thư viện đượcngười dùng thiết kế để hỗ trợ trong lĩnh vực Deep Learning trở nên dễ dàng vàhiệu quả hơn
CHƯƠNG 2 THIẾT KẾ ỨNG DỤNG PHÂN LOẠI BIỂN BÁO GIAO THÔNG
2.1 Quy trình thiết kế mô hình:
2.1.1 Tìm hiểu về tập dữ liệu được sử dụng:
Tập dữ liệu được sử dụng trong mô hình này là: German Traffic SignRecognition Benchmark Dataset (GTSRB Dataset) Đây là một tập dữ liệu opensource về biển báo giao thông khá nổi tiến trên Kaggle Tập dữ liệu chứa hơn
50000 ảnh về 43 loại biển báo khác nhau ở Đức Dữ liệu được phân loại thành
43 lớp khác nhau thể hiện cho 43 loại biển báo
Trang 16Hình 13: 43 loại biển báo khác nhau có trong tập dữ liệu
Hình 13 thể hiện 43 loại biển báo có trong tập dữ liệu GTSRB Dataset.Nhưng dữ liệu trong tập dữ liệu không được chia đồng đều, có loại nhiều hơn,
có loại ít hơn Do đó, số lượng cụ thể dữ liệu có trong mỗi loại như sau:
11 No passing vehicle over 3.5 tons 2010
12 Right – of – way at intersection 1320
Trang 1720 Dangerous curve left 210
21 Dangerous curve right 360
32 Wild animals crossing 780
33 End speed + passing limits 240
43 End of no passing vehicles > 3.5 tons 240
Bảng 1: Số lượng dữ liệu có trong mỗi loại biển báo khác nhau
Ngoài ra, các ảnh trong tập dữ liệu còn được chụp với nhiều môi trườngkhác nhau, với các điều kiện ánh sáng khác nhau, chất lượng ảnh khác nhau,góc chụp khác nhau để tăng độ chính xác khi huấn luyện mô hình
Trang 18Ảnh chất lượng thấp Ảnh chói sáng Ảnh tối màu
Hình 14: Ảnh đầu vào ở nhiều môi trường khác nhau
Trang 19print("Error loading image")
Sau khi có dữ liệu, ta lưu tất cả ảnh và nhãn của chúng là list data và labels.Kích thước của dữ liệu là (39202, 30, 30, 3) có nghĩa là có 39202 ảnh dùng đểtrain, mỗi ảnh có kích thước 30 x 30 pixel, 3 có nghĩ là ảnh màu RGB
#Chuyển ảnh sang Array
print(X_train.shape, X_test.shape, y_train.shape,
Trang 20to_categorical() của keras.utils để xử lý các nhãn của y_train và y_test bằngone hot encoding.
model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))
Mô hình CNN được thiết kế gồm có:
- Bốn lớp tích chập (4 Convolution Layers ) Trong mỗi lớp tích chập, ta
sử dụng hàm kích hoạt ReLU, Kernel là 5 x 5, hai lớp tích chập đầu vớifilters = 32 và hai lớp tích chập sau với filters = 64 và Kernel là 3 x 3
- Hai lớp gộp xen kẽ giữa mỗi hai lớp tích chập (2 Max Pooling Layers).Lấy đặc trưng nhất trong khu vực 2 x 2 (Max) Đây cũng là phần giúp
Trang 21- Hai lớp Dropout xen kẻ giữa mỗi hai lớp tích chập và một lớp Dropout
ở ngõ ra (3 Dropout Layers) Dùng để tối ưu ngõ ra, tránh hiện tượngoverfiting (quá khớp)
- Dãn dữ liệu về mảng 1 chiều bằng Flatten()
- Hai lớp kết nối đủ (2 Fully Connected Layers) Lớp đầu sử dụng hàmkích hoạt là ReLU và lớp cuối cùng dùng hàm Softmax để đưa ngõ radạng xác suất
Mô hình được vẽ lại cơ bản như sau:
Hình 15: Mô hình CNN của ứng dụng phân loại biển báo giao thông
Ở hình 15, ngõ vào là dữ liệu ảnh trong tập dữ liệu train set đã đượcphân loại ở trước, ảnh có kích thước 30 x 30 do đó có tổng cộng 900 ngõ vào.Những ngõ vào được đưa vào các lớp tích chập (Convolution Layer) sử dụnghàm ReLU mỗi lớp Ở lớp gộp, ta sử dụng Max Pooling 2 x 2 để trích các đặctrưng nổi bật của ảnh Sử dụng hàm tối ưu Dropout để tránh hiện tượngoverfiting Sau khi thực hiện qua bốn lớp tích chập, ta sử dụng Flatten để táchcác ngõ ra thành mảng 1 chiều và đưa vào lớp kết nối đủ (Fully ConnectedLayer) và sau đó sử dụng hàm Softmax ở ngõ ra để đưa ngõ ra về dạng xácsuất
2.1.4 Xây dựng mô hình kiểm tra:
#Tổng hợp mô hình
model.compile(loss='categorical_crossentropy',o
Trang 22epochs = 15history = History()model.fit(X_train, y_train, batch_size=64, epochs=epochs, validation_data=(X_test, y_test), callbacks=[history])
#Vẽ đồ thị hiển thị giá trị của mỗi lần kiểm tra
plt.figure(0)plt.plot(history.history['accuracy'], label='training accuracy')
Sau khi xây dựng mô hình CNN, ta sẽ huấn luyện mô hình CNN bằng cách
sử dụng model.fit() và chọn Batch_size là 64 Sau khi thực hiện 15 lần(epochs = 15) thì kết quả cho ra Accuracy cao và ổn định nhất