Tải bản đầy đủ (.docx) (39 trang)

Đồ án thiết kế hệ thống nhúng, học viện công nghệ bưu chính viễn thông (7)

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 (1.66 MB, 39 trang )

BỘ THÔNG TIN VÀ TRUYỀN THÔNG
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THƠNG
KHOA KỸ THUẬT ĐIỆN TỬ I
----------

BÁO CÁO

MƠN HỌC

ĐỒ ÁN THIẾT KẾ HỆ THỐNG NHÚNG
Đề bài: “XE TỰ HÀNH”

Giảng viên hướng dẫn:
Sinh viên thực hiện:

NGUYỄN NGỌC MINH
BÙI NGỌC TRAI
TRỊNH BÁ NGHĨA
HỒNG XN TÂM
BÙI VINH TỒN

Hệ:

ĐẠI HỌC CHÍNH QUY

Hà Nội – 2021


LỜI CẢM ƠN
Trước hết, em xin gửi lời cảm ơn chân thành nhất đến tồn bộ q thầy cơ
Học viện Cơng nghệ Bưu chính Viễn thơng, Q thầy cơ khoa Kỹ thuật Điện tử I


đã truyền đạt những kiến thức quý báu cho chúng em trong suốt học kỳ vừa qua,..
Em xin gửi lời cảm ơn sâu sắc đến giáo viên hướng dẫn – Nguyễn Ngọc
Minh, người đã nhiệt tình hướng dẫn em thực hiện chuyên đề bài tập lớn này.
Do giới hạn về thời gian nghiên cứu cũng như lượng kiến thức, thơng tin thu
thập cịn hạn chế nên chun đề khơng tránh khỏi những thiếu sót trong q trình
nghiên cứu và thực hiện. Vì vậy, em rất mong nhận được sự góp ý và đánh giá
chân thành của các thầy, các cô.
Em xin chân thành cảm ơn!


MỤC LỤC

CHƯƠNG I: TỔNG QUAN
1. Đặt vấn đề.
Xử lý ảnh là một phân ngành trong xử lý số tín hiệu với tín hiệu xử lý là ảnh.
Đây là một phân ngành khoa học mới rất phát triển trong những năm gần đây. Xử
lý ảnh gồm 4 lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, nén
ảnh và truy vấn ảnh. Sự phát triển của xử lý ảnh đem lại rất nhiều lợi ích cho cuộc
sống của con người.
Ngày nay xử lý ảnh đã được áp dụng rất rộng rãi trong đời sống như:
photoshop, nén ảnh, nén video, nhận dạng biển số xe, nhận dạng khuôn mặt, nhận
dạng chữ viết, xử lý ảnh thiên văn, ảnh y tế,...
Trong những năm gần đây, cùng với sự phát triển của khoa học kỹ thuật,
công nghệ xe tự hành cũng đang phát triển như vũ bão. Xử lý ảnh, nhận diện biển
báo giao thông là một phần không thể thiếu của xe tự hành.
Hiện nay trên các tuyến đường bộ ở Việt Nam hầu hết đều có đặt các biển
báo giao thông, nhằm thông tin cho người lái xe biết những điều được phép, điều
không được phép, các nguy hiểm có thể xãy ra, các hiệu lệnh phải thi hành hay các
hướng dẫn giúp cho người tham gia giao thông lái xe được an toàn hơn.
Nhưng khi tham gia giao thông người lái xe cần tập trung lái xe để tránh gặp

tai nạn giao thông hoặc khi gặp sự cố người lái xe có thể đối phó kịp thời, do đó
việc cứ liên tục quan sát các biển báo giao thơng đặt bên đường có thể khiến cho
người lái xe khơng thể đối phó kịp thời các sự cố trên đường nếu gặp phải. Ví dụ
như khi người lái xe chuẩn bị tới một đoạn đường bị hư hỏng có nhiều hố sâu (hay
còn gọi là ổ gà), đồng thời ở gần đó có đặt một biển báo “được phép chạy với tốc
độ tối đa là 40 km/h”, vì phải quan sát biển báo nên có thể người lái xe khơng thấy
được các ổ gà, do đó có khẳ năng sẽ gặp tai nạn.
2. Một số nghiên cứu.
Trên thế giới có nhiều nhà nghiên cứu vấn đề này:


• “Construction of Cascaded Traffic Sign Detector Using Generative Learning”,
Keisuke Doman và Daisuke Deguchi và Tomokazu Takahashi và Yoshito Mekada
và Ichiro Ide và Hiroshi Murase (2006), Janan
• “Color Detection and Segmentation for Road and Traffic Signs”, Hasan Fleyeh
(2004), Scotland
• “Road Signs Detection and Reconstruction using Gielis Curves”, Valentine Vega
và Désiré Sidibé và Yohan Fougerolle (2012), Italy
Nhưng các nghiên cứu thường được áp dụng trong phạm vi biển báo của một số
quốc gia, vì đặt trưng biển báo của các quốc gia là khác nhau
3. Phạm vi của bài tập.
Xây dựng một hệ thống thông tin nhận dạng biển báo giao thông từ một đoạn video
thực tế được quay trên các đoạn đường có đặt các biển báo giao thơng.
Khi gặp được một biển báo, nhận dạng biển báo trong video là biển báo gì và
thơng báo ra màn hình hiển thị (hoặc thông báo bằng hệ thống âm thanh hoặc cả
hai).
Trong phạm vi nghiên cứu, hệ thống sẽ nhận dạng các loại biển báo cấm, biển báo
nguy hiểm và biển báo chỉ dẩn phổ biến, thường gặp được đặt trên các tuyến
đường ở Việt Nam.



CHƯƠNG II: CƠ SỞ LÝ THUYẾT
1. Xử lý tín hiệu.
Xử lý tín hiệu là một trường con kỹ thuật điện tập trung vào phân tích, sửa
đổi và tổng hợp các tín hiệu như âm thanh, hình ảnh và các phép đo khoa học. Kỹ
thuật xử lý tín hiệu có thể được sử dụng để cải thiện truyền dẫn, hiệu quả lưu trữ và
chất lượng chủ quan và cũng nhấn mạnh hoặc phát hiện các thành phần quan tâm
trong tín hiệu đo lường.
1.1. Thị giác máy tính (Computer Vision).
Thị giác máy tính là một lĩnh vực gồm các phương pháp thu nhận, phân tích,
xử lý và nhận dạng hình ảnh và dữ liệu đa chiều từ thực tế để cho ra thông tin số
(numerical) hoặc biểu tượng (symbolic) dùng cho các mục đích nhất định. Ý tưởng
được dựa trên thị giác của con người về khả năng nhận dạng và hiểu một hình ảnh.
Để làm được điều đó, thị giác máy tính áp dụng các mơ hình xây dựng dựa trên các
ngành lý thuyết học, vật lý, thống kê và hình học.
a. Ứng dụng
Trong các ứng dụng thị giác máy tính, thường được lập trình để giải quyết
một vấn đề cụ thể, nhưng trên cơ bản các phương pháp đều đều dựa trên sự học
(learning) trở nên ngày càng phổ biến. Ví dụ các ứng dụng thị giác máy tính phục
vụ cho:
• Điều khiển tiến trình (Controlling processes) như rơ bốt cơng nghiệp.
• Điều hướng (Navigation) như xe tự động hay rơ bốt di động.
• Phát hiện sự kiện (Detecting events) như đếm số lượng xe trên đường để
phát hiện trình trạng ùn tắc giao thơng.
• Mơ hình hố đối tượng hoặc mơi trường (Modeling objects or
environments) như phân tích hình ảnh y học hoặc mơ hình địa chấn.


• Sự kiểm tra tự động (Automation inspection) như kiểm tra chất lượng sản
phẩm trong các nhà máy, xí nghiệp.

b. Các nhiệm vụ điển hình
Recognition
Sự nhận dạng (recognition) là xự xác định trong tập dữ liệu hình ảnh có chứa
đối tượng (object), đặt trưng (feature) đang xem xét hay không. Recognition là một
vấn đề kinh điển của thị giác máy tính, xử lý ảnh (image processing). Các vấn đề
nhận dạng như:
• Object recognition (hay cịn gọi là object classification) – Tìm và nhận dạng các
đối tượng trong hình ảnh hoặc video.
• Identification (Xác định duy nhất) – Từng thể hiện của đối tượng được nhận dạng
như là một đối tượng duy nhất trong tập hợp đối tượng. Ví dụ: nhận dạng khuôn
mặt, nhận dạng dấu vân tay (fingerprint) hay nhận dạng chữ viết tay.
• Dectection (Phát hiện) – Phát hiện một đối tượng quan tâm. Ví dụ: phát hiện các
tế bào lạ trong ảnh y học hay phát hiện xe cộ đi qua hệ thống thu phí tự động.
Motion analysis
Phân tích chuyển động trên một chuỗi hình ảnh là một xử lý để có được vận
tốc ước lượng của mỗi điểm trên chuỗi hình ảnh hoặc cảnh 3 chiều.
Scene reconstruction
Mục đích xây dựng một mơ hình 3 chiều từ một hoặc nhiều hình ảnh của
một quang cảnh hoặc video.
Image restoration
Mục đích của phục hồi hình ảnh là loại bỏ các thành phần gây nhiễu.
Phương pháp đơn giản nhất là có thể dùng các bộ lọc (filter) như median filter,
Gaussian filter hay các bộ lọc cơ bản khác.
c. Các phương pháp
Image acquisition
Thu nhận hình ảnh từ một vài thiết bị như máy chụp hình, máy chụp xquang, ra đa, kính hiển vi hiện đại, máy quét, ... Tuỳ vào từng thiết bị mà kết quả
có thể tạo ra ảnh 2 chiều, 3 chiều hoặc một chuỗi các hình ảnh.
Pre-processing
Tiền xử lý là bước làm trước khi áp dụng các phương pháp của thị giác máy
tính lên các hình ảnh để trích xuất ra một phần cụ thể của thông tin và cũng nhằm

