You are on page 1of 71

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT


THÀNH PHỐ HỒ CHÍ MINH

LUẬN VĂN THẠC SĨ


DƯƠNG MINH THIỆN

ĐIỀU HƯỚNG XE TỰ HÀNH DÙNG TRÍ TUỆ NHÂN TẠO

NGÀNH: KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA - 8520216

S K C0 0 6 0 7 4

Tp. Hồ Chí Minh, tháng 04/2019


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

LUẬN VĂN THẠC SĨ


DƯƠNG MINH THIỆN

ĐIỀU HƯỚNG XE TỰ HÀNH DÙNG TRÍ TUỆ NHÂN TẠO

NGÀNH: KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA - 8520216

Tp Hồ Chí Minh, tháng 04/2019


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH

LUẬN VĂN THẠC SĨ


DƯƠNG MINH THIỆN

ĐIỀU HƯỚNG XE TỰ HÀNH DÙNG TRÍ TUỆ NHÂN TẠO

NGÀNH: KỸ THUẬT ĐIỀU KHIỂN VÀ TỰ ĐỘNG HÓA - 8520216


Hướng dẫn khoa học:
TS. LÊ MỸ HÀ

Tp Hồ Chí Minh, tháng 04/2019

ii
QUYẾT ĐỊNH GIAO ĐỀ TÀI

i
LÝ LỊCH KHOA HỌC
I. LÝ LỊCH SƠ LƯỢC:
Họ & tên: Dương Minh Thiện Giới tính: Nam
Ngày, tháng, năm sinh: 22/06/1994 Nơi sinh: Bà Rịa Vũng Tàu
Quê quán: Bà Rịa Vũng Tàu Dân tộc: Kinh
Địa chỉ liên lạc: 167/1/7 Võ Thị Sáu, Thị Trấn Long Điền, Huyện Long Điền,
Tỉnh Bà Rịa Vũng Tàu
Điện thoại liên hệ: 0909 196 940
E-mail: duongthien2206@gmail.com

II. QUÁ TRÌNH ĐÀO TẠO:


1. Đại học:
Hệ đào tạo: Chính qui .
Thời gian đào tạo: từ 09/2012 đến 12/2016.
Nơi học: Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh.
Ngành học: Công Nghệ Kỹ Thuật Điều Khiển & Tự Động Hóa.
Tên đồ án, luận án hoặc môn thi tốt nghiệp: Thiết Kế, Thi Công và Lập Trình
Điều Khiển Cánh Tay Máy Gắp Vật Thể Sử Dụng Thuật Toán Nhận Dạng Màu
Sắc và Hình Khối
Ngày & nơi bảo vệ đồ án tốt nghiệp: tháng 07/2016 tại Trường Đại Học Sư
Phạm Kỹ Thuật Thành Phố Hồ Chí Minh.
Người hướng dẫn: TS. Nguyễn Văn Thái.

III. QUÁ TRÌNH CÔNG TÁC CHUYÊN MÔN KỂ TỪ KHI TỐT NGHIỆP
ĐẠI HỌC:

Thời gian Nơi công tác Công việc đảm nhiệm

9/2016-
Công Ty TNHH Phần Mềm FPT Kỹ sư lập trình
12/2017

Đại Học Sư Phạm Kỹ Thuật


10/2017- nay Học viên cao học
Thành Phố Hồ Chí Minh

ii
LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công
bố trong bất kỳ công trình nào khác

Tp. Hồ Chí Minh, ngày 13 tháng 04 năm 2019


(Ký tên và ghi rõ họ tên)

iii
LỜI CẢM ƠN
Trong suốt quá trình thực hiện đề tài, với sự giúp đỡ nhiệt tình của quý thầy
cô, hướng dẫn về mọi mặt từ thiết kế phần cứng đến phần mềm điều khiển là những
yếu tố quyết định đến sự thành công của đề tài ngày hôm nay. Tôi xin chân thành gửi
lời cảm ơn đến:

Giảng viên hướng dẫn TS. Lê Mỹ Hà đã định hướng, nhiệt tình giúp đỡ, chỉ
bảo tận tình và tạo điều kiện tốt nhất cho tôi khi làm việc tại phòng thí nghiệm (ISLab)
trong suốt quá trình thực hiện đề tài.

Tôi cũng xin gửi lời cảm ơn đến toàn bộ quý thầy cô trong Khoa Điện – Điện
tử và Bộ môn Tư Động Điều Khiển đã giúp đỡ tôi rất nhiều trong quá trình thực hiện
đề tài cũng như đóng góp ý kiến và tạo điều kiện thuận lợi giúp đề tài hoàn thiện hơn.

Tôi xin gửi lời cảm ơn đến tập thể lớp cao học TĐH17B, trong quá trình làm
đề tài các anh chị đã có những ý kiến thiết thực và giúp đỡ tôi trong việc thiết kế và
thi công đề tài.

Cuối cùng, tôi xin gửi lời cảm ơn chân thành tới nhà trường, thầy cô, cha mẹ
và bạn bè đã động viên và giúp đỡ trong suốt quá trình thực hiện đề tài.

Tôi xin chân thành cảm ơn!

iv
TÓM TẮT
Trong đề tài này, mô hình xe tự lái dựa trên thị giác máy sử dụng mạng nơron
học sâu trên máy tính Raspberry Pi được đề xuất. Xe tự lái là một trong những lĩnh
vực được quan tâm nghiên cứu nhiều nhất trong những năm gần đây nhờ vào sự phát
triển mạnh mẽ của công nghệ phần cứng cũng như phần mềm liên quan đến khả năng
tự lái hoàn toàn, không có sự can thiệp của con người. Cấp độ 3 trên 4 của phương
tiện tự hành sẽ đạt được trong tương lai rất gần. Việc sử dụng cơ điện tử và trí tuệ
nhân tạo (AI) sẽ hỗ trợ người lái xe điều khiển và kiểm soát phương tiện một cách dễ
dàng hơn. Điều này đóng góp rất nhiều cho các vấn đề giao thông hiện nay, có xe tự
hành, sẽ không còn kẹt xe, hạn chế tai nạn giao thông do con người. Mạng nơron tích
chập (CNN) đã được chứng minh rằng có hiệu suất đáng kể trong rất nhiều bài toán
nhận dạng và điều khiển so với các kỹ thuật khác trong thời gian gần đây. Những yếu
tố quyết định kết quả ấn tượng này chính là khả năng học hàng triệu thông số sử dụng
một lượng lớn dữ liệu đã được gán nhãn. Ở đây, tác giả tập trung vào việc tìm kiếm
một model trực tiếp ánh xạ các hình ảnh đầu vào đến các góc lái dự đoán ở đầu ra
mạng nơron học sâu.

Việc thực hiện luận văn này bao gồm ba việc chính. Đầu tiên, các thông số của
model CNN được huấn luyện bằng cách sử dụng dữ liệu thu thập được từ một xe mô
hình tỉ lệ 1/10, gắn máy tính Raspberry Pi 3 Model B và một camera ở phía trước. Dữ
liệu dùng để huấn luyện mạng là hình ảnh đường đi và góc lái đồng bộ với thời gian
thu thập lúc xe được lái. Tiếp theo, dữ liệu đó được chuyển sang máy tính và dùng để
huấn luyện cho model điều hướng xe. Cuối cùng, thực nghiệm model đó trên máy
tính Raspberry để xe tự chạy trong môi trường ngoài trời, xung quanh đường tròn và
đường số 8 có biển báo giao thông. Kết quả thực nghiệm cho thấy tính hiệu quả và
sự mạnh mẽ của model lái tự động trong việc giữ làn đường trong thời gian thực. Tốc
độ tối đa của xe khoảng 5-6km/h trong nhiều điều kiện lái khác nhau, bất kể vạch
đường có bị che khuất hay không.

v
ABSTRACT
In this thesis, a monocular vision-based self-driving car prototype using Deep
Neural Network on Raspberry Pi is proposed. Self-driving cars are one of the most
increasing interests in recent years as the definitely developing relevant hardware and
software technologies toward fully autonomous driving capability with no human
intervention. Level-3/4 autonomous vehicles are potentially turning into a reality in
near future. It involves the use of Mechatronics and Artificial Intelligence (AI) to
control the vehicle, thereby taking the responsibilities of the driver, providing a more
manageable control over it. And a swarm of autonomous vehicles could just be the
solution to our traffic problems: no traffic jam, no road accidents, no delayed journey.
Convolutional Neural Networks (CNNs) have been shown to achieve significant
performance in various perception and control tasks in comparison to other
techniques in the latest years. The key factors behind these impressive results are their
ability to learn millions of parameters using a large amount of labeled data. In this
work, we concentrate on finding a model that directly maps raw input images to a
predicted steering angle as output using a deep neural network.

The technical contributions of this work are three-fold. First, the CNN model
parameters were trained by using data collected from vehicle platform built with a
1/10 scale RC car, Raspberry Pi 3 Model B computer and front-facing camera. The
training data were road images paired with the time-synchronized steering angle
generated by manually driving. Second, the stored data is then transferred to a desktop
computer and used for training the model to autonomously navigate the car. Finally,
road tests the model on Raspberry to drive itself in the outdoor environment around
oval-shaped and 8-shaped with traffic sign lined track. The experimental results
demonstrate the effectiveness and robustness of autopilot model in real-time lane
keeping task. Vehicle’s top speed is about 5-6km/h in a wide variety of driving
conditions, regardless of whether lane markings are present or not.

vi
MỤC LỤC

LÝ LỊCH KHOA HỌC ............................................................................................. i


LỜI CAM ĐOAN .................................................................................................... iii
LỜI CẢM ƠN .......................................................................................................... iv
TÓM TẮT ..................................................................................................................v
ABSTRACT ............................................................................................................. vi
MỤC LỤC ............................................................................................................... vii
DANH MỤC CÁC CHỮ VIẾT TẮT..................................................................... ix
DANH MỤC CÁC BẢNG BIỂU .............................................................................x
DANH MỤC CÁC HÌNH ẢNH VÀ BIỂU ĐỒ..................................................... xi
Chương 1: TỔNG QUAN ........................................................................................1
1.1. Đặt vấn đề .....................................................................................................1
1.2. Mục tiêu đề tài..............................................................................................2
1.3. Giới hạn đề tài ..............................................................................................2
1.4. Nội dung đề tài .............................................................................................3
Chương 2: CƠ SỞ LÝ THUYẾT CỦA XE TỰ HÀNH .......................................4
2.1. Giới thiệu về xe tự hành ..............................................................................4
2.2. Tổng quan về trí tuệ nhân tạo ....................................................................5
2.2.1. Trí tuệ nhân tạo (Artificial Intelligence- AI) ......................................5
2.2.2. Machine Learning .................................................................................7
2.2.3. Deep Learning .....................................................................................12
2.3. Convolutional Neural Network (CNN) ....................................................16
2.4. Bộ điều khiển PID ......................................................................................25
Chương 3: THIẾT KẾ VÀ LỰA CHỌN THIẾT BỊ ..........................................27
3.1. Các thành phần phần cứng .......................................................................27
3.1.1. Xe điều khiển Trophy Truck .............................................................27
3.1.2. Động cơ Brushed Motor RC-540PH .................................................28
3.1.3. Động cơ RC Servo TowerPro MG946R............................................29
3.1.4. Waterproof Brushed ESC Controller WP-1040 ..............................29
3.1.5. Raspberry Pi 3 Model B .....................................................................30
3.1.6. Raspberry Pi Power Pack ..................................................................31

