Tải bản đầy đủ (.doc) (50 trang)

BÁO CÁO ĐỒ ÁNĐỀ TÀI: XÂY DỰNG MÔ HÌNH XE TỰ HÀNH ỨNG DỤNG CÔNG NGHỆ DEEP LEARNING

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

ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
VIỆT - HÀN

BÁO CÁO ĐỒ ÁN

ĐỀ TÀI: XÂY DỰNG MƠ HÌNH XE TỰ HÀNH ỨNG
DỤNG CƠNG NGHỆ DEEP LEARNING
Giảng viên hướng dẫn:
Sinh viên thực hiện:
1. Nguyễn Thị Ngà
2. Hồ Nguyễn Hoàng Vy

ThS. Nguyễn Anh Tuấn
17CE029
17CE062

Đà Nẵng, tháng 12 năm 2020


ĐẠI HỌC ĐÀ NẴNG
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
VIỆT - HÀN

BÁO CÁO ĐỒ ÁN

ĐỀ TÀI: XÂY DỰNG MƠ HÌNH XE TỰ HÀNH ỨNG
DỤNG CƠNG NGHỆ DEEP LEARNING
Giảng viên hướng dẫn:
Sinh viên thực hiện:
1. Nguyễn Thị Ngà


2. Hồ Nguyễn Hoàng Vy

ThS. Nguyễn Anh Tuấn
17CE029
17CE062

Đà Nẵng, tháng 12 năm 2020


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

MỞ ĐẦU
Trong thế giới hiện đại, máy học (Machine Learning) đang đóng vai trị quan
trọng hơn bao giờ hết trong nhiều lĩnh vực khác nhau như: di truyền học, thị giác máy
tính, nhận diện giọng nói, xử lý ngơn ngữ tự nhiên, robot, dự đốn thị trường chứng
khoán, v.v… Máy học cũng hiện hữu rất nhiều trong đời sống hằng ngày như:
Facebook sử dụng máy học để đề xuất kết bạn hay Google sử dụng máy học làm nền
tảng cho cơng cụ tìm kiếm của họ.
Trong ngành công nghiệp ô tô cũng như giới học thuật đã tiến hành rất nhiều
nghiên cứu liên quan đến xe tự lái. Xe tự lái là một chủ đề rất thú vị, nó có tiềm năng
mang lại nhiều lợi ích cho xã hội như: giảm tai nạn giao thông, giảm ùn tắc giao thông,
v.v… Theo báo cáo từ NHTSA, hơn 90% các vụ va chạm ô tô xảy ra do lỗi của người
lái xe. Và những thương vong trên có thể giảm thiểu tối đa bằng cách triển khai các
tính năng tự động trong ơ tơ. Do đó, xe tự hành trở thành một phương tiện có khả năng
giúp con người tránh được những thương vong đáng tiếc và hiện đang được phát triển
bởi nhiều công ty. Với mong muốn tìm hiểu và phát triển cơng nghệ mới này, nhóm
chúng tơi thực hiện nghiên cứu đề tài “Xây dựng mơ hình xe tự hành ứng dụng cơng
nghệ Deep Learning”. Trong đồ án này, chúng tôi ứng máy học để xây dựng một mơ
hình xe tự lái cơ bản. Cụ thể hơn, chúng tơi xây dựng mơ hình xe có thể dự đốn góc
lái để giúp xe bám theo làn đường dựa vào hình ảnh được chụp từ camera gắn trên xe.

Ngồi ra, mơ hình xe này cịn có thể nhận dạng được biển báo giao thông.


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

LỜI CẢM ƠN
Để thực hiện và hoàn thành tốt đồ án này, em đã nhận được sự giúp đỡ và
hướng dẫn rất tận tình của các thầy cô thuộc Đại Học Công Nghệ Thông Tin Và
Truyền Thông Việt Hàn – Đại Học Đà Nẵng. Em xin cảm ơn các thầy cô thuộc
bộ môn chuyên ngành đã cung cấp cho chúng em các thông tin, kiến thức vô
cùng quý báu và cần thiết trong suốt thời gian q để em có thể thực hiện và
hồn thành đồ án của mình. Đặc biệt em xin chân thành cảm ơn thầy Nguyễn
Anh Tuấn, người đã trực tiếp hướng dẫn chúng em trong thời gian thực hiện đồ
án này.
Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đã
ủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng
tơi trong q trình nghiên cứu và thực hiện đề tài.
Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễn nên
đề tài không tránh khỏi những sai sót. Em rất mong nhận được sự thơng cảm của
q thầy cơ và mong đón nhận những góp ý của thầy cơ và các bạn.
Em xin chân thành cảm ơn!


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

NHẬN XÉT
(Của giảng viên hướng dẫn)
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………

…………………………………………………………………………………………
…………………………………………………………………………………………
………………………………………………………………………………………..
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
…………………………………………………………………………………………
Đà Nẵng, ngày …. tháng …. năm 20...
Giảng viên hướng dẫn

ThS. Nguyễn Anh Tuấn


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

MỤC LỤC
MỞ ĐẦU...............................................................................................................1
LỜI CẢM ƠN........................................................................................................2
NHẬN XÉT...........................................................................................................3
MỤC LỤC.............................................................................................................4
DANH MỤC VIẾT TẮT.......................................................................................6
CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG XE TỰ HÀNH SỬ DỤNG

