1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN
THÔNG
Trần Thị Tuyết NHẬN DẠNG BIỂN BÁO GIAO THÔNG ĐƯỜNG
BỘ Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01.01
TÓM TẮT LUẬN VĂN THẠC SĨ HÀ NỘI - 2013
2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Nam lại chưa cao.
Theo số liệu thống kê của Ủy ban An toàn giao
thông Quốc gia, trong 9 tháng đầu năm 2013, cả nước đã
xảy ra 23.619 vụ tai nạn, làm chết 6.908 người và 25.002
người bị thương. Từ tình hình thực tế giao thông tại Việt
Nam, có nhiều nguyên nhân gây ra các vụ tai nạn giao
thông đường bộ, nhưng phần lớn là do tài xế không làm
chủ tốc độ, không quan sát hoặc không kịp nhận ra các
loại biển báo và tín hiệu giao thông. Đây là những nguy
hiểm đã được cảnh báo trước nhưng tai nạn vẫn thường
xuyên xảy ra, gây không ít thiệt hại về tính mạng và tài
sản của người tham gia giao thông.
2
Cho đến nay vấn đề này được nhiều nghiên cứu
trên thế giới quan tâm. Nhưng những biển báo giao thông
được nghiên cứu không phải dùng cho giao thông đường
bộ tại Việt Nam. Trong khi đó tình hình nghiên cứu biển
báo giao thông tại Việt Nam vẫn còn nhiều hạn chế và
chưa đầy đủ.
Vì vậy, luận văn đã chọn đề tài “Nhận dạng biển
báo giao thông đường bộ” để nghiên cứu với mục đích
hiểu được nền tảng công nghệ, các lý thuyết cơ bản trong
bài toán xử lý ảnh và áp dụng trong việc nhận dạng biển
báo giao thông một cách tự động.
Mục đích nghiên cứu
- Nghiên cứu tìm hiểu các phương pháp nhận
dạng biển báo giao thông và cài đặt thử nghiệm chương
trình phát hiện và nhận dạng biển báo giao thông đường
bộ từ hình ảnh tĩnh và video thu về, sau đó hiển thị thông
các phương pháp phổ biến trong quá trình phát hiện và
nhận dạng đối tượng.
Chương 2: Phát hiện và nhận dạng ảnh. Phát
biểu bài toán nhận dạng biển báo giao thông và trình bày
nền tảng công nghệ, chi tiết các thuật toán hỗ trợ trong
việc phát hiện và nhận dạng biển báo bao gồm: Trích chọn
đặc trưng Haar-like, bộ tăng tốc Adaboost, phân tích thành
phần chính PCA và bộ phân lớp SVM.
Chương 3: Cài đặt và thử nghiệm. Tác giả sử
dụng ngôn ngữ VC++ MFC của bộ Visual Studio 2008, và
bộ thư viện xử lý ảnh mã nguồn mở OpenCV của Intel để
xây dựng chương trình. Sau đó phân tích và đánh giá kết
quả nhận dạng.
Cuối cùng là Phần kết luận và hướng phát triển
của đề tài.
5
Chương 1. TỔNG QUAN VỀ XỬ LÝ ẢNH
1.1 Một số khái niệm trong xử lý ảnh
1.1.1 Xử lý ảnh là gì?
1.1.2 Một số khái niệm
1.2 Một số phương pháp biểu diễn ảnh
1.2.1 Mã loạt dài
1.2.2 Mã xích
1.2.3 Mã tứ phân.
1.3 Các phương pháp phát hiện biên ảnh
1.3.1 Một số khái niệm
1.3.2 Kỹ thuật phát hiện biên trực tiếp
1.3.2.1 Phương pháp Gradient
1.3.2.2 Kỹ thuật phát hiện biên Laplace
chỉnh trọng số liên kết giữa các neural, nói cách khác là
học từ tập hợp các mẫu huấn luyện.
Ưu điểm: - Dễ cài đặt cùng với khả năng học và tổng
quát hoá rất cao.
7
- Tốc độ xử lý nhanh
- Linh hoạt và dễ bảo trì:
Nhược điểm: - Tính chậm và xác suất không cao không
có quy tắc tổng quát để xác định cấu trúc mạng và các
tham số học tối ưu cho một (lớp) bài toán nhất định.
- Tiêu chuẩn thu thập cơ sở dữ liệu huấn luyện còn
khắt khe.
- Đòi hỏi thời gian xử lý cao với mạng một mạng
Neural lớn.
1.5.2 Phương pháp Support Vector Machine (SVM)
Cho trước một tập huấn luyện, các ảnh được biểu
diễn dưới dạng vector. Trong không gian vector, mỗi
vertor được biểu diễn bởi một điểm. Phương pháp SVM sẽ
tìm một siêu phẳng quyết định để phân chia không gian
vector thành hai lớp. Chất lượng của siêu phẳng này phụ
thuộc vào khoảng cách giữa các vector, tức là phụ thuộc
vào các đặc trưng của ảnh.
Ưu điểm: - Cho kết quả nhận dạng với độ chính xác cao
- Bài toán huấn luyện SVM thực chất là bài toán
QP trên một tập lồi, do đó SVM luôn có nghiệm toàn cục
và duy nhất, đây chính là điểm khác biệt rõ nhất giữa
8
SVM so với phương pháp mạng Neural, vì mạng Neural
- Phải kết hợp với các phương pháp khác
1.5.5 Phương pháp Principal Component Analysis
PCA (Principal Component Analysis) là một thuật
toán được sử dụng để tạo ra một ảnh mới từ ảnh ban đầu.
Ảnh mới này có kích thước nhỏ hơn nhiều so với ảnh ban
đầu nhưng vẫn mang những đặc trưng cơ bản nhất của ảnh
cần nhận dạng. Nói một cách ngắn gọn, mục tiêu của
PCA là tìm một không gian mới (với số chiều nhỏ hơn
không gian cũ). Các trục tọa độ trong không gian mới
được xây dựng sao cho trên mỗi trục, độ biến thiên của dữ
liệu trên đó là lớn nhất có thể.
Ưu điểm:
10
- Tìm được các đặc tính tiêu biểu của đối tượng cần
nhận dạng mà không cần phải xác định các thành phần và
mối quan hệ giữa các thành phần đó.
- Thuật toán có thể thức hiện tốt với các ảnh có độ
phân giải cao, do PCA sẽ thu gọn ảnh thành một ảnh có
kích thước nhỏ hơn.
- PCA có thể kết hợp với các phương pháp khác để
mang lại hiệu quả nhận dạng cao hơn
Nhược điểm: - PCA chỉ làm việc với dữ liệu numeric
- PCA rất nhạy với nhiễu.
- Không phù hợp với các mô hình phi tuyến do
PCA hoàn toàn dựa trên các biến đổi tuyến tính.
- Cài đặt thuật toán phức tạp
Kết luận chương 1
11
Haar-like: f(x) = Tổng
vùng đen
(các mức xám của pixel) -
Tổng
vùng trắng
(các mức xám của pixel)
“Integral Image” (ảnh chia nhỏ)
Integral Image tại vị trí (x,y) bằng tổng các giá trị
điểm ảnh phía trên và bên trái của (x,y). Tổng các điểm
ảnh trong một hình chữ nhật (kể cả trường hợp xoay 45º)
bất kì đều có thể được tính nhanh dựa trên integral image
tại 4 đỉnh của nó :
Sum (D ) = 4 + 1 – (2 + 3)
13Hình 2.4 Ví dụ cách tính nhanh tổng các điểm ảnh của
vùng D trên ảnh
2.5 Phát hiện biển báo giao thông
2.5.1 Tiếp cận Boosting
Nguyên lý cơ bản của boosting là sự kết hợp các
phân lớp yếu (weak classification) thành một phân lớp
mạnh (strong classification). Trong đó, phân lớp yếu là
các bộ phân loại đơn giản chỉ cần có độ chính xác trên
50%. Bằng cách này, chúng ta nói bộ phân loại đã được
“boost”.
2.5.2 Thuật toán Adaboost
Thuật toán AdaBoost tuân theo các bước sau: [4]
1. Cho một tập gồm n mẫu có đánh dấu (x
1
D
P
1
P
2
P
3
P
4
14
với m là số mẫu đúng (ứng với object và y = 1) và l là số
mẫu sai (ứng với background và y = -1).
3. Xây dựng T phân loại yếu :
Lặp t = 1, …, T. Với mỗi đặc trưng trong vector đặc
trưng, xây dựng một phân loại yếu h
j
với ngưỡng θ
j
và
lỗi ε
j
.
n
k
kt
yxhe
yxhe
Z
w
w
t
t
)(,
)(,
,
,1
Trong đó:
)
1
ln(
2
1
j
j
t
Hình 2.9 Chuyển vector x ban đầu có N chiều thành
vector y còn K chiều
Tất nhiên, khi loại bỏ 1 số thành phần của x để thu được y
thì sẽ gây ra sai số (lỗi). Phương pháp PCA sẽ cố gắng
tìm phép biến đổi tuyến tính T thỏa: y = T.x sao cho trung
bình bình phương lỗi (MSE) là bé nhất.
Cách để tìm được T:
Không gian N chiều với
hệ cơ sở v
1,
v
2
,…,v
n
Không gian K chiều (K<<N)
với hệ cơ sở u
1,
u
2
,…,u
n
Ánh xạ tuyến
tính T cần tìm
(phép chiếu)
Vector
x
máy vecto hỗ trợ (Support Vector Machine)
2.6.2.1 SVM trong trường hợp tập mẫu phân hoạch tuyến
tính được.
a. Giai đoạn huấn luyện SVM. Ta có tập huấn luyện
gồm m điểm có dạng: (x
1
, y
1
), (x
2
, y
2
), , (x
m
, y
m
). Trong
17
đó mỗi x
i
là một vecto thực p chiều, x
i
R
n
, còn y
i
{1,
-1} là phân lớp của x
i
m
i
i
u
1
[
y
i
(wx
i
+ b) – 1] : w
R
n
, b
R}
Để tính b, vận dụng điều kiện Karush – Kuhn –
Tucker (KKT) cho bài toán gốc. Vậy ta đã tính được b sau
đó tính w theo công thức
m
i
iii
xyuw
1
i
với y
i
= 1; wx
i
+ b ≤ -1 +
i
với y
i
= -1;
i
≥ 0 , i = 1, 2, , m
Với cách đặt như vậy thì sai số thực nghiệm
Empirical Risk là:
m
i
i
1
2
. Tương tự cách trên ta có thể cực
tiểu biểu thức sau:
m
i
(wx
i
+ b ) – 1 +
i
≥ 0 i = 1, 2, , m;
i
≥ 0
Như vậy bài toán đối ngẫu được viết lại thành:
Giải bài toán đối ngẫu của bài toán này ta tìm được u và từ
đó tính được w. Vậy đã tìm được siêu phẳng phân chia
một tập dữ liệu không thể phân hoạch tuyến tính. Siêu
phẳng như vậy được gọi là siêu phẳng lề mềm.
2.6.2.3 SVM phi tuyến
Kết luận chương 2
19
Chương 3. CÀI ĐẶT VÀ THỬ NGHIỆM
3.1 Thu thập dữ liệu
Biển báo giao thông ở Việt Nam được chia thành 5
nhóm: Nhóm biển chỉ dẫn, nhóm biển hiệu lệnh, nhóm
biển báo cấm, nhóm biển báo nguy hiểm, nhóm biển phụ.
Trong ứng dụng demo, tác giả chỉ nhận dạng 13
loại biển báo
Biển
báo
Số
hiệu
130
131 221b
Bảng 3.1 Các biển báo nhận dạng trong ứng dụng.
3.2 Tổ chức dữ liệu
Ảnh được dùng trong quá trình huấn luyện phát
hiện biển báo gồm 2 loại: Positive, Negative
20
Bộ ảnh huấn luyện nhận dạng gồm 1100 ảnh, với
mỗi loại biển báo cần nhận dạng có số lượng tối thiểu
là 50 ảnh được lưu vào từng thư mục riêng và được đặt tên
theo thứ tự. Bộ ảnh mẫu là ảnh biển biển báo giao thông
chuẩn của Bộ Giao thông vận tải được lưu với định dạng
.bmp và kích thước 80x80 trong thư mục Data\Labels.
3.3 Thực nghiệm
3.3.1 Môi trường thực nghiệm
3.3.2 Dữ liệu đầu vào
Dữ liệu đầu vào cho chương trình là tập dữ liệu chủ
yếu là ảnh tự chụp, được lưu trong thư mục IMGTEST
bao gồm 762 ảnh tĩnh và 56 video có chứa biển báo giao
thông. Các ảnh được chụp trong các điều kiện thời tiết,
chiếu sáng khác nhau. Mỗi ảnh được chụp ở nhiều góc độ
khác nhau như xa, gần, nghiêng,
3.3.3 Xử lý dữ liệu
3.3.3.1 Huấn luyện phát hiện biển báo trong ảnh
a) Chuẩn bị dữ liệu ảnh huấn luyện
Tập ảnh Positive: “haarkit\temp\positive\rawdata”.
Hình 3.20 Ví dụ về phát hiện
hai biển báo trong ảnh.
Hình 3.21 Ví dụ về phát hiện thiếu
biển báo trong ảnh.
3.3.3.2 Huấn luyện nhận dạng biển báo trong ảnh
Các biển báo cần nhận dạng được đưa về cùng một
kích thước là 50x50 để tiến hành huấn luyện. Tác giả có
23
viết riêng một hàm ResizeImageTo50x50(const char*
filename) trong chương trình để thực hiện công việc này.
Sau khi xây dựng được bộ dữ liệu phục vụ huấn
luyện nhận dạng, tác giả sử dụng lớp đối tượng PCA của
bộ thư viện OpenCV để tiến hành tính ma trận trung bình,
trị riêng và véc tơ riêng của ma trận covariance được xây
dựng từ tập dữ liệu đầu vào theo phương pháp phân tích
thành phần chính (PCA) đã được trình bày chi tiết ở
chương 2, sau đó lưu các giá trị này vào các file
“pcamean.txt”, “pcaeigenvalues.txt” và
“pcaeigenvectors.txt” để phục vụ quá trình nhận dạng biển
báo sau này:
Để huấn luyện nhận dạng bằng phương pháp SVM,
tác giả sử dụng hàm: CvSVM svm(data, values, Mat(),
Mat(),CvSVMParams(CvSVM::C_SVC, CvSVM::LINEAR,
0, 0, 0, 2,0, 0, 0, cvTermCriteria(CV_TERMCRIT_EPS,0,
0.01))); để tạo bộ huấn luyện nhận dạng với dữ liệu đầu
vào là ma trận “data”, tương ứng với tên lớp được lưu
trong ma trận “values”. Nhằm mục đích sử dụng cho việc
nhận dạng biển báo sau này, dữ liệu sau khi huấn luyện