vii
3.1.7. Raspberry Pi Camera Module ...........................................................31
3.1.8. Arduino Uno R3 ..................................................................................32
3.1.9. PWM/Servo Driver PCA9685 ............................................................33
3.1.10. Encoder Omron E6B2-CWZ6C 10P/R .............................................34
3.1.11. Pin Lipo 2S-30C 3600mAh .................................................................34
3.2. Sơ đồ kết nối phần cứng ............................................................................35
3.3. Cấu trúc phần cứng của mô hình xe tự hành .........................................35
Chương 4: GIẢI THUẬT ĐIỀU KHIỂN CỦA MÔ HÌNH XE TỰ HÀNH .....38
4.1. Sơ đồ khối thu thập dữ liệu huấn luyện ..................................................38
4.2. Sơ đồ khối điều hướng mô hình xe tự hành ............................................39
4.3. Cấu trúc mạng và tối ưu các thông số .....................................................40
4.4. Phần mềm và các thư viện sử dụng để lập trinhg ..................................43
4.4.1. Giới thiệu thư viện Tensorflow ..........................................................43
4.4.2. Giới thiệu thư viện Keras ...................................................................43
Chương 5: THỰC NGHIỆM ................................................................................44
5.1. Môi trường thực nghiệm ...........................................................................44
5.2. Mô tả tập dữ liệu ........................................................................................45
5.3. Các phương pháp để tạo ra các nhiều dữ liệu khác nhau .....................46
5.4. Quá trình huấn luyện ................................................................................46
5.5. Kết quả thực nghiệm ngoài trời: ..............................................................48
Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.........................................50
6.1. Kết luận ......................................................................................................50
6.2. Hướng phát triển .......................................................................................51
TÀI LIỆU THAM KHẢO ......................................................................................52
PHỤ LỤC .................................................................................................................54

viii
DANH MỤC CÁC CHỮ VIẾT TẮT

1. AI: Artificial Intelligence

2. ANN: Artificial Neural Network

3. CNN: Convolutional Neural Network

4. CPU: Control Processing Unit

5. ESC: Electronic Speed Control

6. GPS: Global Positioning System

7. GPU: Graphics Processing Unit

8. PID: Proportional Integral Derivative

9. PWM: Pulse Width Modulation

10. RNN: Recurrent Neural Network

11. USB: Universal Serial Bus

ix
DANH MỤC CÁC BẢNG BIỂU

Bảng 3.1: Thông số hoạt động của RC Servo TowerPro MG946R ..........................29

Bảng 3.2: Thông số của board Arduino Uno ............................................................33

Bảng 5.1: Sự ảnh hưởng của chu kỳ huấn luyện đến độ chính xác của mô hình......47

Bảng 6.1: Sự ảnh hưởng của số lượng mẫu huấn luyện đến độ chính xác của mô hình
...................................................................................................................................50

x
DANH MỤC CÁC HÌNH ẢNH VÀ BIỂU ĐỒ

Hình 2.1: Sự phát triển của xe tự hành trong tương lai ...............................................4
Hình 2.2: Mối quan hệ giữa AI, Machine Learning và Deep Learning ......................7
Hình 2.3: Cấu trúc của một tế bào thần kinh sinh học ................................................8
Hình 2.4: Cấu trúc tế bào thần kinh nhân tạo............................................................10
Hình 2.5: Học có giám sát .........................................................................................11
Hình 2.6: Học không giám sát...................................................................................12
Hình 2.7: Học tăng cường .........................................................................................12
Hình 2.8: So sánh hiệu suất giữa DL với các thuật toán học theo thứ tự .................14
Hình 2.9: Tổ chức của hệ thống vỏ não thị giác .......................................................15
Hình 2.10: Mô hình RNN..........................................................................................15
Hình 2.11: Kiến trúc mạng autoencoders ..................................................................16
Hình 2.12: Ví dụ cách thức xử lý của ANN với cấu trúc kết nối đầy đủ ..................17
Hình 2.13: Ý tưởng thiết kế CNN .............................................................................17
Hình 2.14: Minh họa tích chập ..................................................................................18
Hình 2.15: Ví dụ ứng dụng tích chập ........................................................................19
Hình 2.16: Các thành phần của lớp tích chập. ..........................................................20
Hình 2.17: Ví dụ về lớp Convolution trong ảnh. ......................................................21
Hình 2.18: Cách tính tham số của lớp pooling..........................................................22
Hình 2.19: Quá trình tinh chỉnh tuyến tính ...............................................................23
Hình 2.20: Flatten dữ liệu nhận được từ một lớp convolution. a) là ma trận 3x3. b) là
mảng sau khi áp dụng flatten ....................................................................................23
Hình 2.21: Kiến trúc mạng CNN cơ bản...................................................................24
Hình 2.22: Bộ điều khiển PID ...................................................................................26
Hình 2.23: Bộ điều khiển PID cho tốc độ của xe ......................................................26
Hình 3.1: Sơ đồ khối của mô hình xe tự hành...........................................................27
Hình 3.2: Xe điều khiển Trophy Truck .....................................................................27
Hình 3.3: Chi tiết bên trong xe điều khiển ................................................................28

xi
Hình 3.4: Động cơ Brushed Motor RC-540PH .........................................................28
Hình 3.5: RC Servo TowerPro MG946R. .................................................................29
Hình 3.6: Waterproof Brushed ESC Controller WP-1040 ........................................30
Hình 3.7: Raspberry Pi 3 Model B ............................................................................30
Hình 3.8: Raspberry Pi Power Pack ..........................................................................31
Hình 3.9: Raspberry Pi Camera ................................................................................32
Hình 3.10: Board Arduino Uno (mặt trước và sau). .................................................32
Hình 3.11: Mạch Điều Khiển 16 Chanel PWM PCA9685 .......................................33
Hình 3.12: Encoder Omron E6B2-CWZ6C 10P/R ...................................................34
Hình 3.13: Pin Lipo 2S-30C 3600mAh ....................................................................34
Hình 3.14: Sơ đồ kết nối phần cứng..........................................................................35
Hình 3.15: Phía trên của mô hình xe tự hành ............................................................36
Hình 3.16: Phía trái của mô hình xe tự hành.............................................................36
Hình 3.17: Bên trong xe tự hành. (a) bên trong xe nhìn từ phía trên. (b) bánh răng của
encoder. (c) hệ thống bể lái. (d) Motor và ESC ........................................................37
Hình 4.1: Sơ đồ khối thu thập dữ liệu huấn luyện ....................................................38
Hình 4.2: Sơ đồ khối điều hướng mô hình xe tự hành ..............................................39
Hình 4.3: Cấu trúc mạng huấn luyện cho mô hình xe tự hành .................................40
Hình 4.4: Lớp dropout. a) mạng nơ-ron tiêu chuẩn, b) mạng nơ-ron sau khi áp dụng
dropout ......................................................................................................................42
Hình 5.1: Quỹ đạo thực nghiệm 1: (a) Quỹ đạo hình bầu dục.(b) góc rẽ của đường đi
.(c) mô hình xe đang di chuyển theo quỹ đạo ...........................................................44
Hình 5.2:Quỹ đạo thực nghiệm 2: (a) quỹ đạo hình số 8. (b) và (c) biển báo hiệu chỉ
đường.........................................................................................................................44
Hình 5.3: Tập dữ liệu thu thập được: (a) là các mẫu từ tập dữ liệu lái xe. (b), (c) và
(d) là những hình ảnh điển hình trong tập dữ liệu.....................................................45
Hình 5.4: Ví dụ về các phương pháp tạo thêm dữ liệu huấn luyện...........................46
Hình 5.5: Sơ đồ huấn luyện cho mô hình xe tự hành ................................................47

xii
Hình 5.6: Trực quan các lớp tích chập. a) ảnh gốc. b), c) và d) là lần lượt là các lớp
tích chập thứ 1,2 và 3 ................................................................................................48
Hình 5.7: Độ chính xác của mạng CNN được đề xuất..............................................49
Hình 5.8: Giá trị góc lái được dự đoán .....................................................................49

xiii
Chương 1: TỔNG QUAN
1.1. Đặt vấn đề

Ngày nay, với sự phát triển mạnh mẽ về khoa học công nghệ cũng như giao
thông vận tải, nhiều phương tiện được trang bị chế độ tự lái để hỗ trợ người lái xe
duy trì sức khỏe khi lái xe đường dài cũng như giảm thiểu rủi ro tai nạn giao thông.

Điều hướng quỹ đạo cho phương tiện giao thông là một trong những khía cạnh
quan trọng nhất của sự phát triển của mô hình xe không người lái. Có rất nhiều
phương pháp để thực hiện điều này, nhưng cách để có được kết quả tốt nhất và phù
hợp với cuộc cách mạng công nghiệp 4.0 là sử dụng một thuật toán liên quan đến lĩnh
vực trí tuệ nhân tạo. Cụ thể, chúng tôi đã thực hiện thuật toán mạng nơ-ron tích chập
(CNN) để điều hướng cho các phương tiện tự hành. [1]

Học tập sâu (Deep Learning) là một lĩnh vực thuộc phần máy học (Machine
Learning) lấy cảm hứng từ một mạng nơron nhân tạo. Một trong những loại mạng
sâu đặc biệt như vậy là mạng nơ-ron tích chập, thường được gọi là CNN hoặc
ConvNet. Sự khác biệt của CNN so với mạng thần kinh truyền thống là số lượng nơ-
ron trong một lớp có thể giảm nhưng số lượng của các lớp ẩn sẽ lớn hơn và được gọi
là mạng sâu. Chúng thường được huấn luyện bằng chiến lược lan truyền ngược. Vì
vậy, nó có thể xây dựng các hệ thống thông minh với độ chính xác rất cao. [1]

Trước đây, đã có nhiều nghiên cứu về điều hướng cho xe tự hành đã đươc thực
hiện. Bao gồm các phương pháp như: phát hiện làn đường theo thời gian thực để điều
hướng tự động [2], hệ thống theo dõi làn đường cho ứng dụng xe thông minh [3], phát
hiện làn đường với xe di chuyển trong cảnh quan giao thông [4] hoặc các phương
pháp liên quan đến hướng nghiên cứu này là: [5], [6]. Mặc dù các phương pháp này
mang lại độ chính xác thuyết phục về phát hiện làn đường nhưng có một số lý do
khiến việc phát hiện không thành công. Lý do đầu tiên là chủ quan. Sau khi phát hiện
hai vạch kẻ đường chúng ta cần tính toán và xây dựng một đường ảo tại tâm của làn
xe, sau đó ước tính góc lệch giữa thân xe và đường ảo đó, tiếp đến điều chỉnh góc lái

1
của xe sao cho xe luôn ở vị trí chính giữa làn đường. Các tính toán của góc lái được
đề cập ở trên là vô cùng phức tạp và có thể gây ra nhiều sai số. Lý do thứ hai là khách
quan. Một số con đường mà vạch kẻ không có hoặc bị mờ. Thậm chí, khi các xe đang
chạy trên đường dốc, máy ảnh được gắn ở phía trước sẽ hướng lên trời và không theo
kịp làn đường ở phía trước. Điều này cũng có thể dẫn đến việc phát hiện sẽ không
chính xác.

Ngoài ra, phương pháp GPS cũng được áp dụng để điều hướng xe tự lái. Nếu
GPS được sử dụng độc lập, nó sẽ gây ra lỗi khá cao nên việc áp dụng phương pháp
này trên mô hình xe không người lái sẽ rất khó khăn và yêu cầu sự điều chỉnh sai số
[7], [8].

Nhận thấy với những hạn chế nêu trên, tác giả đề xuất một phương pháp sử
dụng mạng nơ-ron tích chập để điều hướng các phương tiện tự lái.

Trong nghiên cứu này, chúng tôi xây dựng một mô hình xe tự hành bằng cách
dự đoán góc lái từ hình ảnh thô được đào tạo qua mạng CNN. Dữ liệu được thu thập
từ một máy ảnh được gắn phía trước xe sau đó được tiền xử lý và đưa vào mạng CNN
để tính toán giá trị góc lái. Giá trị góc lái sau khi tính toán được so sánh với giá trị
góc lái mong muốn cho hình ảnh đó và trọng số của CNN được điều chỉnh để thu
được kết quả tốt hơn.

1.2. Mục tiêu đề tài

Mục tiêu của đề tài là huấn luyện một mô hình xe tự lái có thể tự động điều
hướng theo thời gian thực trong môi trường ngoài trời với nhiều điều kiện lái xe khác
nhau.

1.3. Giới hạn đề tài

Do hạn chế chính của phương pháp dựa trên thị giác là không bền vững với
những thay đổi về ánh sáng cũng như tác động của nhiễu từ môi trường bên ngoài.
Vì vậy đề tài “Điều hướng xe tự hành dung trí tuệ nhân tạo” có những giới hạn như:

2
chưa chạy được trong môi trường ban đêm, sương mù và quỹ đạo di chuyển còn khá
đơn giản.

1.4. Nội dung đề tài

Đề tài “Điều hướng xe tự hành dung trí tuệ nhân tạo” bao gồm các chương
sau:

Chương I: Tổng quan: Chương này trình bày tổng quan sơ bộ về các yêu cầu
của cuốn báo cáo như đặt vấn đề, mục tiêu, giới hạn và nội dung đề tài.

Chương II: Cơ sở lý thuyết: Chương này trình bày về giới thiệu xe tự hành,
các công nghệ khác nhau được sử dụng trong xe tự hành, tổng quan về trí tuệ nhân
tạo và lý thuyết và mạng nơ-ron tích chập (CNN).

Chương III: Thiết kế phần cứng và lựa chọn thiết bị: Chương này trình bày
về thiết kế phần cứng và lựa chọn thiết bị phần cứng cho mô hình xe tự hành.

Chương IV: Giải thuật điều khiển xe tự hành : Chương này sẽ trình bày giải
thuật, lưu đồ thu thập dữ liệu huấn luyện, điều hướng xe tự hành bằng mô hình đã
được huấn luyện, cấu trúc mạng và tối ưu hóa các thông số.

Chương V: Thực nghiệm: Chương này sẽ trình bày về việc thực hiện điều
hướng cho xe tự hành theo hai quỹ đạo hình bầu dục và hình số 8.

Chương VI: Kết quả: Kết luận chung về ưu điểm và hạn chế của đề tài, khẳng
định những kết quả đóng góp đạt được, đề xuất ý kiến để cải thiện khuyết điểm và
định hướng phát triển đề tài.

3
Chương 2: CƠ SỞ LÝ THUYẾT CỦA XE TỰ HÀNH
2.1. Giới thiệu về xe tự hành

Xe tự hành là phương tiện được thiết kế để di chuyển giữa các điểm đến mà
không cần người lái xe phải liên tục theo dõi đường. Công nghệ của xe tự hành phải
đạt được các mục tiêu sau:

- Xử lý một lượng dữ liệu rất lớn và sử dụng nó để đưa ra quyết định thông
minh.

- Có khả năng thích nghi với môi trường đã biết hoặc chưa biết.

Nhìn vào tương lai, chúng ta tin rằng vô lăng của xe sẽ biến mất hoàn toàn và
chiếc xe sẽ tự hành một cách tự động kết hợp với việc sử dụng một số hệ thống cảm
biến, radar và bản đồ GPS. Xe ô tô ngày càng thông minh hơn được minh họa trong
hình 2.1

Những chiếc xe tự hành sử dụng nhiều công nghệ tự động khác nhau để cung
cấp một phương thức di chuyển thông minh. Việc cung cấp loại phương thức này đòi
hỏi sự đồng bộ hài hòa giữa các cảm biến thu thập thông tin về môi trường xung
quanh và các thuật toán phức tạp xử lý dữ liệu điều khiển xe trong thời gian thực.

Những công nghệ này có thể nhận biết đối tượng, con người, ô tô, đánh dấu
đường, biển báo và đèn giao thông, tuân thủ các quy tắc của luật giao thông đường
bộ và cảnh báo nhiều mối nguy hiểm không thể đoán trước.

Hình 2.1: Sự phát triển của xe tự hành trong tương lai

4
2.2. Tổng quan về trí tuệ nhân tạo
2.2.1. Trí tuệ nhân tạo (Artificial Intelligence- AI)
Trí tuệ nhân tạo (AI) có sức mạnh phân chia nhiều ngành công nghiệp, và
không có gì ngạc nhiên khi nó là một trong những chủ đề đáng chú ý nhất trong hầu
hết các vấn đề về khoa học, kinh tế và xã hội hiện nay. Tuy nhiên, AI cũng rất hoài
nghi và các ứng dụng của nó: ngoài việc được áp dụng mạnh mẽ trong quy trình vận
hành cũng như sản xuất của các công ty tiên tiến, AI còn được cho là sẽ thay thế công
nhân của con người và phá hủy ngành công nghiệp như chúng ta biết

Trí tuệ nhân tạo được hiểu đơn giản là máy móc sử dụng các quá trình ra quyết
định hoặc tính toán bắt chước nhận thức của con người. Trong thực tế, điều này đòi
hỏi một loại máy có cấu hình phải hiểu thông tin về môi trường của nó, cho dù đó là
một không gian vật lý hay thông tin liên quan từ cơ sở dữ liệu. Sau đó, một hệ thống
thông minh nhân tạo có thể sử dụng dữ liệu này để tối ưu hóa các hành động giúp đạt
được mục tiêu cụ thể, như thực hiện lại một hoạt động đã được huấn luyện trước đó
hay chiến thắng một ván cờ.

Trí tuệ nhân tạo là một lĩnh vực rộng bao gồm một số trường con, kỹ thuật và
thuật toán. Lĩnh vực trí tuệ nhân tạo dựa trên mục tiêu tạo ra một cỗ máy thông minh
như con người. Đó thực sự là mục tiêu bao trùm ban đầu. Quay trở lại năm 1956, các
nhà nghiên cứu đã đến với nhau tại Dartmouth với mục tiêu rõ ràng là lập trình máy
tính để hành xử giống như con người. Đây là sự ra đời hiện đại của trí tuệ nhân tạo
như chúng ta biết ngày nay.

Để giải thích thêm về các mục tiêu của trí tuệ nhân tạo, các nhà nghiên cứu đã
mở rộng mục tiêu chính của họ sang sáu mục tiêu chính sau:

- Lý luận logic: Cho phép máy tính thực hiện các loại nhiệm vụ tinh thần phức
tạp mà con người có khả năng thực hiện. Ví dụ về giải quyết các vấn đề lý luận logic
này bao gồm chơi cờ và giải các bài toán đại số.

5
- Trình bày kiến thức: Cho phép máy tính mô tả các đối tượng, con người và
ngôn ngữ. Ví dụ về điều này bao gồm ngôn ngữ lập trình hướng đối tượng, chẳng hạn
như Smalltalk.
- Lập kế hoạch và điều hướng: Cho phép một robot đi từ điểm A đến điểm B.
Ví dụ, robot tự lái đầu tiên được chế tạo vào đầu năm 1960.
- Xử lý ngôn ngữ tự nhiên: Cho phép máy tính hiểu và xử lý ngôn ngữ. Một
trong những dự án đầu tiên liên quan đến vấn đề này, đã cố gắng dịch tiếng Anh sang
tiếng Nga và ngược lại.
- Nhận thức: Cho phép máy tính tương tác với thế giới thông qua thị giác, thính
giác, xúc giác và khứu giác.
Ngay cả với những mục tiêu chính này, điều này không phân loại các thuật
toán và kỹ thuật trí tuệ nhân tạo cụ thể. Đây chỉ là sáu trong số các thuật toán và kỹ
thuật chính trong trí tuệ nhân tạo:
- Machine Learning là lĩnh vực trí tuệ nhân tạo cung cấp cho máy tính khả
năng học mà không cần lập trình rõ ràng.
- Tìm kiếm và tối ưu hóa: Các thuật toán như Gradient Descent để lặp lại tìm
kiếm tối đa hoặc tối thiểu cục bộ.
- Sự thỏa mãn ràng buộc là quá trình tìm giải pháp cho một tập hợp các ràng
buộc áp đặt các điều kiện mà các biến phải thỏa mãn.
- Lý luận logic: Một ví dụ về lý luận logic trong trí tuệ nhân tạo là một hệ
thống máy tính chuyên gia mô phỏng khả năng ra quyết định của một chuyên gia về
con người.
- Lý luận xác suất là kết hợp lý thuyết xác suất để xử lý sự không chắc chắn
với năng lực logic suy diễn để khai thác cấu trúc của lập luận chính thức.
- Lý thuyết điều khiển là một cách tiếp cận chính thức để tìm các bộ điều khiển
có các thuộc tính có thể chứng minh được. Điều này thường liên quan đến một hệ
thống các phương trình vi phân, thường mô tả một hệ thống vật lý như robot hoặc
máy bay.

6
Hình 2.2: Mối quan hệ giữa AI, Machine Learning và Deep Learning
Trí tuệ nhân tạo, học máy và học sâu là mỗi tập hợp con của trường trước đó
như trong Hình 2.2. Trí tuệ nhân tạo là thể loại bao quát cho Machine Learning. Ngoài
ra, Machine Learning là danh mục bao quát cho Deep Learning.

2.2.2. Machine Learning


Machine Learning là một tập hợp con của trí tuệ nhân tạo. Trí tuệ nhân tạo
nhằm mục đích làm cho máy tính trở nên thông minh, khái niệm Machine Learning
được hiểu rằng chúng ta nên cung cấp dữ liệu cho máy tính và để máy tính tự học. Ý
tưởng cho rằng máy tính có thể tự học được đã được Arthur Samuel đưa ra vào năm
1959.

Một bước đột phá lớn đã dẫn đến sự xuất hiện của Machine Learning với tư
cách là động lực thúc đẩy trí tuệ nhân tạo là phát minh của internet. Internet đi kèm
với một lượng lớn thông tin về kỹ thuật số đang được tạo ra, lưu trữ và cung cấp để
phân tích. Đây là khi bạn bắt đầu nghe về dữ liệu lớn (big data). Hơn nữa, các thuật
toán Machine Learning đã có hiệu quả nhất trong việc tận dụng tất cả dữ liệu lớn này.

Mạng nơ-ron là một phần quan trọng và thành công nhất của một số thuật toán
Machine Learning. Sự phát triển của mạng lưới thần kinh là chìa khóa để dạy máy
tính suy nghĩ và hiểu thế giới theo cách mà con người làm. Về cơ bản, một mạng lưới
thần kinh mô phỏng bộ não của con người. Các tế bào não, hay tế bào thần kinh, được
kết nối thông qua các khớp thần kinh. Điều này được trừu tượng hóa như một biểu

7
đồ của các nút (nơ ron) được kết nối bởi các cạnh có trọng số (khớp thần kinh). Cấu
trúc của một tế bào thần kinh sinh học được minh họa trong hình 2.3.

Bộ não của chúng ta sử dụng các mạng nơ-ron liên kết cực lớn để xử lý thông
tin và mô hình hóa thế giới chúng ta đang sống. Các đầu vào được truyền qua mạng
lưới các nơ-ron này tạo ra đầu ra. Trong trường hợp não sinh học, điều này có thể dẫn
đến việc co thắt cơ bắp hoặc báo hiệu tuyến mồ hôi của bạn tiết ra mồ hôi. Một nơ-
ron thu thập các đầu vào bằng cách sử dụng một cấu trúc gọi là đuôi gai, nơ-ron tổng
hợp một cách hiệu quả tất cả các đầu vào này từ các sợi nhánh và nếu giá trị kết quả
lớn hơn ngưỡng loại bỏ của nó, thì nơ-ron sẽ xuất ra. Khi tế bào thần kinh xuất ra, nó
sẽ gửi một xung điện qua sợi trục của tế bào thần kinh đến các nút của nó. Những nút
này sau đó có thể được nối mạng với hàng ngàn tế bào thần kinh khác thông qua các
kết nối được gọi là khớp thần kinh. Có khoảng một trăm tỷ (100.000.000) tế bào thần
kinh bên trong não người, mỗi bộ có khoảng một nghìn kết nối khớp thần kinh. Đó là
cách hiệu quả mà các khớp thần kinh này có dây mang lại cho bộ não của chúng ta
khả năng xử lý thông tin theo cách chúng làm.

Hình 2.3: Cấu trúc của một tế bào thần kinh sinh học

8
Các mô hình nơ-ron ở các mô hình đơn giản hóa của chúng cốt lỗi dựa trên
các nơ-ron sinh học. Điều này cho phép họ nắm bắt được bản chất của một tế bào
thần kinh sinh học hoạt động như thế nào. Chúng ta thường gọi những tế bào thần
kinh nhân tạo này là “nhận thức” (perceptions).