đảm bảo nó đáp ứng một số giả định của phương pháp. Ví dụ như:


• Lấy mẫu lại để đảm bảo sự chính xác của hệ thống toạ độ.
• Giảm nhiễu để đảm bảo khơng bị sai lệnh thơng gây ra bởi cảm biến.
• Tăng cường độ tương phản để đảm bảo các thông tin thích hợp được phát hiện.
Feature extraction
Trích xuất các đặc trưng cơ bản như:
• Đường (line), viền (egde), đỉnh (ridge).
• Góc (coner), đốm màu (blob), điểm (point).
• Cấu trúc (texture), hình thù (shape), chuyển động (motion).
Detection/Segmentation
Quá trình xử lý ảnh để đưa ra một quyết định cần tạo ra dữ liệu cho bước xử lý kế
tiếp, như:
• Lựa chọn một tập hợp điểm quan tâm.
• Tách một hoặc nhiều khu vực nhỏ trên ảnh chứa một đối tượng quan tâm.
High-level processing Tại bước xử lý nâng cao, dữ liệu đầu vào thường là tập các
điểm hoặc một vùng ảnh quan tâm được tạo ra từ bước xử lý
detection/segmentation. Ví dụ như:
• Xác thực dữ liệu có đáp ứng mơ hình và giả định của ứng dụng hay khơng
• Nhận dạng hình ảnh – Phân loại các đối tượng phát hiện được thành các loại
• Đăng ký hình ảnh – So sánh và kết hợp 2 cái nhìn khác nhau của cùng một đối
tượng
Decision making
Đưa ra quyết định cho ứng dụng. Ví dụ như:
• Đạt hoặc khơng đạt (pass/fail) cho ứng dụng kiểm tra tự động
• Khớp hoặc khơng khớp (match/no-match) cho ứng dụng nhận dạng
• Đưa ra cảnh báo trong các ứng dụng thuộc y học, quân đội, bảo mật và nhận dạng
1.2. Thư viện OpenCV.
OpenCV là gì?

Project OpenCV được bắt đầu từ Intel năm 1999 bởi Gary Bradsky. OpenCV viết
tắt cho Open Source Computer Vision Library. OpenCV là thư viện nguồn mở
hàng đầu cho Computer Vision và Machine Learning, và hiện có thêm tính năng


tăng tốc GPU cho các hoạt động theo realtime.
OpenCV được phát hành theo giấy phép
BSD (*), do đó nó miễn phí cho cả học tập và
sử dụng với mục đích thương mại. Nó có trên
các giao diện C++, C, Python và Java và hỗ
trợ Windows, Linux, Mac OS, iOS và
Android. OpenCV được thiết kế để hỗ trợ hiệu
quả về tính toán và chuyên dùng cho các ứng
dụng real-time (thời gian thực). Nếu được viết
trên C/C++ tối ưu, thư viện này có thể tận
dụng được bộ xử lý đa lõi (multi-core
processing).
OpenCV có một cộng đồng người dùng khá
hùng hậu hoạt động trên khắp thế giới bởi nhu cầu cần đến nó ngày càng tăng theo
xu hướng chạy đua về sử dụng computer vision của các công ty công
nghệ. OpenCV hiện được ứng dụng rộng rãi toàn cầu, với cộng đồng hơn 47.000
người, với nhiều mục đích và tính năng khác nhau từ interactive art, đến khai thác
mỏ, khai thác web map hoặc qua robotic cao cấp.
Ứng dụng của OpenCV là gì?
OpenCV được sử dụng cho đa dạng nhiều mục đích và ứng dụng khác nhau bao
gồm:
-

Hình ảnh street view
Kiểm tra và giám sát tự động

Robot và xe hơi tự lái
Phân tích hình ảnh y học
Tìm kiếm và phục hồi hình ảnh/video
Phim – cấu trúc 3D từ chuyển động
Nghệ thuật sắp đặt tương tác