CÔNG NGHỆ DEEP LEARNING.......................................................................1
1.1 Tổng quan về xe tự hành...........................................................................1
1.2 Nội dung đề tài............................................................................................2
1.3 Mục tiêu đề tài............................................................................................2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CỦA XE TỰ HÀNH...................................3
2.1 Giới thiệu về xe tự hành.............................................................................3
2.2 Tổng quan về trí tuệ nhân tạo...................................................................4
2.2.1 Trí tuệ nhân tạo – Artificial Intelligence (AI)........................................4
2.2.2 Machine Learning (ML).........................................................................4
2.2.3 Deep Learning (DL)...............................................................................5
2.2.4 Lý thuyết cơ bản về hình ảnh.................................................................7
2.2.5 Convolutional Neural Network (CNN)..................................................7
2.2.6 OpenCV.................................................................................................9
2.2.7 TensorFlow...........................................................................................10
2.2.8 Keras....................................................................................................11
2.3 Xây dựng thuật toán................................................................................12
2.3.1 Thuật toán phát hiện làn đường............................................................12
2.3.2 Thuật toán ước lượng độ cong của làn đường......................................16
2.3.3 Tính tốn góc lái và lần vết làn đường cho xe tự hành........................17
Chương 3: XÂY DỰNG MƠ HÌNH XE TỰ HÀNH..........................................19
3.1 Phân tích u cầu.....................................................................................19
3.2 Mơi trường triển khai..............................................................................19
3.3 Phần cứng..................................................................................................19
3.3.1 Raspberry Pi.........................................................................................19
3.3.2 Các thiết bị - Modules..........................................................................26


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

3.4 Nguyên tắc hoạt động...............................................................................29

3.4.1 Hoạt động chung..................................................................................29
3.4.2 Quy trình..............................................................................................29
3.5 Kết quả thử nghiệm và đánh giá.............................................................33
KẾT LUẬN.........................................................................................................36
1 Kết quả đạt được.........................................................................................36
2 Hạn chế.........................................................................................................36
3 Hướng Phát triển.........................................................................................36
TÀI LIỆU THAM KHẢO...................................................................................38


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

DANH MỤC HÌNH ẢNH
Hình 2.1 Cơng nghệ ơ tơ tự hành..........................................................................3
Hình 2.2 Convolutional Neural Network (CNN)..................................................7
Hình 2.3 Feature Map...........................................................................................8
Hình 2.4 Quá trình Pooling..................................................................................9
Hình 2.5 Open CV...............................................................................................10
Hình 2.6 Tensorflow............................................................................................11
Hình 2.7 Thư viện Keras.....................................................................................12
Hình 2.8 Lưu đồ giải thuật phát hiện làn đường................................................13
Hình 2.9 Mơ hình ước lượng đường cong làn đường.........................................16
Hình 2.10 Minh họa vị trí xe trong làn đường....................................................18
Hình 3.1 Cấu tạo của Raspberry Pi....................................................................20
Hình 3.2 Kích hoạt VNC Viewer trên Raspberry Pi...........................................23
Hình 3.3 Kích hoạt VNC Viewer trên Raspberry Pi...........................................23
Hình 3.4 Dùng Putty trong máy tính trỏ về Raspberry Pi..................................25
Hình 3.5 Kiểm tra xem Pi đã kết nối với mạng dây hoặc Wifi............................25
Hình 3.6 Nhập IP của Raspberry Pi...................................................................26
Hình 3.7 Điền tên đăng nhập và pass của Pi......................................................26

Hình 3.8 Sơ đồ nối mạch.....................................................................................30
Hinh 3.10 Trainning............................................................................................31
Hình 3.9 Convolutional Network (CNN)............................................................32
Hình 3.10 Quá trình huấn luyện.........................................................................33
Hình 3.12 Thực thi..............................................................................................34
Hình 3.11 Mơ hình xe đã hồn thiện...................................................................35
Hình 3.12 Ảnh được thu lại từ Raspberry...........................................................35
Hình 3.13 Kết quả của mơ hình..........................................................................36
Hình 3.14 Keyboard điều khiển xe......................................................................37


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

DANH MỤC BẢNG
Bảng 3.1 So sánh giữa Raspberry với Arduino...................................................20
Bảng 3.2 Danh mục các thiết bị..........................................................................26
Bảng 3.3 Cách nối chân

30


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

DANH MỤC SƠ ĐỒ
Sơ đồ 2.1 Hoạt động của Deep Learning..............................................................6
Sơ đồ 2.2 Lưu đồ giải thuật phát hiện làn đường...............................................13
Sơ đồ 3.1 Thu thập dữ liệu..................................................................................30
Sơ đồ 3.2 Training...............................................................................................30
Sơ đồ 3.3 Thực thi...............................................................................................32



Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

DANH MỤC VIẾT TẮT
STT
1
2
3
4
5
6

Cụm từ

Artificial Intelligence
Convolution Neural Network
Deep Neural Networks
Machine Learning
Recurrent Neural Network
Deep Learning

Viết tắt
AI
CNN
DNN
ML
RNN
DL



Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