Như được hiển thị trong Hình 2.4, một tri giác (perceptron) điển hình sẽ có
nhiều đầu vào và các đầu vào này đều có trọng số riêng. Các trọng số perceptron có
thể khuếch đại hoặc khử tín hiệu đầu vào ban đầu. Ví dụ: nếu đầu vào là 1 và trọng
số của đầu vào là 0,2 thì đầu vào sẽ giảm xuống 0,2. Các tín hiệu có trọng số này sau
đó được thêm vào với nhau và được chuyển vào chức năng kích hoạt. Chức năng kích
hoạt được sử dụng để chuyển đổi đầu vào thành đầu ra hữu ích hơn. Có nhiều loại
chức năng kích hoạt khác nhau nhưng một trong những cách đơn giản nhất sẽ là chức
năng bước. Hàm bước thường sẽ xuất 1 nếu đầu vào cao hơn ngưỡng nhất định, nếu
không, đầu ra của nó sẽ là 0.

Chi tiết về một số thành phần này:

- Tế bào thần kinh: một mạng lưới thần kinh là một biểu đồ của các tế bào thần
kinh. Tương tự, một mạng lưới thần kinh có đầu vào và đầu ra. Các đầu vào và đầu
ra của một mạng nơ ron được thể hiện bằng các nơ ron đầu vào và các nơ ron đầu ra.
Tế bào thần kinh đầu vào không có tế bào thần kinh tiền thân nhưng có đầu ra. Tương
tự, một nơ-ron đầu ra không có nơ-ron kế tiếp nhưng không có đầu vào.

- Kết nối và trọng số: Một mạng lưới thần kinh bao gồm các kết nối, mỗi kết
nối chuyển đầu ra của một nơron sang đầu vào của một nơron khác. Mỗi kết nối được
gán một trọng số.

- Chức năng lan truyền: Chức năng lan truyền tính toán đầu vào của một nơron
từ đầu ra của các nơ ron tiền thân. Chức năng nhân giống được tận dụng trong giai
đoạn nhân giống về phía trước của đào tạo.

9
Hình 2.4: Cấu trúc tế bào thần kinh nhân tạo
- Quy tắc học tập: Quy tắc học tập là một chức năng sửa đổi trọng số của các
kết nối. Điều này phục vụ để tạo ra một đầu ra phù hợp cho một đầu vào nhất định
cho mạng thần kinh. Quy tắc học tập được tận dụng trong giai đoạn lan truyền ngược.

- Các loại hình học tập: Có nhiều thuật toán khác nhau có thể được sử dụng khi
đào tạo các mạng lưới thần kinh nhân tạo như học tập có giám sát, học tập không
giám sát, học tập tăng cường, mỗi loại có những ưu điểm và nhược điểm riêng. Quá
trình học tập trong các mạng thần kinh nhân tạo là kết quả của việc thay đổi trọng số
của mạng, với một số loại thuật toán học tập. Mục tiêu là tìm ra một tập hợp các ma
trận trọng số mà khi áp dụng vào mạng nên ánh xạ bất kỳ đầu vào nào thành một đầu
ra chính xác.

• Học có giám sát: Học có giám sát: Là quá trình học có sự tham gia giám sát
của một “thầy giáo”. Cũng giống như việc ta dạy một em nhỏ các chữ cái. Ta đưa ra
một chữ “a” và bảo với em đó rằng đây là chữ “a”. Việc này được thực hiện trên tất
cả các mẫu chữ cái. Sau đó khi kiểm tra ta sẽ đưa ra một chữ cái bất kì (có thể viết
hơi khác đi) và hỏi em đó đây là chữ gì?

10
Như vậy với học có giám sát, số lớp cần phân loại đã được biết trước. Nhiệm
vụ của thuật toán là phải xác định được một cách thức phân lớp sao cho với mỗi
vector đầu vào sẽ được phân loại chính xác vào lớp của nó. (Hình 2.5)

• Học tập không giám sát: Trong mô hình này, mạng lưới thần kinh chỉ được
cung cấp một bộ đầu vào và mạng lưới thần kinh có trách nhiệm tìm một số kiểu mẫu
trong các đầu vào được cung cấp mà không cần bất kỳ sự trợ giúp bên ngoài nào.
Kiểu mô hình học tập này thường được sử dụng trong khai thác dữ liệu và cũng được
sử dụng bởi nhiều thuật toán đề xuất do khả năng dự đoán sở thích của người dùng
dựa trên sở thích của những người dùng tương tự khác mà họ đã nhóm lại với nhau.
(Hình 2.6)

• Học tăng cường: Học tăng cường tương tự như học có giám sát ở chỗ một số
phản hồi được đưa ra, tuy nhiên thay vì cung cấp đầu ra mục tiêu, phần thưởng được
đưa ra dựa trên mức độ hệ thống hoạt động tốt. Mục đích của học tập củng cố là để
tối đa hóa phần thưởng mà hệ thống nhận được thông qua thử và sai. Mô hình này
liên quan mạnh mẽ đến cách học tập hoạt động trong tự nhiên, ví dụ, một con vật có
thể nhớ những hành động mà nó đã thực hiện trước đó giúp nó tìm thức ăn (phần
thưởng). (Hình 2.7)

Hình 2.5: Học có giám sát

11
Hình 2.6: Học không giám sát

Hình 2.7: Học tăng cường


2.2.3. Deep Learning
Deep Learning là ưu thế của những gì máy móc có thể làm, các nhà phát triển
và lãnh đạo doanh nghiệp hoàn toàn cần phải hiểu nó là gì và hoạt động như thế nào.
Loại thuật toán độc đáo này đã vượt xa mọi tiêu chuẩn trước đây để phân loại hình
ảnh, văn bản và giọng nói.

Nó cũng cung cấp năng lượng cho một số ứng dụng thú vị nhất trên thế giới,
như xe tự hành và dịch thuật thời gian thực. Chắc chắn có rất nhiều sự ngạc nhiên
xung quanh việc AlphaGo dựa trên Deep Learning của Google để đánh bại người
chơi cờ vây giỏi nhất thế giới, nhưng các ứng dụng kinh doanh cho công nghệ này
ngay lập tức và có khả năng tác động mạnh hơn, ví dụ như dự đoán giá cổ phiếu...

12
Deep learning là một tập hợp con cụ thể của Machine Learning, là một tập hợp
con cụ thể của trí tuệ nhân tạo. Đối với định nghĩa cá nhân:

• Trí tuệ nhân tạo là nhiệm vụ rộng lớn của việc tạo ra những cỗ máy có thể
suy nghĩ thông minh.
• Machine Learning là một cách để làm điều đó, bằng cách sử dụng các thuật
toán để thu thập thông tin chuyên sâu về dữ liệu.
• Deep Learning là một cách để làm điều đó, bằng cách sử dụng một thuật toán
cụ thể được gọi là mạng thần kinh.

Deep Learning chỉ là một loại thuật toán dường như hoạt động thực sự tốt để
dự đoán mọi thứ. Deep Learning và Neural Nets, đối với hầu hết các mục đích, đồng
nghĩa một cách hiệu quả. Mạng lưới thần kinh được lấy cảm hứng từ cấu trúc của vỏ
não. Ở cấp độ cơ bản là nhận thức, biểu diễn toán học của một tế bào thần kinh sinh
học. Giống như trong vỏ não, có thể có một vài lớp tri giác liên kết với nhau.

Các giá trị đầu vào, hay nói cách khác là dữ liệu cơ bản của chúng ta, được
truyền qua mạng này của các lớp ẩn cho đến khi chúng hội tụ đến lớp đầu ra. Lớp đầu
ra là dự đoán của chúng ta: nó có thể là một nút nếu mô hình chỉ xuất ra một giá trị
hoặc một vài nút nếu nó có vấn đề phân loại đa lớp. Các lớp ẩn của mạng thần kinh
thực hiện các sửa đổi trên dữ liệu để cuối cùng cảm nhận được mối quan hệ của nó
với biến mục tiêu là gì. Mỗi nút có trọng số và nó nhân giá trị đầu vào của nó với
trọng số đó. Làm điều đó qua một vài lớp khác nhau và mạng nơ-ron có thể điều khiển
dữ liệu thành một thứ gì đó có ý nghĩa.

Deep Learning chỉ quan trọng vì một lý do duy nhất: chúng có thể đạt được độ
chính xác có ý nghĩa, hữu ích cho các nhiệm vụ quan trọng. Machine Learning đã
được sử dụng để phân loại trên hình ảnh và văn bản trong nhiều thập kỷ nhưng nó đã
phải vật lộn để vượt qua ngưỡng nhất định, có một độ chính xác cơ bản mà các thuật
toán cần phải hoạt động. Deep Learning cuối cùng đã cho phép vượt qua ranh giới đó
ở những nơi mà trước đây chúng không thể đạt được.

13
Hình 2.8: So sánh hiệu suất giữa DL với các thuật toán học theo thứ tự
Tầm nhìn máy tính là một ví dụ tuyệt vời về một nhiệm vụ mà Deep Learning
đã biến thành một cái gì đó thực tế cho các ứng dụng. Hình 2.8 cho thấy rằng sử dụng
Deep Learning để phân loại và gắn nhãn hình ảnh không chỉ tốt hơn bất kỳ thuật toán
truyền thống nào khác: nó bắt đầu tốt hơn hành động con người.

 Deep Learning Models:


Convolutional Neural Network:
Convolutional Neural Network viết tắt của từ CNN, là một loại mạng thần kinh
nhân tạo thuộc kiểu feed-forward, trong đó mô hình kết nối giữa các nơ-ron của nó
được lấy cảm hứng từ hệ thống vỏ não thị giác như trong Hình 2.9
Recurrent Neural Network:
- Hình 2.10 cho thấy một mô hình trình tự thường được thiết kế để chuyển đổi
một chuỗi đầu vào thành một chuỗi đầu ra trong một miền khác. Recurrent Neural
Network, viết tắt của từ RNN, phù hợp cho mục đích này và đã cho thấy sự cải thiện
to lớn trong các vấn đề như nhận dạng chữ viết, nhận dạng giọng nói và dịch máy.
- Một mô hình Recurrent Neural Network được sinh ra với khả năng xử lý dữ
liệu dài một cách tuần tự và để giải quyết các nhiệm vụ với bối cảnh trải rộng theo
thời gian. Mô hình xử lý một phần tử trong chuỗi ở mỗi bước một lần. Sau khi tính
toán, trạng thái đơn vị mới được cập nhật được chuyển sang bước tiếp theo để tạo
thuận lợi cho việc tính toán của phần tử tiếp theo. Hãy tưởng tượng trường hợp khi
một mô hình RNN đọc tất cả các bài viết Wikipedia, theo từng ký tự, và sau đó nó có
thể dự đoán các từ sau được đưa ra theo ngữ cảnh.

14
Hình 2.9: Tổ chức của hệ thống vỏ não thị giác

Hình 2.10: Mô hình RNN


Autoencoders:
Khác với các mô hình trước đó, autoencoders, được hiển thị trong Hình 2.11,
dành cho việc học tập không giám sát. Nó được thiết kế để tìm hiểu và biểu diễn chiều
thấp của tập dữ liệu chiều cao, tương tự như Principal Components Analysis (PCA).
Mô hình bộ mã hóa tự động cố gắng tìm hiểu hàm xấp xỉ f (x) xf (x) ≈ x để tái tạo dữ
liệu đầu vào. Tuy nhiên, nó bị hạn chế bởi một lớp nút cổ chai ở giữa với số lượng
nút rất nhỏ. Với khả năng hạn chế, mô hình buộc phải hình thành một mã hóa dữ liệu
rất hiệu quả, về cơ bản là mã chiều thấp mà chúng ta đã học.

15
Hình 2.11: Kiến trúc mạng autoencoders
2.3. Convolutional Neural Network (CNN)
Mạng nơron thần kinh (CNN) là mô hình học tập sâu hàng đầu cho thị giác
máy tính. Thị giác máy đã trở nên tốt đến nỗi hiện nay nó đang đánh bại cả con người
trong những nhiệm vụ khó nhất và CNN đóng một vai trò quan trọng trong câu chuyện
thành công này. CNN là một trong những thuật toán Deep Learning cho kết quả tốt
nhất hiện nay trong hầu hết các bài toán về thị giác máy như phân loại, nhận dạng…
Về cơ bản CNN là một kiểu mạng ANN truyền thẳng, trong đó kiến trúc chính gồm
nhiều thành phần được ghép nối với nhau theo cấu trúc nhiều tầng đó là

 Convolution (tích chập)

 Pooling (gộp chung)

 ReLU (tinh chỉnh các đơn vị tuyến tính)

 Fully connected (liên kết đầy đủ)