Tính năng và các module phổ biến của OpenCV
Theo tính năng và ứng dụng của OpenCV, có thể chia thư viện này thánh các nhóm
tính năng và module tương ứng như sau:
-

Xử lý và hiển thị Hình ảnh/ Video/ I/O (core, imgproc, highgui)
Phát hiện các vật thể (objdetect, features2d, nonfree)
Geometry-based monocular hoặc stereo computer vision (calib3d, stitching,
videostab)
Computational photography (photo, video, superres)
Machine learning & clustering (ml, flann)
CUDA acceleration (gpu)


OpenCV có cấu trúc module, nghĩa là gói bao gồm một số thư viện liên kết
tĩnh (static libraries) hoặc thư viện liên kết động (shared libraries). Xin phép liệt kê
một số định nghĩa chi tiết các module phổ biến có sẵn [2] như sau:
- Core functionality (core) – module nhỏ gọn để xác định cấu trúc dữ liệu cơ
bản, bao gồm mảng đa chiều dày đặc và nhiều chức năng cơ bản được sử dụng bởi
tất cả các module khác.
- Image Processing (imgproc) – module xử lý hình ảnh gồm cả lọc hình ảnh
tuyến tính và phi tuyến (linear and non-linear image filtering), phép biến đổi hình
học (chỉnh size, afin và warp phối cảnh, ánh xạ lại dựa trên bảng chung), chuyển
đổi không gian màu, biểu đồ, và nhiều cái khác.

- Video Analysis (video) – module phân tích video bao gồm các tính năng
ước tính chuyển động, tách nền, và các thuật toán theo dõi vật thể.
- Camera Calibration and 3D Reconstruction (calib3d) – thuật tốn hình học
đa chiều cơ bản, hiệu chuẩn máy ảnh single và stereo (single and stereo camera
calibration), dự đoán kiểu dáng của đối tượng (object pose estimation), thuật tốn
thư tín âm thanh nổi (stereo correspondence algorithms) và các yếu tố tái tạo 3D.
- 2D Features Framework (features2d) – phát hiện các đặc tính nổi bật của
bộ nhận diện, bộ truy xuất thông số, thông số đối chọi.
- Object Detection (objdetect) – phát hiện các đối tượng và mô phỏng của
các hàm được định nghĩa sẵn – predefined classes (vd: khuôn mặt, mắt, cốc, con
người, xe hơi,…).
- High-level GUI (highgui) – giao diện dễ dùng để thực hiện việc giao tiếp
UI đơn giản.
- Video I/O (videoio) – giao diện dễ dùng để thu và mã hóa video.


- GPU – Các thuật toán tăng tốc GPU từ các modun OpenCV khác.
… và một số module hỗ trợ khác, ví dụ như FLANN và Google test wrapper,
Python binding, v.v.
1.3. Thuật toán CNN.
Thuật toán CNN – Convolutional Nerual Network (CNNs – Mạng nơ-ron
tích chập) là một trong những mơ hình Deep Learning tiên tiến. Nó giúp cho chúng
ta xây dựng được những hệ thống thơng minh với độ chính xác cao như hiện nay.
CNN được sử dụng nhiều trong các bài tốn nhận dạng các object trong ảnh.
Để tìm hiểu tại sao thuật toán này được sử dụng rộng rãi cho việc nhận dạng
(detection), chúng ta hãy cùng tìm hiểu về thuật tốn này.
Convolutional là gì?
Là một cửa sổ trượt (Sliding Windows) trên một ma trận như mô tả hình
dưới:


Các convolutional layer có các parameter(kernel) đã được học để tự điều
chỉnh lấy ra những thơng tin chính xác nhất mà khơng cần chọn các feature.
Trong hình ảnh ví dụ trên, ma trận bên trái là một hình ảnh trắng đen được
số hóa. Ma trận có kích thước 5×5 và mỗi điểm ảnh có giá trị 1 hoặc 0 là giao điểm
của dịng và cột.
Convolution hay tích chập là nhân từng phần tử trong ma trận 3. Sliding
Window hay còn gọi là kernel, filter hoặc feature detect là một ma trận có kích
thước nhỏ như trong ví dụ trên là 3×3.


Convolution hay tích chập là nhân từng phần tử bên trong ma trận 3×3 với
ma trận bên trái. Kết quả được một ma trận gọi là Convoled feature được sinh ra từ
việc nhận ma trận Filter với ma trận ảnh 5×5 bên trái.

Cấu trúc của mạng CNN
Mạng CNN là một tập hợp các lớp Convolution chồng lên nhau và sử dụng
các hàm nonlinear activation như ReLU và tanh để kích hoạt các trọng số trong các
node. Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thông tin trừu
tượng hơn cho các lớp tiếp theo.
Mỗi một lớp sau khi thơng qua các hàm kích hoạt sẽ tạo ra các thông tin trừu
tượng hơn cho các lớp tiếp theo. Trong mơ hình mạng truyền ngược (feedforward
neural network) thì mỗi neural đầu vào (input node) cho mỗi neural đầu ra trong
các lớp tiếp theo.


Mơ hình này gọi là mạng kết nối đầy đủ (fully connected layer) hay mạng
tồn vẹn (affine layer). Cịn trong mơ hình CNNs thì ngược lại. Các layer liên kết
được với nhau thông qua cơ chế convolution.
Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy mà ta có
được các kết nối cục bộ. Như vậy mỗi neuron ở lớp kế tiếp sinh ra từ kết quả của

filter áp đặt lên một vùng ảnh cục bộ của neuron trước đó.
Mỗi một lớp được sử dụng các filter khác nhau thơng thường có hàng trăm
hàng nghìn filter như vậy và kết hợp kết quả của chúng lại. Ngoài ra có một số
layer khác như pooling/subsampling layer dùng để chắt lọc lại các thơng tin hữu
ích hơn (loại bỏ các thơng tin nhiễu).
Trong q trình huấn luyện mạng (traning) CNN tự động học các giá trị qua
các lớp filter dựa vào cách thức mà bạn thực hiện. Ví dụ trong tác vụ phân lớp ảnh,
CNNs sẽ cố gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw
pixel > edges > shapes > facial > high-level features. Layer cuối cùng được dùng
để phân lớp ảnh.

Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất biến (Location
Invariance) và tính kết hợp (Compositionality). Với cùng một đối tượng, nếu đối
tượng này được chiếu theo các gốc độ khác nhau (translation, rotation, scaling) thì
độ chính xác của thuật tốn sẽ bị ảnh hưởng đáng kể.
Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển (translation),
phép quay (rotation) và phép co giãn (scaling). Tính kết hợp cục bộ cho ta các cấp
độ biểu diễn thông tin từ mức độ thấp đến mức độ cao và trừu tượng hơn thông qua
convolution từ các filter.
Đó là lý do tại sao CNNs cho ra mơ hình với độ chính xác rất cao. Cũng
giống như cách con người nhận biết các vật thể trong tự nhiên.
Mạng CNN sử dụng 3 ý tưởng cơ bản:
+ các trường tiếp nhận cục bộ (local receptive field)
+ trọng số chia sẻ (shared weights)


+ tổng hợp (pooling).
Trường tiếp nhận cục bộ (local receptive field)
Đầu vào của mạng CNN là một ảnh. Ví dụ như ảnh có kích thước 28×28 thì
tương ứng đầu vào là một ma trận có 28×28 và giá trị mỗi điểm ảnh là một ơ trong

ma trận. Trong mơ hình mạng ANN truyền thống thì chúng ta sẽ kết nối các neuron
đầu vào vào tầng ảnh.
Tuy nhiên trong CNN chúng ta không làm như vậy mà chúng ta chỉ kết nối
trong một vùng nhỏ của các neuron đầu vào như một filter có kích thước 5×5
tương ứng (28- 5 + 1) 24 điểm ảnh đầu vào. Mỗi một kết nối sẽ học một trọng số
và mỗi neuron ẩn sẽ học một bias. Mỗi một vùng 5×5 đấy gọi là một trường tiếp
nhận cục bộ.

Một cách tổng quan, ta có thể tóm tắt các bước tạo ra 1 hidden layer bằng
các cách sau:


Tạo ra neuron ẩn đầu tiên trong lớp ẩn 1

Dịch filter qua bên phải một cột sẽ tạo được neuron ẩn thứ 2.

Với bài toán nhận dạng ảnh người ta thường gọi ma trận lớp đầu vào là
feature map, trọng số xác định các đặc trương là shared weight và độ lệch xác định
một feature map là shared bias. Như vậy đơn giản nhất là qua các bước trên chúng
ta chỉ có 1 feature map. Tuy nhiên trong nhận dạng ảnh chúng ta cần nhiều hơn
một feature map.


Như vậy, local receptive field thích hợp cho việc phân tách dữ liệu ảnh, giúp
chọn ra những vùng ảnh có giá trị nhất cho việc đánh giá phân lớp.
Trọng số chia sẻ (shared weight and bias)
Đầu tiên, các trọng số cho mỗi filter (kernel) phải giống nhau. Tất cả các nơron trong lớp ẩn đầu sẽ phát hiện chính xác feature tương tự chỉ ở các vị trí khác
nhau trong hình ảnh đầu vào. Chúng ta gọi việc map từ input layer sang hidden
layer là một feature map. Vậy mối quan hệ giữa số lượng Feature map với số lượng
tham số là gì?

