Некоторое время назад мне очень понравилась шутка «Беспилотный автомобиль отказался везти пассажира в фастфуд, сославшись на первый закон робототехники». Речь об одном из «законов робототехники», которые сформулировал в 1942 году американский фантаст Айзек Азимов, он формулируется так: «Робот не может причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред». Притом, что законы робототехники – это строго литературный, но не технологический феномен, мне захотелось разобрать на Хабре, как в настоящее время беспилотные автомобили подстраиваются под человеческие поступки, сосуществуют с потоками пешеходов, могут ли учиться без подкрепления и проявлять эвристику, а также какие разработки ведутся в этой области.
В настоящее время уже достаточно легко формализовать в алгоритмическом виде правила дорожного движения. Также не составляет труда оснастить автомобиль умными камерами, которые бы различали дорожные знаки и цвета светофора, заблаговременно замечали пешеходный переход и ориентировались на карте города примерно по тому же принципу, как водитель ориентируется по навигатору. Тем не менее, при обкатке беспилотного автомобиля приоритет отводится не столько обычному машинному обучению и компьютерному зрению, сколько обучению с подкреплением. Современный беспилотный автомобиль учится ездить пошагово, примерно, как ребёнок учится ходить. Основные «компетенции» беспилотного вождения заключаются в построении удобного маршрута, безаварийном движении в потоке обычных машин на оживлённых улицах и на перекрёстках, в распознавании пешеходов и избегании препятствий. Последняя задача довольно проста, может решаться при помощи лазерного дальномера (лидара), а распознавание других машин и пешеходов требует полноценного зрительного восприятия и ориентирования в потоке объектов. Нужны алгоритмы, которые позволяли бы отличать полностью неподвижные объекты (светофор) от ситуативно неподвижных (человек, остановившийся напротив светофора). Другие алгоритмы компьютерного зрения могут потребоваться
Для распознавания образов в ясную погоду, в ночное время, в дожде или тумане
Для распознавания и предугадывания маневров другого водителя, в том числе, опасных
Для распознавания детей, животных и инвалидов, в частности, колясочников
Для распознавания других автомобилей в необычных ракурсах
Для борьбы с вредоносными приёмами, специально направленными на дезориентацию беспилотного автомобиля. Примеры таких «состязательных атак» - наклеивание ярких светоотражающих стикеров на дорожный знак, ношение изображений дорожных знаков на одежде (особенно это касается знака STOP, имеющего характерную форму независимо от того, каким алфавитом на нём нанесена надпись).
В совокупности эти требования означают, что машинное зрение должно быть реализовано по образу и подобию человеческого.
Ориентирование беспилотных автомобилей обеспечивается алгоритмами машинного обучения, которые в настоящее время позволяют добиться безопасного вождения, лишь будучи тренированы на обширных специфических датасетах. В таких датасетах чрезвычайно сложно учесть все пограничные случаи и прописать порядок реагирования на неадекватные действия других водителей в потоке транспорта.
Пытаясь решить именно этот круг проблем, группа под руководством Эшеда Он-Бара из Бостонского университета предложила два нововведения. Во-первых, ограничить набор данных, на которые автомобиль будет опираться в конкретный момент времени, а во-вторых, сделать акцент не на традиционном машинном обучении, а сдвинуть его в сторону обучения с подкреплением: чтобы автомобиль осваивал дорожное движение, примерно, как ребёнок учится ходить — подражая окружающим. Такое обучение позволяет машине обобщать варианты дорожных маневров, предпринимаемых другими автомобилями и пешеходами, оценивать трафик «с разных точек зрения» и выявлять слепые пятна. При этом автомобиль руководствуется картой из навигатора, но одновременно строит актуальную карту своего ближайшего окружения, анализирует, как другие автомобили поворачивают, обгоняют и уступают дорогу.
Предложенный алгоритм позволяет автомобилю обнаруживать и обходить препятствия, а также отличать другие автомобили от пешеходов. Фактически, автомобиль экстраполирует «точки зрения» других участников дорожного движения и переводит их в собственную систему координат.
В 2021 году Эшед Он-Бар и его аспирант Цзимуян Чжан протестировали модели беспилотных автомобилей в двух виртуальных городах. Один из них был приближен по свойствам к «учебной» среде. В частности, там отсутствовали резкие повороты. Во втором случае не только предусматривались сложные перекрёстки (до пяти трасс), но и неожиданно возникающие препятствия. Тем не менее, в этой симуляции автомобиль успешно приходил к месту назначения в 92% случаев. Фрагмент такой симуляции показан ниже.
Тем не менее, свёрточные нейронные сети, лежащие в основе таких алгоритмов, не запоминают прошлого и, соответственно, не накапливают опыт, независимо от того, сколько уже раз автомобилю доводилось проезжать конкретной дорогой. Эта проблема тем более усложняется при ситуативном ухудшении видимости из-за плохой погоды.
После 2020 года исследователи из Корнельского университета (работающие в Колледже информатики и вычислительной техники и Инженерном колледже) опубликовали сразу несколько работ об инструментах, предназначенных для формирования именно таких воспоминаний у беспилотного автомобиля. Точнее, речь идёт не о воспоминаниях, а о выстраивании ретроспективы (англ. «hindsight») на основе 3D-облака точек. Такая система описана в статье «Hindsight is 20/20: leveraging past traversals to aid 3d perception», в которой тренировочным датасетом для автомобиля служат ранее пройденные маршруты (past traversals). Исходный код инструмента выложен на Github. На тренировочном пробеге автомобилем требуется управлять, но через клавиатуру и с заднего сиденья, как это демонстрирует один из участников эксперимента, Карлос-Диас Руис:
Тренировочный датасет собирали в окрестностях Итаки, штат Нью-Йорк, совершив за полтора года 40 заездов по 15-километровому кольцевому маршруту. Несмотря на то, что наряду с оптическими сенсорами машина оснащается лидаром, эти заезды показали значительную неточность при распознавании нетипичных объектов издалека. Так, если машина «видела» дерево с кроной неправильной формы, то при первом сканировании вполне могла принять это дерево за пешехода, но сама исправляла свою ошибку, подъехав поближе. Поэтому исследователи дополняли формируемый датасет и снимками, сделанными с других машин, которые также проезжали по этому маршруту.
В получившееся множество данных, названное Ithaca365, вошло более 600 000 изображений, в которых особое внимание уделено картинкам, схватывающим разные погодные условия (дорога заснежена, дождь, туман). Вот одна из картинок в качестве примера:
Алгоритм HINDSIGHT применяет нейронные сети, конструируя образы тех объектов, мимо которых проезжает автомобиль. Затем у описаний этих объектов снижается размерность (изымается часть признаков), такой подход группа назвала «SQuaSH» (Spatial-Quantized Sparse History, «разреженная пространственно-квантованная история»). Получившиеся упрощённые образы наносятся на виртуальную карту. По-видимому, очень похожий принцип заложен и в работу человеческой памяти.
Также в локальной базе данных SQuaSH сохраняются все точки, снятые лидаром на данном маршруте, и только такую позиционную информацию машина полноценно «запоминает». Эта база данных может непрерывно обновляться и совместно использоваться любыми автомобилями, на которых установлена комбинация HINDSIGHT+SQuaSH.
Описанные подходы представляются перспективными даже не столько для
автомобилей, сколько для рельсового общественного транспорта и складских
мобильных роботов (в условиях, когда вариативность окружающей среды сведена к
минимуму). Однако такое «пассивное обучение» явно недостаточно для полноценного
вождения, и далее мы рассмотрим более продвинутый подход — активное обучение.
Активное обучение
Это подкатегория машинного обучения, разновидность циклического обучения с учителем, при котором алгоритм может сам запрашивать в источнике данных новую информацию и самостоятельно размечать данные. Активное обучение позволяет значительно упростить подготовку тренировочного датасета, то есть, сильно снижает необходимый минимум данных, которые требуется разметить вручную. Активное обучение — это поступательное улучшение датасета, к тому же, легко поддающееся автоматизации. Вот как отличаются стандартное обучение с учителем и активное обучение:
Очевидно, что даже такой подход нереализуем без участия человека (учителя), но, как было рассмотрено выше на примере датасета Ithaca365, первичное множество данных автомобиль-первопроходец может собирать почти самостоятельно, лишь под присмотром аспиранта. Применяя активное обучение при работе с беспилотными автомобилями, важнее всего не ошибиться с размером того датасета, который необходимо разметить вручную. Также важно задать тот порог неопределённости при интерпретации, после которого машина обязана запрашивать новые данные. Такой подход называется «отбором по степени неуверенности» (uncertainty sampling) и реализуется при помощи трёх основных подходов (подробнее — здесь).
Наименьшая степень уверенности. При таком подходе задаётся некий (высокий) порог уверенности, и, если модель сталкивается с данными, в интерпретации которых она уверена ниже заданного порога (например, менее, чем на 99,9%), она запрашивает новые данные об объекте и приступает к их анализу.
Минимальный отступ. Данный подход призван исправить недостатки первого, и предусматривает две метки для каждого элемента данных: «наиболее вероятный» и «вторая версия». Модель может ориентироваться по двум меткам сразу и логически приходить к выводу о том, что за объект перед ней.
Энтропия. Измерение степени неопределённости для каждой отдельно взятой переменной. В таком случае степень (не)уверенности при интерпретации данных превращается в спектр. Модель определяет, чем именно данный объект является с наибольшей вероятностью, запрашивает новые данные и продолжает «развивать» именно ту «версию», которой на предыдущем шаге была присвоена максимальная вероятность.
Активное обучение применительно к беспилотным автомобилям
Вышеописанные подходы являются во многом статистическими, и поэтому даже активное обучение будет сбоить при интерпретации пограничных случаев или нелогичного поведения на дороге (со стороны пешеходов или лихачей). Сравнительно не сложно обучить ИИ следовать стандартным сценариям и распознавать объекты, фигурировавшие в тренировочном датасете. Но мы просто не найдём даже минимального исходного набора объектов, которые встречаются вот в таких ситуациях:
Осложнения могут возникать из-за необычных преград на дороге, экзотических животных или «юмористических» дорожных знаков. Кроме того, алгоритм может сбоить при интерпретации эвакуатора или трейлера для перевозки легковых автомобилей, вплоть до того, что примет такие изображения за попытку состязательной атаки (совмещение двух и более транспортных средств на одной картинке).
При применении активного обучения существенно усложняются как сама система, так и её разработка. Усложняется и сам процесс обучения, правда, результат обучения получается более качественным, что оправдывает дополнительную сложность. Тем не менее, расширяется поле для возникновения багов в коде или ошибок в интерпретации результатов. До получения первых результатов также проходит больше времени, чем при обучении с учителем.
Выше я указал, как важно при активном обучении учесть хотя бы некоторые пограничные случаи. Если хотя бы немного повысить чувствительность модели к таким случаям, то она в принципе сосредоточится на выбросах. Модель станет то и дело «запрашивать разъяснений» по выбросам, в результате они будут во всё большем количестве проникать в датасет, размечаемый человеком, и весь датасет из-за этого будет портиться.
Здесь перейдём к максимально чувствительному аспекту обучения беспилотных автомобилей – как научить машину различать пешеходов, особенно в темноте или сложных погодных условиях. В 2020 году компания NVIDIA провела исследование, подтвердившее, что при активном обучении модель научается обнаруживать пешеходов в ночных условиях втрое лучше, чем при разметке тренировочного датасета вручную. Но разброс ситуаций не ограничивается обнаружением пешеходов. Например, каким образом беспилотный автомобиль будет трактовать дорожные работы?
Если человек-водитель видит, что шоссе внезапно сужается, так как две из четырёх полос перекрыты, то он сразу же сочтёт, что впереди – авария или дорожные работы. Следовательно, впереди уже может образовываться пробка, а если её ещё нет – то впереди на дорожном полотне с высокой вероятностью находятся препятствия, строительная техника и живые люди, занятые устранением последствий аварии, дорожными работами или проверкой документов. Более того, возвращаясь к примеру с датасетом Ithaca365, такая ситуация вполне может возникнуть на хорошо известном маршруте, по которому ты курсируешь ежедневно в течение года, но ранее ничего подобного не наблюдал.
Но для беспилотного автомобиля такой «выброс в данных» — ещё полбеды. Гораздо важнее, что автомобилю придётся реагировать на изменившийся рисунок дорожного движения (перестраивание других автомобилей в потоке), а также на человеческие жесты. Жестикуляция пешеходов играет определяющую роль и в более простых ситуациях: например, человек подходит к нерегулируемому пешеходному переходу, оценивает расстояние до приближающегося автомобиля и решает этот автомобиль пропустить, совершая, как минимум, один из трёх поступков:
1) Приостанавливаясь, следя при этом за реакцией водителя – притормозит ли тот, пропуская пешехода
2) Махнув водителю рукой, в случае чего такой жест будет означать не «привет», не «стой», а «проезжай»
3) Подходя к поребрику, извлечёт из кармана смартфон и начнёт листать ленту, тем самым демонстрируя, что прямо сейчас дорогу переходить не собирается.
Интересное исследование такого рода провели в 2017 году специалисты компании Cruise. Компания занимается разработкой программного обеспечения для беспилотных автомобилей и располагает собственным парком из 200+ таких машин. В качестве испытательного полигона был выбран Сан-Франциско, расположенный в сильно пересечённой холмистой местности – отчасти именно поэтому для города характерен крайне сложный трафик и высокая плотность населения.
Cruise добавила в ПО для своих автомобилей технологию захвата движения, исходно заинтересовавшись таким казусом: допустим, один пешеход «голосует», пытаясь поймать попутную машину, а рядом с ним идёт второй пешеход. Второй пешеход заметил на противоположной стороне улицы своего знакомого – и помахал ему рукой. Каким образом беспилотный автомобиль различит два этих жеста?
Заручившись помощью 3D-художников и геймдизайнеров, компания собрала датасет из десятков жестов и поз, которые имитировались приглашёнными актёрами и записывались в память машины.
Системы захвата движения делятся на две основные категории — оптические и неоптические. При оптическом подходе используется множество камер, равномерно распределённых вокруг снимаемой сцены. На основе потокового видео, поступающего с этих камер, можно с высокой точностью (методом триангуляции) рассчитывать положение маркеров, расположенных на костюме. На таких снимках улавливается даже выражение лица. Именно по такой технологии моделировались движения Смауга и Голлума в фильмах по вселенной «Властелина колец», а также движения туземцев в фильмах из серии «Аватар». Тем не менее, такой подход осуществим только в студии, поэтому Cruise предпочла неоптический (сенсорный) вариант. Такая технология основана на работе с микроэлектромеханическими системами (MEMS) – портативными, беспроводными и не требующими никакой студии. Такие системы также внедряются в костюм, который содержит 19 наборов сенсоров, подключаемых к голове, торсу и конечностям. В каждом пакете размером с небольшую монету — акселерометр, гироскоп и магнетометр. В одном экземпляре на весь костюм предусмотрены батарея (на поясе), шина передачи данных и модуль Wi-Fi.
Такой подход позволил научить автомобиль распознавать самые разные действия, в том числе:
1) Попытку поймать такси
2) Скроллинг телефона при прогулке
3) Выход на проезжую часть, если асфальт перегорожен из-за строительных работ
4) Жест, которым парковщик указывает, куда именно должна встать машина
Заключение
Все описанные здесь опыты оказались удачными хотя бы настолько, чтобы стать материалом для научной работы, proof-of-concept или дальнейших разработок. Могу предположить, что эти наработки в большей степени применимы к сравнительно тихоходному грузовому транспорту либо к мобильным роботам, обслуживающим склады, аэропорты или торговые центры. Кроме того, учитывая, что машина вполне уверенно ориентируется на многократно пройденном маршруте, подобный робот мог бы заменить человека в труднодоступных местах, например, в пещерах или под водой. Но пока проблем явно больше, чем решений, и я приглашаю вас обсудить их в комментариях.