Trước khi đi vào các thành phần cơ bản của CNN, ta xem xét một ví dụ về
cách thức xử lý thông tin đầu vào của một ANN truyền thẳng để từ đó rút ra tác dụng
của các thành phần có trong mạng CNN.

Hình 2.12 mô tả một ví dụ với dữ liệu đầu vào là một bức ảnh có kích thước
200x200 được xử lý bằng ANN với kết nối đầy đủ giữa hai tầng liên tiếp (full
connected). Như vậy giả sử số neural tầng ẩn là 40000 thì tổng số tham số (mà cụ thể
hơn ở đây là các trọng số liên kết W giữa các neural tầng nhập với tầng ẩn) cần phải

16
ước lượng lên đến 1.6 tỉ. Điều này gây khó khăn cho việc huấn luyện ANN trên hai
yếu tố: thứ nhất là chi phí để xây dựng dữ liệu huấn luyện lớn và thứ hai thời gian
huấn luyện lâu.

Từ thực tế đặt ra ở trên người ta thấy rằng để giảm số lượng tham số cần giảm
số lượng kết nối giữa các lớp. Từ đây thành phần convolution được áp dụng – ý tưởng
chính là mỗi neural chỉ cần kết nối tới một vùng cục bộ của ảnh thay vì trên toàn bộ
ảnh (hình 2.13).

Hình 2.12: Ví dụ cách thức xử lý của ANN với cấu trúc kết nối đầy đủ

Hình 2.13: Ý tưởng thiết kế CNN

17
Hình 2.14: Minh họa tích chập
2.3.1.1. Lớp tích chập (Convolution layer)
Tầng Convolution (Conv) là tầng quan trọng nhất trong cấu trúc của CNN.
Conv dựa trên lý thuyết xử lý tín hiệu số, việc lấy tích chập sẽ giúp trích xuất được
những thông tin quan trọng từ dữ liệu. Nhờ vào nguyên lý biến đổi thông tin, các nhà
khoa học đã áp dụng kĩ thuật này vào xử lý ảnh và video số.

Để dễ hình dung, ta có thể xem tích chập như một cửa sổ trượt (Sliding
Window) áp đặt lên một ma trận. Ta có thể theo dõi cơ chế của tích chập qua hình
minh họa 2.14. Ma trận bên trái à một bức ảnh trắng đen. Mỗi giá trị của ma trận
tương đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh xám
thì giá trị biến thiên từ 0 đến 255)

Sliding window còn có tên gọi là kernel, feature hoặc filter. Ở đây, ta dùng
một ma trận với bộ lọc có kích thước 3x3 nhân từng thành phần tương ứng với ma
trận ảnh bên trái. Giá trị đầu ra là tổng của các tích này cộng lại. Kết quả của phép
tích chập cũng là một ma trận (Convoled Feature) sinh ra từ việc trượt ma trận bộ lọc
và thực hiện tích chập cùng một lúc lên toàn bộ ma trận ảnh bên trái.

Khi được áp dụng phép tính Conv vào xử lý ảnh người ta thấy rằng Conv sẽ
giúp biến đổi các thông tin đầu vào thành các yếu tố đặc trưng (nó tương ứng như bộ
phát hiện – detector các đặc trưng về cạnh, hướng, đốm màu…). Hình 2.15 là minh
họa việc áp dụng phép tính Conv trên ảnh trong đó (a) là kết quả biến đổi hình ảnh
khi thực hiện phép Conv khác nhau cho ra kết quả khác nhau, (b) là trực quan hóa
các kernel dùng để detector các đặc trưng về cạnh, hướng, đốm màu.

18
Hình 2.15: Ví dụ ứng dụng tích chập
Để dễ hình dung, ta xét bài toán thực hiện tính giá trị đầu ra của một ảnh có kích
thước 𝑊1 *𝐻1 * 𝐷1 . Khi đó một lớp tích chập sẽ có một cửa sổ trượt – cửa sổ này thực
chất cũng là một ma trận có kích thước F*F thực hiện trên mỗi chiều của ảnh đầu vào
(ta sử dụng K bộ lọc). Trong quá trình xử lý sẽ dịch chuyển các bộ lọc trên toàn bộ
bức ảnh theo S (stride) bước (tính bằng pixel).

Ta gọi mỗi vùng mà bộ lọc áp đặt lên ma trận đầu vào là receptive field. Trong
một số trường hợp để cân bằng giữa số bước dịch chuyển và kích thước của ảnh người
ta có thể chèn thêm P pixel với một giá trị màu cho trước (thường là 0) xung quanh
viền của ảnh khi đó ta được ma trận đầu ra (feature map) là 𝑊2 * 𝐻2 *𝐷2 trong đó:

𝑊2 =(𝑊1 – F+2P)/S+1 (1)

H2 =( H1 – F+2P)/S+1 (2)

D2 =K (3)

Giá trị tại các ô trong ma trận của bộ lọc có kích thước (F*F*𝐷1 ) +1 (cộng 1 ở
đây là tham số ngưỡng của filter) sẽ tương ứng là trọng số, các giá trị này của mỗi bộ
lọc không đổi trong quá trình dịch chuyển trên toàn bộ bức ảnh đầu vào.

Đây cũng là tính chất quan trọng (dùng chung bộ trọng số – shared weights) làm
giảm thêm số tham số cần học trong quá trình huấn luyện mạng. Từ đó tổng số tham

19
Hình 2.16: Các thành phần của lớp tích chập.

số cần học cho quá trình sử dụng tích chập là (F*F*𝐷1 )*K +K (ở đây cộng thêm K
tham số ngưỡng của K filter).

Trong hình 2.16 là ví dụ cụ thể, trong đó đầu vào là ảnh có kích thước (32*32*3)
ở đây 𝑊1 = 𝐻1 =32 và 𝐷1 =3 là chỉ giá trị của kênh màu RGB. Giả sử ta tiến hành sử
dụng 6 bộ lọc (K=6) trong đó mỗi bộ lọc có kích thước (5*5*3) F=5 với bước dịch
chuyển S=1 và P=0. Tương ứng với mỗi bộ lọc sẽ cho một feature map khác nhau ở
kết quả đầu ra trong đó: kích thước feature map là 𝑊2 = 𝐻2 = (𝑊1 – F)/1 +1 =28. Mỗi
neural trong một feature map sẽ có số tham số là (F*F*𝐷1 ) = 5*5*3 +1. Nếu không
sử dụng tính chất shared weights thì số tham số cần học trong tất cả feature map trong
cả 6 bộ lọc là: (28*28*6) * (5*5*3 +1) mặc dù đã nhỏ hơn nhiều so với việc không
sử dụng tích chập nhưng con số vẫn lớn hơn so với (F*F*𝐷1 )K + K = 5*5*3*6 +6
tham số khi dùng chung bộ trọng số.

Như vậy sử dụng tích chập có những ưu điểm sau:

 Giảm số lượng tham số: Ở ANN truyền thống, các neural ở lớp trước sẽ kết nối
tới tất cả các neural ở lớp sau (full connected) gây nên tình trạng quá nhiều tham số cần
học. Đây là nguyên nhân chính gây nên tình trạng overfiting cũng như làm tăng thời
gian huấn luyện. Với việc sử dụng tích chập trong đó cho phép chia sẻ trọng số

20
Hình 2.17: Ví dụ về lớp Convolution trong ảnh.
liên kết (shared weights), cũng như thay vì sử dụng full connected sẽ sử dụng local
receptive fields giúp giảm tham số.
 Các tham số trong quá trình sử dụng tích chập hay giá trị của các bộ lọc –
kernel sẽ được học trong quá trình huấn luyện. Như giới thiệu ở phần trên các thông
tin này biểu thị thông tin giúp rút trích ra được các đặc trưng như góc, cạnh, đóm màu
trong ảnh … như vậy việc sử dụng tích chập sẽ giúp xây dựng mô hình tự học ra đặc
trưng.

2.3.1.2. Lớp tổng hợp rút gọn (Pooling layer)

Tầng pooling (hay còn gọi subsampling hoặc downsample) là một trong những
thành phần tính toán chính trong cấu trúc CNN. Xét về mặt toán học pooling thực chất
là quá trình tính toán trên ma trận trong đó mục tiêu sau khi tính toán là giảm kích
thước ma trận nhưng vẫn làm nổi bật lên được đặc trưng có trong ma trận đầu vào.
Trong CNN toán tử pooling được thực hiện độc lập trên mỗi kênh màu của ma trận ảnh
đầu vào.
Có nhiều toán tử pooling như Sum-Pooling, Max Pooling, L2 Pooling nhưng Max
Pooling thường được sử dụng. Về mặt ý nghĩa thì Max Pooling xác định vị trí cho tín

21
Hình 2.18: Cách tính tham số của lớp pooling
hiệu mạnh nhất khi áp dụng một loại bộ lọc. Điều này cũng tương tự như là một bộ
lọc phát hiện ví trị đối tượng bằng bộ lọc trong bài toán phát hiện đối tượng trong
ảnh.

Hình 2.18 là ví dụ về sử dụng toán tử pooling. Trong đó bên trái là cách thức
tầng pooling xử lý đối với một đầu vào là kết quả của nhiều bộ lọc (k=64), kích thước
của đầu vào là [224*224*64] được thực hiện với các thông số F=2 và S= 2 thì đầu ra
có kích thước [112*112*64]. Hình bên phải mô tả chi tiết cách thức hoạt động của
max-pooling trong đó F=2 và S=2 kết quả đầu ra ma trận tương ứng.

2.3.1.3. Lớp biến đổi tuyến tính (ReLU layer)


Về cơ bản, tích chập là một phép biển đổi tuyến tính. Nếu tất cả các nơron
được tổng hợp bởi các phép biến đổi tuyến tính thì một mạng neural đều có thể đưa
về dưới dạng một hàm tuyến tính. Khi đó mạng ANN sẽ đưa các bài toán về logistic
regression. Do đó tại mỗi neural cần có một hàm truyền dưới dạng phi tuyến.

Có nhiều dạng hàm phi tuyến được sử dụng trong quá trình này như đã giới
thiệu trong phần neural căn bản. Tuy nhiên, các nghiên cứu gần đây chứng minh
được việc sử dụng hàm ReLu (Rectified Linear Unit) cho kết quả tốt hơn ở các khía
cạnh: (Hình 2.19)

22
Hình 2.19: Quá trình tinh chỉnh tuyến tính
 Tính toán đơn giản
 Tạo ra tính thưa (sparsity) ở các neural ẩn. Ví dụ như sau bước khởi tạo ngẫu
nhiên các trọng số, khoảng 50% các neural ẩn được kích hoạt (có giá trị lớn hơn 0).
 Quá trình huấn luyện nhanh hơn ngay cả khi không phải trải qua bước tiền
huấn luyện.
 Như vậy tầng ReLu cơ bản chỉ đơn giản là áp dụng hàm truyền ReLu.

2.3.1.4. Lớp kết nối đầy đủ (Fully connected layers)


Fully-connected là cách kết nối các nơron ở hai tầng với nhau trong đó tầng sau kết
nối đẩy đủ với các nơron ở tầng trước nó. Đây cũng là dạng kết nối thường thấy ở
ANN, trong CNN tầng này thường được sử dụng ở các tầng phía cuối của kiến trúc
mạng. (Hình 2.20)

a) b)

Hình 2.20: Flatten dữ liệu nhận được từ một lớp convolution.


a) là ma trận 3x3. b) là mảng sau khi áp dụng flatten

23
Hình 2.21: Kiến trúc mạng CNN cơ bản
2.3.1.5. Kiến trúc mạng CNN
Mạng CNN có kiến trúc được hình thành từ các thành phần cơ bản bao gồm
Convolution (CONV), Pooling (POOL), ReLU, Fully-connected (FC) về mặt xây
dựng kiến trúc tổng quát CNN được mô tả như hình 2.21.

