Bài viết trình bày một hệ thống phát hiện và nhận diện biển báo giao thông Việt Nam thời gian thực dựa trên kiến trúc MobileNet kết hợp với SSD trên board Jetson Nano. Với đặc tính và cấu hình nổi trội của mô hình, sự kết hợp giữa MobileNet và SSD mang lại độ chính xác cao và thời gian triển khai nhanh chóng trên các hệ thống có hạn chế phần cứng.
Trang 1Nhận diện biển báo giao thông Việt Nam thời gian thực
bằng thuật toán MobileNet kết hợp SSD
trên board Jetson Nano Dương Văn Sơn, Nguyễn Vũ Minh Thành, Nguyễn Thị Thanh Xuân, Lê Đức Hùng
Phòng thí nghiệm DESLAB, Khoa Điện Tử - Viễn Thông, Trường Đại Học Khoa Học Tự Nhiên – Đại học Quốc gia TP.HCM
Email: ldhung@hcmus.edu.vn
Abstract – Nhận diện biển báo giao thông là một trong những thành
phần quan trọng của ngành công nghiệp hệ thống điều khiển tự động
hiện nay ví dụ xe vận hành không người lái, hệ thống kiểm soát giao
thông hoặc các máy bay tự hành drones Trong bài báo này, bài báo
sẽ trình bày một hệ thống phát hiện và nhận diện biển báo giao thông
Việt Nam thời gian thực dựa trên kiến trúc MobileNet kết hợp với
SSD trên board Jetson Nano Với đặc tính và cấu hình nổi trội của
mô hình, sự kết hợp giữa MobileNet và SSD mang lại độ chính xác
cao và thời gian triển khai nhanh chóng trên các hệ thống có hạn chế
phần cứng Ngoài ra, do tính chất đặc thù của môi trường giao thông
Việt Nam, bài báo sẽ phân tích, bổ sung và nâng cấp bộ dữ liệu để
phù hợp hơn bằng phương pháp xử lí dữ liệu ảnh trên thư viện
OpenCV Sau quá trình nghiên cứu, hệ thống đạt hiệu quả với mAP
= 84.4% (indoor) và mAP = 71% (outdoor) và cho tốc độ xử lí 13
FPS Với kết quả trên cùng với module có kích thước nhỏ, phương
pháp này hứa hẹn có thể tích hợp lên các xe hơi, hệ thống giám sát
giao thông đường phố, v.v để giải quyết các vấn đề giao thông và tai
nạn xe hiện nay tại Việt Nam
Keywords: Nhận diện biển báo giao thông Việt Nam, TSR,
MobileNet, SSD, thời gian thực, AI, ADAS
Thành phần nhận diện biển báo giao thông phải đáp ứng không
chỉ nhanh về mặt thời gian thực mà còn phải mang lại hiệu quả
cao về mặt chính xác Nhận diện biển báo giao thông đã được
nghiên cứu và thực nghiệm trên thế giới khá phổ biến nhưng đối
với môi trường giao thông Việt Nam thì lĩnh vực này còn gặp khá
nhiều hạn chế Nguyên nhân dẫn đến điều này vì môi trường tại
Việt Nam khá thử thách, điển hình như không có nhiều nguồn dữ
liệu biển báo, đường xá phức tạp, xe cộ lưu thông trên đường
nhiều, các loại biển báo bị cây che phủ,…
Theo một nghiên cứu của cục Quản lý An toàn Giao thông
Đường cao tốc Quốc gia (NHTSA) của Mỹ, trung bình hằng năm
có khoảng 51% các vụ tai nạn chết người do người điều khiển
vượt đèn đỏ và khoảng 29% là do người điều khiển phương tiện
giao thông lơ là biển báo chỉ đường và các tín hiệu giao thông
Con số này sẽ như thế nào khi đường xá Việt Nam chằng chịt và
nhiều chướng ngại vật gấp nhiều lần so với nước Mỹ Chính vì
thế, một hệ thống nhận diện biển báo giao thông sẽ là một công
cụ quan trọng để giúp người lái xe an toàn hơn khi đang lái xe Người lái xe sẽ biết mình có đang chạy quá tốc độ cho phép hoặc biết cách nhường đường cho những phương tiện như thế nào để tránh được những tai nạn không đáng tiếc xảy ra?
Một số phương pháp kể đến như trong [1] xử lí vấn đề này dựa trên các thuật toán nhận diện về màu sắc, hình dạng, kích thước hoặc phương pháp sử dụng đặc trưng Haar và mạng nơron nhân tạo trong [2], … đã được áp dụng rộng rãi vào các nghiên cứu học thuật nhưng lại không mang lại kết quả khả quan khi vận dụng vào điều kiện thực tế Vì thế, hệ thống nhận diện biển báo giao thông trong bài báo này sử dụng một hệ thống tích chập nơron CNN hướng tiếp cận hiện đại làm mô hình chính để nhận diện vật thể Hệ thống này mang lại hiệu quả tin cậy cao và độ thực thi thời gian thực Các bức ảnh đầu vào sẽ được mô hình xử lí, vận dụng các feature map của kiến trúc để tạo ra được bộ phân loại các biển báo giao thông như mô tả ở Hình 1
Hình 1 Quy trình của hệ thống nhận diện biển báo giao thông
Trang 2II HỆ THỐNG VỚI MÔ HÌNH MOBILENET-SSD
II.1 Bo NVIDIA Jetson Nano 4GB
Board hệ thống sử dụng là một SBC từ hãng NVIDIA Jetson
Nano Development Kit, với kích thước nhỏ gọn và tích hợp 128
lõi GPU Maxwell Cùng với đó, hệ thống cho phép làm việc trên
cái framework AI như Pytorch, Tensorflow,… giúp triển khai mô
hình nhanh chóng và thuận tiện hơn rất nhiều
Hình 2 Phần cứng hệ thống
Camera sử dụng là camera Raspberry Pi v2 với độ phân giải
8MP giúp thu thập thông tin hình ảnh cho board chính xử lí
II.2 Mô hình nhận diện vật thể SSD
Mô hình phát hiện và nhận diện biển báo giao thông được huấn
luyện dựa trên mạng cơ sở MobileNet-v1 làm mạng trích xuất dữ
liệu và mạng nhân chập SSD [4] tạo ra các đối tượng phát hiện
vật thể Sau đó là quá trình hậu xử lí NMS để triệt tiêu những vùng
phát hiện lân cận Mô hình được mô tả như Hình 3
Hình 3 Tổng quan quan mô hình phát hiện dựa trên kiến trúc SSD
II.3 Kiến trúc mạng cơ sở MobileNet
Kiến trúc mạng Mobilenet là một trong những mô hình nhỏ,
nhẹ, cấu hình thông số ít mà vẫn đảm bảo được độ chính xác cao
Mạng cơ sở MobileNet có nhiều thế hệ như MobileNet-v1,
MobileNet-v2, MobileNet-v3, nhưng trong hệ thống này, mạng
MobileNet-v1 được sử dụng để làm mạng cơ sở thực thi tốt hơn
trên các bo nhúng có kích thước nhỏ
Kiến trúc mô hình này xây dựng dựa trên nền tảng sử dụng phép nhân chập tách rời theo chiều sâu (Depthwise Separable Convolution) mà là một dạng phức hợp cho phép biến đổi phép nhân chập thông thường thành một nhân chập chiều sâu (Depthwise Convolution) và một phép nhân chập 1 x 1 hay còn gọi là nhân chập theo từng điểm (Pointwise Convolution)
Hình 4 Phép nhân chập tách rời theo chiều sâu
Kiến trúc các tầng của mô hình MobileNet-v1:
Bảng 1 Mô tả các tầng của kiến trúc MobileNet-v1
Loại / Stride Kích thước filter Input image
Conv / s2 3 x 3 x 3 x 32 224 x 224 x 3 Conv dw / s1 3 x 3 x 32 dw 112 x 112 x 32 Conv / s1 1 x 1 x 32 x 64 112 x 112 x 32 Con dw / s2 3 x 3 x 64 dw 112 x 112 x 64 Conv / s1 1 x 1 x 64 x 128 56 x 56 x 64 Conv dw / s1 3 x 3 x 128 dw 56 x 56 x 128 Conv / s1 1 x 1 x 128 x 128 56 x 56 x 128 Con dw / s2 3 x 3 x 128 dw 56 x 56 x 128 Conv / s1 1 x 1 x 128 x 256 28 x 28 x 128 Con dw / s1 3 x 3 x 256 dw 28 x 28 x 256 Conv / s1 1 x 1 x 256 x 256 28 x 28 x 256 Conv dw / s2 3 x 3 x 256 dw 28 x 28 x 256 Conv / s1 1 x 1 x 256 x 512 14 x 14 x 256 Conv dw / s1
5 x Conv / s1
3 x 3 x 512 dw
1 x 1 x 512 x 512
14 x 14 x 512
14 x 14 x 512 Conv dw / s2 3 x 3 x 512 dw 14 x 14 x 512 Conv / s1 1 x 1 x 512 x 1024 7 x 7 x 512 Conv dw / s2 3 x 3 x 1024 dw 7 x 7 x 1024 Conv / s1 1 x 1 x 1024 x 1024 7 x 7 x 1024 Avg Pool / s1 Pool 7 x 7 7 x 7 x 1024
FC / s1 1024 x 1000 1 x 1 x 1024 Softmax / s1 Classifier 1 x 1 x 1000
Trang 3Kiến trúc tổng thể bao gồm 14 tầng nhân chập (kể cả nhân
chập tách rời) được kết nối liền kề với nhau, trong đó đã loại bỏ
những tầng cuối của mô hình phân loại bao gồm tầng Avg Pool,
tầng Fully-Connected (FC)
II.4 Kiến trúc SSD (Single Shot Multibox Detector)
Hình 5 Kiến trúc mạng của mô hình SSD
Mô hình mạng SSD dựa trên quá trình chiết xuất dữ liệu từ
mạng cơ sở (VGG-16) và sau đó là 6 tầng phụ trợ được đưa vào
với mục đích tạo ra các phát hiện cho đối tượng trong khung ảnh
Trong quá trình này, kiến trúc SSD tiến hành đánh giá các tập hợp
nhỏ gồm các khung bao mặc định (các khung nét đứt trong Hình
6) tương ứng với các tỉ lệ cạnh khác nhau trên các feature map
khác nhau như hình bên dưới
Hình 6 Kích thước phân chia các feature map khác nhau của SSD
Hai hàm mất mát bao gồm một hàm mất mát vị trí Smooth L1,
hàm này sẽ đo lường sai số tham số giữa khung bao dự đoán được
(p – predicted box) và khung bao sự thật (g – ground truth box)
và hàm hàm mất mát tin cậy cross-entropy đo đạc các giá trị
_ để lấy được điểm tin cậy
II.5 Kết hợp kiến trúc MobileNet với SSD
Quá trình chiết xuất đặc trưng tại MobileNet, sau đó sẽ được
xử lí thông qua 6 tầng phụ trợ của phần đầu mô hình SSD Với
mỗi tầng phụ trợ như vậy, SSD cấu hình một kích thước feature
map khác nhau để tạo ra các phát hiện vật thể với các kích thước
khác nhau Chi tiết được mô tả Hình 7
Bài toán kết nối lại tầng nhân chập tách rời theo chiều sâu với
bộ lọc là 1 × 1 × 512 × 512 (tầng thứ 12) với SSD để tạo ra feature
map có độ sâu là 512 và tầng nhân chập với bộ lọc 1 × 1 × 1024
× 1024 (tầng thứ 14) với mô hình SSD để tạo ra ma trận đặc trưng
1024 Kiến trúc trên có 6 ma trận đặc trưng lần lượt cho 6 tầng
phụ trợ lần lượt là (19×19), (10×10), (5×5), (3×3), (2×2), (1×1) Kiến trúc đầu vào ảnh (300 x 300) là kiến trúc tiêu chuẩn và có thể điều chỉnh lại kèm theo các feature map
Hình 7 Sơ đồ kiến trúc kết hợp mô hình MobileNet-v1 với SSD
Với mỗi feature map khác nhau trong mô hình SSD khác nhau,
ta gán số lượng các khung bao mặc định là 4 hoặc 6 cho mỗi ô vuông trong feature map Quá trình phát hiện sẽ sử dụng 2 hàm
mất mát quy về hai kết quả Classification: _ ×
Khi thay thế VGG16 bằng MobileNetv1, bài toán nhận diện biển báo giao thông kết nối tầng 12 và 14 của MobileNet Ta sử dụng 2 tầng cuối như để miêu tả một vấn đề rằng tầng thứ 14 sẽ trả về nhiều đặc trưng hơn tầng thứ 12, ta cần những đặc trưng mức cao và cả đặc trưng mức trung bình cho cả việc chiết xuất hình ảnh Những đặc trưng cao và trung bình sẽ giúp mô hình thông minh hơn trong việc nhận dạng thông tin của bức ảnh
Trang 4II.6 Quá trình huấn luyện mô hình
II.6.1 Chiến lược ghép nối các khung bao vật thể
Cơ chế dự đoán của mô hình được phân loại thành những dự
đoán đúng và những dự đoán sai Nếu như tỉ lệ IoU lớn hơn 0.5
khung bao dự đoán được xem như đúng, ngược lại, dự đoán IoU
bé hơn 0.5 sẽ là những dự đoán sai
Hình 8 Mô tả độ ghép nối giữa các khung bao mặc định
Để phát hiện được các vật thể khác nhau ở những kích thước
khung hình khác nhau, mô hình sử dụng các ma trận đặc trưng với
những kích thước khác nhau cho từng tầng trong mô hình Tỉ lệ
ma trận trận trưng (scale) nhỏ nhất là 0.2 (hoặc 0.1) và sau đó tỉ
lệ tăng dần qua các tầng mô hình sau (lớn nhất là 0.9)
Hình 9 Ma trận đặc trưng với các kích thước khác nhau
II.6.2 Lựa chọn kích thước và tỉ lệ khung cho mô hình SSD
Tỉ lệ của feature map được đo lường trước với tỉ lệ khung hình
khác nhau để tạo ra được kích thước chiều dài và chiều rộng của
feature map tương ứng với từng tầng đó Công thức để tính chiều
dài (h) và chiều rộng (w) là:
= ỉ ệ ℎ ℎì ℎ
ℎ =
ỉ ệ ℎ ℎì ℎ
(mức scale là 1, 2, 3, 1/2, và 1/3)
Điều chỉnh thông số trên dựa trên 4 phương thức, bao gồm:
Feature map, Shrinkage, Kích thước khung bao và tỉ lệ khung hình
tương ứng với các feature map trải qua từng phép nhân chập như
Hình 10
Hình 10 Các kích thước điều chỉnh của mô hình
III.1 Các bộ dữ liệu biển báo giao thông
Nhận diện biển báo giao thông là một nhiệm vụ khá đặc thù khi nguồn dữ liệu đến từ rất nhiều biển báo giao thông khác nhau Tùy mỗi quốc gia, sẽ có kích thước, màu sắc, kí hiệu, và ý nghĩa của biển báo giao thông sẽ khác nhau
Hình 11: Độ đa dạng của các loại biển báo giao thông Bảng 2 Thống kê 3 bộ dữ liệu biển báo giao thông chính
Dataset Số lượng
(ảnh)
Gán nhãn
Quốc gia Chú thích
Kích thước nhỏ, biển báo riêng
lẻ
TT100K 100000 ~ 20% Trung
Quốc
Kích thước bé, ý nghĩa biển báo Trung Quốc
Nam Biển báo phù hợp, số lượng ít
Trang 5III.2 Phương pháp xử lí dữ liệu trên thư viện OpenCV
Quá trình tiền xử lí dữ liệu sẽ tổng hợp và sửa đổi từ 3 bộ dữ
liệu trên thành nguồn dữ liệu phù hợp, quá trình xử lí được mô tả
theo chu trình Hình 12
Hình 12: Quy trình tổng quát xử lí dữ liệu
III.3 Các quá trình xử lí dữ liệu
II.3.1 Loại bỏ kênh alpha của bức ảnh
Các biển báo giao thông trong bộ dữ liệu GTSRB sẽ được cắt
ra một phần, phần còn lại trên bức ảnh là một loại biển báo giao
thông và đã loại bỏ phần nền ảnh phía sau
III.3.2 Phương pháp điều chỉnh độ sáng, độ tương phản
Hai phép tính được sử dụng phổ biến của quá trình xử lí này
là phép nhân và phép cộng với một hằng số cụ thể
( ) = ( ) +
III.3.3 Phương pháp nạp chồng hình ảnh
Ảnh biển báo sẽ được nạp chồng vào ảnh nền khác với vị trí
biết trước, cho phép tạo ra bộ dữ liệu phù hợp cho mô hình để đào
tạo Các bức ảnh sau đó được đánh nhãn tương thích và được phân
chia định dạng thành loại định dạng phù hợp, cung cấp cho mô
hình học Các bức ảnh sau đó sẽ được xử lí tương tự với tập dữ
liệu còn lại
III.3.4 Bộ dữ liệu biển báo chính thức sử dụng
Bộ dữ liệu sau khi nâng cấp bao gồm 13 loại biển báo giao thông mà trước đây chưa có trong những tập dữ liệu khác Những loại biển báo bao gồm:
Bảng 3 Thống kê 13 loại biển báo trong bộ dữ liệu
Tốc độ tối đa 30km Chỉ được rẽ trái Tốc độ tối đa 50km Cấm dừng và đỗ xe Tốc độ tối đa 70km N Tốc độ tối đa Chạy theo vòng xuyến N Biển nguy hiểm Cấm đi ngược chiều N Biển cấm khác
N Biển báo hiệu lệnh *N: Nhóm
Hình 13 Biểu đồ chênh lệch giữa các bộ dữ liệu chính thức
IV.1 Huấn luyện mô hình trên Google Colab
Quá trình huấn luyện đề xuất 3 mô hình là SSD300, SSD512
và SSD608 tương ứng với đó là kích thước ảnh đầu vào 300, 512
và 608
Bảng 4 Kết quả của các mô hình đề xuất MobileNet-SSD
image
Trang 6Hình 14 Biểu đồ hàm mất mát mô hình SSD300, 512 và 608
Một số kết quả kiểm tra thực nghiệm:
So sánh hiệu suất với những phương pháp khác:
Bảng 5: So sánh hiệu suất với các phương pháp khác
Bài
báo
Phương
Real-time
Loại biển báo Hiện
tại
[2] Haar + SVM 92% Không Việt Nam
Quốc
Bảng 6 Kết quả được đo đạc cho 13 loại biển báo
Loại biển báo Biển báo Độ chính xác
Hệ thống phát hiện và nhận diện biển báo giao thông đã đạt được kết quả chính xác cao ~ 84.4% (indoor) và ~71% (outdoor)
và tốc độ 13 fps trên bo Jetson Nano Hệ thống đã được triển khai
để nhận diện được quá trình xe đang di chuyển cho kết quả tốt Với điều kiện giao thông Việt Nam, hệ thống cho phép hoạt được được trên 13 loại biển báo đặc thù thông qua việc cung cấp, sửa đổi Tuy nhiên, vẫn còn nhiều điểm hạn chế trong hệ thống phát hiện và nhận diện biển báo giao thông như khả năng phân tích biển báo giao thông nhỏ, các đối tượng biển báo giao thông bị nhòe trong quá trình chụp, cơ sở dữ liệu chưa đủ mạnh, … điều
đó dẫn đến hệ thống còn nhiều công việc cần làm hơn trong tương lai
TÀI LIỆU THAM KHẢO [1] Ayoub Ellahyani, Ilyas El Jaafari and Said Charfi, “Traffic Sign Detection for Intelligent Transportation Systems: A Survey”, E3S Web of Conferences, 2021
[2] Lê Chân Thiện Tâm, Phạm Hồng Thái, Trần Tiến Đức, “Phát hiện và nhận dạng một số biển báo giao thông đường bộ nguy hiểm tại Việt Nam”, Bài báo khoa học trường Đại học Lạc Hồng
và Đại học Sư Phạm Kỹ Thuật, 2017
[3] Zhe Zhu, Dun Liang, “Traffic-Sign Detection and Classification in the Wild”, Computer Vision Foundation, 2016 [4] Wei Liu, Dragomir Anguelov, “SSD: Single Shot MultiBox Detector”, Computer Vision and Pattern Recognition (cs.CV),
2016
[5] Adrian Rosebrock, “Traffic Sign Classification with Keras and Deep Learning”, https://www.pyimagesearch.com/2019/11/04/,
2019