Lớp đầu tiên thực hiện chuẩn hóa tất cả các ảnh có giá trị pixel từ -1 đến 1. Các lớp pooling được thiết kế bằng thực nghiệm, tác giả sử dụng kernel có kích thước 5x5 với không bước trượt cho lớp đầu tiên, những kernel có kích thức là 3x3 và cũng không có bước trượt. Độ sâu tương ứng của mỗi lớp là 16, 32 và 64.
Các lớp max-pooling được xen kẽ với các lớp tích chập. Lớp max-pooling là một trong những công cụ mạnh mẽ thường được CNN sử dụng. Đây là một phương pháp thay đổi kích thước hình ảnh lớn nhưng giữ lại thông tin quan trọng nhất về chúng. Nó liên quan đến việc trượt một khung cửa sổ nhỏ dọc theo một hình ảnh và nhận được giá trị tối đa từ cửa sổ ở mỗi bước. Sau khi gộp, một hình ảnh sẽ có khoảng một phần tư pixel so với đầu. Điều này làm giảm số lượng hyperparameters cần phải tính toán, từ đó giảm thời gian tính toán và tránh việc overfitting. Tất cả các lớp max-pooling được chọn với kernel là 2x2 và không bước trượt.
Các lớp được kết nối hoàn toàn được thiết kế với việc giảm dần kích thước: 19456 và 500. Lớp đầu ra chắc chắn là 1 nơtron vì mô hình của chúng tôi dự đoán một giá trị như một lệnh điều khiển đầu ra cho góc lái.
Bên cạnh đó, chúng tôi cũng sử dụng kích hoạt lớp là ELUs (đơn vị tuyến tính theo cấp số nhân) theo từng lớp co giãn để cải thiện sự hội tụ. Các ELU chức năng cố gắng kích hoạt trung bình gần bằng không để tăng tốc độ học tập. Nó đã được chỉ ra rằng ELUs có thể có được độ chính xác phân loại cao hơn so với ReLUs [10]. Đầu ra của một lớp ReLU có cùng kích thước với đầu vào, sự khác biệt là tất cả các giá trị âm của hình ảnh sẽ bị xóa ngay sau đó.
x; x 0
f ( x) (4)
a(ex 1); x 0 Với a là siêu tham số và một điều kiện là a 0
Đối với đề tài này, chúng tôi đã sử dụng hàm MSE (Mean-Square-Loss) Chức năng này thông thường sử dụng cho các bài toán hồi quy mà chỉ đơn giản là giá trị trung bình của tổng bình phương khác biệt giữa kết quả thực tế và dự đoán.
1 2
MSE yi yi (5)
n
Để tối ưu hóa sự mất mát này, thuật toán tối ưu hóa Adam đã được sử dụng. Thuật toán tối ưu hóa này thường được chọn cho ứng dụng học tập sâu. Tác giả sử dụng các tham số mặc định của Adam cung cấp trong Keras (learning rate of 0.001,1 0.9 ,2 0.999 , 1e 8 and decay = 0) [11].
Mạng nơron giải mã chứa nhiều lớp ẩn phi tuyến tính, điều này làm cho chúng trở thành các mô hình phức tạp và dẫn đến các mối quan hệ phức tạp giữa đầu vào và đầu ra của chúng. Để làm cho kiến trúc mạnh mẽ hơn và để ngăn chặn vấn đề overfitting, các lớp dropout được thêm vào mạng được thực hiện. Việc bỏ học sẽ vô hiệu hóa các tế bào thần kinh trong mạng bằng một xác suất nhất định và ngăn cản sự đồng thích hợp của các đối tượng. Đối với nghiên cứu này, tác giả áp dụng tỷ lệ dropout là 20% [12] (Hình 4.4).
a) b)
Hình 4.4: Lớp dropout. a) mạng nơ-ron tiêu chuẩn, b) mạng nơ-ron sau khi áp dụng dropout
4.4. Phần mềm và các thư viện sử dụng để lập trình 4.4.1. Giới thiệu thư viện Tensorflow
TensorFlow là một thư viện phần mềm mã nguồn mở dành cho máy học trong nhiều loại hình tác vụ nhận thức và hiểu ngôn ngữ.
Chạy trên desktop Linux hoặc Mac OS X 64-bit hoặc các hệ thống máy chủ, cũng như trên các nền tảng điện toán di động, bao gồm Android và iOS của Apple.
TensorFlow có thể chạy trên nhiều CPU và GPU.
TensorFlow cung cấp một API Python, cũng như một ít tài liệu API C/C++.
4.4.2. Giới thiệu thư viện Keras
Keras là một framework machine learning được viết bằng Python nhằm giảm thiểu thời gian giữa việc lên các ý tưởng và giai đoạn thực hiện chúng. Nó bao gồm hai API high-level: Keras Sequential và Keras Functional.
Nó có thể sử dụng chung với các thư viện Deep Learning nổi tiếng như Tensorflow.
Dễ sử dụng, xây dựng model nhanh. Keras có thể run trên cả CPUvà GPU.
Chương 5: THỰC NGHIỆM
Trong chương này, dữ liệu thu thập được sử dụng để huấn luyện kiến trúc mạng trong chương 4 và kết quả thực nghiệm sẽ được trình bày. Điều này bao gồm (1) môi trường thực nghiệm để thu thập dữ liệu, (2) mô tả tập dữ liệu, (3) phương pháp để tạo ra các nhiều dữ liệu khác nhau, (4) kết quả của quá trình huấn luyện và thử nghiệm.
5.1. Môi trường thực nghiệm
b)
a) c)
Hình 5.1: Quỹ đạo thực nghiệm 1: (a) Quỹ đạo hình bầu dục.(b) góc rẽ của đường đi .(c) mô hình xe đang di chuyển theo quỹ đạo
b)
a) c)
Hình 5.2:Quỹ đạo thực nghiệm 2: (a) quỹ đạo hình số 8. (b) và (c) biển báo hiệu chỉ đường
Để thu thập dữ liệu đào tạo, chúng tôi điều khiển mô hình xe tự hành theo quỹ đạo ngoài trời được tạo trên mặt phẳng rải nhựa để thu thập hình ảnh có đánh dấu thời gian.
Đường viền hình bầu dục là một đường dài 50 mét và rộng 70 cm với đường viền trong dải băng rộng 10 cm như trong Hình 5.1. Chiếc xe có thể được điều khiển để rẽ trái hoặc rẽ phải trong các đường cong bán kính 3 mét tại một thời điểm. Đường viền hình số 8 bao gồm hai vòng tròn tạo hình thành một giao lộ ngang tiếp tuyến được thể hiện trong Hình 5.2. Quỹ đạo dài 40 mét này có cả đường cong bên phải và bên trái. Bán kính đường cong là 3 mét. Có bốn biển báo giao thông có đường kính 15 cm được dựng lên trên các mép ngoài của đường để hướng dẫn cho xe.
5.2. Mô tả tập dữ liệu
Chuẩn bị dữ liệu là vấn đề rất cần thiết khi làm việc với các mạng học tập sâu. Raspberry Pi ghi lại hình ảnh và thông tin lái xe từ người dùng bằng tay lái xe xung quanh đường đua với tốc độ 5-6km / h. Dữ liệu được thu thập chứa hơn 15.500 hình ảnh ghép lại với góc lái. Độ phân giải ban đầu của hình ảnh là 160x120. Pi Camera được cấu hình để chụp ở tốc độ 10 khung hình / giây với thời gian phơi sáng 5000us để tránh hiện tượng mờ do rung động khi xe lái trên đường. Các hình ảnh mẫu của tập dữ liệu này được thể hiện trong Hình 5.3.
Hình 5.3: Tập dữ liệu thu thập được: (a) là các mẫu từ tập dữ liệu lái xe. (b), (c) và (d) là những hình ảnh điển hình trong tập dữ liệu
5.3. Các phương pháp để tạo ra các nhiều dữ liệu khác nhau
Mô hình học tập sâu có xu hướng vượt quá tập dữ liệu nhỏ vì có quá ít mẫu để đào tạo, dẫn đến một mô hình có hiệu suất tổng quát kém. Tăng cường dữ liệu là một công nghệ chuyên dụng tạo ra nhiều trường hợp dữ liệu huấn luyện hơn bằng cách tạo ra các mẫu mới thông qua việc biến đổi ngẫu nhiên các mẫu hiện có. Phương pháp này làm tăng số lượng của tập huấn luyện. Các phép biến đổi thông thường là là lật ngang, điều chỉnh độ sáng, tạo bóng ngẫu nhiên, thay đổi chiều cao và chiều rộng của ảnh (hình 5.4).