Ta có thể sử dụng công thức cơ bản sau để xây dựng một mạng CNN cơ bản.

[[CONV > RELU] *N > POOL?] *M > [FC > RELU] *K > FC

Trong đó:

 [CONV > RELU] *N: Sau lớp convolution là lớp ReLu, kiến trúc hai tầng
này có thể lặp lại N lần.
 POOLING: Lớp pooling có thể có hoặc không.
 [[CONV > RELU] *N > POOL?] *M: sau kiến trúc [CONV > RELU] *N
là lớp pooling, kiến trúc này có thể lặp lại M lần.
 [FC > RELU] *K: Trong CNN có thể lặp K lần cấu trúc kiểu sau tầng FC là
tầng RELU nhưng trước nó phải có tầng [CONV > RELU].

Tổng quan lại CNN là thuật toán có kiến trúc bao gồm nhiều tầng có chức năng
khác nhau trong đó tầng chính hoạt động thông qua cơ chế tích chập. Trong suốt quá
trình huấn luyện, CNN sẽ tự động học được các thông số cho các bộ lọc – tương ứng
là các đặc trưng theo từng cấp độ khác nhau. Ví dụ trong bài toán phân lớp ảnh, CNN
sẽ cố gắng tìm ra các thông số tối ưu cho các bộ lọc tương ứng theo thứ tự pixel >

24
edges > shapes > facial > high-level features. Đây chính là lý do mà CNN có được
kết quả vượt trội so với các thuật toán trước đây.

2.4. Bộ điều khiển PID


Một bộ điều khiển vi tích phân tỉ lệ (bộ điều khiển PID- Proportional Integral
Derivative) là một cơ chế phản hồi vòng điều khiển (bộ điều khiển) tổng quát được
sử dụng rộng rãi trong các hệ thống điều khiển công nghiệp – bộ điều khiển PID là
bộ điều khiển được sử dụng nhiều nhất trong các bộ điều khiển phản hồi. Bộ điều
khiển PID sẽ tính toán giá trị "sai số" là hiệu số giữa giá trị đo thông số biến đổi và giá
trị đặt mong muốn. Bộ điều khiển sẽ thực hiện giảm tối đa sai số bằng cách điều chỉnh
giá trị điều khiển đầu vào. Để đạt được kết quả tốt nhất, các thông số PID sử dụng
trong tính toán phải điều chỉnh theo tính chất của hệ thống như được minh họa trong
hình 2.22

Giải thuật tính toán bộ điều khiển PID bao gồm 3 thông số riêng biệt, do đó đôi
khi nó còn được gọi là điều khiển ba khâu: các giá trị tỉ lệ, tích phân và đạo hàm, viết
tắt là P, I, và D. Giá trị tỉ lệ xác định tác động của sai số hiện tại, giá trị tích phân xác
định tác động của tổng các sai số quá khứ, và giá trị vi phân xác định tác động của
tốc độ biến đổi sai số. Tổng chập của ba tác động này dùng để điều chỉnh quá trình
thông qua một phần tử điều khiển như vị trí của van điều khiển hay bộ nguồn của
phần tử gia nhiệt. Nhờ vậy, những giá trị này có thể làm sáng tỏ về quan hệ thời
gian: P phụ thuộc vào sai số hiện tại, I phụ thuộc vào tích lũy các sai số quá khứ, và D
dự đoán các sai số tương lai, dựa vào tốc độ thay đổi hiện tại [9]

Một số ứng dụng có thể chỉ yêu cầu một hoặc hai thông số tùy thuộc vào hệ
thống và sẽ được gọi là P, PI hoặc PD

Độ lợi tỉ lệ, Kp: khâu tỷ lệ, giá trị càng lớn thì đáp ứng càng nhanh do đó sai số
càng lớn, bù khâu tỉ lệ càng lớn. Một giá trị độ lợi tỉ lệ quá lớn sẽ dẫn đến quá trình
mất ổn định và dao động.

Độ lợi tích phân, Ki: giá trị càng lớn kéo theo sai số ổn định bị khử càng nhanh.
Đổi lại là độ vọt lố càng lớn: bất kỳ sai số âm nào được tích phân trong suốt đáp ứng

25
quá độ phải được triệt tiêu tích phân bằng sai số dương trước khi tiến tới trạng thái
ổn định

Độ lợi vi phân, Kd: giá trị càng lớn càng giảm độ vọt lố, nhưng lại làm chậm
đáp ứng quá độ và có thể dẫn đến mất ổn định do khuếch đại nhiễu tín hiệu trong
phép vi phân sai số.

Hình 2.23 cho thấy bộ điều khiển PID để duy trì tốc độ được sử dụng trong xe
tự hành. Bộ điều khiển PID tính toán sai số giữa giá trị vận tốc thực tế đo được và giá
trị mong muốn điều khiển từ Raspberry Pi 3. Bộ điều khiển sẽ giảm thiểu sai số bằng
cách điều chỉnh giá trị điều khiển đầu vào, được gửi đến ESC cũng như của xe động
cơ.

Hình 2.22: Bộ điều khiển PID

Hình 2.23: Bộ điều khiển PID cho tốc độ của xe

26
Chương 3: THIẾT KẾ VÀ LỰA CHỌN THIẾT BỊ
Trong phần này, tác giả cung cấp cái nhìn tổng quan về nền tảng phần cứng,
có liên quan đến máy tính nhúng Raspberry Pi 3 (SBC), máy ảnh Raspberry Pi, bộ
điều khiển PCA9685 Adafruit PWM / Servo, bo mạch Arduino Uno R3, pin Li-Po ,
Encoder và một chiếc xe RC quy mô 1/10. Sơ đồ khối hệ thống được thể hiện trong
hình 3.1.

3.1. Các thành phần phần cứng

3.1.1. Xe điều khiển Trophy Truck


Trophy Truck là một chiếc xe điều khiển từ xa với tốc độ cao như trong Hình
3.2. Chiếc xe này hoạt động trên tín hiệu tần số vô tuyến 2,4 GHz cung cấp phạm vi
hoạt động lên đến 150 mét. Nó có đầy đủ chức năng với tay lái và có thể điều khiển
tiến hoặc lùi. Chi tiết được đưa ra trong Hình 3.3.

Hình 3.1: Sơ đồ khối của mô hình xe tự hành

Hình 3.2: Xe điều khiển Trophy Truck

27
Hình 3.3: Chi tiết bên trong xe điều khiển

3.1.2. Động cơ Brushed Motor RC-540PH


 Type: Micro Motor  Voltage (V): 7.2V
 Torque: 228g.cm  Motor size: 35.8*50mm
 Construction: Permanent Magnet  No load speed: 20000rpm
 Commutation: Brush  No load current: 1.2A
 Protect Feature: Totally Enclosed  Stall torque: 1698g.cm
 Speed (RPM): 17317rpm  Brush: Carbon brush
 Continuous Current (A): 7.7A  Shaft diameter: 3mm
 Output Power: 40.5W

Hình 3.4: Động cơ Brushed Motor RC-540PH

28
3.1.3. Động cơ RC Servo TowerPro MG946R

Đề tài sẽ chọn động cơ RC Servo TowerPro MG946R để điều khiển góc lái
cho xe tự hành

RC Servo TowerPro MG946R như hình 3.5:

Hình 3.5: RC Servo TowerPro MG946R.


Bảng 3.1: Thông số hoạt động của RC Servo TowerPro MG946R.
Weight (Trọng lượng) 55gram
Dimension (Kích thước) 40.7*19.7*42.9 mm
Stall torque 10.5kg/cm(4.8V) – 13kg/cm(6V)
Operating speed (Tốc độ hoạt động) 0.20sec/60degree(4.8V) – 0.17s/60d(6V)
Operating voltage (Điện áp hoạt động) 4.8V – 7.2V
Temperature range (Khoảng nhiệt độ) 0oC – 55oC
3.1.4. Waterproof Brushed ESC Controller WP-1040
ESC là mạch điện tử điều khiển và điều chỉnh vận tốc của động cơ điện. Nó
cũng có thể điều khiển đảo chiều động cơ và phanh động.

Điều khiển tốc độ điện tử tuân theo tín hiệu tham chiếu tốc độ (bắt nguồn từ
ga, cần điều khiển hoặc đầu vào thủ công khác) và thay đổi tốc độ chuyển đổi của
mạng lưới transistor hiệu ứng trường (FET). Bằng cách điều chỉnh chu kỳ nhiệm vụ
hoặc thay đổi tần số, tốc độ của động cơ sẽ được thay đổi. Hình 3.6 cho thấy ESC
WP-1040, chống thấm nước và chống bụi, thích hợp cho mọi điều kiện thời tiết.

29
Hình 3.6: Waterproof Brushed ESC Controller WP-1040
3.1.5. Raspberry Pi 3 Model B
Raspberry Pi là một máy vi tính rất nhỏ gọn, kích thước hai cạnh chỉ cỡ một
cái thẻ ATM. Người ta đã tích hợp mọi thứ cần thiết trong đó để bạn sử dụng như
một cái máy vi tính. Trên bo mạch của Pi có CPU, GPU, RAM, khe cắm thẻ microSD,
Wi-Fi, Bluetooth và 4 cổng USB 2.0. Khi mua Pi về chỉ việc cài hệ điều hành (thực
ra là copy/paste cái thư mục vô thẻ nhớ), gắn chuột, bàn phím và màn hình là bắt đầu
sử dụng được rồi (hoặc cao cấp hơn xíu là remote desktop từ một máy khác qua, hoặc
SSH)

Lý do chọn sử dụng Raspberry Pi là vì nó có thiết kế nhỏ gọn, dễ dàng lắp đặt


lên mô hình xe điều khiển. Ngoài ra nó còn hỗ trợ giao tiếp với các thiết bị ngoại vi
(camera, usb) và các giao thức truyền nhận như: Bluetooth, I2C, SPI…, điều này giúp
việc lập trình các hệ thống nhúng trở nên dễ dàng hơn.

Hình 3.7: Raspberry Pi 3 Model B

30
3.1.6. Raspberry Pi Power Pack

Hình 3.8: Raspberry Pi Power Pack


Raspberry Pi Power Pack như trong hình 3.8 có được thiết kế nhỏ gọn nhưng
hiệu năng cao với công suất lên đến 9 giờ liên tục. Raspberry Pi Power Pack sử dụng
pin Lithium có thể sạc lại với dung lượng 3800mAh, cung cấp công suất 5.1V - 1.8A
và chỉ nặng 80g. Vì nó có hai cổng USB, nó có thể cấp nguồn cho hai Raspberry Pi
hoặc các phụ kiện khác, chẳng hạn như màn hình có thể tháo rời.

3.1.7. Raspberry Pi Camera Module


Trước khi xuất hiện camera, điều duy nhất có thể làm để thêm khả năng nhận
biết hình ảnh, quay phim, chụp hình cho RPi là sử dụng một webcam cắm vào cổng
USB. Với các webcam Logitech tích hợp sẵn định dạng mjpeg sẽ giúp RPi xử lý
nhanh hơn. Nhưng các webcam Logitech lại có giá thành khá cao, nhất là webcam có
độ phân giải lớn. Raspberry Pi Camera được tích hợp camera 5 megapixel có độ nhạy
sáng cao, có thể chụp tốt ở nhiều điều kiện ánh sáng khác nhau, cả trong nhà và ngoài
trời. Điểm đặc biệt mà camera mang lại đó là chụp hình độ nét cao trong lúc quay
phim.

Khi sử dụng Raspberry Pi Camera chúng ta sẽ không tốn thêm cổng USB nào
cho camera vì camera được gắn chắc chắn vào socket CSI. Điều này giúp hạn chế
tình trạng nghẽn băng thông cho chip xử lý USB trên mạch Raspberry. Chiều dài cáp

31
Hình 3.9: Raspberry Pi Camera

nối camera đã được tính toán cẩn thận khi vừa đạt được độ dài cần thiết trong khi vẫn
đảm bảo tốc độ truyền hình ảnh từ module về RPi (Hình 3.9)

3.1.8. Arduino Uno R3


