MÁY HỌC (MACHINE LEARNING)

Một phần của tài liệu Mô hình xe tự hành (Trang 27)

2.3.1. Giới thiệu [18]

Những năm gần đây, AI - Artificial Intelligence (Trí Tuệ Nhân Tạo), và cụ thể hơn là Machine Learning (Học Máy hoặc Máy Học) nổi lên như một bằng chứng của cuộc cách mạng công nghiệp lần thứ tư (1 - động cơ hơi nước, 2 - năng lượng điện, 3 - công nghệ thông tin). Trí Tuệ Nhân Tạo đang len lỏi vào mọi lĩnh vực trong đời sống mà có thể chúng ta không nhận ra. Xe tự hành của Google và Tesla, hệ thống tự tag khuôn mặt trong ảnh của Facebook, trợ lý ảo Siri của Apple, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix, máy chơi cờ vây AlphaGo của Google DeepMind, …, chỉ là một vài trong vô vàn những ứng dụng của AI/Machine Learning.

Machine Learning là một tập con của AI. Theo định nghĩa của Wikipedia:

Machine learning is the subfield of computer science that “gives computers the ability to learn without being explicitly programmed”. Nói đơn giản, Machine Learning là mộtlĩnh vực nhỏ của Khoa Học Máy Tính, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải được lập trình cụ thể

Machine learning đã và đang gây nên cơn sốt công nghệ trên toàn thế giới trong vài năm nay. Trong giới học thuật, mỗi năm có hàng ngàn bài báo khoa học về đề tài này. Trong giới công nghiệp, từ các công ty lớn như Google, Facebook, Microsoft đến các công ty khởi nghiệp đều đầu tư vào machine learning. Hàng loạt các ứng dụng sử dụng machine learning ra đời trên mọi linh vực của cuộc sống, từ khoa học máy tính đến những ngành ít liên quan hơn như vật lý, hóa học, y học, chính trị. AlphaGo, cỗ máy đánh cờ vây với khả năng tính toán trong một không gian có số lượng phần tử còn nhiều

hơn số lượng hạt trong vũ trụ, tối ưu hơn bất kì đại kì thủ nào, là một trong rất nhiều ví dụ hùng hồn cho sự vượt trội của machine learning so với các phương pháp cổ điển.

2.3.2. SVM [19]

SVM là viết tắt của Support Vector Machine [10], đây là một thuật toán trong lĩnh vực machine learning nhằm giải quyết bài toán “binary classification” mà hai “class” là “linearly separable’, có vô số các siêu mặt phẳng (hyperplane) giúp phân biệt hai “class” này, tức mặt phân cách. Với mỗi mặt phân cách ta có một ‘classifier’. Khoảng cách gần nhất từ một điểm dữ liệu tới mặt phân cách ấy được gọi là biên của classifier đó.

SVM là bài toán đi tìm mặt phần cách so cho biên tìm được là lớn nhất, đồng nghĩa với việc dữ liệu an toàn nhất so với mặt phân cách. Bài toán tối ưu trong SVM là một bài toán lồi với hàm mục tiêu là “strictly convex”, nghiệm của bài toán này là duy nhất. Hơn nữa, bài toán tối ưu đó là một ‘Quadratic Programming’ (QP). Mặc dù có thể trưc tiếp giải SVM qua bài toán tối ưu gốc này, nhưng thông thường người ta thường giải bài toán đối ngẫu. Bài toán đối ngẫu cũng là một QP nhưng nghiệm là “sparse” nên có những phương pháp giải hiệu quả hơn.

Còn với các bài toán mà dữ liệu là “linear separable” hoặc “nonlinear separable”, có những cải tiến khác của SVM thích nghi với dữ liệu đó.

2.4. HỌC SÂU (DEEP LEARNING)2.4.1. CNN [20] 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)

Một phần của tài liệu Mô hình xe tự hành (Trang 27)

Tải bản đầy đủ (DOCX)

(85 trang)
w