Беспилотник 2.0

в 12:31, , рубрики: end-to-end, беспилотники, машинное обучение, робототехника

Или как нейронные сети спасут беспилотные автомобили

Беспилотник 2.0 - 1

Что это такое?

Autonomy 2.0 - термин, которым в последние пару лет описывают новый подход к созданию беспилотного автомобиля.

Сегодня я разберу:

  • Зачем появилась Autonomy 2.0 и в чём она заключается

  • Напомню, как устроен классический подход и с какими проблемами он сталкивается

  • В чём преимущества нового подхода и какие вызовы он несет

  • Насколько разница между подходами четко прослеживается на практике

Откуда оно появилось и в чём заключается

2.0 подход к созданию беспилотника появился как ответ на фрустрацию от медленного прогресса в отрасли. Несмотря на внушительные достижения в создании беспилотного авто и потраченные миллиарды долларов практический прогресс пока скромный. Крупнейшая компания - Waymo (подразделение Google) оперирует только в двух городах: Феникс (с 2019) и Сан-Франциско (с 2021). Следующая за ней Cruise (General Motors) только в Сан-Франциско (с 2022). Tesla, несмотря на регулярные заявления CEO Илона Маска о полной автономности через полгода, пока остаётся продвинутым круиз контролем для хайвэев и автоматической парковки.

Autonomy 2.0, как сформурованно в статье “Директора по науке” (Head of research) компании Lift (Toyota), отличается от привычного подхода:

  1. Большим упором на машинное обучение. А именно, попыткой обучать одну нейронную сеть, на вход которой подаются данные с сенсоров (обычно снимки с камер), а на выходе - траектория движения в ближайшие пару секунд. Такой подход ещё называют end-to-end, потому что вся работа происходит в одной нейросети, без промежуточных этапов реализованных, скажем, на С++.

  2. Широким использованием реалистичного симулятора (в противовес тестированию на реальных дорогах в классическом подходе).

  3. Облегчённым hardware. Вместо комбинации из нескольких лидаров, камер и радаров - только камеры. Меньше сенсоров - меньше вычислителей - проще электрика и охлаждение. Такое радикальное упрощение системы не только позволяет снизить её стоимость на пару порядков, но и облегчить установку и эксплуатацию, а, значит, позволяет сделать “беспилотными” намного больше машин и собирать данные, необходимые для обучения сети, в гораздо большем масштабе.

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

А как был устроен классический подход?

Классический подход (инженерный) - разбить большую задачу на много подзадач, четко прописав, что каждая система получает на вход и производит на выходе. Затем подсистемы соединялись (в основном последовательно) в так называемый “пайплайн”.

Нейронные сети и вообще машинное обучение, конечно, использовались, но их сфера применения была ограничена четко поставленными подзадачами. Условно, больше кода написано на С++, чем на TensorFlow/Pytorch.

Беспилотник 2.0 - 2

Схематичное описание пайплайна:

HD map. Сверхточные карты города сантиметровой точности и указанием всех полос, светофоров, ограничений скорости и т.д. Изначально карты вообще создавались вручную, позже на помощь пришла автоматика (те же нейронные сети). Карты, строго говоря, не являются частью пайплайна, так как создаются не во время поездки.

Localisation. Первый этап пайплайна - понять, где точно находится беспилотник.При наличии HD-карты не нужен ML, подойдут намного более надёжные методы оптимизации.

Perception. Следующий этап - распознать все объекты вокруг беспилотника, начиная с пешеходов, машин и сигналов светофоров на дороге, и заканчивая дорожными работниками, аварийкой и типом автомобиля. Вся информация, которая позже потребуется для принятия решения, как ехать, должна быть четко сформулирована и извлечена на этом этапе. Зачастую для каждого типа объектов существует отдельная команда, и если вы хотите, например, начать по-разному реагировать на велосипеды и самокаты, то вам придётся ждать месяцы пока новый тип объектов станет доступен далее по пайплайну. В классическом подходе perception это, по сути, единственная подзадача, решаемая с помощью машинного обучения.

Prediction. Распознать всех участников дорожного движения недостаточно, в реальном городе нужно ещё предсказать их будущее поведение. Поскольку изначально беспилотники тестировались в простых условиях, то задаче предсказания будущего уделялось мало внимания. Достаточно было предположить, что пешеходы продолжат движение по прямой, а машины - согласно своей кинематике. В последние годы в результате тестирования в больших городах оказалось, что так называемый “motion prediction” - это чуть ли не самая сложная задача в беспилотном авто и на неё обрушилась вся мощь Deep Learning (нейронных сетей).

Planning. Имея полную картину об окружающем мире и гипотезы о возможном развитии событий, следующий этап - спланировать безопасную траекторию, которая не нарушает ПДД и, что самое сложное, с наибольшей скоростью. Стоять на парковке - максимально безопасно и не нарушает ПДД, но беспилотник, который не решается выехать на дорогу, никому не нужен. Можно сказать, что вся “бизнес-логика” заключена именно в этом этапе. В классическом подходе - никакого машинного обучения, только перебор вариантов и проверка условий.

Control. Последний этап - это исполнение запланированной траектории с максимальным комфортом для пассажиров и предсказуемо для других участников дорожного движения. Эта подзадача в чем-то похожа на автопилот самолёта (удержание курса, скорости и высоты) и решается тоже классическими методами.

Чем end-to-end подход лучше?

Больше информации. Поток данных в сети принципиально никак не ограничен. Если вдруг окажется что цвет машины позволяет лучше предсказать её поведение, то сеть, имея достаточно большую обучающую выборку, успешно выучит это зависимость. Например, что водители красных спорткаров ведут себя более агрессивно. В классическом же подходе - придется переписывать все протоколы общения между подсистемами, чтобы пробросить признак “цвет” дальше по пайплайну.

Атомарность задач. Некоторые задачи вообще нельзя решить поодиночке. Например, задача предсказания движения других водителей не решается отдельно от планирования собственного движения, так как решение беспилотника, пропускать или нет другого водителя, очевидно, влияет на будущую траекторию. Но исторически сложилось, что задачу предсказания решают отдельно. Можно, конечно, позволить модулю планирования и предсказания обмениваться информацией в обе стороны, но это значительно замедляет время реакции беспилотника, поэтому всё больше исследователей пытаются решить задачу предсказания и планирования совместно, например, статья бывшей инженерки Uber, a теперь CEO своего autonomy 2.0 стартапа Waabi.

Масштабируемый сбор данных. Надежда на машинное обучение и его способность извлечь всю необходимую информацию из камер (примерно как человек), позволяет “облегчить” набор сенсоров и отказаться от дорогих, ненадёжных и сложных в обслуживании лидаров. А, значит, переделать под беспилотник на порядок больше машин и собирать данные эффективнее.

Отказ от HD карт. Тоже упрощает задачу масштабирования, особенно в те регионы, где проблемно развернуть хабы, которые необходимы для кадрирования городов.

Недостатки end-to-end подхода

К end-to-end подходу, конечно, много вопросов:

Беспилотник 2.0 - 3

Интерпретируемость. Точнее, её отсутствие. Лучше всего это заметно, если прокатиться на беспилотниках разных типов. В классическом беспилотнике во время поездки внутреннее состояние визуализируется: можно наблюдать, например, каких пешеходов беспилотник видит хорошо, а каких не очень, каким автомобилям будущее предсказывается корректно, а каким нет, и т.д. В результате, когда система ошибается, то обычно понятно, что пошло не так и какая подсистема нуждается в доработке. На контрасте, при поездке в беспилотнике 2.0. происходящее ощущается как магия, беспилотник просто вертит рулём по одному ему известному закону, который сеть выучила, наблюдая за вождением экспертов.

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

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

Такую проблему интерпретируемости часто называют ключевой сторонники классического подхода. Но на самом деле, она в последнее время всё чаще возникает и в инженерном подходе тоже. Дело в том, что современные беспилотники настолько сложны и над ними работает так много людей (тысячи в топовых компаниях), что сказать, что кто-то “понимает”, как работает классический беспилотник, уже нельзя. Аналогично и с ошибками, часто они происходят на стыке подзадач: например, беспилотник поздно среагировал на пешехода, потому что заметил его на долю секунды позже необходимого или потому что предсказание будущей траектории было неточным? Или потому что не стоило по этой улице изначально ехать с большой скоростью или, вообще, потому что камера была слегка грязная? Скорее всего, небольшая ошибка на каждой стадии внесла свой вклад и “не повезло”, что эти ошибки сложились, а не усреднились в данном случае.

Ещё одна сложность, на которую редко обращают внимание - симуляция. Вообще, активное использование виртуального мира для тестирования беспилотника, выглядит как правильная стратегия и сторонники autonomy 2.0 возлагают неё большие надежды Потенциальные преимущества симулятора перед тестированием на реальных дорогах очевидны: это безопасность, воспроизводимость и, конечно, стоимость. Главная же сложность в создании такого симулятора заключается в том, что всё богатство и разнообразие реального мира крайне сложно (и дорого) симулировать. И, как ни странно, для классического беспилотника это сделать проще: достаточно симулировать внутреннее представление, получаемое на выходе из perception. Для end-to-end подхода такой хак не подойдет, придётся симулировать фотореалистичную картину мира. Конечно, в фотореализме достигнут большой прогресс за счёт объединения традиционных подходов из геймдизайна и нейро-генерации изображения, но до целевого результата ещё далеко.

Последняя особенность autonomy 2.0, о которой мне хочется сказать, это сложность провести красивое демо. Это, с одной стороны, чуть ли не главный недостаток подхода, но и, возможно, его большое преимущество. Дело в том, что разработка беспилотника обходится очень дорого и инвесторы, конечно, хотят видеть прогресс. Поэтому все компании в индустрии наглядно этот прогресс демонстрируют, устраивая показательные заезды (не только для инвесторов, но и для чиновников и журналистов). Так вот, классический подход позволяет достаточно быстро подготовить беспилотник к проезду одного, специально выбранного маршрута. Чем, собственно, команда значительную долю времени и занимается. Задача масштабирования на другие маршруты и условия при этом, конечно, страдает, зато инвесторы охотнее дают деньги, видя как хорошо беспилотник справляется с задачей (такая печальная ситуация наблюдается во многих компаниях, с сотрудниками которых мне доводилось говорить). End-to-end подход в этом смысле хуже, так как приходится сразу решать задачу в общей постановке. С другой стороны, это позволяет команде сфокусироваться на достижении главной цели - создании беспилотного автомобиля (а не разовой демонстрации). Это определяет принципы менеджмента, влияет на создание инфраструктуры и даже на политику найма сотрудников.


В заключение мне хотелось бы отметить, что на практике разница между классическим подходом и подходом 2.0 не такая резкая. Многие классические компании тоже понемногу мигрируют в сторону большего использования машинного обучения и тестирования в симуляторе, всё меньше опираются на hd карту и больше - на perception, пытаются “выучить” правильное поведение на дороге, а не описать его правилами и т.д. Многие компании сейчас находятся где-то посередине между классическим и end-to-end подходом, и стоит говорить, скорее, об autonomy 1.4 или 1.6 vs autonomy 2.0. В любом случае, чем больше разных подходов - тем выше вероятность, что хоть кто-то решит эту задачу, и мы будет жить в более безопасном, эффективном, экологичном и интересном мире.

Автор: Gleb Zarin

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js