CHƯƠNG 1. TỔNG QUAN VỀ HỆ THỐNG XE TỰ HÀNH SỬ DỤNG
CÔNG NGHỆ DEEP LEARNING
1.1 Tổng quan về xe tự hành
Cùng với sự phát triển của khoa học công nghệ, việc ứng dụng và đưa trí
tuệ nhân tạo vào các sản phẩm cơng nghệ là một xu thế tất yếu. Khơng những
vậy cơng nghệ trí tuệ nhân tạo cũng đưa các máy móc mà vốn dĩ chúng ta nghĩ
không thể phát triển hơn nữa lên một tầm cao mới hơn. Và một trong số đó là
cơng nghệ xe tự hành.
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, … Hiện tại, xe tự hành không chỉ dừng lại ở việc
đánh lái, tăng tốc hay phanh trong một số trường hợp nhất định, nó cịn có thể
tránh né vật cản, xác định các vật thể chuyển động trên đường để có thể hồn
tồn thay thế người lái xe, giúp cho họ có thể thoải mái hơn trên những tuyến
đường cao tốc, giảm rủi ro tai nạn giao thông. Nhờ vào sự phát triển của Học tập
sâu – Deep Learning đã giúp cho việc tạo ra những chiếc xe tự hành khả thi hơn
bao giờ hết.
Đã có một số đề xuất về phương pháp để dự đoán và điều hướng cho xe tự
hành là sử dụng các thuật toán Computer vision truyền thống (Szeliski, 2010) để
tách biên và dò theo làn đường, từ đó tính tốn các góc lái. Cách làm trên chỉ có
thể làm tốt trong một số điều kiện nhất định, đầy đủ ánh sáng. Trong một số
trường hợp như làn đường bị mờ, đứt quãng sẽ dẫn đến tính tốn sai góc, gây
nguy hiểm cho người và phương tiện.
Nhận thấy những bất cập của phương pháp nêu trên, chúng tôi đề xuất
một phương pháp sử dụng công nghệ Deep Learning, cụ thể là mạng neuron tích
chập (Convolutional Neural Network) để dự đốn góc lái (Anon., 9-12 June
2019).
Trong đề tài này, chúng tơi sẽ xây dựng một mơ hình cơ bản của một xe tự hành

sử dụng Deep Learning. Xe có thể hoạt động ở cả hai chế độ: điều khiển bằng
tay và chế độ tự lái. Dữ liệu để huấn luyện cho mạng CNN sẽ được thu thập qua
một camera gắn trên xe, đồng thời xe cũng sử dụng camera này để làm ảnh đầu
vào cho mạng CNN dự đốn góc lái. (Anon., 9-12 June 2019)
Để có cái nhìn rõ hơn về xe tự hành cũng như lý do tại sao lại nói xe tự
hành chính là xu hướng của tương lai thì dựa vào những thơng tin sau:
- Trong các trường hợp gây tai nạn giao thông hiện nay thì 90 ~ 95% những
vụ xảy ra tai nạn là do lỗi của sự bất cẩn của con người. Chính vì thế, khi
xe tự hành được rộng rãi theo như các nhà khoa học tính tốn thì cơng
Trang 1


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

nghệ này sẽ giúp giảm được hơn 1 triệu người tử vong hằng năm vì tai
nạn giao thông
- Việc xe tự hành phát triển cũng đồng nghĩa với đó là giúp tiết kiệm hàng
trăm cho đến hàng tỷ USD (chi phí người dùng phải bỏ ra để sửa ơ tơ)
- Giúp những người khơng có khả năng lái xe, người tàn tật và người già di
chuyển dễ dàng (như tìm hiểu về xe tự hành ở bên trên thì các bạn cũng
thấy đây là một loại xe điều khiển không cần tới con người)
Xe tự hành có thể được định nghĩa là một chiếc xe đã được tự động hóa
bằng cách sử dụng một số loại phương pháp thuật tốn. Nó có thể lái xe đến bất
cứ đâu hoặc thực hiện các nhiệm vụ (liên quan đến việc lái xe) mà khơng có sự
can thiệp của con người. Với việc sử dụng phương pháp nhân bản hành vi (là
một phương pháp bắt chước hành vi của con người với sự trợ giúp của máy
móc) để học các mẫu trong dữ liệu bằng cách quan sát hành vi của con người tại
bất kỳ thời điểm nào và sau đó sao chép nó khi được yêu cầu giúp cho hệ thống
tự hành xử lý chính xác trong các tình huống khác nhau.
1.2 Nội dung đề tài

- Xây dựng hệ thống phát hiện làn đường (Realtime). Dữ liệu sau khi thu
thập gửi đến một mạng nơ-ron sâu để xử lý và dự đốn góc lái xác định
làn đường.
- Xây dựng hệ thống phát hiện, nhận dạng, xử lý khi gặp biển báo với Deep
Learning.
1.3 Mục tiêu đề tài
Mục tiêu chính của đề tài là thiết kế xe tự hành dựa trên phần cứng là
Raspberry pi và Pi Camera sử dụng Opencv và Neural network để phát hiện làn
đường.
Mô hình xe tự hành được huấn luyện bởi một lượng lớn dữ liệu thu thập
trong quá trình điều khiển xe bằng tay. Kết quả dự đoán dựa trên dữ liệu được
xử lý bởi Neural Network. Kết quả này giúp xác định, phát hiện làn đường.Với
việc nhận diện biển báo giao thơng với tensorflow, một lượng lớn dữ liệu hình
ảnh về các loại biển báo giao thông sẽ được sử dụng cho quá trình training với
Deep Learning.

