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

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

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.

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

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. происходящее ощущается как магия, беспилотник просто вертит рулём по одному ему известному закону, который сеть выучила, наблюдая за вождением экспертов.

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

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

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

Ещё одна сложность, на которую редко обращают внимание - симуляция. Вообще, активное использование виртуального мира для тестирования беспилотника, выглядит как правильная стратегия и сторонники 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. В любом случае, чем больше разных подходов - тем выше вероятность, что хоть кто-то решит эту задачу, и мы будет жить в более безопасном, эффективном, экологичном и интересном мире.

Комментарии (26)


  1. amarao
    23.07.2022 16:13
    +7

    то есть вместо понимания почему оно работает, мы надеемся, что "если оно раньше не сбило и дальше сбивать не будет", а на вопрос "что у неё внутри" ответ будет "неонка", ...пардон, нейронка?


    1. usego
      23.07.2022 16:20
      +9

      эм... вы описали хомо сапиенса ))


      1. amarao
        23.07.2022 16:20
        +9

        Да, и доверять им водить приходится только от безальтернативности.


        1. wormball
          24.07.2022 12:55
          +1

          Ну вот, а теперь будет альтернатива!


          1. Tarakanator
            25.07.2022 12:35

            А кого сажать, в случае смерти по вине автопилота?


  1. expdxx
    23.07.2022 16:26
    +1

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

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

    Этические вопросы пресловутой вагонетки пока, видимо, лучше вообще не поднимать.


    1. Dier_Sergio_Great
      24.07.2022 01:35

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


      1. expdxx
        25.07.2022 14:27

        Проблема в том, что даже в Москве потоп - явление не редкое летом, не говоря уже про краснодарский край и любой регион, где случаются паводки или обильные осадки.

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


  1. acc0unt
    23.07.2022 17:46

    По описанию это "Autonomy 2.0" - ну просто один в один подход абсолютистов из Tesla.


    1. Assistant_Branch_Manager Автор
      23.07.2022 20:57

      С точки зрения упора на камеры да. Но у Теслы (как я помню) не end-to-end подход, а наоборот, очень много детекторов для каждой ситуации.


      1. acc0unt
        25.07.2022 14:18

        У них как минимум одна из новых моделей - как раз практически полный end to end, жующий сырые данные с камер.


  1. Sarjin
    23.07.2022 20:12

    может ли беспилотник быть на равне с гонщиком? сегодня. трассы и гонщики наверное учат.


    1. Assistant_Branch_Manager Автор
      23.07.2022 20:54

      Наверное когда нибудь может, но сейчас беспилотники водят хуже средних водителей, до профессиональных гонщиков ещё очень далеко.


      1. d2d8
        23.07.2022 23:17

        А почему? Ведь город это 100500 разных ситуаций, а трасса - вот она. построй мат модель, симулируй сколько влезет.


        1. Assistant_Branch_Manager Автор
          23.07.2022 23:47

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

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


          1. ibrin
            24.07.2022 14:07

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


            1. agladkov
              25.07.2022 14:12
              +1

              при тех же внешних условиях

              Это собственно ключевое.
              Условия даже между кругами отличаются (ветер, пыль, температура резины и асфальта) и гонщик чувствует эти изменения изменением поведения автомобиля и таким образом всегда может ехать на «пределе», т.е. есть постоянная обратная связь, а не прошитый алгоритм.


    1. Dier_Sergio_Great
      24.07.2022 01:41

      глупость сказали. Беспилотник на гоночной трассе намного проще создать, чем беспилотник в городских условиях. Просто беспилотник для гоночных трасс будет в единичных экземплярах работать. Конечно учат, самые тупые студенты идут институт без подготовки, а профессионалы 50%-90% времени работают за столом изучая теорию.


      1. Assistant_Branch_Manager Автор
        24.07.2022 01:48

        А можете привести какое нибудь доказательство? Пример гонки где робот побил человека?


        1. Dier_Sergio_Great
          24.07.2022 03:29

          А причем тут человек? Я говорил что беспилотник для гоночной трассы проще создать чем беспилотник для города.
          Нет, примеров соревнований с человеком я не знаю.
          Это тоже самое как сравнивать беспилотник самолета(коробля) с бепилотником автомобиля для города.
          На трассе, нет пешеходных переходов, нет гаишников с палочками, нет приоритетов правого поворота, нет знаков уступи дорогу. У гоночной трассы 90% переменных отсекаются. Но ведь и гонщики на треке имеют опыт не 3х месячных курсов.
          Гонщики так же как и ИИ должны иметь опыт обкатки 10 000 - 100 000 километров.
          Разумеется что ИИ с опытом 1000 километров, не победит человека с опытом 100 000 километров.
          .
          Причем тут время реакции? Время реакции хорошее у стрекоз или мух. А человек должен иметь опыт, на основе опыта, должен иметь правильные заскриптованные навыки, и только потом эти заскриптованные навыки полезны скоростью реакции.
          Если Вы бы знали биологию, то Вы бы знали что время реакции в 18 лет выше чем у 30-40 летнего мужика.
          Но в гонках играют 30-40 летние мужики у которых время реакции меньше чем у 95% подростков. Что показывает, что время реакции обязательно, но не важно по определению. В гонке важно иметь правильную моторику.
          Вы думаете что гонщик поворачивает на повороте в момент когда пересекает угол поворота, т.е. он следит на скорости 150 км момент когда нужно поворачивать?
          Бред, мозг так не работает. Мозг так не способен работать, там реакция должна быть такой что ни один человек не сможет уследить момент поворота.
          Мозг работает по другому, мозг работает как бильярд, по принципу предсказывая траекторию и заранее, еще до совершения поворота, дает подсознанию намерение повернуть определенным образов в определенное время.
          Так вот, подсознание гонщика имеет куда меньшую реакцию чем у подростка, но благодаря правильному намерению, гонщик выполняет поворот лучше всех.
          У ИИ скорость реакции куда быстрое, условно в 1000 раз чем у человека.
          Таким образом у ИИ нет подсознания для выполнения намерения. ИИ само по себе работает как подсознание, Так как у ИИ реакция выше в 1000 раз, то у ИИ уже скорость реакции и правильные намерения уже имеют равную важность. На трасе меньше переменных, а значит езда ИИ на страсе это вопрос 5-10 лет уже. Автопроизводителям надо продавать свои автопилоты в будущем. Чтобы их продавать им надо будет делать автопилоты для гоночных трасс, чтобы делать рекламу своим автопилотам.


        1. InChaos
          25.07.2022 11:40

          https://habr.com/ru/company/skillfactory/blog/677398/

          Не авто, квадрокоптер, но по логике тут даже посложнее авто, т.к. управление в полном 3D, чисто через датчики стереозрения Intel RealSense.


      1. nik_vr
        24.07.2022 08:35

        Давайте уточним - вы говорите про езду беспилотника по пустой гоночной трассе? Потому что трасса с другими участниками - этот тот же поток в городе, только скорости повыше.


        1. RalphMirebs
          24.07.2022 10:45

          Проще. Конечно, не пустая трасса, но по сравнению с городом число / форма машин на трассе известно, нет пешеходов, кошек, перекрестков, знаков… Плюс зациклен и конечен ландшафт


        1. Sarjin
          24.07.2022 12:59

          меня устроит любой вариант где автомат обогнал проф гонщика на сложной трассе.


  1. moncruist
    24.07.2022 12:43
    +2

    Отказ от HD-карт и лидаров - это типа благо? Ну что же, удачи с кроссвалидацией объектов с камеры, когда верхние красные сигналы впередиедущего грузовика камера определит как красный сигнал светофора, вызывая экстренное торможение на трассе.


    1. InChaos
      25.07.2022 11:45

      Чтоб такой автопилот смог выехать на трассу, он как минимум должен уметь определить, что впереди движется некое транспортное средство с некоторой минимальной классификацией (трактор, фура, легковушка и т.д.) т.к. алгоритм обгона, например, сильно зависит от типа ТС спереди. А уж спутать со светофором абсолютно недопустимо.