Chúng ta thấy mỗi fearture map cần 25 = 5×5 shared weight và 1 shared
bias. Như vậy mỗi feature map cần 5×5+1 = 26 tham số. Như vậy nếu có 10
feature map thì có 10×26 = 260 tham số. Chúng ta xét lại nếu layer đầu tiên có kết
nối đầy đủ nghĩa là chúng ta có 28×28=784 neuron đầu vào như vậy ta chỉ có 30
neuron ẩn. Như vậy ta cần 28x28x30 shared weight và 30 shared bias. Tổng số
tham số là 28x28x30+30 tham số lớn hơn nhiều so với CNN. Ví dụ vừa rồi chỉ mơ
tả để thấy được sự ước lượng số lượng tham số chứ chúng ta khơng so sánh được
trực tiếp vì 2 mơ hình khác nhau. Nhưng điều chắc chắn là nếu mơ hình có số
lượng tham số ít hơn thì nó sẽ chạy nhanh hơn.
Tóm lại, một convolutional layer bao gồm các feature map khác nhau. Mỗi
một feature map giúp detect một vài feature trong bức ảnh. Lợi ích lớn nhất của
trọng số chia sẻ là giảm tối đa số lượng tham số trong mạng CNN.
Lớp tổng hợp (pooling layer)
Lớp pooling thường được sử dụng ngay sau lớp convulational để đơn giản
hóa thông tin đầu ra để giảm bớt số lượng neuron.


Thủ tục pooling phổ biến là max-pooling, thủ tục này chọn giá trị lớn nhất
trong vùng đầu vào 2×2.

Như vậy qua lớp Max Pooling thì số lượng neuron giảm đi phân nửa. Trong
một mạng CNN có nhiều Feature Map nên mỗi Feature Map chúng ta sẽ cho mỗi
Max Pooling khác nhau. Chúng ta có thể thấy rằng Max Pooling là cách hỏi xem
trong các đặc trưng này thì đặc trưng nào là đặc trưng nhất. Ngồi Max Pooling
cịn có L2 Pooling.
Cuối cùng ta đặt tất cả các lớp lại với nhau thành một CNN với đầu ra gồm
các neuron với số lượng tùy bài toán.


2 lớp cuối cùng của các kết nối trong mạng là một lớp đầy đủ kết nối (fully

connected layer) . Lớp này nối mọi nơron từ lớp max pooled tới mọi nơron của
tầng ra.
Cách chọn tham số cho CNN
Số các convolution layer: càng nhiều các convolution layer thì performance
càng được cải thiện. Sau khoảng 3 hoặc 4 layer, các tác động được giảm một cách
đáng kể
Filter size: thường filter theo size 5×5 hoặc 3×3
Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn
Cách cuối cùng là thực hiện nhiều lần việc train test để chọn ra được param
tốt nhất
1.4. Các loại biển báo giao thông ở Việt Nam.
Biển báo cấm
Ý nghĩa: để biểu thị các điều cấm hoặc hạn chế sự đi lại của các phương tiện cơ
giới, thô sơ và người đi bộ. Người sử dụng đường phải chấp hành những điều cấm
mà biển đã báo. 41Nhận dạng: có dạng hình trịn (ngoại trừ biển có STOP – có hình
đa giác 8 cạnh), viền đỏ hoặc xanh dương (đối với biển hết hiệu lực cấm), nền trắng
hoặc xanh dương đậm, trên nền có vẽ hình màu đen đặc trưng cho điều cấm hoặc
hạn chế.


Biển báo nguy hiểm
Ý nghĩa: cung cấp thông tin cảnh báo các tình huống nguy hiểm có thể xảy ra được
dùng để báo cho người lái xe, chủ yếu là người lái xe cơ giới biết trước tính chất
của sự nguy hiểm trên tuyến đường để phòng tránh. Nhận dạng: có dạng tam giác
đều, viền đỏ, nền vàng, trên biển có vẽ hình màu đen.

Biển báo hiệu lệnh
Ý nghĩa: cảnh báo cho người tham gia giao thông những mệnh lệnh phải thi hành.
Nhận dạng: có dạng hình trịn, khơng có viền, nền xanh lam, trên biển có vẽ hình
màu trắng.