Trang 2


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

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
Ơtơ tự hành được ứng dụng rộng rãi trong nhiều lĩnh vực khác nhau trong
thực tế và đóng vai trị quan trọng trong mơi trường giao thơng có nguy cơ tai
nạn cao như đường đồi dốc, trơn trợt hay các hệ thống giao thông thông minh.
Điều khiển chuyển động tự động thơng minh của xe có thể giúp hạn chế tai nạn
cũng như ùn tắt giao thơng. Ơtơ hay robot tự hành là lĩnh vực nghiên cứu thú vị
và nhiều thách thức trong lĩnh vực trí tuệ nhân tạo và điều khiển học. Về nguyên
tắc, một hệ thống xe tự hành đơn giản sẽ bao gồm hai thành phần chính: Bộ

phận tiền xử lý và Bộ phận điều khiển. Hầu hết các nghiên cứu gần đây đều sử
dụng camera để nhận dạng làn đường. Bộ phận điều khiển sẽ điều khiển ôtô hay
robot tự hành chuyển động dọc theo giới hạn làn đường của mình và có thể tránh
các vật cản trên đường nếu cần. Có nhiều phương pháp có thể được áp dụng để
xây dựng hệ thống điều khiển. Tiếp cận phổ biến nhất là hệ điều khiển mờ dựa
trên fuzzy logic hoặc hệ thống lai kết hợp giữa mạng neural và logic mờ. Các hệ
thống này thường là cồng kềnh tốn nhiều bộ nhớ và thời gian xử lý. Trong
nghiên cứu này, chúng tôi đề xuất một giải thuật đơn giản cùng mơ hình tính
tốn thích nghi dựa trên các kỹ thuật xử lý ảnh nhằm giúp ôtô tự hành có thể di
chuyển và điều khiển lái để chỉ trong giới hạn làn đường của mình tùy theo độ
cong của làn đường. Mục đích chính là tìm một phương pháp hiệu quả, đơn giản
nhưng phát hiện chính xác làn đường, đồng thời giảm thời gian và chi phí tính
tốn cho hệ thống điều khiển ơtơ tự hành di chuyển chính xác theo làn đường
quy định. Đầu tiên, chúng tôi sử dụng khái niệm vectơ làn đường dựa trên lý
thuyết Non-uniform B-Spline (NUBS) để xây dựng các đường giới hạn cho làn
đường trái và phải. Tiếp theo, chúng tôi ước lượng độ cong của các làn đường
trái và phải một cách riêng biệt. Cuối cùng, dựa trên thông tin về giới hạn và độ
cong của làn đường, chúng tôi tính tốn góc lái để sử dụng cho giải thuật điều
khiển lái.

Hình 2.1 Cơng nghệ ơ tơ tự hành

Trang 3


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

Kết quả của quá trình xử lý ảnh sẽ cung cấp thông tin cần thiết và ước
lượng độ cong của làn đường nhằm giúp ôtô tự hành di chuyển trong giới hạn
làn đường quy định và xác định được hướng di chuyển chính xác cho xe từ vị trí

hiện tại trên làn đường.
2.2 Tổng quan về trí tuệ nhân tạo
2.2.1 Trí tuệ nhân tạo – Artificial Intelligence (AI)
Trong khoa học máy tính, trí tuệ nhân tạo hay AI (Artificial Intelligence),
đơi khi được gọi là trí thơng minh nhân tạo, là trí thơng minh được thể hiện bằng
máy móc, trái ngược với trí thơng minh tự nhiên của con người. Thơng thường,
thuật ngữ "trí tuệ nhân tạo" thường được sử dụng để mô tả các máy móc (hoặc
máy tính) có khả năng bắt chước các chức năng "nhận thức" mà con người
thường phải liên kết với tâm trí, như "học tập" và "giải quyết vấn đề".
Khi máy móc ngày càng tăng khả năng, các nhiệm vụ được coi là cần "trí
thơng minh" thường bị loại bỏ khỏi định nghĩa về AI, một hiện tượng được gọi
là hiệu ứng AI. Một câu châm ngôn trong Định lý của Tesler nói rằng "AI là bất
cứ điều gì chưa được thực hiện". Ví dụ, nhận dạng ký tự quang học thường bị
loại trừ khỏi những thứ được coi là AI, đã trở thành một công nghệ thông
thường. Khả năng máy hiện đại thường được phân loại như AI bao gồm thành
cơng hiểu lời nói của con người, cạnh tranh ở mức cao nhất trong trò chơi chiến
lược (chẳng hạn như cờ vua và Go), xe hoạt động độc lập, định tuyến thông
minh trong mạng phân phối nội dung, và mơ phỏng qn sự.
Trí tuệ nhân tạo có thể được phân thành ba loại hệ thống khác nhau: trí tuệ
nhân tạo phân tích, lấy cảm hứng từ con người và nhân tạo. AI phân tích chỉ có
các đặc điểm phù hợp với trí tuệ nhận thức; tạo ra một đại diện nhận thức về thế
giới và sử dụng học tập dựa trên kinh nghiệm trong quá khứ để thông báo các
quyết định trong tương lai. AI lấy cảm hứng từ con người có các yếu tố từ trí tuệ
nhận thức và cảm xúc; hiểu cảm xúc của con người, ngoài các yếu tố nhận thức
và xem xét chúng trong việc ra quyết định. AI nhân cách hóa cho thấy các đặc
điểm của tất cả các loại năng lực (nghĩa là trí tuệ nhận thức, cảm xúc và xã hội),
có khả năng tự ý thức và tự nhận thức được trong các tương tác.
2.2.2 Machine Learning (ML)

