Báo cáo này sẽ tập trung vào nghiên cứu trung vào nghiên cứu mô hình mạng tích chập CNN Convolutional Neural Network mô hình mạng tích chập CNN Convolutional Neural Network để nhận diện
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
BÁO CÁO ĐỀ TÀI NHẬN DIỆN BIỂN BÁO GIAO THÔNG BẰNG MÔ HÌNH
CNN
MÔN HỌC: KHOA HỌC NHẬN THỨC GIẢNG VIÊN: TS Nguyễn Thế Hoàng Anh
Nhóm số:
Các thành viên:
1.
1 N Ngu guyễ yễn n D Duy uy T Thà hành nh 22 T Trrầần n Đ Đứ ức c A An nh h 33 P Ph hạạm m Đ Đứ ức c A An nh h
Hà Nội – 2022
Trang 2Tóm tắt:
Xe tự lái là một công nghệ mới đang được nghiên cứu và phát triển bởi nhiều tập đoàn hàng đầu trên thế giới Thang đo cấp độ của xe tự lái bắt đầu từ cấp 0 – không có tính năng tự động nào – cho tới cấp độ 5 – thay thế hoàn toàn thao tác điều khiển của con người Nhưng để đạt được khả năng chính xác và an toàn khi di chuyển thì còn cần nhận biết và tuân theo các quy tắc giao thông cụ thể
quy tắc giao thông cụ thể là các biển báo giao là các biển báo giao thông Báo cáo này sẽ tập thông Báo cáo này sẽ tập trung vào nghiên cứu trung vào nghiên cứu
mô hình mạng tích chập CNN (Convolutional Neural Network
mô hình mạng tích chập CNN (Convolutional Neural Network) để nhận diện ) để nhận diện các loại biển báo các loại biển báo giao thông Dữ liệu ảnh được thu thập từ nguồn dữ liệu mở kaggle với tập dữ liệu gồm hơn
50000 ảnh Sau kiểm nghiệm với mô hình mạng tích chập chúng tôi đã thu được kết quả với độ chính xác lên tới 95% Kết quả cho thấy, mô hình phù hợp để áp dụng với bài toán nhận diện biển báo g
biển báo giao thông iao thông
Từ khóa: Convolutional Neural Network, nhận diện biển báo.
Trang 3
Mục lục 1 1 Đặt Đặt vấn vấn đề đề 5 5
2 2 Cơ Cơ sơ sơ lý lý thuyết thuyết 5 5
2.1 Mạng Neural tích chập (CNN) 5
2.2 Thư viện Keras 7
3 3 Các Các bước bước thực thực hiện hiện 8 8
3.1 Tìm hiểu về tập dữ liệu
3.1 Tìm hiểu về tập dữ liệu 88
3.2 Tiền xử lý dữ liệu 10
3.3 Xây dựng mô hình CNN
3.3 Xây dựng mô hình CNN 11 11 3.4 Huấn luyện mô hình 12
3.5 Thiết kế giao diện ng 3.5 Thiết kế giao diện người dùng ười dùng 12 12 4 4 Đánh Đánh giá giá kết kết quả quả 13 13
5
5 Kết Kết luận luận 13 13
Trang 4
Mục lục hình ảnh
Hình 1 Chức n
Hình 1 Chức năng một số ăng một số cảm biến trên cảm biến trên xe tự lái xe tự lái 5 5 Hình
Hình 2 2 Lưu Lưu đồ đồ mô mô hình hình CNN CNN 6 6 Hình 3 Các
Hình 3 Các loại biển báo loại biển báo có trong tập có trong tập dữ liệu dữ liệu 8 8 Hình 4 Ảnh đầu
Hình 4 Ảnh đầu vào ở một vào ở một số điều kiện số điều kiện khác nhau khác nhau 10 10 Hình 5
Hình 5 Lưu đồ Lưu đồ tiền xử tiền xử lý dữ lý dữ liệu liệu 11 11 Hình 6 Các
Hình 6 Các layer trong layer trong mô hình mô hình mạng CNN mạng CNN 12 12
Trang 5
Bảng 1 Đặt vấn đề
Công nghệ xe tự lái hay xe tự hành là một công nghệ mới đang được nhiều nhà nghiên cứu và các công ty công nghệ lớn nghiên cứu, phát triển cho các dòng xe riêng của mình Công nghệ này là tập hợp việc thu thập dữ liệu từ các thiết bị cảm biến với khả năng cảm nhận môi trường xung quanh như camera, radar, sonar, laser, lidar, định vị GPS với việc tính toán các dữ
liệu thu được bằng trí tuệ nhân tạo AI Các cảm biến trên xe có chức năng khác nhau phục vụ cho các tác vụ riêng biệt cho việc tự động lái của xe.
Bảng 2 Chức năng một số cảm biến trên xe tự lái Hình 1 thể hiện chức năng của các cảm biến trên công nghệ xe tự lái Ví dụ như radar thực hiện bài toán như phát hiện điểm mù hay cảnh báo va chạm phía sau xe Hoặc sử dụng lidar để phát hiện người đi bộ hay tránh va chạm với các phương tiện khác Nhưng để đạt được khả năng chính xác và an toàn khi di chuyển thì còn cần nhận biết và tuân theo các quy tắc giao thông, cụ thể là các biển báo giao thông.
Trong phạm vi bài báo cáo này, chúng tôi tập trung giải quyết bài toán nhận diện biển báo
báo giao giao thông Bài thông Bài toán toán nhận nhận diện diện biển biển báo báo giao giao thông đã thông đã được được thực thực hiện hiện bằng nhiều bằng nhiều thuật thuật toán khác nhau như SVM, trích xuất đặc
toán khác nhau như SVM, trích xuất đặc trưng HOG Ở đây, chúng tôi sử trưng HOG Ở đây, chúng tôi sử dụng mô hình mạng dụng mô hình mạng neural tích chập CNN để thực hiện bài toán nhận diện biển báo giao thông.
Bảng 3 Cơ sơ lý thuyết
3.1 Mạng Neural tích chập (CNN)
Mạng Neural tích chập (CNN) là một thuật toán Deep Learning có thể lấy hình ảnh đầu vào, phân biệt được các đặc trưng/đối tượng khác nhau trong ảnh và gán các giá trị trọng số
Trang 6
(weights), độ lệch (bias) cho từng đặc trưng/ đối tượng Vai trò của mạng CNN là giảm chiều hình ả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 quan trọ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ất các đặc trưng ảnh trước khi đưa vào huấn luyện mạng neural Sau khi đưa qua cá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.
Bảng 4 Lưu đồ mô h Lưu đồ mô hình CNN ình CNN
Hệ thống sử dụng mô
Hệ thống sử dụng mô hình CNN được mô tả như Hình hình CNN được mô tả như Hình 2 Đầu tiên, dữ liệu đầu vào 2 Đầu tiên, 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ân thành tập ảnh huấn luyện (training), tập ảnh thử (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ấn luyện cho mô hình CNN để tìm ra bộ
tìm ra bộ giá trị trọng số (weights) Từ bộ giá trị giá trị trọng số (weights) Từ bộ giá trị trọng số huấn luyện được sẽ trọng số huấn luyện được sẽ được thử được thử trên bộ ảnh thử để đánh giá kết quả.
Trong CNN bao gồm các lớp cơ bản như sau:
Lớp mạng tích chập (convolution layer): có vai trò phát hiện các đặc trưng của ảnh như các góc, cạnh, màu sắc, đường ngang, dọc các hình dạng nổi bật của hình ảnh đầu vào Sau khi ảnh được cho đi qua các lớp tích chập, ảnh sẽ được làm nổi bật các đặc trưng có trong ảnh, kết quả đầu ra thể hiện tính chất cục bộ của ảnh.
Lớp tổng hợp (pooling layer): chịu trách nhiệm làm giảm chiều kết quả tích chập, giúp đơn giản hóa thông tin đầu ra để giảm bớt số lượng neurol Ví dụ như sau khi đi qua lớp Max pooling 2x2, sẽ chọn một điểm ảnh có giá trị lớn nhất cho mỗi một vùng
Trang 7
có kí
có kích th ch thước 2x ước 2x2, kế 2, kết quả c t quả cho ra mộ ho ra một hì t hình ản nh ảnh đầu ra c h đầu ra chỉ bằ hỉ bằng ng hìn hình ảnh b h ảnh ban đầu an đầu nhưng các đặc trưng của ảnh vẫn được giữ lại, thậm chí có thể nổi bật hơn so với ban đầu.
Hàm phi tuyến (Nonline Hàm phi tuyến (Nonlinear layer): hàm kích hoạt ar layer): hàm kích hoạt với nhiệm vụ chính là với nhiệm vụ chính là mô phỏng mô phỏng các neural có tỷ lệ truyền xung qua axon Hiện nay, hàm Relu được sử dụng phổ biến vì những ưu điểm nổi bật như: hỗ trợ tính toán nhanh, đơn giản và hạn chế tình trạng vanishing gradient.
Lớp liên kết đầy đủ (Fully Connected Layer): sau khi ảnh đi qua nhiều lớ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 ma trận đặc trưng thu được ở các tầng trước thành vector thể hiện xác suất dự đoán label của ảnh.
4.1 Thư viện Keras
Keras là một open source cho Neural Network được viết bằng ngôn ngữ python.
Nó
Nó là là một một thư thư viện viện được được phát phát triển triển vào vào năm năm 2005 2005 bởi bởi Francois Francois Chollet Chollet – – một một kỹ kỹ sư sư nghiên cứu về Deep learning Keras được coi là một thư viện high level với phần low level
(back-level (back-end) có end) có thể là thể là Tenso TensorFlow, CNTK hoặc Theano Keras được thiết kế để rFlow, CNTK hoặc Theano Keras được thiết kế để dễ dễ dàng tạo ra mô hình học sâu.
Keras tận dụng các kỹ thuật tối ưu hóa khác nhau để làm API cho mạng thần kinh cấp cao dễ dàng va hiệu quả hơn Nó hỗ trợ nhiều tính năng như: 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 và backend; thân thiện với
nền tảng và backend; thân thiện với người dùng chạy bằng CPU hay người dùng chạy bằng CPU hay GPU; khả năng mở GPU; khả năng mở rộng tính toán cao.
Những ưu điểm của thư Những ưu điểm của thư viện Keras gồm có: viện Keras gồm có:
Dễ dàng để kiểm tra.
Viết bằng ngôn ngữ Python giúp đơn giản hóa.
Hỗ trợ cả mạng convolution và recurrent.
Cộng đồng lớn nên dễ tìm được hỗ trợ.
Keras hỗ trợ huấn luyện trên nhiều GPU phân tán.
Trang 8
Bảng 5 Các bước thực hiện
5.1 Tìm hiểu về tập dữ
5.1 Tìm hiểu về tập dữ liệu liệu
Tập dữ liệu được chúng tôi sử dụng có tên là: German Traffic Sign Recognition 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ếng có trên Kaggle Tập dữ liệu chứa hơn 50000 ảnh về các loại biển báo giao thông khác nhau Dữ
biển báo giao thông khác nhau Dữ liệu trong tập được phân loại t liệu trong tập được phân loại thành 43 lớp khác nhau hành 43 lớp khác nhau thể hiện cho 43 loại biển báo.
Bảng 6 Các loại biển báo có trong tập dữ liệu
Hình 3 thể hiện Hình 3 thể hiện hình những biển báo có hình những biển báo có trong tập dữ liệu GTSRB Nhưng dữ liệu trong tập dữ liệu GTSRB Nhưng dữ liệu
về các loại biển báo không được phân chia đồng đều, có một số lớp chứa rất nhiều hình ảnh trong khi một số lớp sẽ có rất ít Số lượng ảnh có trong mỗi lớp được thể hiện ở trong Bảng 1.
T Têên n b biiểển n b bááoo S Số ố llư ượ ợn ng g ảản nh h
Speed limit (20km/h) 210
Speed limit (30km/h) 2220
Speed limit (50km/h) 2250
Speed limit (60km/h) 1410
Speed limit (70km/h) 1980
Speed limit (80km/h) 1860
End of speed limit (80km/h) 420
Trang 9
Speed limit (100km/h) 1441
Speed limit (120km/h) 1419
No passin
No passi
No passing veh ov ng veh over 3.5 tons er 3.5 tons 2010
Right-of-way at intersection 1320
No vehicl
Veh > 3.5 tons prohibited 420
Dangerous curve left 210
Dangerous curve right 360
Road narrows on the right 270
Wild animals crossing 780
End speed + passing limits 240
Go straight or right 390
Trang 10
Go straight or left 210
Roundabout mandatory 360
End no passing veh > 3.5 tons 240
Bảng 7 Số lượng ảnh có trong từng lớp
Ngoài ra, dữ Ngoài ra, dữ liệu ảnh trong từng liệu ảnh trong từng lớp được lấy ở lớp được lấy ở nhiều điều kiện khác nhiều điều kiện khác nhau để đảm nhau để đảm bảo độ chính xác khi huấn luyện.
Ảnh Ảnh bị bị mờ mờ Ảnh Ảnh bị bị tối tối màu màu
Bảng 8 Ảnh đầu Ảnh đầu vào ở một vào ở một số điều ki số điều kiện khác nh ện khác nhau au
8.1 Tiền xử lý dữ liệu
Đối với tập dữ liệu về biển báo giao thông mà chúng tôi đã đề cập tới ở phần trên, chúng tôi sẽ đọc và tiền xử lý dữ liệu theo các
chúng tôi sẽ đọc và tiền xử lý dữ liệu theo các bước được thể hiện trong lưu đồ được mô bước được thể hiện trong lưu đồ được mô
tả bởi Hình 5.
Trang 11
Bảng 9 Lưu đồ tiề Lưu đồ tiền xử lý dữ li n xử lý dữ liệu ệu
Đầu tiên, chúng tôi đọc từng ảnh trong tập dữ liệu và lớp của các ảnh Tiếp theo, chúng tôi resize ảnh về kích thước 30x30 và lưu vào một ma trận ảnh để làm đầu vào cho mô hình CNN Cùng với đó, các nhãn lớp của các ảnh sẽ được chuyển về dạng One-hot Encoding One-hot Encoding thể hiện sự phân nhãn của các lớp là một vector kích thước m biển thị cho số lớp gồm các giá trị nhị phân 0 và 1, vị trí của phần tử 1 sẽ xác định label của ảnh tương ứng.
Sau đó, ma trận ảnh sẽ được chia ra thành tập huấn luyện (train set) và tập ảnh thử (test set) với số lượng ảnh được thể hiện trong Bảng 2.
T Tậập p hhuuấấn n lluuyyệệnn 3399221199 T
Tậập p tthhửử 1122663311
Bảng 10 Tỷ lệ chia dữ liệu ảnh
10.1 Xây dựng mô hình CNN
Mô hình mạng neural tích chập được chúng tôi đề xuất được xây dựng bằng thư viện Keras Mô tả các lớp trong mô hình được thể hiện trong Hình 6 như sau:
Trang 12
Bảng 11 Các layer trong mô hình mạng CNN
11.1 Huấn luyện mô hình
Với mô hình đã xây dựng ở phần trên, chúng tôi huấn luyện qua số lượng epochs là
15 và batch size là 32 Trong khi huấn luyện, chúng tôi chọn một tập validation để kiểm tra độ chính xác mô hình lúc huấn luyện nhằm tránh hiện tượng Overfitting Tập validation được chúng tôi lấy từ một phần
validation được chúng tôi lấy từ một phần của tập huấn luyện của tập huấn luyện với tỉ lệ là 20% với tỉ lệ là 20%.
Kết quả sau quá trình huấn luyện cho mô hình sẽ được trình bảy trong phần sau của bài báo cáo.
11.2 Thiết kế giao diện người dùng
Để có thể đánh giá hiệu quả cho mô hình một cách trực quan, chúng tôi đã xây dựng một giao diện để người dùng có thể kiểm tra kết quả nhận dạng biển báo được có đúng với biển báo thực tế.