Arduino Uno được điều khiển bởi vi điều khiển Atmega328. Nó có 14 đầu
vào/ra (trong đó có 6 chân có thể sử dụng như đầu ra PWM), 6 ngõ ra Analog, một
cổng USB, một jack nguồn, ICSP, một nút nhấn Reset. Board chứa tất cả mọi thứ cần
thiết để hỗ trợ các vi điều khiển, kết nối board với máy tính bằng cáp USB hoặc sử
dụng nó với một bộ chuyển đổi AC sang DC hay pin để bắt đầu.

Hình 3.10: Board Arduino Uno (mặt trước và sau).

32
Bảng 3.2: Thông số của board Arduino Uno
Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7V - 12V
Input Voltage (limits) 6V - 20V
Digital I/O Pins 14 (of which 6 provide PWM output)
Analog Input Pins 6
DC Current per I/O Pin 40 mA
DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB(ATmega328)
SRAM 2 KB (ATmega328)
EFPROM 1 KB (ATmega328)
Clock Speed 16 MHz
3.1.9. PWM/Servo Driver PCA9685
Mạch điều khiển 16 Chanel PWM PCA9685 được sử dụng để có thể xuất ra
đồng thời 16 xung PWM từ 16 cổng khác nhau thông qua giao tiếp I2C sử dụng IC
PCA9685, giúp bạn có thể điều khiển đồng thời 16 RC Servo hoặc Dimmer 16 thiết
bị đồng thời, ...

Mạch điều khiển 16 Chanel PWM PCA9685 có cấu trúc phần cứng phần cứng
đơn giản cũng như bộ thư viện có sẵn trên Arduino nên rất dễ dàng sử dụng và kết
nối.

Hình 3.11: Mạch Điều Khiển 16 Chanel PWM PCA9685

33
Thông số kỹ thuật:

 Mạch điều khiển 16 Chanel PWM PCA9685


 IC chính: PCA9685
 Điện áp sử dụng: 2.3 ~ 5.5VDC.
 Số kênh PWM: 16 kênh, tần số: 40~1000Hz
 Độ phân giải PWM: 12 bit.
 Giao tiếp: I2C (chấp nhận mức Logic TTL 3 ~ 5VDC)
 Kích thước: 62.5mm x 25.4mm x 3mm

3.1.10. Encoder Omron E6B2-CWZ6C 10P/R

Hình 3.12: Encoder Omron E6B2-CWZ6C 10P/R


3.1.11.Pin Lipo 2S-30C 3600mAh

Hình 3.13: Pin Lipo 2S-30C 3600mAh

34
3.2. Sơ đồ kết nối phần cứng

Hình 3.14: Sơ đồ kết nối phần cứng

Trong hình 3.14, Pi Camera kết nối với Raspberry sử dụng giao thức điện CSI-
2. PCA 9685 kết nối với Raspberry Pi qua hai chân I2C (SDA và SCL), 3.3V và đất.
Động cơ được kết nối với Channel 0 và Servo với Channel 1. Arduino board được sử
dụng để đọc các giá trị ga mong muốn từ PWM module PCA 9685, tốc độ thực tế đọc
từ encoder sau đó duy trì vận tốc của xe với thuật toán điều khiển PID.

3.3. Cấu trúc phần cứng của mô hình xe tự hành


Sau khi thiết kế sơ đồ phần cứng và sơ đồ kết nối dây, xe tự hành được xây
dựng bằng cách sửa đổi khung gầm RC Car với thành phần phần cứng ở được đề cập
ở phần 3.2.

Bên ngoài xe được thể hiện trong hình 3.15 và hình 3.16. Hình 3.17 minh họa
thành phần bên trong xe.

35
Hình 3.15: Phía trên của mô hình xe tự hành

Hình 3.16: Phía trái của mô hình xe tự hành

36
a)

b) c)

d)
Hình 3.17: Bên trong xe tự hành. (a) bên trong xe nhìn từ phía trên. (b) bánh răng
của encoder. (c) hệ thống bể lái. (d) Motor và ESC

37
Chương 4: GIẢI THUẬT ĐIỀU KHIỂN CỦA MÔ HÌNH
XE TỰ HÀNH
Chương này cung cấp sơ đồ thu thập dữ liệu đào tạo, sơ đồ điều hướng xe bằng
mô hình được đào tạo, kiến trúc mạng nơron mô hình xe tự hành, phần mềm được sử
dụng để thiết kế cấu trúc mạng.

4.1. Sơ đồ khối thu thập dữ liệu huấn luyện

Hình 4.1: Sơ đồ khối thu thập dữ liệu huấn luyện

38
Trong Hình 4.1, khi khởi động xe. Bước đầu tiên là kiểm tra kênh ga, nếu
chúng ta điều chỉnh thanh ga thì chiếc xe sẽ chạy ở tốc độ đã nhận được từ cần điều
khiển. Bước 2, kiểm tra các góc lái, nếu bạn điều chỉnh thanh góc lái, chiếc xe sẽ điều
hướng với góc lái đã nhận được từ tay cầm điều khiển, nếu không chiếc xe sẽ chạy
về phía trước. Tiếp theo, trong khi chiếc xe đang chạy, chúng tôi chụp ảnh đường với
máy ảnh và lưu tên của hình ảnh, giá trị góc và ga tại điểm đó vào tập dữ liệu. Cuối
cùng, nếu bạn muốn dừng xe, nhấn nút tắt.

4.2. Sơ đồ khối điều hướng mô hình xe tự hành

Hình 4.2: Sơ đồ khối điều hướng mô hình xe tự hành

39
Để bắt đầu quá trình này, bạn nhấn nút khởi động, xe chạy và chụp ảnh rồi đưa
nó đến mô hình CNN để dự đoán tốc độ và góc cho xe. Sau đó, chiếc xe sẽ chạy và
điều hướng bằng chính nó với góc lái và ga được nhận từ mô hình CNN. Cuối cùng,
để dừng xe, nhấn nút dừng như trong Hình 4.2.

4.3. Cấu trúc mạng và tối ưu các thông số


Một mạng nơ-ron tích chập được sử dụng để huấn luyện dữ liệu. Kiến trúc
mạng bao gồm 9 lớp, bao gồm 1 lớp chuẩn hóa, 3 lớp chập, 3 lớp gộp tối đa và 2 lớp
được kết nối hoàn toàn. Kiến trúc mạng của nghiên cứu này được tác giả mô tả trong
Hình 4.3.

Hình 4.3: Cấu trúc mạng huấn luyện cho mô hình xe tự hành

40
Lớp đầu tiên thực hiện chuẩn hóa tất cả các ảnh có giá trị pixel từ -1 đến 1.
Các lớp pooling được thiết kế bằng thực nghiệm, tác giả sử dụng kernel có kích thước
5x5 với không bước trượt cho lớp đầu tiên, những kernel có kích thức là 3x3 và cũng
không có bước trượt. Độ sâu tương ứng của mỗi lớp là 16, 32 và 64.

Các lớp max-pooling được xen kẽ với các lớp tích chập. Lớp max-pooling là
một trong những công cụ mạnh mẽ thường được CNN sử dụng. Đây là một phương
pháp thay đổi kích thước hình ảnh lớn nhưng giữ lại thông tin quan trọng nhất về
chúng. Nó liên quan đến việc trượt một khung cửa sổ nhỏ dọc theo một hình ảnh và
nhận được giá trị tối đa từ cửa sổ ở mỗi bước. Sau khi gộp, một hình ảnh sẽ có khoảng
một phần tư pixel so với đầu. Điều này làm giảm số lượng hyperparameters cần phải
tính toán, từ đó giảm thời gian tính toán và tránh việc overfitting. Tất cả các lớp max-
pooling được chọn với kernel là 2x2 và không bước trượt.

Các lớp được kết nối hoàn toàn được thiết kế với việc giảm dần kích thước:
19456 và 500. Lớp đầu ra chắc chắn là 1 nơtron vì mô hình của chúng tôi dự đoán
một giá trị như một lệnh điều khiển đầu ra cho góc lái.

Bên cạnh đó, chúng tôi cũng sử dụng kích hoạt lớp là ELUs (đơn vị tuyến tính
theo cấp số nhân) theo từng lớp co giãn để cải thiện sự hội tụ. Các ELU chức năng cố
gắng kích hoạt trung bình gần bằng không để tăng tốc độ học tập. Nó đã được chỉ ra
rằng ELUs có thể có được độ chính xác phân loại cao hơn so với ReLUs [10]. Đầu ra
của một lớp ReLU có cùng kích thước với đầu vào, sự khác biệt là tất cả các giá trị
âm của hình ảnh sẽ bị xóa ngay sau đó.

 x; x  0
f ( x)   (4)
a(e  1); x  0
x

Với a là siêu tham số và một điều kiện là a  0

41
Đối với đề tài này, chúng tôi đã sử dụng hàm MSE (Mean-Square-Loss) Chức
năng này thông thường sử dụng cho các bài toán hồi quy mà chỉ đơn giản là giá trị
trung bình của tổng bình phương khác biệt giữa kết quả thực tế và dự đoán.

2

1 

MSE    yi  yi  (5)
n  

Để tối ưu hóa sự mất mát này, thuật toán tối ưu hóa Adam đã được sử dụng.
Thuật toán tối ưu hóa này thường được chọn cho ứng dụng học tập sâu. Tác giả sử
dụng các tham số mặc định của Adam cung cấp trong Keras (learning rate of 0.001,
1  0.9 ,  2  0.999 ,   1e  8 and decay = 0) [11].

Mạng nơron giải mã chứa nhiều lớp ẩn phi tuyến tính, điều này làm cho chúng
trở thành các mô hình phức tạp và dẫn đến các mối quan hệ phức tạp giữa đầu vào và
đầu ra của chúng. Để làm cho kiến trúc mạnh mẽ hơn và để ngăn chặn vấn đề
overfitting, các lớp dropout được thêm vào mạng được thực hiện. Việc bỏ học sẽ vô
hiệu hóa các tế bào thần kinh trong mạng bằng một xác suất nhất định và ngăn cản sự
đồng thích hợp của các đối tượng. Đối với nghiên cứu này, tác giả áp dụng tỷ lệ
dropout là 20% [12] (Hình 4.4).

a) b)

Hình 4.4: Lớp dropout. a) mạng nơ-ron tiêu chuẩn, b) mạng nơ-ron sau khi áp dụng
dropout

42
4.4. Phần mềm và các thư viện sử dụng để lập trình

4.4.1. Giới thiệu thư viện Tensorflow

 TensorFlow là một thư viện phần mềm mã nguồn mở dành cho máy học trong
nhiều loại hình tác vụ nhận thức và hiểu ngôn ngữ.

 Chạy trên desktop Linux hoặc Mac OS X 64-bit hoặc các hệ thống máy chủ,
cũng như trên các nền tảng điện toán di động, bao gồm Android và iOS của
Apple.

 TensorFlow có thể chạy trên nhiều CPU và GPU.

 TensorFlow cung cấp một API Python, cũng như một ít tài liệu API C/C++.

4.4.2. Giới thiệu thư viện Keras

 Keras là một framework machine learning được viết bằng Python nhằm giảm
thiểu thời gian giữa việc lên các ý tưởng và giai đoạn thực hiện chúng. Nó bao
gồm hai API high-level: Keras Sequential và Keras Functional.

 Nó có thể sử dụng chung với các thư viện Deep Learning nổi tiếng như
Tensorflow.

 Dễ sử dụng, xây dựng model nhanh.

 Keras có thể run trên cả CPUvà GPU.

 Hỗ trợ xây dựng CNN, RNN và có thể kết hợp cả hai.

43
Chương 5: THỰC NGHIỆM
Trong chương này, dữ liệu thu thập được sử dụng để huấn luyện kiến trúc
mạng trong chương 4 và kết quả thực nghiệm sẽ được trình bày. Điều này bao gồm
(1) môi trường thực nghiệm để thu thập dữ liệu, (2) mô tả tập dữ liệu, (3) phương
pháp để tạo ra các nhiều dữ liệu khác nhau, (4) kết quả của quá trình huấn luyện và
thử nghiệm.

5.1. Môi trường thực nghiệm

b)

a) c)

Hình 5.1: Quỹ đạo thực nghiệm 1: (a) Quỹ đạo hình bầu dục.(b) góc rẽ của đường
đi .(c) mô hình xe đang di chuyển theo quỹ đạo