Machine learning là gì? Machine learning là một lĩnh vực con của Trí tuệ

nhân tạo(Artificial Intelligence) sử dụng các thuật tốn cho phép máy tính có thể
học từ dữ liệu để thực hiện các cơng việc thay vì được lập trình một cách rõ
Trang 4


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

ràng. Khả năng học tập là một yếu tố then chốt của trí thơng minh. Nếu mang
khái niệm này sang machine learning, có vẻ đây là một bước tiến lớn làm cho
máy móc thơng minh hơn. Trên thực tế, hiện nay Machine learning đang là lĩnh
vực cho thấy sự tiến bộ trong tiến trình của Trí tuệ nhân tạo. Nó đang là một chủ
đề nóng và có khả năng làm cho máy móc trở nên thơng minh hơn. Machine
Learning là một bộ các thuật tốn phân tích và học hỏi từ dữ liệu, từ đó áp dụng
những gì học được để đưa ra quyết định. Machine Learning địi hỏi chun mơn
về miền, chun gia vận hành, và chỉ có thể thực hiện các nhiệm vụ đã được xây
dựng sẵn, không hơn không kém.
2.2.3 Deep Learning (DL)

Hiện đang là xu hướng trong machine learning dựa trên các mơ hình mạng
nơ ron nhân tạo (Artificial Neural Networks). Mạng nơ ron có cách tiếp cận kết
nối và sử dụng ý tưởng theo cách bộ não con người làm việc. Chúng bao gồm số
lượng lớn các nơ ron liên kết với nhau; được tổ chức thành các lớp(layers). Học
sâu liên tục được phát triển với các cấu trúc mới sâu hơn. Nó khơng chỉ cố gắng
học mà cịn xây dựng các cấu trúc biểu diễn các đặc trưng quan trọng một cách
tự động.
Deep Learning là một nhánh của Machine Learning, có khả năng và tính
linh hoạt vượt trội hơn Machine Learning. Nhờ có nhiều lớp thần kinh nhân tạo
hơn Machine Learning, Deep Learning sẽ có khả năng tự học và nhận diện nhiều
vấn đề có cấp độ phức tạp hơn nhiều. Deep Learning cho phép máy tính tự động
hiểu, xử lý và học từ dữ liệu để thực thi nhiệm vụ được giao, cũng như cách

đánh giá giúp tăng tính hiệu quả.
Deep Learning cho phép máy móc học nhanh chóng, cặn kẽ và áp dụng
chính xác hơn ngay cả khi sử dụng bộ dữ liệu khổng lồ và phức tạp. Càng học
nhiều, các thuật toán Deep Learning càng thực hiện được nhiều nhiệm vụ. Deep
Learning không chia vấn đề thành các phần nhỏ và giải quyết chúng, mà giải
quyết vấn đề từ đầu đến cuối.
Đối với xe tự lái: Deep Learning là công nghệ cốt lõi đưa xe tự lái vào môi
trường thực tế. Hệ thống tự lái được cung cấp một triệu bộ dữ liệu để xây dựng
mô hình, huấn luyện máy móc và kiểm tra kết quả trong một mơi trường an tồn.
Các thuật tốn Deep Learning được kiểm tra và triển khai định kỳ để đảm bảo an
toàn và tiếp xúc với nhiều kịch bản khác nhau. Dữ liệu từ máy ảnh, cảm biến,
bản đồ giúp tạo ra các mơ hình nhỏ gọn và tiên tiến, giúp điều hướng giao thông,
xác định đường đi, biển báo, tuyến đường dành cho người đi bộ và các yếu tố
trong thời gian thực như lưu lượng giao thông và tắc đường.
Trang 5


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

Hoạt động của Deep Learning
- Trước tiên, ta cần xác định vấn đề để có giải pháp phù hợp cũng như xem
xét tính khả thi của Deep Learning đối với bài toán.
- Thứ hai, ta cần xác định dữ liệu liên quan tương ứng với vấn đề và có sự
chuẩn bị thích hợp.
- Thứ ba, lựa chọn thuật toán Deep Learning phù hợp.
- Thứ tư, sử dụng thuật toán để đào tạo tập dữ liệu.
- Thứ năm, thử nghiệm trên bộ dữ liệu.
Sơ đồ 2.1 Hoạt động của Deep Learning

Hiểu vấn đề và kiểm tra tính

khả thi cho Dêp Learning

