Nhận dạng các đối tượng tham gia giao thông dùng mạng Nơ Ron học sâu
NHẬN DẠNG CÁC ĐỐI TƢỢNG THAM GIA GIAO THÔNG DÙNG
MẠNG NƠ RON HỌC SÂU
IDENTIFY OBJECTS PARTICIPATED IN TRAFFIC SYSTEM USING DEEP
LEARNING NEURAL NETWORK
Trần Quốc Toản1, Lê Mỹ Hà2
1 2Trường đại học Sư phạm Kỹ thuật TP.HCM
TÓM TẮT
Trong nghiên cứu này tác giả đề xuất phương pháp nhận dạng các đối tượng tham gia giao
thông sử dụng mạng nơron tích chập – Convolution Neural Network – CNN. Kiến trúc CNN tác
giả xây dựng có 15 lớp: 3 lớp tích chập (Convolutional), 3 lớp giảm mẫu “Pooling”, 4 lớp tinh
chỉnh các đơn vị tuyến tính “Rectified Linear Unit”, 2 lớp kết nối đầy đủ “Fully Connected”, 1
lớp “Softmax”, 1 lớp “Input” và 1 lớp “Output”. Giải thuật đề xuất được thực nghiệm để nhận
dạng nhiều loại đối tượng. Thời gian huấn luyện tùy thuộc vào mỗi tập dữ liệu nhiều và ít khác
nhau, độ chính xác của mạng có thể lên tới 99%.
Từ khóa: Mạng nơ ron tích chập; giảm mẫu; tinh chỉnh các đơn vị tuyến tính; kết nối đầy đủ.
ABSTRACT
This research proposes a method for identifying traffic participants using Convolution Neural
Network (CNN). The model has 15 layers: 3 “Convolutional” layers, 3 “Pooling” layers, 4
“Rectified Linear Unit” layers, 2 “Fully Connected” layers, 1 “Softmax” layers, 1 “Input”
layer and 1 "Output" layer. The proposed algorithm is experimented to identify many types of
objects. The training time depends on how many data sets are different and less, and the
accuracy of the network is archived up to 99%.
Keywords: Convolutional Neural Network; Pooling; Rectified Linear Unit; Fully Connected.
Hiện nay trên thế giới có một số mô hình
kiến trúc CNNs đạt được kết quả khả quan
như:
1. GIỚI THIỆU
Học sâu (Deep learning) là một thuật
toán dựa trên một số ý tưởng từ não bộ tới
việc tiếp thu nhiều tầng biểu đạt, cả cụ thể lẫn
trừu tượng, qua đó làm rõ nghĩa của các loại
dữ liệu. Deep Learning được ứng dụng trong
nhận diện hình ảnh, nhận diện giọng nói, xử
lý ngôn ngữ tự nhiên.
-
Lenet [1]: Đây là mô hình CNN
thành công đầu tiên, đặc biệt là trong việc
nhận dạng chữ số, ký tự trong văn bản. Được
phát triển bởi Yann Lecun vào cuối những
năm 90.
Hiện nay rất nhiều các bài toán nhận
dạng sử dụng học sâu để giải quyết do học
sâu có thể giải quyết các bài toán với số lượng
lớn, kích thước đầu vào lớn với hiệu năng
cũng như độ chính xác vượt trội so với các
phương pháp phân lớp truyền thống.
-
AlexNet [2]: Được phát triển bởi
Alex Krizhevsky, Ilya Sutskever và Geoff
Hinton. Lần đầu được giới thiệu vào năm
2012 với cấu trúc khá tượng tự như LeNet
nhưng với số lượng neural, filter và layer lớn
hơn. Được coi là mạng neural đầu tiên phổ
biến rộng rãi khả năng của CNNs.
Convolutional Neural Network (CNNs –
Mạng nơ-ron tích chập) là một trong những
mô hình Deep Learning tiên tiến giúp cho
chúng ta xây dựng được những hệ thống
thông minh với độ chính xác cao.
-
ZF Net [3]: Là mạng CNNs tốt nhất
năm 2013 được phát triển bởi Matthew Zeiler
và Rob Fergus (ZF là viết tắt của Zeiler và
Fergus). Mạng neural này được phát triển từ
AlexNet với việc tinh chỉnh các
hyperparameter (filter size, stride…). Với
những layer gần input layer, filter size và
stride nhỏ hơn.
Công thức tính tích chập:
a
b
w x, y * f x, y
w x, y f x s, y t
(1)
sa tb
Với a=(m-1)/2, b=(n-1)/2, w(x,y) là hàm
ảnh, f(x,y) là bộ lọc.
-
GoogLeNet [4]: Là mạng CNNs tốt
nhất năm 2014 được phát triển bởi Szegedy từ
Google. Với một số thay đổi như giảm thiểu
số lượng tham số trong AlexNet từ 60 triệu
xuống còn 4 triệu sử dụng Average Pooling
thay cho FC-Layer.
-
VGGNet [5]: Là mạng CNNs tốt
nhất năm 2015 được phát triển bởi Karen
Simonyan và Andrew Zisserman. Sử dụng
filter 3x3 và pooling 2x2 từ đầu tới cuối
mạng.
Hình 1: Minh họa tích chập
Ta sử dụng bao nhiêu filter để tính tích
chập ngõ vào thì sẽ có bấy nhiêu ảnh ngõ
ra sau lớp tích chập đó.
-
ResNet [6]: Là mạng CNNs tốt nhất
năm 2015 được phát triển bởi Kaiming Heatal
(viết tắt của Resividual Net). Bỏ qua
FC-Layer ở cuối mạng và sử dụng “special
skip connection” và “batch normalization”.
Và vẫn được tiếp tục phát triển, với kết quả
gần nhất được xuất bản vào tháng 3 năm
2016.
Mục đích của bài báo là tác giả sẽ xây
dựng một mô hình cấu trúc CNNs mới và tiến
hành huấn luyện mạng trên nhiều tập dữ liệu
khác nhau để tối ưu mô hình kiến trúc mạng
và đặc biệt tác giả sẽ huấn luyện mạng với dữ
liệu là: Bicycle, Car, Dog, Motobike, People
để ứng dụng vào việc nhận dạng các đối
tượng tham gia giao thông.
Hình 2: Các trọng số được kết nối vào
nơron đầu tiên
Các trọng số của filter ban đầu sẽ được
khởi tạo ngẫu nhiên và sẽ được học dần
trong quá trình huấn luyện mô hình.
Phần còn lại của bài báo được bố cục như
sau: phần 2 trình bày chi tiết mô hình CNN,
phần 3 trình bày phương pháp thực hiện, phần
4 đưa ra kết quả mô phỏng và đánh giá, phần
5 kết luận của bài báo.
2. CHI TIẾT CÁC LỚP CỦA MÔ HÌNH
CNNs
Hình 3: Kích thước ngõ ra của lớp tích
chập
2.1 Lớp tích chập – Convolutional
Lớp này chính là nơi thể hiện tư
tưởng ban đầu của mạng nơ-ron tích chập.
Thay vì kết nối toàn bộ điểm ảnh, lớp này
sẽ sử dụng một bộ các bộ lọc (filters) có
kích thước nhỏ so với ảnh (thường là 3×3
hoặc 5×5) áp vào một vùng trong ảnh và
tiến hành tính tích chập giữa bộ filter và
giá trị điểm ảnh trong vùng cục bộ đó. Bộ
filter [7] sẽ lần lượt được dịch chuyển
theo một giá trị bước trượt (stride) chạy
dọc theo ảnh và quét toàn bộ ảnh.
Công thức tính ngõ ra tích chập:
푊−퐹+2푃
+1
(2)
푆
Trong đó: W: kích thước ma trận chập
F: kích thước kernel
P: Padding (mặc định là 0)
S: Stride (mặc định là 1)
2.2 Lớp tinh chỉnh các đơn vị tuyến tính –
Rectifed Linear Unit (ReLU)
Lớp này thường được cài đặt ngay
sau lớp Convolutional. Lớp này sử dụng
hàm kích hoạt f(x) = max(0, x). Nói một
cách đơn giản, lớp này có nhiệm vụ
chuyển toàn bộ giá trị âm trong kết quả
lấy từ lớp Convolutional thành giá trị 0.
Ý nghĩa của cách cài đặt này chính là tạo
nên tính phi tuyến cho mô hình. Tương tự
như trong mạng truyền thẳng, việc xây
dựng dựa trên các phép biến đổi tuyến
tính sẽ khiến việc xây dựng đa tầng đa
lớp trở nên vô nghĩa. Có rất nhiều cách
để khiến mô hình trở nên phi tuyến như
sử dụng các hàm kích hoạt sigmoid, tanh,
… nhưng hàm f(x) = max(0, x) dễ cài đặt,
tính toán nhanh mà vẫn hiệu quả.
Hình 5: Cách hoạt động của hàm
maxpooling
Như vậy sau khi qua lớp Pooling, ảnh sẽ
giảm kích thước xuống còn 32×32 (kích
thước mỗi chiều giảm 2 lần).
Hình 6: Kích thước ngõ ra của lớp
Pooling
Công thức tính ngõ ra Pooling:
푊−퐹
+ 1
(3)
푆
Với W: kích thước ma trận pooling
F: kích thước kernel
S: Stride
Lớp Pooling có vai trò giảm kích thước
dữ liệu. Với một bức ảnh kích thước lớn
qua nhiều lớp Pooling sẽ được thu nhỏ lại
tuy nhiên vẫn giữ được những đặc trưng
cần cho việc nhận dạng (thông qua cách
lấy mẫu). Việc giảm kích thước dữ liệu sẽ
làm giảm lượng tham số, tăng hiệu quả
tính toán và góp phần kiểm soát hiện
tượng quá khớp (overfitting).
Hình 4: Hàm kích hoạt ReLU
2.3 Lớp giảm mẫu – Pooling
Lớp này sử dụng một cửa sổ trượt [8]
quét qua toàn bộ ảnh dữ liệu, mỗi lần
trượt theo một bước trượt (stride) cho
trước. Khác với lớp Convolutional, lớp
Pooling không tính tích chập mà tiến
hành lấy mẫu (subsampling). Khi cửa sổ
trượt trên ảnh, chỉ có một giá trị được
xem là giá trị đại diện cho thông tin ảnh
tại vùng đó (giá trị mẫu) được giữ lại.
Các phương thức lấy phổ biến trong lớp
Pooling là MaxPooling (lấy giá trị lớn
nhất), MinPooling (lấy giá trị nhỏ nhất)
và AveragePooling (lấy giá trị trung bình).
Xét một ảnh có kích thước 64×64 và lớp
Pooling sử dụng filter có kích thước 2×2
với bước trượt stride = 2, phương pháp sử
dụng là MaxPooling. Filter sẽ lần lượt
duyệt qua ảnh, với mỗi lần duyệt chỉ có
giá trị lớn nhất trong 4 giá trị nằm trong
vùng cửa sổ 2×2 của filter được giữ lại và
đưa ra đầu ra.
2.4 Lớp kết nối đầy đủ
Lớp này tương tự với lớp trong mạng
nơ-ron truyền thẳng, các giá trị ảnh được
liên kết đầy đủ vào node trong lớp tiếp
theo. Sau khi ảnh được xử lý và rút trích
đặc trưng từ các lớp trước đó, dữ liệu ảnh
sẽ không còn quá lớn so với mô hình
truyền thẳng nên ta có thể sử dụng mô
hình truyền thẳng để tiến hành nhận dạng.
Tóm lại, lớp fully-connected đóng vai trò
như một mô hình phân lớp và tiến hành
dựa trên dữ liệu đã được xử lý ở các lớp
trước đó.
Hình 7: Lớp kết nối đầy đủ các neural từ
các lớp trên lại với nhau.
Hình 10: Một số ảnh trong
Caltech-101
Dữ liệu [10] chuẩn Cifar-10: Gồm 10
loại [15] đối tượng, tác giả chọn ra 5
loại ngẫu nhiên đó là Deer, Dog,
Frog, Ship, Cat
3. QUÁ TRÌNH THỰC NGHIỆM
3.1 Sơ đồ khối
Hình 8: Sơ đồ khối
3.2 Dữ liệu huấn luyện
Dữ liệu tự tạo tên T_01: Gồm 5 loại
Bicycle, Car, Dog, Motobike, People.
Mỗi đối tượng có 300 hình ảnh.
Hình 11: Một số ảnh trong Cifar-10
Dữ liệu [11] trong matlab
DigitDataset
Hình 12: Một số ảnh trong
DigitDataset
3.3 Xây dựng mô hình
Hình 9: Một số ảnh trong T_01
Dữ liệu [9] chuẩn Caltech-101: Gồm
101 đối tượng, tác giả chọn ngẫu
nhiên ra 5 loại đối tượng: Airplanes,
Bathtub, Billiards, Faces, Leopards.
Từ các lớp ở trên (mục 2) tác giả xây
dựng nên mô hình CNN ứng dụng vào
nhận dạng các đối tượng tham gia giao
thông được xây dựng tất cả gồm 15 lớp,
trong đó có 3 lớp Convolution, 4 lớp
ReLU, 3 lớp Maxpooling và 2 lớp Fully
Connected. Output gồm 5 loại.
Kết quả ta được 32 ma trận đặc trưng
kích thước 15x15 ở tầng C2. Tiếp tục sử
dụng 64 ma trận chập kích thước 5x5,
Padding là 2, Stride là 1, chập với các ma
trận ở tầng C2 ta được 32 ma trận ánh xạ
đặc trưng kích thước 15x15.
Hình 13: Mô hình CNN
3.4 Cách hoạt động của mô hình
Do kích thước các ảnh đặc trưng ở
tầng chập trên có kích thước 15x15 còn
lớn, cho nên bước tiếp theo chúng ta thực
hiện phép giảm số chiều ở ma trận đặc
trưng (down Sampling – hay Pooling –
hay subsampling) với kích thước 3x3,
stride là 2 và sử dụng hàm maxpooling.
Kết quả ta được 32 ma trận đặc trưng
kích thước 7x7 ở tầng C3.
Hình 14: Cách hoạt động mô hình
Ảnh đầu vào là 1 bức ảnh thô kích
thước 64x64x3 pixel. Chúng ta sử dụng
32 ma trận chập kích thước 5x5x3,
Padding là 2, Stride mặc định là 1. Ta cho
ra 32 ma trận ảnh đặc trưng sau khi chập
lần 1. Đó là các ma trận ánh xạ đặc trưng,
mỗi ma trận ánh xạ đặc trưng này có kích
thước 64x64x32. Tức là ảnh gốc ban đầu
được phân tích theo 32 chiều đặc trưng
khác nhau với ma trận chập 5x5x3.
Như vậy đến lớp này ta có được 64
ma trận đặc trưng ảnh có kích thước 7x7
nên ta có 7*7*64 = 3136 neural. Ta dùng
hàm softmax giảm số neural này xuống
còn 64 neural ở tầng FC1.
Lưu ý rằng đối với mỗi khối ở các
Các tham số trong lớp Convolution
đầu tiên như sau: ảnh ngõ ra có kích
thước 64x64x32 pixel tương ứng với
64*64*32 = 131072 neural, mỗi neural
có 5*5*3 = 75 trọng số và 1 bias nữa là
76.
tầng từ đầu tới FC1 ta sử dụng hàm kích
1
hoạt Sigmoid dạng : Y = f(x) =
−푥
1+ 푒
để tính toán giá trị ra của các node mạng,
tức là Y’ = f(A*I) trong đó A là ảnh chập,
I là ma trận chập, và Y’ là giá trị 1 node
trên ma trận ánh xạ đặc trưng.
Vậy ta có tất cả 131072*76 =
9961472 tham số. Con số này quá lớn
nên ta tiếp tục các lớp tiếp theo để kích
thước ảnh nhỏ lại. Nên bước tiếp theo
chúng ta thực hiện phép giảm số chiều ở
ma trận đặc trưng (down Sampling – hay
Pooling – hay subsampling) với với
kernel có kích thước 3x3, Stride là 2 sử
dụng hàm max.
Với 64 node ở tầng FC1, ở đây sử
dụng mô hình mạng neural truyền thẳng
với các kết nối Fully Connection, với 5
outputs. Lớp Fully Connected này sẽ xử
lý và đưa ra kết quả nhận dạng.
Tương tự như mạng nơ-ron truyền
thẳng, mạng nơ-ron tích chập cũng là một
mô hình học cho nên khởi tạo ban đầu
cho các trọng số trong mạng là ngẫu
nhiên và sẽ được điều chỉnh thông qua
quá trình học. Thuật toán học cho mạng
nơ-ron tích chập cũng tương tự như mạng
nơ-ron truyền thẳng là thuật toán lan
truyền ngược sử dụng Stochastic
Gradient Descent with Momentum
(SGDM); chỉ khác nhau ở chỗ mạng tích
chập không liên kết đầy đủ nên độ lỗi ở
mỗi lớp chỉ tính dựa vào một phần các
node trong lớp tiếp theo chứ không phải
toàn bộ. Ta có thế hình dung mô hình
nhận dạng các đối tượng tham gia giao
thông được thực hiện như sau:
Như vậy với 32 ma trận đặc trưng
kích thước 64x64 ở tầng chập trên sau
khi sử dụng hàm maxpooling với kích
thước 3x3 và Stride là 2 ta tạo ra được 32
ma trận kích thước 31x31 ở tầng C1. Tiếp
tục sử dụng 32 ma trận chập kích thước
5x5, Padding là 2, Stride là 1, chập với
các ma trận ở tầng C1 ta được 32 ma trận
ánh xạ đặc trưng kích thước 31x31.
Do kích thước các ảnh đặc trưng ở
tầng chập trên có kích thước 31x31 còn
lớn, cho nên bước tiếp theo chúng ta thực
hiện phép giảm số chiều ở ma trận đặc
trưng (down Sampling – hay Pooling –
hay subsampling) với kích thước 3x3,
stride là 2 và sử dụng hàm maxpooling.
3.5 Lƣu đồ
Hình 15: Minh họa các bước tính CNN
Hình 16: Lưu đồ
3.6 Kết quả thực nghiệm
Bảng 1: Kết quả thực nghiệm
Dữ liệu
Số
chu
kì
Độ
chính
xác
(%)
T_01
10
10
10
10
89
87
76
99
Caltech-101
Cifar-10
DigitDataset
3.7 So sánh với phƣơng pháp HOG -
Histogram of Oriented Gradient
Bảng 2: Kết quả nhận dạng bằng phương
pháp CNN
Hình 18: Kết quả nhận dạng xe hơi trên
video
Bảng 3: Kết quả nhận dạng bằng phương
4. KẾT LUẬN
pháp HOG
Với mục tiêu chính là xây dựng một mô hình
kiến trúc CNN. Demo mô hình có khả năng
phát hiện nhận dạng đúng các đối tượng tham
gia giao thông trong hình ảnh hoặc video. Kết
quả demo cho thấy độ chính xác có thể lên
đến 99% đối với tập dữ liệu DigitDataset. Tuy
nhiên đề tài còn nhìu hạn chế như sau:
Độ chính xác phụ thuộc nhiều vào tập
dữ liệu ảnh huấn luyện
Mô hình chỉ áp dụng nhận dạng trên
hệ thống camera tĩnh.
Kết quả trên cho thấy nhận dạng bằng
phương pháp CNN cho độ chính xác cao
hơn hẳn so với phương HOG.
Hướng phát triển tương lai là huấn luyện với
lương dữ liệu lớn, phát triển thành module
phần cứng để ứng dụng cho robot ngoài trời
hoặc xe không người lái.
Kết quả nhận dạng trên ảnh và video
chứa xe hơi:
Hình 17: Kết quả nhận dạng xe hơi. (1)
ảnh pooling lần 1, (2) ảnh pooling lần 2,
(3) ảnh pooling lần 3.
TÀI LIỆU THAM KHẢO
[1] Yann LeCun, Leon Bottou, Yoshua Bengio, and Patrick Haffner. Gradient-Based Learning
Applied to Document Recognition. PROC. OF THE IEEE, NOVEMBER 1998.
[2] Alex Krizhevsky, Ilya Sutskever, Geoffrey E. Hinton. ImageNet Classification with Deep
Convolutional Neural Networks. Advances in neural information processing systems. 2012.
[3] Matthew D Zeiler, Rob Fergus. Visualizing and Understanding Convolutional Networks.
arXiv:1311.2901, nov 2013.
[4] Christian Szegedy, Wie Liu, Yangqing Jia, Pierre Sermanet, Scott Reed, Dragomir Anguelov,
Dumitru Erhan, Vincnet Vanhoucke, Andrew Rabinovich. Going deeper with convolutions.
arXiv:1409.4842v1, 17 Sep 2014.
[5] Karen Simonyan, Andrew Zisserman. Very Deep Convolutional Networks For Large-Scale
Image Recognition. arXiv:1409.1556v6, 10 Apr 2015.
[6] Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun. Deep Residual Learning for Image
Recognition. arXiv:1512.03385, 10 Dec 2015.
06/08/2017.
[8] Convolutional Neural Networks (CNNs/ConvNets). Internet:
29/10/2017.
Tác giả chịu trách nhiệm bài viết:
Họ tên: Trần Quốc Toản
Đơn vị: Đại học Sư phạm Kỹ thuật TP.HCM
Điện thoại: 0938551842
Email: toantq2611@gmail.com
BÀI BÁO KHOA HỌC
THỰC HIỆN CÔNG BỐ THEO QUY CHẾ ĐÀO TẠO THẠC SỸ
Bài báo khoa học của học viên
có xác nhận và đề xuất cho đăng của Giảng viên hướng dẫn
Bản tiếng Việt ©, TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ MINH và TÁC GIẢ
Bản quyền tác phẩm đã được bảo hộ bởi Luật xuất bản và Luật Sở hữu trí tuệ Việt Nam.
Nghiêm cấm mọi hình thức xuất bản, sao chụp, phát tán nội dung khi chưa có sự đồng ý
của tác giả và Trường Đại học Sư phạm Kỹ thuật TP. Hồ Chí Minh.
ĐỂ CÓ BÀI BÁO KHOA HỌC TỐT, CẦN CHUNG TAY BẢO VỆ TÁC QUYỀN!
Thực hiện theo MTCL & KHTHMTCL Năm học 2018-2019 của Thư viện Trường Đại học
Sư phạm Kỹ thuật Tp. Hồ Chí Minh.
Bạn đang xem tài liệu "Nhận dạng các đối tượng tham gia giao thông dùng mạng Nơ Ron học sâu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
nhan_dang_cac_doi_tuong_tham_gia_giao_thong_dung_mang_no_ron.pdf

