Как построить модель прогнозирования движения для автономных транспортных средств
Введение и руководство по обучению моделей прогнозирования движения машинного обучения с использованием набора данных прогнозирования Lyft Level 5
Лука Бергамини, инженер-программист; Владимир Игловиков, инженер-программист; Филип Гласек, технический директор; и Питер Ондруска, руководитель отдела исследований 5-го уровня
Прогнозирование поведения транспортных агентов вокруг автономного транспортного средства (АВ) - одна из ключевых нерешенных проблем на пути к достижению полной автономности вождения. С нашими Набором данных для прогнозирования и L5Kit вы можете начать построение моделей прогнозирования движения в свободный полдень или выходные, даже если у вас нет опыта работы с AV. В случае успеха вы можете помочь продвинуть индустрию самоуправления вперед в целом и даже выиграть часть нашего призового фонда в размере 30 000 долларов, если ваше решение окажется среди лучших в нашем конкурсе Kaggle.
Что такое прогнозирование движения и почему оно важно?
Начнем с того, как работает беспилотный автомобиль. В рамках AV-стека первым шагом к созданию автономной системы является восприятие (определение того, что нас окружает). Следующие две задачи - это прогнозирование (определение того, что будет дальше) и планирование (определение того, что AV собирается делать в будущем). Мы сосредоточены на этой второй задаче.
АВ должны уметь предсказывать будущее - водители постоянно делают это подсознательно. Представьте себе AV, пытающийся повернуть налево, в то время как другая машина приближается с противоположной стороны. Чтобы AV мог безопасно выполнить этот маневр, ему необходимо определить, повернется ли другой автомобиль направо или продолжит движение прямо и будет мешать левому повороту. Это как раз то, о чем идет речь в прогнозировании движения.
Хотя в отрасли считается, что восприятие готово к производству, прогнозирование и планирование все еще нуждаются в улучшении. Почему эти более поздние части стека AV все еще не решены для AV?
Сегодня модели для прогнозирования и планирования движения в основном строятся с использованием систем, основанных на правилах. Однако будущее неопределенно, и правила не всегда могут хорошо сочетаться с неопределенностью. По мере того, как вы добавляете в смесь других агентов, количество правил и затрат растет в геометрической прогрессии. Подход с глубоким контролируемым обучением может решить эту проблему, но вам понадобится много данных, чтобы правильно фиксировать редкие и неожиданные поведения на дороге. Хорошие новости: наш набор данных прогнозов является самым большим в своем роде и включает в себя эти редкие варианты поведения.
Обучение вашей модели
Чтобы обучить свою модель, вам необходимо:
- Скачать набор данных прогнозирования Lyft Level 5
- Получение входных и выходных данных для Задачи
- Определите модель
- Обучите модель
Мы подготовили Блокнот Jupyter, чтобы упростить эти шаги.
1. Загрузите набор данных прогнозирования уровня 5
Посетите нашу веб-страницу набора данных прогнозирования, чтобы зарегистрироваться и загрузить набор данных. Этот набор данных включает данные о более чем 1000 часов вождения на расстояние более 16 000 миль, собранные нашим парком AV в Пало-Альто, Калифорния. Мы уже прогнали набор данных через наш внутренний производственный стек восприятия, поскольку создание моделей прогнозирования трудно эффективно выполнять, начиная с необработанных данных. Это означает, что вы можете немедленно приступить к построению моделей прогнозирования движения для транспортных агентов, уже определенных в наших выходных данных о восприятии, и измерить свой прогресс в соответствии с нашей достоверной информацией.
В дополнение к данным, мы также включили аэрофотоснимок и семантическую карту высокого разрешения с комментариями исследователей уровня 5. Подробнее об этом можно прочитать здесь.
2. Получение входных и выходных данных для задачи.
Набор данных прогнозирования регистрирует мир вокруг AV с разными отметками времени. Каждая временная метка включает:
- Кадр
Кадр - это запись самого АВ. Он содержит его местоположение и вращение, а также список всех агентов и светофоров, обнаруженных вокруг него в этот момент. - Агенты
Агент - это движимая сущность в мире. Агенты помечаются классом (автомобиль, пешеход и т. Д.) И информацией о местонахождении. Агенты также имеют уникальные идентификаторы, которые отслеживаются между последовательными кадрами.
Получить информацию для фреймов и агентов так же просто, как запустить этот фрагмент кода:
Обычно при работе с 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.