Xác định dữ liệu có liên quan và
chuẩn bị nó

Lựa chọn thuật tốn Dearning

Đào tạo thuật tốn

Kiểm tra hiệu suất mơ hình

Trang 6


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

2.2.4 Lý thuyết cơ bản về hình ảnh
Bài tốn xử lý ảnh(Image Processing) giải quyết các vấn đề phân tích thơng
tin từ hình ảnh hay thực hiện một số phép biến đổi. Một số ví dụ là:
Gắn thẻ hình ảnh(Image Tagging), giống như Facebook, một thuật tốn tự
động phát hiện khn mặt của bạn và bạn bè trên những bức ảnh. Về cơ bản,
thuật toán này học từ những bức ảnh mà bạn tự gắn thẻ cho mình trước đó.
Nhận dạng ký tự(Optical Character Recognition), là một thuật toán chuyển
dữ liệu trên giấy tờ, văn bản thành dữ liệu số hóa. Thuật tốn phải học cách nhận
biết ảnh chụp của một ký tự là ký tự nào.
Ơ tơ tự lái(Self-driving cars), một phần cơ chế sử dụng ở đây là xử lý ảnh.
Một thuật toán machine learning giúp phát hiện các mép đường, biển báo hay
các chướng ngại vật bằng cách xem xét từng khung hình video từ camera.
2.2.5 Convolutional Neural Network (CNN)
Convolutional Neural Networks (CNN) là một trong những mơ hình deep

learning phổ biến nhất và có ảnh hưởng nhiều nhất trong cộng đồng Computer
Vision. CNN được dùng trong trong nhiều bài toán như nhận dạng ảnh, phân
tích video, ảnh MRI, hoặc cho bài các bài của lĩnh vực xử lý ngôn ngữ tự nhiên,
và hầu hết đều giải quyết tốt các bài toán này.
CNN là một kiến trúc mạng neuron rất thích hợp cho các bài toán mà dữ
liệu là ảnh hoặc video. Có hai loại layer chính trong CNN: Convolutional layer
và Pooling layer.

Hình 2.2 Convolutional Neural Network (CNN)

Trang 7


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

- Convolutional layer
Convolution layer là lớp quan trọng nhất và cũng là lớp đầu tiên của mơ
hình CNN. Lớp này có chức năng chính là phát hiện các đặc trưng có tính khơng
gian hiệu quả. Trong tầng này có 4 đối tượng chính là: ma trận đầu vào, bộ
filters, và receptive field, feature map. Convolution layer nhận đầu vào là một
ma trận 3 chiều và một bộ filters cần phải học. Bộ filters này sẽ trượt qua từng vị
trí trên bức ảnh để tính tích chập (convolution) giữa bộ filter và phần tương ứng
trên bức ảnh. Phần tương ứng này trên bức ảnh gọi là receptive field, tức là vùng
mà một neuron có thể nhìn thấy để đưa ra quyết định, và mà trận cho ra bởi quá
trình này được gọi là feature map. Để hình dung, các bạn có thể tưởng tượng, bộ
filters giống như các tháp canh trong nhà tù quét lần lượt qua khơng gian xung
quanh để tìm kiếm tên tù nhân bỏ trốn. Khi phát hiện tên tù nhân bỏ trốn, thì
chng báo động sẽ reo lên, giống như các bộ filters tìm kiếm được đặc trưng
nhất định thì tích chập đó sẽ cho giá trị lớn.
Với ví dụ ở bên dưới, dữ liệu đầu vào ở là ma trận có kích thước 8x8x1,

một bộ filter có kích thước 2x2x1, feature map có kích thước 7x7x1. Mỗi giá trị
ở feature map được tính bằng tổng của tích các phần tử tương ứng của bộ filter
2x2x1 với receptive field trên ảnh. Và để tính tất cả các giá trị cho feature map,
các bạn cần trượt filter từ trái sáng phải, từ trên xuống dưới. Do đó, có thể thấy
rằng phép convolution bảo tồn thứ tự khơng gian của các điểm ảnh. Ví dụ điểm
góc trái của dữ liệu đầu vào sẽ tương ứng với bên một điểm bên góc trái của
feature map.

Hình 2.3 Feature Map

Trang 8


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

- Nonlinear Layer
ReLU (Rectified Linear Units, f = max(0, x)) là hàm kích hoạt phổ biến nhất cho
CNN tại thời điểm của bài viết, được giới thiệu bởi Geoffrey E. Hinton năm
2010. Trước khi hàm ReLU được áp dụng thì những hàm như sigmoid hay tanh
mới là những hàm được sử dụng phổ biến. Hàm ReLU được ưa chuộng vì tính
tốn đơn giản, giúp hạn chế tình trạng vanishing gradient, và cũng cho kết quả
tốt hơn. ReLU cũng như những hàm kích hoạt khác, được đặt ngay sau tầng
convolution, ReLU sẽ gán những giá trị âm bằng 0 và giữ nguyên giá trị của đầu
vào khi lớn hơn 0.
ReLU cũng có một số vấn đề tiềm ẩn như khơng có đạo hàm tại điểm 0, giá trị
của hàm ReLU có thể lớn đến vơ cùng và nếu chúng ta không khởi tạo trọng số
cẩn thận, hoặc khởi tạo learning rate quá lớn thì những neuron ở tầng này sẽ rơi
vào trạng thái chết, tức là ln có giá trị < 0.
- Pooling layer
Sau hàm kích hoạt, thông thường chúng ta sử dụng tầng pooling. Một số

