Tải bản đầy đủ (.docx) (13 trang)

BÁO cáo đề tài NHẬN DIỆN BIỂN báo GIAO THÔNG BẰNG mô HÌNH CNN

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (410.68 KB, 13 trang )

ĐẠ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ế Hồng Anh

Nhóm số:
Các thành viên:
1. Nguyễn Duy Thành
2. Trần Đức Anh
3. Phạm Đức Anh

Hà Nội – 2022


Tó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 tồ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. Báo cáo này sẽ tập trung vào nghiên cứu
mơ hình mạng tích chập CNN (Convolutional Neural Network) để nhận diện 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 tốn nhận diện
biển báo giao thơng.
Từ khóa: Convolutional Neural Network, nhận diện biển báo.




Mục lục
1. Đặt vấn đề......................................................................................................................5
2. Cơ sơ lý thuyết...............................................................................................................5
2.1. Mạng Neural tích chập (CNN)........................................................................................ 5
2.2. Thư viện Keras................................................................................................................ 7

3. Các bước thực hiện........................................................................................................8
3.1. Tìm hiểu về tập dữ liệu.................................................................................................... 8
3.2. Tiền xử lý dữ liệu.......................................................................................................... 10
3.3. Xây dựng mơ hình CNN................................................................................................ 11
3.4. Huấn luyện mơ hình...................................................................................................... 12
3.5. Thiết kế giao diện người dùng....................................................................................... 12

4. Đánh giá kết quả..........................................................................................................13
5. Kết luận....................................................................................................................... 13


Mục lục hình ảnh
Hình 1. Chức năng một số cảm biến trên xe tự lái............................................................ 5
Hình 2. Lưu đồ mơ hình CNN...........................................................................................6
Hình 3. Các loại biển báo có trong tập dữ liệu..................................................................8
Hình 4. Ảnh đầu vào ở một số điều kiện khác nhau........................................................10
Hình 5. Lưu đồ tiền xử lý dữ liệu....................................................................................11
Hình 6. Các layer trong mơ hình mạng CNN..................................................................12


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 tố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 tồ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 tốn nhận diện biển
báo giao thơng. Bài tốn nhận diện biển báo giao thông đã được thực hiện bằng nhiều thuật
tốn khác nhau như SVM, trích xuất đặc trưng HOG. Ở đây, chúng tơi sử dụng mơ hình mạng
neural tích chập CNN để thực hiện bài tố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 tố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ố


(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ự đố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ình CNN
Hệ thống sử dụng mơ hình CNN được mơ tả như Hình 2. Đầu tiên, dữ liệu đầu vào
được gán nhãn. Sau đó, tại q 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ộ 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ả.
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


có kích thước 2x2, kết quả cho ra một hình ảnh đầu ra chỉ bằng

hình ảnh ban đầ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 (Nonlinear layer): hàm kích hoạt với nhiệm vụ chính là 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 tố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ó 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 high level với phần low
level (back-end) có thể là TensorFlow, CNTK hoặc Theano. Keras được thiết kế để 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 qn, đơ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 người dùng chạy bằng CPU hay GPU; khả năng mở
rộng tính tốn cao.
Những ưu điểm của thư 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.


Bảng 5. Các bước thực hiện
5.1. Tìm hiểu về tập dữ 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ữ liệu trong tập được phân loại thà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 những biển báo có 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ên biển báo

Số lượng ảnh

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

Speed limit (100km/h)


Speed limit (120km/h)

1441
1419

No passing

1470

No passing veh over 3.5 tons

2010

Right-of-way at intersection

1320

Priority road

2100

Yield


2160

Stop

780

No vehicles

630

Veh > 3.5 tons prohibited

420

No entry

111

General caution

1200

Dangerous curve left

210

Dangerous curve right

360


Double curve

330

Bumpy road

390

Slippery road

510

Road narrows on the right

270

Road work

1500

Traffic signals

600

Pedestrians

240

Children crossing


540

Bicycles crossing

270

Beware of ice/snow

450

Wild animals crossing

780

End speed + passing limits

240

Turn right ahead

689

Turn left ahead

420

Ahead only

1200


Go straight or right

390

Go straight or left

210

Keep right

2070

Keep left

300


Roundabout mandatory

360

End of no passing

240

End no passing veh > 3.5 tons

240


Bảng 7. Số lượng ảnh có trong từng lớp
Ngồi ra, dữ liệu ảnh trong từng lớp được lấy ở nhiều điều kiện khác nhau để đảm
bảo độ chính xác khi huấn luyện.

Ảnh bị mờ

Ảnh bị tối màu

Bảng 8. Ảnh đầu vào ở một số điều kiện khác nhau
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 bước được thể hiện trong lưu đồ được mơ
tả bởi Hình 5.


Bảng 9. Lưu đồ tiền xử lý dữ liệ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ập huấn luyện

39219

Tập thử


12631

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:


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 của tập huấn luyện 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ế.


Mơ hình được chúng tơi huấn luyện từ phần trước được sử dụng để xác định biển
báo được đưa vào. Ảnh được đưa vào sẽ được thay đổi kích thước phù hợp với mơ hình
đã huấn luyện. Kết quả sau khi đưa ảnh đi qua mơ hình sẽ cho ra một vector kích thước
1x43 thể hiện cho số lớp của tập dữ liệu. Từ vector nhận được, máy tính có thể cho biế
đầu vào là biển báo gì bằng cách trả về một giá trị trong khoảng (0,42) đại diện cho lớp
của biển báo.

Bảng 12. Đánh giá kết quả

Bảng 13. Kết luận



×