Biển báo chỉ dẫn
Ý nghĩa: cung cấp thông tin chỉ dẫn cho người sử dụng đường biết những định
hướng cần thiết hoặc những điều có ích khác trong hành trình. Nhận dạng: có dạng
hình chữ nhật hoặc hình vng nền mầu xanh lam.

Biển báo phụ
Ý nghĩa: thường được đặt kết hợp với các biển báo nguy hiểm, biển báo cấm, biển
hiệu lệnh và biển chỉ dẫn nhằm thuyết minh bổ sung để hiểu rõ hơn các biển đó.
Nhận dạng: Khơng có hình thù đặc trưng và cố định.
2. Thiết kế xe tự hành
2.1. Tổng quan về RaspberryPi 4B+
Raspberry Pi là chiếc máy tính kích thước nhỏ được tích hợp nhiều phần cứng
mạnh mẽ đủ khả năng chạy hệ điều hành và cài đặt được nhiều ứng dụng trên nó.
Với giá chỉ vài chục USD, Raspberry hiện đang là mini computer nổi bật nhất hiện
nay. Ban đầu, tổ chức Raspberry Pi Foundation phát triển dự án Raspberry với mục


tiêu chính là giảng dạy máy tính cho trẻ em và tạo ra một công cụ giá rẻ (chỉ vài
chục USD) để sinh viên nghiên cứu học tập. Tuy nhiên, sau khi xuất hiện,
Raspberry Pi được cộng đồng đánh giá cao về tính ứng dụng với phần cứng được
hỗ trợ tốt, Pi đã nhanh chóng phát triển một cách rộng rãi. Pi phù hợp cho những
ứng dụng cần khả năng xử lý mạnh mẽ, đa nhiệm hoặc giải trí và đặc biệt cần chi
phí thấp. Hiện nay đã có hàng ngàn ứng dụng đa dạng được cài đặt trên Rasberry
Pi.
Tổ chức Raspberry Pi Foundation được thành lập năm 2009, và cùng với sự giúp
đỡ của 3 hãng cung cấp linh kiện điện tử lớn là EGOMAN, QSIDA, SONY phát
triển lên Raspberry Pi. Trên thế giới, bạn có thể tìm mua tại những nhà phân phối
của hãng như EGOMAN, ELEMENT14 hoặc RS Component. Cịn ở Việt Nam, thị
trường chưa có nhà phân phối chính hãng, nhưng bạn có thể tìm thấy 1 bản được

sản xuất tại UK ở ngay đây: Raspberry Pi . Còn bây giờ, hãy cùng chuyển qua xem
xét cấu hình phần cứng của Raspberry.
Raspberry Pi ban đầu được dựa trên hệ thống trên một vi mạch (SoC) BCM2835
của Broadcom, bao gồm một vi xử lý ARM1176JZF-S 700 MHz, VideoCore IV
GPU, và ban đầu được xuất xưởng với 256 MB RAM, sau đó được nâng cấp
(model B và B +) lên đến 512 MB. Board này cũng có socket Secure Digital (SD)
(model A và B) hoặc MicroSD (model A + và B +) dùng làm thiết bị khởi động và
bộ lưu trữ liên tục.
Phiên bản Raspberry Pi đầu tiên được phát hành tháng 2 năm 2012, và tới nay đã
có nhiều phiên bản khác nhau, với sự nâng cấp của phần cứng, cũng như hướng tới
những mục tiêu khác nhau. Phiên bản theo thứ tự ra mắt là : Pi A → Pi A+ → Pi 1
B → Pi 1B+ → Pi 2B → Pi Zero → Pi 3B → Pi 3B+ → Pi 4B+
Raspberry 4 Model B


Hình ảnh Raspberry pi 4 model B


Thông số kỹ thuật:
+ 1.5GHz quad-core 64 bit ẢM Cortex-A72 COU
+ 1GB, 2GB, 4GB of LPDDR4 SDRAM
+ Mạng không dây băng tần kép 802.11ac
+ Bluetooth 5.0
+ Hai cổng USB 3.0 và hai cổng USB 2.0
+ Hỗ trợ màn hình kép, độ phân giải lên tới 4K
+ Giải mã phần cứng HEVC video lên tới 4Kp60
+ Hồn tồn tương thích với sản phẩn Raspberry Pi phiên bản trước

Một bước tiến đáng chú ý đối với Raspberry Pi 4 là việc sử dụng trình điều khiển
Mesa Hồi V3D, được phát triển bởi Eric Anholt tại Broadcom trong năm qua. Điều

này mang lại hều lợi ích hơn, bao gồm trình duyệt web và thành phần máy tính để
bàn được tăng tốc OpenGL và khả năng chạy các ứng dụng 3D.
2.2. Giới thiệu về AlphaBot


AlphaBot dành cho Raspberry Pi là một bộ sản phẩn kết hợp với Pi để tạo thành
một robot.
Một bộ sản phẩm AlphaBot robotics có các cơng cụ hỗ trợ các chức năng sau:










Dị đường (Line tracking)
Tránh vật cản ( Obstacle avoidance)
Đo tốc độ (Speed measuaring)
Điều khiển từ xa qua hồng ngoại (IR control)
1 camera ( với 2 khớp đỡ được điều khiển bởi 2 động cơ servo) giúp robot
sử dụng các cơng cụ, thuật tốn xử lý ảnh, video.
Khe cắm module kết nối mạng mesh kohoong dây với thiết bị hoặc robot
khác.
IC LM298P làm mạch driver điều khiển động cơ.
IC TLC1543 AD cho phép Pi có thể đọc dữ liệu từ cảm biến Analog.
Hỗ trợ header cắm cho các Arduino shield



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

Raspberry Pi Interface
Arduino Interface
Motor Interface
Ultrasonic Module Interface
Servo Module Interface
Obstacle avoidance Module Interface

Speed measuaring Interface
Battery Holder
Reserved power input
Arduino expension header
UART Interface
8Pi Interface
Line tracking Module Interface
TLC 1543
LM 298P
Anti- reserve diode
Power switch
LM2598
Power Indioator
UART switch
IR control
Raspberry Pi/ Arduino colection


2.3. Giới thiệu Module Camera RaspberryPi
Tháng 4/2016, Raspberry Pi Foundation ra mắt thế hệ thứ 2 của sản phẩm Camera
Module với nâng cấp đáng kể nhất là sử dụng sensor Sony IMX219 8 Megapixel.
Hãy cùng chúng tơi tìm hiểu về sản phẩm Raspberry Pi Camera Module V2 8MP.
Raspberry Pi Camera Module V2 có một cảm biến 8-megapixel của Sony IMX219
(so với cảm biến 5-megapixel OmniVision OV5647 trên Camera Module phiên
bản cũ).
Camera Module có thể được sử dụng để quay video độ nét cao, cũng như chụp
hình ảnh tĩnh. Nó khá dễ dàng để sử dụng cho người mới bắt đầu, nhưng cũng có
rất nhiều giải pháp mở rộng để cung cấp cho người dùng yêu cầu cao. Có rất nhiều
demo của người dùng về công dụng của Camera Module như chụp TimeLapse, Slow-Motion và rất nhiều ứng dụng khác. Bạn có thể tham khảo
thêm hướng dẫn sử dụng để tạo các hiệu ứng với chiếc camera này.

Raspberry Pi Camera Module V2 là một bước nhảy vọt về chất lượng hình ảnh,
màu sắc trung thực và hiệu suất ánh sáng thấp . Đặc biệt nó hỗ trợ video lên tới
1080P30, 720P60 và video mode VGA90, cũng như chế độ chụp hình. Dĩ nhiên,
nó vẫn sử dụng đoạn cáp 15cm qua cổng CSI trên Raspberry Pi.
Chiếc camera này tương thích với tất cả các phiên bản của Raspberry Pi.
Thơng số kỹ thuật:








Ống kính tiêu cự cố định
Cảm biến độ phân giải 8 megapixel cho khả năng chụp ảnh kích thước 3280
x 2464
Hỗ trợ video 1080p30, 720p60 và 640x480p90
Kích thước 25mm x 23mm x 9mm
Trọng lượng chỉ hơn 3g
Kết nối với Raspberry Pi thông qua cáp ribbon đi kèm dài 15 cm
Camera Module được hỗ trợ với phiên bản mới nhất của Raspbian


Cắm 15 chân cửa cable tới cổng CSI(Camera Serial Interface). Khi kết nối,
bạn có thể truy cập tới vào máy ảnh thông qua Multi-Media Abstraction Layer
(MMAL) hoặc Video for Linux (V4L) APIs. Ngồi ra có những thư viện như
Picamera Python, và nhiều nguồn khác mà bạn có thể tìm thấy trực tuyến.

Chương III. PHÁT HIỆN LÀN ĐƯỜNG

Phát hiện làn đường là một nhiệm vụ quan trọng đối với việc phát triển hệ
thống ơtơ tự lái nói riêng và đối với thị giác máy tính nói chung. Trong bài
viết này, chúng ta sẽ xây dựng một model để phát hiện các vạch kẻ làn
đường trong thời gian thực bằng cách sử dụng thư viện openCV. Để phát
hiện làn đường, chúng ta phải phát hiện các vạch trắng ở cả hai bên trên làn
đường.
1.

Thư viện và ứng dụng vào đề tài.


×