b)

a) c)
Hình 5.2:Quỹ đạo thực nghiệm 2: (a) quỹ đạo hình số 8. (b) và (c) biển báo hiệu chỉ
đường

44
Để thu thập dữ liệu đào tạo, chúng tôi điều khiển mô hình xe tự hành theo quỹ
đạo ngoài trời được tạo trên mặt phẳng rải nhựa để thu thập hình ảnh có đánh dấu
thời gian.

Đường viền hình bầu dục là một đường dài 50 mét và rộng 70 cm với đường
viền trong dải băng rộng 10 cm như trong Hình 5.1. Chiếc xe có thể được điều khiển
để rẽ trái hoặc rẽ phải trong các đường cong bán kính 3 mét tại một thời điểm.

Đường viền hình số 8 bao gồm hai vòng tròn tạo hình thành một giao lộ ngang
tiếp tuyến được thể hiện trong Hình 5.2. Quỹ đạo dài 40 mét này có cả đường cong
bên phải và bên trái. Bán kính đường cong là 3 mét. Có bốn biển báo giao thông có
đường kính 15 cm được dựng lên trên các mép ngoài của đường để hướng dẫn cho
xe.

5.2. Mô tả tập dữ liệu


Chuẩn bị dữ liệu là vấn đề rất cần thiết khi làm việc với các mạng học tập sâu.
Raspberry Pi ghi lại hình ảnh và thông tin lái xe từ người dùng bằng tay lái xe xung
quanh đường đua với tốc độ 5-6km / h. Dữ liệu được thu thập chứa hơn 15.500 hình
ảnh ghép lại với góc lái. Độ phân giải ban đầu của hình ảnh là 160x120. Pi Camera
được cấu hình để chụp ở tốc độ 10 khung hình / giây với thời gian phơi sáng 5000us
để tránh hiện tượng mờ do rung động khi xe lái trên đường. Các hình ảnh mẫu của
tập dữ liệu này được thể hiện trong Hình 5.3.

Hình 5.3: Tập dữ liệu thu thập được: (a) là các mẫu từ tập dữ liệu lái xe. (b), (c) và
(d) là những hình ảnh điển hình trong tập dữ liệu

45
5.3. Các phương pháp để tạo ra các nhiều dữ liệu khác nhau

Mô hình học tập sâu có xu hướng vượt quá tập dữ liệu nhỏ vì có quá ít mẫu để đào
tạo, dẫn đến một mô hình có hiệu suất tổng quát kém. Tăng cường dữ liệu là một công
nghệ chuyên dụng tạo ra nhiều trường hợp dữ liệu huấn luyện hơn bằng cách tạo ra
các mẫu mới thông qua việc biến đổi ngẫu nhiên các mẫu hiện có. Phương pháp này
làm tăng số lượng của tập huấn luyện. Các phép biến đổi thông thường là là lật ngang,
điều chỉnh độ sáng, tạo bóng ngẫu nhiên, thay đổi chiều cao và chiều rộng của ảnh
(hình 5.4).

Hình 5.4: Ví dụ về các phương pháp tạo thêm dữ liệu huấn luyện
5.4. Quá trình huấn luyện

Từ tập dữ liệu được lưu trữ, tác giả chia chúng thành hai phần riêng biệt. Một là
dữ liệu huấn luyện và một là dữ liệu thử nghiệm với tỷ lệ 80:20. Một sơ đồ huấn luyện
được thể hiện trong Hình 5.5. Tác giả tận dụng lợi thế của GPU NVIDIA GeForce
GT 740M với bộ nhớ là 2GB có sẵn để huấn luyện mạng với ba lần, mỗi lần lượt là
30, 50, 100 chu kỳ (Bảng 5.1).

46
Hình 5.5: Sơ đồ huấn luyện cho mô hình xe tự hành
Tổng thời gian mà chúng tôi thực hiện đào tạo kết hợp với 100 chu kỳ cho 15500
mẫu là khoảng 280 phút. Do đó, trung bình một chu kỳ mất 168 giây để hoàn thành.
Một số hình ảnh đại diện cho các lớp tích chập được thể hiện trong hình 5.6.

Bảng 5.1: Sự ảnh hưởng của chu kỳ huấn luyện đến độ chính xác của mô hình

Số thứ Số lượng mẫu Chu kỳ Thời gian Độ chính xác


tự huấn luyện huấn huấn luyện
luyện
1 15500 30 92 minutes 97,08%

2 15500 50 155 minutes 97,77%

3 15500 100 280 minutes 98,23%

47
a) b)

c) d)
Hình 5.6: Trực quan các lớp tích chập. a) ảnh gốc. b), c) và d) là lần lượt là các lớp
tích chập thứ 1,2 và 3
5.5. Kết quả thực nghiệm ngoài trời:

Sau khi được huấn luyện trên laptop, mô hình đã được sao chép trở lại Raspberry
Pi. Mạng sau đó được bộ điều khiển chính của xe sử dụng để cấp khung hình từ
Camera Pi làm đầu vào. Trong mỗi giai đoạn điều khiển, mỗi giây 10 hình ảnh được
xử lý và tốc độ tối đa của xe xung quanh đường cong là khoảng 5-6 km/h.

Mô hình dự đoán góc lái đạt được độ chính xác khá thuyết phục, cụ thể là 98,23%
(Hình 5.7). Kết quả của thí nghiệm này dựa trên mô hình xe tự hành có thể tự động
điều hướng trong cả hai quỹ đạo với điều kiện lái xe đa dạng, bất kể cho dù dấu hiệu
làn đường có hay không. Giá trị góc lái được dự đoán tương đối chính xác (Hình 5.8).

48
Hình 5.7: Độ chính xác của mạng CNN được đề xuất

Hình 5.8: Giá trị góc lái được dự đoán

49
Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
6.1. Kết luận

Ưu điểm của nghiên cứu này là:

 Tác giả đã ứng dụng mạng neural học sâu trên cấu hình phần cứng thấp và
chạy thực nghiệm cho kết quả thuyết phục, cụ thể là 98,23%.
 Ngoài ra, luận văn còn kết hợp nhận dạng biển báo giao thông và xe tự hành
trên mô hình thực tế.
 Đề tài còn có thể mở rộng phạm vi ứng dụng trong các loại robot hoặc xe tự
hành thực ở các môi trường khác.
 Dữ liệu là một trong những vấn đề quan trọng nhất dẫn đến độ chính xác của
mô hình của chúng tôi (Bảng 6.1). Hơn nữa, tăng chu kỳ huấn luyện để mô hình tiếp
cận đến vị trí hội tụ là một cách để có một mô hình với kết quả thuyết phục (Bảng
5.1).

Bảng 6.1: Sự ảnh hưởng của số lượng mẫu huấn luyện đến độ chính xác của mô
hình
Số thứ Số lượng mẫu Chu kỳ Thời gian huấn Độ chính xác
tự huấn luyện huấn luyện luyện
1 10000 100 173 minutes 96,78%
2 12500 100 212 minutes 97,15%
3 15500 100 280 minutes 98,23%

Nhược điểm: tác giả quan sát thấy trong quá trình huấn luyện / thực nghiệm mô
hình thì xảy ra vấn đề về độ trễ của máy ảnh. Việc này được định nghĩa là khoảng
thời gian từ khi cảm biến máy ảnh quan sát hiện trường đến khi máy tính thực sự đọc
dữ liệu hình ảnh số. Thật không may, thời gian này có thể dài đáng kể tùy thuộc vào
máy ảnh và hiệu suất của Pi, khoảng 300-350 mili giây. Điều này là cao hơn đáng kể
so với độ trễ của nhận thức của con người. Độ trễ máy ảnh cao hơn có thể ảnh hưởng

50
tiêu cực đến hiệu suất điều khiển, đặc biệt đối với các ứng dụng quan trọng về an
toàn, bởi vì mạng thần kinh học sâu sẽ phân tích các cảnh cũ.

6.2. Hướng phát triển


Tóm lại, tác giả đã tạo ra một mô hình dự đoán góc lái của một mô hình xe tự
hành sử dụng mạng nơ-ron tích chập. Mặc dù đã đạt được một kết quả khả quan
nhưng trong tương lai gần, tác giả sẽ tiếp cận một số nghiên cứu sau đây:

1) Nghiên cứu cải thiện độ chính xác của mô hình tốt hơn nữa sẽ là vấn đề mà
nhóm quan tâm.

2) Xác định và sử dụng máy ảnh có tốc độ màn sập cao cũng như cải thiện hiệu
suất của mô hình xe tự hành

3) Thêm phần huấn luyện giá trị tốc độ của mô hình xe tự hành với tham vọng
xe chạy được tốc độ cao và chính xác hơn.

51
TÀI LIỆU THAM KHẢO
[1] Minh-Thien Duong, Truong-Dong Do and My-Ha Le, “Navigating Self-
Driving Vehicles Using Convolutional Neural Network”, 2018 4th International
Conference on Green Technology and Sustainable Development (GTSD). IEEE,
2018. p. 607-610
[2] S. G. Jeong et al., “Real time lane detection for autonomous navigation,” in
Proc. IEEE Intell. Transp. Syst., Aug. 2001, pp. 508–513.
[3] K. A. Redmill, S. Upadhya, A. Krishnamurthy, and Ü. Özgüner, “A lane
tracking system for intelligent vehicle application,” in Proc. IEEE Intell.Transp.
Syst., Aug. 2001, pp. 273–279.
[4] Hsu-Yung Cheng, Bor-Shenn Jeng, Pei-Ting Tseng, and Kuo-Chin Fan,
“Lane Detection with Moving Vehicles in Traffic Scenes”, IEE Transactions on
intelligent transportation systems, vol 7, No.4, December 2006
[5] Kamarul Ghazali, Rui Xiao, Jie Ma, “Road Lane Detection Using H-Maxima
and Improve Hough Transform”, 2012 Fourth International Conference on
Computational Intelligence, Modelling and Simulation
[6] Mohamed Aly, “Real time Detection of Lane Markers in Urban Streets”
2008 IEEE Intelligent Vehicles Symposium Eindhoven University of Technology
Eindhoven, The Netherlands, June 4-6, 2008
[7] S. Hong, M. Hyung Lee, S. Hong Kwon and H. Hwan Chun, “A car test for
the estimation of GPS/INS alignment errors,” IEEE Trans. Intell. Trans. Syst. 5(3),
208–218 (2004)
[8] Vicente Milanés, José E. Naranjo, Carlos González, Javier Alonso
and Teresa de Pedro, “ Autonomous vehicle based in cooperative GPS and inertial
systems”, Robotica (2008) volume 26, pp. 627-633, Cambridge University Press
[9] Araki M, “PID Control” Control systems robotics and automation – Vol. II
[10] Djork-Arné Clevert, Thomas Unterthiner, Sepp Hochreiter, "Fast and
Accurate Deep Network Learning by Exponential Linear Units (ELUs)" Published as
a conference paper at ICLR 2016

52
[11] Diederik P. Kingma, Jimmy Ba, “Adam: A method for Stochastic Optimization”
Published as a conference paper at ICLR 2015
[12] Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, Ruslan
Salakhutdinov, “Dropout: A Simple Way to Prevent Neural Networks from
Overfitting”, Journal of Machine Learning Research 15 (2014)

53
PHỤ LỤC
Hai bài báo đã được đăng trong tạp chí quốc tế, thuộc hệ thống IEEE “4th
International Conference on Green Technology and Sustainable Development –
GTSD 2018”:
[1] Minh-Thien Duong, Truong-Dong Do and My-Ha Le, “Navigating Self-
Driving Vehicles Using Convolutional Neural Network”, 2018 4th International
Conference on Green Technology and Sustainable Development (GTSD). IEEE,
2018. p. 607-610
[2] Truong-Dong Do, Minh-Thien Duong, Quoc-Vu Dang and My-Ha Le,
“Real-Time Self-Driving Car Navigation Using Deep Neural Network”, 2018 4th
International Conference on Green Technology and Sustainable Development
(GTSD). IEEE, 2018. p. 7-12.

54
S K L 0 0 2 1 5 4

You might also like