loại pooling layer phổ biến như là max-pooling, average pooling, với chức năng
chính là giảm chiều của tầng trước đó. Với một pooling có kích thước 2x2, các
bạn cần phải trượt filter 2x2 này trên những vùng ảnh có kích thước tương tự rồi
sau đó tính max, hay average cho vùng ảnh đó.

Hình 2.4 Q trình Pooling

Keras hiện tại đang hỗ trợ nhiều loại pooling layers khác nhau như: max
pooling, average pooling, global average pooling,… Để sử dụng ta cũng làm
tương tự như với convolutional layers.
2.2.6 OpenCV
OpenCV (Open Source Computer Vision Library) là một thư viện các chức
năng lập trình chủ yếu nhắm vào tầm nhìn máy tính thời gian thực. OpenCV hỗ
trợ nhiều ngơn ngữ lập trình như C ++, Python, Java,… và có sẵn trên các nền
Trang 9


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

tảng khác nhau bao gồm Windows, Linux, Mac OS, Android và iOS. Các giao
diện cho các hoạt động GPU tốc độ cao dựa trên CUDA và OpenCL cũng đang
được phát triển tích cực.

Hình 2.5 Open CV

OpenCV-Python là một thư viện các ràng buộc Python được thiết kế để giải
quyết các vấn đề về thị giác máy tính.
Python là ngơn ngữ lập trình có mục đích chung được bắt đầu bởi Guido van
Rossum, nó trở nên phổ biến rất nhanh, chủ yếu vì tính đơn giản và khả năng
đọc mã của nó. Nó cho phép lập trình viên thể hiện ý tưởng trong ít dịng mã

hơn mà không làm giảm khả năng đọc.
So với các ngôn ngữ như C / C ++, Python chậm hơn. Điều đó nói rằng,
Python có thể dễ dàng được mở rộng với C / C ++, cho phép chúng ta viết mã
chun sâu tính tốn trong C / C ++ và tạo các trình bao bọc Python có thể được
sử dụng làm mô-đun Python. Điều này mang lại cho chúng ta hai lợi thế: thứ
nhất, mã nhanh như mã C / C ++ gốc (vì đây là mã C ++ thực tế hoạt động ở chế
độ nền) và thứ hai, mã dễ dàng hơn trong Python so với C / C ++. OpenCVPython là một trình bao bọc Python để thực hiện OpenCV C ++ ban đầu.
OpenCV-Python sử dụng Numpy, một thư viện được tối ưu hóa cao cho các
hoạt động số với cú pháp kiểu MATLAB. Tất cả các cấu trúc mảng OpenCV
được chuyển đổi sang và từ các mảng Numpy. Điều này cũng giúp tích hợp dễ
dàng hơn với các thư viện khác sử dụng Numpy như SciPy và Matplotlib.
2.2.7 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ữ.
an đầu, nó được Nhóm Google Brain trong tổ chức nghiên cứu Máy thông
minh của Google phát triển để học máy và nghiên cứu mạng nơ-ron sâu, nhưng
hệ thống này đủ để áp dụng cho nhiều lĩnh vực khác.
Trang 10


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

TensorFlow là đa nền tảng. Nó chạy trên hầu hết mọi thứ: GPU và CPU,
bao gồm cả nền tảng di động và nhúng, và các đơn vị xử lý tenor (TPU), là phần
cứng chuyên dụng để thực hiện phép tốn tenor. Chúng chưa có sẵn rộng rãi,
nhưng gần đây chúng tôi đã đưa ra một chương trình alpha.

Hình 2.6 Tensorflow

Cơng cụ thực thi phân tán TensorFlow trừu tượng hóa nhiều thiết bị được

hỗ trợ và cung cấp lõi hiệu năng cao được triển khai trong C ++ cho nền tảng
TensorFlow.
Trên đó là các mặt trận Python và C ++ (còn nhiều thứ nữa). Các lớp API
cung cấp một giao diện đơn giản cho các lớp thường được sử dụng trong các mơ
hình học tập sâu. Trên hết là các API cấp cao hơn, bao gồm Keras (nhiều hơn
trên trang web Keras.io) và API ước tính, giúp việc đào tạo và đánh giá các mơ
hình phân tán dễ dàng hơn.
Và cuối cùng, một số mơ hình thường được sử dụng đã sẵn sàng để sử
dụng, với nhiều hơn nữa.
2.2.8 Keras
Keras là một thư viện mạng nơ-ron mã nguồn mở được viết bằng Python.
Nó có khả năng chạy trên đầu trang của TensorFlow, Microsoft Cognitive
Toolkit, R, Theano hoặc StripeML. Được thiết kế để cho phép thử nghiệm nhanh
với các mạng thần kinh sâu, nó tập trung vào việc thân thiện với người dùng,
mô-đun và mở rộng. Keras là một high-level API của Tensorflow, được phát
Trang 11


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

