2.4.1. CNN [20]
CNN là từ viết tắt của mạng thần kinh tích chập (Convolutional Neural Network), là một mạng cơ bản trong học sâu. Với những phương pháp lọc thông thường chúng ta phải tìm kiếm và xử lý thủ công nhưng nó chỉ vừa đủ cho việc huấn luyện. Trong khi CNN có khả năng học những bộ lọc đó hoặc đặc trưng của nó.
CNNs được sử dụng để tính toán ngõ vào thông qua các phép tính tích chập. Dữ liệu vào được nhân chập với một bộ lọc. Do đó những đặc trưng sẽ càng phức tạp dần qua từng lớp sâu bên trong. CNNs còn được dùng trong việc kết hợp với những lớp “pooling” và chúng thường có lớp “fully connected” ở cuối cùng được biểu diễn trong hình 2.6.
Tất cả những mô hình CNN đều có một kiến trúc tương tự nhau. Một CNN đơn giản là một chuỗi các lớp và ngõ ra của lớp trước trở thành đầu vào của lớp sau. Có ba loại lớp chính trong kiến trúc CNN: (1) Lớp Convolution, (2) lớp Pooling và (3) lớp Fully Connected. Những lớp này cũng được xem như là lớp ẩn (Hidden Layer).
Hình 2. 4 Kiến trúc mạng CNN [20]
2.4.2. Phân đoạn ảnh (Image Segmentation) [21]
Phân đoạn ảnh là một bước đột phá bên mảng thị giác máy tính. Nó thực hiện công việc phân chia ảnh đầu vào thành các phân đoạn để đơn giản hóa phân tích hình ảnh. Các phân đoạn đó đại diện cho các đối tượng hoặc các bộ phận của đối tượng và bao gồm các bộ pixel và siêu pixel. Cuối cùng phân đoạn hình ảnh sẽ sắp xếp các pixel thành các phần lớn hơn, loại bỏ sự cần thiết phải xem xét các pixel riêng lẻ làm đơn vị quan sát. Có hai kiểu phân đoạn ảnh: phân đoạn ngữ nghĩa và phân đoạn cá thể.
Phân đoạn ngữ nghĩa (semantic segmentation): Phân loại các pixel của một hình ảnh thành các lớp đối tượng ý nghĩa.
Phân đoạn cá thể (instance segmentation): xác định từng cá thể của mỗi đối tượng trong ảnh đó, nó khác với phân đoạn ngữ nghĩa ở chỗ không cần chia loại cho mỗi pixel đã phân cụm.
Hình 2. 5 Ví dụ minh họa về phân đoạn ngữ nghĩa
2.4.3. Bài toán phát hiện vật thể (Object Detection)
Một trong những lĩnh vực quan trọng của Trí tuệ nhân tạo (Artificial Intelligence) là thị giác máy (Computer Vision). Thị giác máy tính là một lĩnh vực bao gồm các phương pháp thu nhận, xử lý ảnh kỹ thuật số, phân tích và nhận dạng các hình ảnh, phát hiện các đối tượng, tạo ảnh, siêu phân giải hình ảnh và nhiều hơn vậy. Phát hiện vật thể có lẽ là khía cạnh đặc biệt thu hút của thị giác máy tính do số lần sử dụng trong thực tế.
Bài toán phát hiện vật thể đề cập đến khả năng của hệ thống máy tính và phần mềm để định vị các đối tượng trong một ảnh và xác định từng đối tượng. Phát hiện vật thể đã được sử dụng rộng rãi để phát hiện khuôn mặt, phát hiện xe, đếm số người đi bộ, hệ thống bảo mật và xe không người lái. Có nhiều cách để phát hiện đối tượng có thể được sử dụng cũng như trong nhiều lĩnh vực.
Việc áp dụng đột phá và nhanh chóng của học sâu vào năm 2012 làm bàn đạp để thúc đẩy sự ra đời các thuật toán và phương pháp phát hiện đối tượng hiện đại có độ xác cao như R-CNN, Fast-RCNN, Faster-RCNN, RetinaNet và tốc độ xử lý nhanh như SSD. Có hàng triệu chuyên gia lập trình và các nhà phát triển phần mềm muốn tích hợp và tạo ra các sản phẩm mới sử dụng phát hiện vật thể.
2.4.3.1. Giới thiệu SSD [22]
SSD viết tắc của Single Shot Multi-Box Detector [8], là một phương pháp trong lĩnh vực học sâu nhằm giải quyết bài toán phát hiện vật thể.
Cũng giống như hầu hết các kiến trúc phát hiện vật thể khác, đầu vào của SSD là tọa độ “bounding box” của vật thể (hay còn gọi là “offsets” của “bounding box”) và nhãn của vật thể chứa trong bounding box. Điểm đặc biệt làm nên tốc độ của SSD là mô hình sử dụng một mạng thần kinh duy nhất. Cách tiếp cận của nó dựa trên việc nhận diện vật thể trong các “features map” (là một ngõ ra được định dạng ba chiều của một mạng CNN sau khi bỏ các lớp fully connected cuối) có độ phân giải khác nhau. Mô hình sẽ tạo ra một lưới các ô vuông gọi là “grid cells” trên các features map, mỗi ô được gọi là một cell và từ tâm của mỗi cell xác định một tợp hợp các boxes mặc định (default boxes) để dự đoán khung hình có khả năng bao quanh vật thể. Tại thời điểm dự báo, mạng thần kinh sẽ trả về hai giá trị đó là: phân phối xác suất nhãn của vật thể chứa trong bounding box và offsets của nó. Quá trình huấn luyện cũng là quá trình tinh chỉnh xác suất nhãn và bounding box về đúng với các giá trị thực của ngõ vào của mô hình (gồm nhãn và offsets của bounding box).
Thêm nữa, mạng được kết hợp bởi rất nhiều các features map với những độ phân giải khác nhau giúp phát hiện được những vật thể đa dạng các kích thước và hình dạng. Trái với mô hình fast R-CNN [23], SSD bỏ qua bước tạo mặt nạ ‘region proposal network” để đề xuất vùng vật thể. Thay vào đó tất cả quá trình phát hiện vật thể và phân loại vật thể được thực hiện trong cùng một mạng. Bản thân tên của mô hình - Single Shot MultiBox Detector cũng nói lên được rằng mô hình sử dụng nhiều khung hình box với tỉ lệ “scales” khác nhau nhằm nhận diện vùng vật thể và phân loại vật thể, giảm thiểu được bước tạo “region proposal network” so với fast R-CNN nên tăng tốc độ xử lý lên nhiều lần mà độ chính xác vẫn đảm bảo.
Dưới đây là kiến trúc của mô hình:
2.4.3.2. Một số kiến trúc mạng sườn (backbone network)
Mạng “backbone” là một mạng dùng để trích xuất đặt trưng, sử dụng kiến trúc mạng học sâu (deeplab architecture). Ví dụng như mobilenet, RFB, resnet, VGG-16, … a) Kiến trúc mobilenet [24]
Hình 2. 7 Ứng dụng của Mobilenet trên thiết bị thông minh [24]
Mạng mobilenet là một mạng đặc biệt hiệu quả dành cho điện thoại, các hệ thống nhúng so với các mạng thông thường như VGG-16, ResNet, …
Mobilenet dựa trên kiến trúc “streamlined”, nó sử dụng các tính chập “depth- wise separable” để xây dựng một mạng thần kinh với rất ít trọng số. Có hai siêu tham số (hyper-parameters) cần chú ý trong Mobilenet là “latency” và “accuracy”, chúng là hai mặt đối lập của nhau. Những “hyper-parameters” này cho phép chúng ta lựa chọn kính thước của mô hình cho từng ứng dụng dựa trên sự phức tạp của vấn đề.
Mobilenet version 1 là tiền đề để sinh ra một mobilenet version 2 hiệu quả và mạnh mẽ hơn. Nó cũng dựa trên ý tưởng dùng những lớp chập “depth-wise separable” nhưng ở bản nâng cấp này có hai điểm mới trong kiến trúc đó là (1) “linear bottlenecks”
ở giữa các lớp, (2) “shortcut connections” giữa các bottlenecks. Dưới đây là kiến trúc của mobilenet version 1 và 2.
Hình 2. 8 Kiến trúc mạng mobilenet version 1 [24]
b) RFB [25].
RFB là viết tắt của Receptive Fields Block. Đây là một mạng lấy ý tưởng từ kiến trúc của Receptive Fields (RFs) trong hệ thống “human visual”. Mạng dựa trên mối quan hệ giữa kích thước và độ lệch tâm của RFs để tăng khả năng phân biệt các đặc trưng.
Hay nói sâu hơn, RFB là khối tích chập đa nhánh, cấu tạo của nó có thể được chia thành hai phần: (1) lớp tích chập đa nhánh (multi-branch convolution layer) với các kernel khác nhau và (2) “trailing dilated pooling” hoặc các lớp chập. Dưới đây là kiến trúc của RFB:
Hình 2. 10 Kiến trúc của RFB [25].
2.4.4. Phương pháp tối ưu
2.4.4.1. Gradient Descent [26]
Huấn luyện mạng giống như dạy con người cách học. Chúng ta đưa ra dữ liệu để mô mình hóa, nó sẽ dự đoán và phản hồi lại cho chúng ta có phải dự đoán đó là đúng hay không. Việc này sẽ lặp lại đến khi mô hình chạm đến độ chính xác mà chúng ta mong muốn. Mỗi lần lặp lại, “Optimizers” sẽ cập nhật trọng số để làm cho hàm mất mát là nhỏ nhất. Hàm mất mát đóng vai trò như người hướng dẫn để “optimizer” biết có phải nó đang đi đúng hướng để chạm đến đáy của đồ thị, giá trị vùng nhỏ nhất. Để đạt được điều này, chúng ta phải sử dụng Gradient Descent (GD) hoặc những thay đổi của GD.
GD là một thuật toán tối ưu của máy học, lặp đi lặp lại để giảm giá trị của hàm mất mát. Một vài loại GD thường gặp:
Stochastic gradient descent (SGD)
Batch gradient descent
Mini-batch gradient descent
2.4.4.2. Optimizer: Adam [27]
Adaptive Moment Estimation (Adam) là một tổ hợp của Adagrad, làm việc rất tốt trên những đoạn dóc thưa thớt, với RMSprop, làm viêc tốt trong việc cài đặt trực tuyến và thay đổi. Adam thiết lập một hàm số mũ trung bình cho độ dóc (gradient) để thay đổi “learning rate” thay vì một hằng số như trong Adagrad. Nó giúp giữ trung bình phân rã theo cấp số nhân của “gradient” trước đó.
Thuật toán Adam trước hết cập nhật một hàm số mũ trung bình trượt cho gradient (mt) và bình phương gradient (vt). Siêu tham số (hyper-
parameters) β1, β2 ∈ [0,
1) điều khiển tỉ lệ phân rả theo cấp số nhân của trung bình trượt được biểu diễn như sau:
=1∗ −1+(1−1)∗
Giá trị trung bình trượt được khởi tạo là 0 sẽ dẫn đến việc tính toán bị lệch xung quanh
1và đặc biệt là trong thời gian khởi tạo. Xu hướng khởi tạo này có thể dễ dàng bị phản tác dụng dẫn đến ước tính điều chỉnh bị sai lệch.
Trong đó: , là ướt tính điều chỉnh sai lệnh.
Tham số được cập nhật được biểu diễn theo công thức dưới đây:
∗ θ +1= −√ +
2.5. GIẢI THUẬT ĐIỀU KHIỂN PID [28]
(6) (7)
PID là viết tắt cửa Proportional – Integral – Derivative. Giống như cái tên, kỹ thuật PID là sự kết hợp của tỉ lệ, tích phân và vi phân để điều chỉnh sai số thấp nhất có thể nhằm hạn chế sự giao động, tăng tốc độ đáp ứng cũng như giảm độ vọt lố. Kỹ thuật PID có hồi tiếp vòng kín được sử dụng rộng rải trong hệ thống điện, tự động hóa, điệu tử, …
Một các đơn giản để hiểu PID:
P: là thông số điều chỉnh tỉ lệ, giúp tạo ra tín hiệu điều chỉnh tỉ lệ với sai lệch ban đầu vào theo thời gian lấy mẫu.
I: là tích phân của sai lệch theo thời gian lấy mẫu. Điều khiển tích phân là phương pháp điều chỉnh để tạo ra các tín hiệu điều chỉnh sao cho độ sai lệch giảm về 0. Từ đó cho ta biết tổng sai số tức thời theo thời gian hay sai số tích lũy trong quá khứ. Khi thời gian càng nhỏ thể hiện tác động điều chỉnh tích phân càng mạnh, tương ứng với độ lệch càng nhỏ.
D: là vi phân của sai lệch. Điều khiển vi phân tạo ra tín hiệu điều chỉnh sao cho tỉ lệ với tốc độ thay đổi sai lệch đầu vào. Thời gian càng lớn thì phạm vi điều chỉnh vi phân càng mạnh, tương ứng với bộ điều chỉnh đáp ứng với thay đổi đầu vào càng nhanh.
CHƯƠNG 3 : GIỚI THIỆU VỀ PHẦN CỨNG
3.1. TỔNG QUAN PHẦN CỨNG
Hình 3. 1 Tổng quan phần cứng
Tổng quan phần cứng được thể hiện hình 3.1 và chức năng từng phần:
Jetson TX2: Thu nhận dữ liệu từ các ngoại vi, xử lý và gửi tín hiệu cho cho phần hiển thị và phần điều khiển.
Pin Lipo: Nguồn cấp cho Jetson TX2, động cơ và bộ điều tốc của xe.
Nút nhấn, LCD: là phần tương tác giữa người dùng và chương trình điều khiển.
Cảm biến tiệm cận (cảm biến khoảng cách): tín hiệu để ngắt mềm dừng hệ thống, mỗi khi xe sắp va chạm hoặc va chạm.
MPU9250: Gửi dữ liệu về Jetson TX2 theo chuẩn I2C, để hệ thống có thông tin về hướng của xe.
3.2. CHI TIẾT PHẦN CỨNG
3.2.1. Tổng quan về xe Traxxas Desert3.2.1.1. Xe Traxxas Desert 3.2.1.1. Xe Traxxas Desert Hình 3. 2 Xe RC 1/7 Traxxas Desert Thông số kỹ thuật Chiều dài Chiều rộng Gầm cao Khối lượng Chiều cao Lốp xe
Chiều dài thanh chống sốc trước Chiều dài thanh chống sốc sau Khay đựng pin
Tính năng:
- Mô hình mô phỏng đúng với xe thật.
- Kích thước 1/7 xe thật.
- Cơ cấu truyền động giống với xe thật, bao gồm 2 bộ vi sai sau và vi sai giữa. 3.2.1.2. VXL-6S ESC Thông số kỹ thuật Điện áp vào Kích thước Khối lượng Điện áp BEC
Dòng điện liên tục BEC Dòng điện đỉnh BEC Báo pin yếu
Tính năng:
- Sử dụng được pin lên đến 6s (25.2 Volts)
- Tốc độ lên đến 50+ mph (80 kmh)
- Có tính năng bảo vệ động cơ khi chạy trong điều kiện khắc nghiệt
- Điều khiển đơn giản, dễ dàng
Công dụng:
- Điều khiển tốc độ cho động cơ chính của xe, băm xung cho servo bẻ lái
- Cấp nguồn cho động cơ từ pin
- Nhận xung điều khiển từ Jetson TX2 thông qua mạch Adapter.
3.2.1.3. Động cơ không chổi than (brushless)
Hình 3. 4 Thông số kỹ thuật RPM/Volt (Kv) Trọng lượng Chiều dài Đường kính
3.2.2. Các thiết bị trên xe
3.2.2.1. Bộ điều khiển trung tâm
Hình 3. 5 Bộ xử lý trung tâm NVIDIA Jetson TX2
Thông số kỹ thuật AI Performance GPU CPU Memory Storage Power PCIE CSI Camera Video encoder
Video decoder
Display Networking Mechanical
Công dụng: Là bộ xử lý trung tâm mạnh mẽ tích hợp để chạy các ứng dụng học sâu, trí tuệ nhân tạo và đảm nhiệm việc thu nhận dữ liệu, gửi xung điều khiển.
3.2.2.2. Cảm biến khoảng cách
Thông số kỹ thuật Điện Áp Dòng Khoảng Cách Nhiệt Độ Đường Kính Chiều Dài Chiều Dài Dây
Sơ đồ chân:
+ Dây Mầu Nâu: 5VDC.
+ Dây Mầu Xanh Dương : GND
+ Dây Mầu Đen: Tín hiệu NPN thường mở, vì vậy cần lắp thêm điện trở kéo lên nguồn khoảng R=10k (Tín hiệu ra bằng điện áp cấp nuôi cho cảm biến).
Công dụng: Đặt trước đầu xe, gửi tín hiệu True-False ngưỡng về khoảng cách về bộ xử lý. Là một thiết bị ngắt mềm an toàn, dừng xe mỗi khi xe sắp va chạm hoặc va chạm vào vật.
3.2.2.3. Cảm biến gia tốc 9 trục MPU9250
Thông số kỹ thuật
Điện áp sử dụng Điện áp giao tiếp Chuẩn giao tiếp Kích thước
Three 16-bit analog-to-digital converters (ADCs) for digitizing the gyroscope outputs
Three 16-bit ADCs for digitizing the accelerometer outputs Three 16-bit ADCs for digitizing the magnetometer outputs
Gyroscope full-scale range of ±250, ±500, ±1000, and ±2000°/sec (dps) Accelerometer full-scale range of ±2g, ±4g, ±8g, and ±16g
Magnetometer full-scale range of ±4800μT
Công dụng: các dữ liệu được gửi đến bộ xử lý trung tâm, để đo đạc và tính toán các thông số như góc nghiêng, hướng.
3.2.2.4. Pin LiPo
Thông số kỹ thuật
Thương hiệu Loại pin
Số lượng cell pin Dung lượng định mức Điện áp định mức Tốc độ xả
Kích thước Trọng lượng
Công dụng: nguồn cấp cho cả hệ thống với dòng xả cao, dòng điện xả của pin tối đa có thể lên đến 260A.
3.2.3.5. Camera astra (Kinect camera)
Hình 3. 9 Camera astra
Thông số kỹ thuật
Phạm vi FOV
RGB Image Res. Depth Image Res. Kích thước
Nguồn cấp
Công suất tiêu thụ
Hệ điều hành tương thích SDK
Công dụng: thu thập dữ liệu ảnh RGB và ảnh Depth cho bộ xử lý, để chạy các ứng dụng Computer vision và tính khoảng cách tới vật.
3.2.3 Tổng quang về mạch adapter CDS TX2
Hình 3. 10 Mạch chuyển đổi CDD
Adapter CDS có nhiệm vụ là cầu nối giữa bộ điều khiển trung tâm với các thiết bị ngoại vi
Chức năng:
- Điều khiển xung động cơ cho ESC của xe Traxxas Desert
- Điều khiển xung servo
- Header cho GPIO của mạch
- Header cho LCD
- Header cho MPU9250
+Sơ đồ kết nối mạch adapter với các thiết bị ngoại vi:
Hình 3. 11 Sơ đồ kết nối mạch chuyển đổi với thiết bị ngoại vi
Một số hình ảnh của phần cứng đặt trên xe: