Как построить модель прогнозирования движения для автономных транспортных средств

Введение и руководство по обучению моделей прогнозирования движения машинного обучения с использованием набора данных прогнозирования Lyft Level 5

Лука Бергамини, инженер-программист; Владимир Игловиков, инженер-программист; Филип Гласек, технический директор; и Питер Ондруска, руководитель отдела исследований 5-го уровня

Прогнозирование поведения транспортных агентов вокруг автономного транспортного средства (АВ) - одна из ключевых нерешенных проблем на пути к достижению полной автономности вождения. С нашими Набором данных для прогнозирования и L5Kit вы можете начать построение моделей прогнозирования движения в свободный полдень или выходные, даже если у вас нет опыта работы с AV. В случае успеха вы можете помочь продвинуть индустрию самоуправления вперед в целом и даже выиграть часть нашего призового фонда в размере 30 000 долларов, если ваше решение окажется среди лучших в нашем конкурсе Kaggle.

Что такое прогнозирование движения и почему оно важно?

Начнем с того, как работает беспилотный автомобиль. В рамках AV-стека первым шагом к созданию автономной системы является восприятие (определение того, что нас окружает). Следующие две задачи - это прогнозирование (определение того, что будет дальше) и планирование (определение того, что AV собирается делать в будущем). Мы сосредоточены на этой второй задаче.

АВ должны уметь предсказывать будущее - водители постоянно делают это подсознательно. Представьте себе AV, пытающийся повернуть налево, в то время как другая машина приближается с противоположной стороны. Чтобы AV мог безопасно выполнить этот маневр, ему необходимо определить, повернется ли другой автомобиль направо или продолжит движение прямо и будет мешать левому повороту. Это как раз то, о чем идет речь в прогнозировании движения.

Хотя в отрасли считается, что восприятие готово к производству, прогнозирование и планирование все еще нуждаются в улучшении. Почему эти более поздние части стека AV все еще не решены для AV?

Сегодня модели для прогнозирования и планирования движения в основном строятся с использованием систем, основанных на правилах. Однако будущее неопределенно, и правила не всегда могут хорошо сочетаться с неопределенностью. По мере того, как вы добавляете в смесь других агентов, количество правил и затрат растет в геометрической прогрессии. Подход с глубоким контролируемым обучением может решить эту проблему, но вам понадобится много данных, чтобы правильно фиксировать редкие и неожиданные поведения на дороге. Хорошие новости: наш набор данных прогнозов является самым большим в своем роде и включает в себя эти редкие варианты поведения.

Обучение вашей модели

Чтобы обучить свою модель, вам необходимо:

  1. Скачать набор данных прогнозирования Lyft Level 5
  2. Получение входных и выходных данных для Задачи
  3. Определите модель
  4. Обучите модель

Мы подготовили Блокнот Jupyter, чтобы упростить эти шаги.

1. Загрузите набор данных прогнозирования уровня 5

Посетите нашу веб-страницу набора данных прогнозирования, чтобы зарегистрироваться и загрузить набор данных. Этот набор данных включает данные о более чем 1000 часов вождения на расстояние более 16 000 миль, собранные нашим парком AV в Пало-Альто, Калифорния. Мы уже прогнали набор данных через наш внутренний производственный стек восприятия, поскольку создание моделей прогнозирования трудно эффективно выполнять, начиная с необработанных данных. Это означает, что вы можете немедленно приступить к построению моделей прогнозирования движения для транспортных агентов, уже определенных в наших выходных данных о восприятии, и измерить свой прогресс в соответствии с нашей достоверной информацией.

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

2. Получение входных и выходных данных для задачи.

Набор данных прогнозирования регистрирует мир вокруг AV с разными отметками времени. Каждая временная метка включает:

  1. Кадр
    Кадр - это запись самого АВ. Он содержит его местоположение и вращение, а также список всех агентов и светофоров, обнаруженных вокруг него в этот момент.
  2. Агенты
    Агент - это движимая сущность в мире. Агенты помечаются классом (автомобиль, пешеход и т. Д.) И информацией о местонахождении. Агенты также имеют уникальные идентификаторы, которые отслеживаются между последовательными кадрами.