triển nhằm giúp người dùng có thể dễ dàng xây dựng và huấn luyện các mơ hình
Deep learning. Một vài lý do nên sử dụng Keras:
- Ưu tiên trải nghiệm của người lập trình
- Được sử dụng rộng rãi trong doanh nghiệp và cộng đồng nghiên cứu
- Giúp dễ dàng biến các thiết kế thành sản phẩm
- Hỗ trợ huấn luyện trên nhiều GPU phân tán
- Hỗ trợ đa backend engines và không giới hạn bạn vào một hệ sinh thái

Hình 2.7 Thư viện Keras


2.3 Xây dựng thuật toán
2.3.1 Thuật toán phát hiện làn đường
Các thuật toán xử lý ảnh cho phát hiện làn đường có thể được phân chia
thành ba nhóm chính: Dựa trên phân vùng (region-based), dựa trên phân tích đặc
trưng (feature-based) và dựa trên mơ hình tốn học hóa làn đường (modelbased). Hầu hết các nghiên cứu đều đi theo hướng tiếp thứ ba này, sử dụng mơ
hình tốn học để mơ hình hóa làn đường. Mục đích của phương pháp tiếp cận
này là cố gắng làm cho phù hợp giữa ảnh làn đường được quan sát với mơ hình
giả thuyết được xây dựng. Kỹ thuật này dựa trên giả thuyết rằng làn đường là sự
kết hợp của các phần có dạng đường thẳng, đường cong parabol hoặc đường
cong dạng Bsnack (Bảo, 21/10/2013). Giải thuật cho phương pháp phát hiện làn
đường của chúng tơi được trình bày như trong sơ đồ sau. Đây là một hướng tiếp
cận dựa trên sự mở rộng của mơ hình hóa làn đường.
Đầu tiên, các điểm ảnh thuộc đường biên ảnh giới hạn làn đường sẽ được
phát hiện nhờ thuật toán phát hiện đường biên Canny. Thuật toán rút xương ảnh
Trang 12


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

sẽ được áp dụng vào ảnh phát hiện cạnh để được ảnh đường biên có độ dày 1
điểm ảnh. Tiếp đến, ảnh đường biên sau khi rút xương sẽ được dùng để rút trích
các điểm điều khiển (control points). Phép nội suy NBUS được sử dụng để xây
dựng đường cong đại diện cho làn đường trái và phải một cách riêng biệt.
Sơ đồ 2.2 Lưu đồ giải thuật phát hiện làn đường

Bắt
Ảnh đầu vào
Phát hiện đường biên ảnh
Xây dựng đường biên có độ dày 1 điểm ảnh
Rút trích đặc trưng của đường biên

Xây dựng các đường giới hạn mơ tả làn đường

Kết

- Mơ hình hóa làn đường bằng đường cong B-Spline (Heidi Loose; Uwe
Franke, 19-22 Sept. 2010)
Đường cong NUBS ký hiệu là C. Có thể được biển diễn bằng tập hợp

 n  1

điểm điều khiển

 P0 , P1 , P2 ,...Pn  . Điểm Pi  xi , yi 

thuộc đường

cong C được tính theo công thức (1)
n

C  u   �Bi ,m  u  Pi

(1)

i 0

Trong đó

tmin �u �tmax , 2 �m �n  1




Bi ,m  u 

được gọi là đường

cong B-Spline và được định nghĩa như công thức (2):

Trang 13


Đại học Công nghệ thông tin và Truyền thông Việt Hàn – Đại học Đà Nẵng

1,ti ��
u ti 1

, m 1

0,u� ti ,ti 1  
Bi ,m  u   �u ti
, m 1
ti  m  u
Bi ,m 1  u  
Bi  m ,m 1  u 

ti  m ti 1
�tim1

(2)

Bi ,m  u 


chúng ta cần xác

T   T0 , T1 , T2 ,..., Ti  m 

và các điểm nút,

Xét công thức trên ta thấy để tính được giá trị của
định được tập hợp các vector nút

t j , j  0.i  m . Khi khoảng cách giữa các điểm nút là bằng nhau ta gọi đường
cong là đường cong B-Spline không đồng nhất. Càng nhiểu điểm điều khiển và
điểm nút được xác định thì đường cong B-Spine được biểu diễn bằng đa thức
bậc càng cao và sẽ mô tả đường cong càng chính xác.
- Rút trích đặc trưng đường biên

Hình 2.8 Mơ hình vectơ làn đường cho bài tốn phát hiện làn đường

Đầu tiên, chúng tôi xét 2 đường quét ngang trong ảnh bản đồ làn đường đạt
được từ ảnh phát hiện đường biên và định nghĩa các điểm điều khiển là

A1 , B1 ,

cho làn đường bên trái; Ar Br cho làn đường bên phải. Xây dựng các vectơ làn
đường

r uuuu
r
l1  Al Bl


cho làn đường bên trái,

u
r uuuur
r1  Ar Br

cho làn đường bên phải.

Tiếp theo, chúng tôi ước lượng góc biểu diễn độ cong của đường biên biểu diễn
làn đường sử dụng công thức:

�x Al  xBl �
�x Ar  xBr �
1  arctg �
;  arctg �
�y A  yB �

�y A  yB �
� r
l �
r �
� r
� l

(3)

Trang 14



×