Целью этого проекта является обучение глубокой нейронной сети и сверточной нейронной сети клонированию поведения вождения.

Процесс разработки этого проекта:
1. Сбор данных
2. Создание модели
3. Использование модели для автономного управления автомобилем.

Все вышеперечисленные шаги можно выполнить на локальном ноутбуке, вам не нужно разрабатывать и запускать свой код в рабочей области, если вы хотите сэкономить время на использовании графического процессора в рабочей области. Если вы используете Mac, вы можете проверить использование графического процессора в мониторе активности.

Сбор данных
Сбор данных для обучения является необходимым условием для построения любой модели ML/DL. Udacity предоставляет симулятор, в котором мы можем управлять автомобилем по трассе для сбора тренировочных данных. Вам необходимо собрать достаточное количество и хороших данных, чтобы построить хорошую модель.

В: Что такое хорошие данные?
В этом проекте наша цель — позволить автомобилю двигаться автономно по центральной полосе как можно дольше. Когда вы управляете автомобилем в режиме обучения, вам лучше вести машину по центру полосы движения, потому что поведение автомобиля настолько хорошо, насколько хорошо поведение водителя, предоставившего данные.
Однако, если вы тренируетесь все данные сосредоточены на движении по центру полосы, у модели не будет возможности научиться возвращаться обратно к центру полосы, если она уйдет на левую или правую сторону дороги. Так что нам нужно сделать восстановительные круги.
Еще одна хитрость, которую вы можете применить, — это движение против часовой стрелки. Если вы несколько раз проедете на машине по трассе один, то обнаружите, что большую часть времени вы поворачиваете налево, поэтому трасса имеет уклон влево. Один из способов борьбы со смещением — развернуть автомобиль и двигаться против часовой стрелки по трассе, это может позволить модели научиться избегать смещения влево и лучше обобщать.

Вопрос. Каких данных достаточно?
Эта модель выводит одно непрерывное числовое значение. В качестве показателя ошибки можно использовать среднеквадратичную ошибку. Если эта метрика ошибки низкая на тренировочном наборе, но высока на проверочном наборе, что означает переподгонку модели, вам нужно собрать больше данных, чтобы улучшить модель.
Когда я обучаю модель, среднеквадратическая ошибка низка на обоих тренировочный и проверочный наборы, но машина постоянно падает на последних двух кривых. Поэтому я собираю больше данных специально для этих двух кривых.

В заключение, вот как я собираю данные:
1. Три круга вождения по центральной полосе.
2. От одного до двух кругов восстановительного вождения с левой и правой сторон.
3. Шесть. круги специально для последних двух кривых.

Увеличение данных
Я упомянул, как мы собираем данные, чтобы избежать предвзятости при повороте влево. Также помогает перелистывание изображений в качестве увеличения данных.

Предварительная обработка данных
Размер изображений, снятых камерами, составляет 160x320, не все пиксели на изображениях содержат полезную информацию. Мы можем обрезать верхнюю и нижнюю часть изображения, чтобы модель могла обучаться быстрее.

Построить модель
Я использую CNN, созданную Nvidia, потому что эта модель лучше, чем другая, с которой я экспериментировал, а именно LeNet.
Вот архитектура модели:
— Слой Lambda для распараллеливания нормализации изображения. Он нормализует все значения пикселей в диапазоне [-1, 1]
-
A Обрезающий слой, который обрезает размер изображения до 70x25
-A Сверточный слой с ядром 5x5, шагом 2, глубиной 24 с последующей активацией RELU
-Сверточный слой с ядром 5x5, шагом 2, глубиной 36 с последующей активацией RELU
-Сверточный слой с ядром 5x5, шаг 2, глубина 48 с последующей активацией RELU
-Сверточный слой с ядром 3x3, глубина 64 с последующей активацией путем активации RELU
-Сверточный слой с ядром 3x3, глубина 64 с последующей активацией RELU
-Полносвязный слой со 100 скрытыми единицами
-Полносвязный слой с 50 скрытыми единицами
-Полностью связанный слой с 10 скрытыми единицами
- Полностью связанный слой с 1 скрытой единицей (вывод угла поворота)< br /> Проверьте этот блог для более подробной информации:



Используйте модель для автономного управления автомобилем
После обучения модели войдите в автономный режим и используйте модель для управления автомобилем. Повторите несколько раз, пока автомобиль не сможет проехать по центру полосы и плавно развернуться.
Вот видео, на котором показано, как автомобиль движется автономно по трассе.