Получить информацию для фреймов и агентов так же просто, как запустить этот фрагмент кода:

Обычно при работе с AV-данными используется растеризация с высоты птичьего полета (BEV) для входных данных системы, которая состоит из видов сцены сверху вниз. Это упрощает построение ваших моделей, поскольку координатные пространства ввода и вывода совпадают.

Подготовка BEV и выходных траекторий для обучения DCNN - это вопрос или несколько строк:

Входные BEV, наложенные на наши семантические карты HD, выглядят следующим образом:

3. Определите модель.

Определите модель для обучения, используя ваши входы и выходы. Вы можете создать простую базовую линию, адаптируя стандартную архитектуру CNN (например, ResNet50) к вашим потребностям. Хотя вы можете оставить центральную часть сети как есть, вам нужно будет изменить ее входной и выходной уровни в соответствии с вашими настройками.

Для этого сопоставьте количество каналов в первом сверточном слое с количеством каналов в BEV. Трехканального сверточного слоя недостаточно для растеризации различной семантической информации в разных слоях. Затем убедитесь, что количество выходных данных соответствует вашему будущему горизонту прогнозирования, умноженному на каждый элемент временного шага (в приведенном ниже примере используются смещения XY). Для горизонта в 50 шагов вам понадобится 100 нейронов на последнем уровне нашей сети.

В PyTorch это выглядит так:

4. Обучите модель.

Теперь вы готовы обучить базовую модель на данных. В модель будут поступать входные данные BEV, и ее попросят спрогнозировать будущие траектории. Вы можете установить критерий среднеквадратичной ошибки (MSE) и оптимизировать сеть с помощью оптимизатора ADAM. В PyTorch это выглядит так:

Мы также можем построить прогнозируемые траектории на растрах BEV с центром вокруг AV после нескольких итераций.

Мы провели живую демонстрацию (переходите к 20:19), если вы хотите более глубоко погрузиться в нашу кодовую базу и набор данных.

Сделайте шаг вперед в своей модели

Вот несколько идей и советов, как улучшить вашу модель и поэкспериментировать с ней:

  • Просто замените первый и последний слой, если вы стремитесь к скорости и хотите заменить ResNet на более легкий EfficientNet.
  • Хотите узнать, может ли история агентов повысить производительность? Это просто вопрос изменения значения конфигурации, и все работает "из коробки".
  • Вы можете увеличить разрешение растра и даже изменить его соотношение сторон, если он выглядит слишком грубым.
  • Разве одной траектории на агента недостаточно, чтобы уловить неопределенность? Мы уже предоставляем метрики для оценки многомодальных прогнозов, поэтому вы можете сразу узнать, улучшится ли ваша модель.

Примите участие в конкурсе Kaggle

Теперь, когда у вас есть готовая модель, готовы ли вы принять вызов? Наш конкурс Kaggle продолжается, и участники уже бьют рекорды в таблице лидеров. Количество заявок быстро увеличивается, и осталось еще 2 месяца, чтобы побороться за призы в размере 30 000 долларов США.

Вот несколько советов, если вы никогда не отправляли сообщения в Kaggle:

  • Добавьте свой номер телефона, чтобы разблокировать обучение графическому процессору, если вы еще не зарегистрированы на Kaggle.
  • Наш L5Kit уже включен в среду Kaggle, поэтому вы все равно можете использовать свой локальный рабочий процесс.
  • Если вам интересно узнать о решениях для лучших бомбардиров, скорее всего, они уже поделились ими в разделе блокнотов. Это хорошее место для начала, если вы ищете вдохновения.
  • У нас есть специальный рабочий процесс TPU, если вы оказались звездой TPU!

Мы рады возможности предоставить исследовательскому сообществу возможность вводить новшества, освещать важные нерешенные проблемы в области самоуправления и продвигать отрасль самоуправления вперед в целом с помощью этого набора данных и конкуренции. Мы желаем вам удачи в конкурсе и не можем дождаться, чтобы увидеть, что вы придумаете, создавая свои модели!

Подпишитесь на @ LyftLevel5 в Твиттере и в этом блоге, чтобы получить дополнительную информацию об автономном вождении в Lyft, и посетите нашу страницу вакансий, чтобы увидеть открытые должности на уровне 5.