Хабрахабр

[Перевод] Как Tesla обучает автопилот

Цикл обучения автопилота, инфраструктура сбора данных, автоматическая разметка данных, подражание водителям-людям, определение расстояния по видео, sensor-supervision и многое другое. Расшифровка 2-й части Tesla Autonomy Investor Day.


Первая часть — разработка Full Self-Driving Computer (FSDC).

Пора поговорить о том, как мы получаем изображения и как мы их анализируем. Хост: FSDC может работать с очень сложными нейронными сетями для обработки изображений. У нас здесь старший директор AI в Tesla — Андрей Карпаты, который объяснит вам все это.

В том числе в таких известных учреждениях как Стэнфорд, Open AI и Google. Андрей: Я занимаюсь обучением нейронных сетей примерно десять лет, и вот уже 5-6 лет для промышленного применения. Я проектировал архитектуры, которые объединяют эти две модальности для своей докторской диссертации. Это множество нейронных сетей не только для обработки изображений, но и естественного языка.

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

Возможно, лучший. Илон: Андрей действительно один из лучших специалистов по машинному зрению в мире.

Привет всем. Андрей: Спасибо. Моя команда отвечает за обучение этих нейросетей. Пит рассказал вам о чипе, который мы разработали специально для нейросетей в автомобиле. Это включает в себя сбор данных, обучение, и частично, развертывание.

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

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

Как работают нейронные сети

(Тут мало нового, можно пропустить и перейти к следующему заголовку)

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

Реально матрица. Илон: Матрица, если хотите.

Мы должны перейти от этой сетки пикселей и значений яркости к высокоуровневым понятиям, таким как игуана и так далее. Андрей: Да. Но игуаны могут быть изображены по-разному, в разных позах, в разных условиях освещения, на разном фоне. Как вы можете себе представить, это изображение игуаны имеет определенный шаблон яркости. Вы можете найти множество разных изображений игуаны и мы должны распознать её в любых условиях.

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

Искусственные нейронные сети представляют собой грубое математическое приближение зрительной коры. Последние лет пять, современные подходы к обработке изображений с использованием компьютеров также начали использовать нейронные сети, но в данном случае — искусственные нейронные сети. Типичная нейронная сеть включает десятки или сотни миллионов нейронов, и каждый нейрон имеет тысячи связей. Здесь тоже есть нейроны, они связаны друг с другом.

Сначала нейронные сети инициализируются совершенно случайно, все веса связей между нейронами — случайные числа. Мы можем взять нейронную сеть и показать ей изображения, например нашу игуану, и сеть сделает прогноз (prediction), что она видит. Может оказаться, что сеть думает что это, вероятно, лодка. Поэтому прогноз сети тоже будет случайным. Мы попросту говорим, что хотели бы, чтобы вероятность игуаны для этого изображения увеличилась, а вероятность всего остального уменьшилась. Во время тренировки мы знаем и отмечаем, что на изображении игуана. Стохастический градиентный спуск, который позволяет нам распространять сигнал по связям и обновлять их веса. Затем используется математический процесс, называемый методом обратного распространения ошибки. Обновим вес каждого из этих соединений совсем немного, и как только обновление будет завершено, вероятность игуаны для этого изображения немного возрастет, а вероятность других ответов снизится.

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

Им нужно действительно много примеров. Теперь кое-что контр-интуитивное о работе нейросетей. Вот пример — милая собачка, и вы, вероятно, не знаете ее породы. Это не просто уместить в голове, но они реально начинают с нуля, они ничего не знают. Мы с вами смотрим на эту картинку и мы видим японского спаниеля. Это японский спаниель. Если я покажу вам еще несколько изображений других собак, вы сможете найти среди них других японских спаниелей. Мы можем сказать: «ОК я понял, теперь я знаю, как выглядит японский спаниель». Им нужна куча данных о японских спаниелях, тысячи примеров, в разных позах, разных условиях освещения, на разном фоне и т.д. Вам понадобился всего один пример, но компьютеры так не могут. И ему действительно нужны все эти данные, противном случае компьютер не сможет выучить нужный шаблон. Вам нужно показать компьютеру, как выглядит японский спаниель с разных точек зрения.

Разметка изображений для автопилота

Так как же это все относится к автономному вождению. Нас не очень заботят породы собак. Может быть, будут заботить в будущем. Но сейчас нас интересует дорожная разметка, объекты на дороге, где они находятся, куда мы можем ехать и так далее. У нас теперь нет просто меток вроде «игуана», но у нас есть изображения дороги, и нас интересует, например, дорожная разметка. Человек смотрит на изображение и с помощью мыши отмечает её.

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

Когда вы покажете ей немного другой пример, скажем, изображение поворота дороги в жилом районе. Если вы будете размечать только случайные наборы, ваша сеть выучит простую, часто встречающуюся дорожную ситуацию и будет работать хорошо только в ней. Она скажет «хорошо, я видела много раз, дорога идет прямо». Ваша сеть может дать неправильный результат.

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

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

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

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

Это не наше открытие. Большие и разнообразные наборы данных помогают сетям работать очень хорошо. Все показывают схожие результаты — нейронные сети действительно любят данные, любят количество и разнообразие. Эксперименты и исследования Google, Facebook, Baidu, Deepmind от Alphabet. Добавляете больше данных и точность нейронных сетей растет.

Вам придется разработать автопилот, чтобы симулировать поведение машин в симуляции

Ряд специалистов отмечают, что мы могли бы использовать симуляцию, чтобы заполучить необходимые данные в нужном масштабе. В Tesla мы не раз задавались этим вопросом. У нас есть собственный симулятор. Мы широко используем симуляцию, для разработки и оценки программного обеспечения. Мы использовали её и для обучения довольно успешно. Но в итоге, когда дело доходит до обучающих данных для нейронных сетей, ничто не заменит реальных данных. Симуляции имеют проблемы с моделированием внешнего вида, физики и поведения участников.

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

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

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

Если вы знаете что будете симулировать, Окей, что вы конечно разберетесь с этим. Илон: Симуляция — это, как если бы вы сами себе придумывали домашнее задание. Мир очень странный, в нем миллионы особых случаев. Но как сказал Андрей — ты не знаешь, чего ты не знаешь. Но никто не может этого сделать. Если кто-то создаст симуляцию вождения, которая будет точно воспроизводить реальность, это само по себе станет монументальным достижением человечества. Просто нет способа.

Флот — ключевой источник данных для обучения

И если он у вас есть, вы сможете обучить свою нейронную сесть и она будет работать очень хорошо. Андрей: Чтобы нейронные сети работали хорошо, вам нужен большой, разнообразный и реальный набор данных. Ответ конечно же — флот (fleet, автопарк Tesla). Так почему Tesla такая особенная в этом отношении? Мы можем собирать данные со всех автомобилей Tesla и использовать их для обучения.

Это даст вам представление о том, как мы обучаем нейронные сети, как мы их применяем, и как они становятся лучше с течением времени. Давайте рассмотрим конкретный пример улучшения работы детектора объектов.

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

Именно так она работала, когда я только пришел. Например, если мы наткнемся на ​​машину, к которой сзади прикреплен велосипед, то наша нейронная сеть обнаружит 2 объекта — автомобиль и велосипед. Но планировщику автопилота нет никакого дела до того факта, что этот велосипед, отдельный объект, который перемещается вместе с автомобилем. И по своему это правильно, потому что оба этих объекта действительно здесь присутствуют. С точки зрения объектов на дороге это один объект — один автомобиль. Правда в том, что этот велосипед жестко прикреплен к автомобилю.

Наша команда использует следующий подход. Теперь мы хотели бы разметить множество подобных объектов как «один автомобиль». И у нас есть механизм машинного обучения, с помощью которого мы можем попросить флот предоставить нам примеры, которые выглядят так же. Мы берем это изображение или несколько изображений, на которых присутствует такая модель. И флот присылает изображения в ответ.

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

И я хочу сразу сказать, что мы разрабатывали эту систему с самого начала с учетом конфиденциальности. Я довольно много говорю о получении данных с автомобилей Tesla. Все данные, которые мы используем для обучения, анонимизированы.

Мы постоянно ищем множество разных моделей. флот присылает нам не только велосипеды на автомобилях. Мы хотим изображения зон ремонта дороги, и флот присылает нам множество таких изображений со всего мира. Например, мы ищем лодки — флот присылает изображения лодок на дорогах. Флот присылает нам изображением шин, конусов, пластиковых пакетов и тому подобного на дороге. Или например, мусор на дороге, это тоже очень важно.

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

Неуверенность нейросети запускает сбор данных

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

Мы замечаем, что в туннелях есть проблема. Например, плохо распознается разметка в туннелях. Теперь, чтобы исправить проблему, нам нужно много обучающих примеров. Соответствующие изображения попадают в наши юнит-тесты, чтобы проблема не могла повториться позднее. Этот цикл повторяется снова и снова. Мы просим флот отправить нам больше изображений туннелей, правильно их размечаем, добавляем в обучающую выборку и переобучаем сеть, а затем загружаем в автомобили. движок данных?). Мы называем этот итеративный процесс data engine (машина данных? Мы делаем это для всех видов предсказаний наших нейронных сетей. Включаем сеть в теневом режиме (shadow mode), обнаруживаем неточности, запрашиваем больше данных, включаем их в обучающую выборку.

Автоматическая разметка данных

Я много говорил о ручной разметке изображений. Это затратный процесс, и по времени и финансово. Он может стоить слишком дорого. Я хочу рассказать о том, как здесь можно использовать флот. Мы не хотим упираться в бутылочное горлышко ручной разметки. Мы хотим просто передавать данные и размечать их автоматически. И для этого есть несколько механизмов.

Вы едете по шоссе, кто-то едет слева или справа, и он перестраивается в вашу полосу. Как пример, один из наших недавних проектов — обнаружение перестроений.

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

Мы просим флот присылать нам данные всякий раз, когда зафиксировано перестроение в нашу полосу. Как это работает. 3 сек перестроится перед вами. Затем мы перематываем время назад и автоматически помечаем, что этот автомобиль через 1. Таким образом нейронная сеть сама извлечет нужные признаки. Эти данные можно использовать для обучения нейронной сети. Обо всем этом нейросеть узнает из автоматически размеченных примеров. Например, машина рыскает и затем перестраивается, или у нее включен сигнал поворота.

Проверка в теневом режиме

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

Здесь ситуация немного не очевидна, и сеть подумала, что автомобиль справа собирается перестроиться. Вот пример клипа, который мы получили из теневого режима. Сеть среагировала на это, и предположила что автомобиль скоро окажется в нашей полосе. И вы можете заметить, что он слегка заигрывает с линией разметки. Но этого не произошло.

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

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

Не важно включен или выключен автопилот. Илон: По сути, все водители постоянно тренируют сеть. Каждая миля, пройденная за машиной с оборудованием HW2. Сеть обучается. 0 или выше, обучает сеть.

Пока вы ведете машину, на самом деле вы размечаете данные

Когда вы ведете машину, на самом деле, вы размечаете данные. Андрей: Другой интересный проект, который мы используем в схеме обучения флотом, это прогнозирование пути. Вот один из водителей повернул налево на перекрестке. Вы говорите нам, как вести машину в разной дорожной обстановке. Мы также знаем какая была скорость и угол поворота рулевого колеса. У нас есть полное видео всех камер, и мы знаем, путь, который выбрал водитель. И мы можем использовать это как обучение с учителем. Мы собираем все это вместе и понимаем путь, который выбрал человек в этой дорожной ситуации. Мы просто получаем нужный объем данных с флота, обучаем нейронную сеть на этих траекториях, и после этого нейронная может прогнозировать путь.

Мы берем траектории движения людей из реального мира и пытаемся подражать им. Это называют имитационным обучением (imitation learning). И мы снова можем применить наш итеративный подход.

На видео мы накладываем прогноз сети. Вот пример предсказания пути в непростой дорожной обстановке. Зеленым выделен путь, по которому двигалась бы сеть.

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

Андрей: На самом деле, под капотом происходит больше всего, и

Илон: Вообще то, это немного пугает (Андрей смеется).

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

Кстати, когда вы проезжали развязку на шоссе, месяцев пять назад, ваша машина не умела справляться с этим. Прогнозирование пути на данный момент уже работает в автомобилях. Это прогнозирование пути, в действии, в ваших автомобилях. Теперь может. И сегодня вы сможете увидеть, как это работает на перекрестках. Мы включили его некоторое время назад. Значительная часть обучения преодолению перекрестков, получена путем автоматической разметки данных.

Вам нужен большой разнообразный набор реальных данных. Я успел рассказать о ключевых компонентах обучения нейросети. Мы используем data engine, теневой режим и автоматическую разметку данных с помощью флота. В Tesla мы получаем его с помощью флота. И мы можем масштабировать этот подход.

Восприятие глубины по видео

Вам наверняка известно, что в автомобилях используются как минимум два типа сенсоров. В следующей части моего выступления расскажу о восприятии глубины с помощью зрения. Лидар дает точечные измерения расстояния вокруг вас. Один — это видео камеры, работающие с яркостью, а другой — лидар, который используют многие компании.

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

Она использует ряд приемов. Ясно, что человеческая нейронная сеть извлекает расстояние и воспринимает мир трехмерным исключительно с помощью зрения. Например у нас два глаза, поэтому вы получаете два изображения мира впереди вас. Я кратко расскажу о некоторых из них. У многих животных глаза расположены по бокам и их поле зрения слабо пересекается. Ваш мозг объединяет эту информацию, чтобы получить оценку расстояний, это делается с помощью триангуляции точек на двух изображениях. Они двигают головой, чтобы получить множество изображений мира из разных точек и также могут применять триангуляцию. Эти животные используют движение (structure from motion).

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

Один классический подход и два на основе нейронных сетей. Я приведу три примера как можно добиться восприятия глубины по видео.

Мы применяем аналогичные методы в автомобиле. Мы можем взять видео клип в несколько секунд и воссоздать окружение в 3D, используя триангуляцию и методы стереозрения. Главное, что в сигнале действительно есть нужная информация, вопрос только в том чтобы ее извлечь.

Разметка расстояния с помощью радара

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

Этот радар измеряет и размечает расстояние до объектов, которые видит нейросеть. Мы используем радар, направленный вперед. Радар, очень хорошо работает на таком расстоянии. Вместо того, чтобы люди говорили вам «этот автомобиль находятся примерно в 25 метрах», вы можете разметить данные гораздо лучше с помощью сенсоров. Если у вас достаточно данных, нейронная сеть будет очень хорошо предсказывать расстояние. Вы размечаете данные и обучаете нейронную сеть.

И если сеть работает хорошо, то на виде сверху, положения кубоидов должны совпадать с положением кружков, что мы и наблюдаем. На этом изображении кругами показаны объекты полученные радаром, а кубоиды — объекты полученные нейросетью. Они могут выучить размеры разных транспортных средств, и по их размеру на изображении, довольно точно определять расстояние. Нейронные сети очень хорошо справляются с прогнозированием расстояния.

Self-supervision

Последний механизм, о котором я расскажу очень кратко, немного более технический. Есть лишь несколько статей, в основном в последний год или два, об этом подходе. Он называется Self-supervision.

Вы загружаете сырые не размеченные видео в нейронную сеть. Что здесь происходит. Не вдаваясь в подробности, идея состоит в том, что нейронная сеть предсказывает расстояние в каждом кадре этого видео. И сеть все равно может учиться распознавать расстояние. Какое бы расстояние сеть ни предсказывала, она должна быть последовательной на протяжении всего видео. У нас нет меток для проверки, но есть цель — согласованность во времени. Сеть автоматически предсказывает глубину для всех пикселей. И единственный способ быть последовательным — предсказывать расстояние правильно. Мы сумели это воспроизвести, и это работает довольно хорошо.

Мощное визуальное распознавание — обязательное условие для автопилота

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

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

Ответы на подобные вопросы могут быть найдены только с помощью зрения и они необходимы для автопилота 4-5 уровня. Эта девушка увлеченная телефоном, она собирается ступить на проезжую часть? Мы делаем это через крупномасштабное обучение нейронной сети, наш data engine и помощь флота. И именно это мы разрабатываем в Tesla.

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

Прогресс пропорционален частоте столкновений со сложными ситуациями в реальном мире

Нам нужны системы 4-5 уровня, которые смогут обрабатывать все возможные ситуации в 99,9999% случаев. Если бы я хотел был уместить все сказанное на одном слайде, он выглядел бы так. Для этого потребуется очень мощная система машинного зрения. Погоня за последними девятками, будет сложной и очень сложной.

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

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

Вопросы и ответы

Вопрос: сколько данных вы собираете в среднем с каждого автомобиля?

В какой-то момент у вас уже достаточно изображений движения вперед по шоссе, сеть их понимает, больше не нужно. Андрей: Дело не только в количестве данных, дело в разнообразии. И наша инфраструктура, с довольно сложным анализом, позволяет нам получать те данные, которые нужны прямо сейчас. Поэтому стратегически мы сфокусированы на получении нужных данных. Это не про огромные объемы данных, это про очень хорошо отобранные данные.

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

Но мы делаем то же самое на уровне программного обеспечения. Андрей: Я говорил о data engine как об обучении нейронных сетей. Мы также изменяем их в теневом режиме, и наблюдаем, насколько хорошо они работают и настраиваем эвристику. Все параметры, которые влияют на выбор, например, когда перестраиваться, насколько агрессивно. Я думаю, нам придется использовать обучение с помощью флота для принятия подобных решений. На самом деле проектирование подобных эвристик для общего случая, это трудноразрешимая задача. В каких сценариях? Когда люди перестраиваются в другую полосу? Давайте просто посмотрим на большой объем данных и обучим классификатор (machine learning classifier) различать, когда перестроение безопасно. Когда они чувствуют, что смена полосы небезопасна? Эти классификаторы смогут написать намного лучший код, чем люди, потому что они опираются на огромное количество данных о поведении водителей.

Где-то после режима «Безумный Макс». Илон: Вероятно, у нас будет режим «трафик в Лос-Анджелесе». Даа, Безумному Максу пришлось бы не сладко в Лос-Анджелесе.

Вы не хотите создавать небезопасные ситуации, но хотите доехать домой. Андрей Придется идти на компромисс. Я думаю, что правильный пусть — машинное обучение. И танцы которые люди исполняют при этом, это очень сложно запрограммировать. Где мы просто смотрим на множество способов, которыми люди делают это и пытаемся имитировать их.

Пользователи смогут сами его выбирать. Илон: Сейчас мы немного консервативны, и, по мере роста нашей уверенности, станет возможным выбирать более агрессивный режим. Без риска серьезной аварии. В агрессивных режимах, при попытке перестроиться в пробке, есть небольшая вероятность помять крыло. К сожалению, это единственный способ передвижения в пробке на шоссе. У вас будет выбор, согласны ли вы на ненулевой шанс помять крыло.

Второй вопрос, если лидары действительно бесполезны, что произойдет с теми, кто строит свои решения на них? Вопрос: Не случится ли так, на одной из тех девяток после запятой, что лидар окажется полезен?

Я должен отметить, я не ненавижу лидар так сильно, как может показаться. Илон: Они все избавятся от лидаров, это мой прогноз, можете записать. SpaceX разработала свой собственный лидар с нуля для этого. SpaceX Dragon использует лидар для перемещения к МКС и стыковки. А в машинах это чертовски глупо. Я лично возглавлял этот проект, потому что в этом сценарии лидар имеет смысл. И, как сказал Андрей, как только вы справитесь с видео, лидар станет бесполезен. Это дорого и не нужно. У вас будет дорогое оборудование, которое бесполезно для автомобиля.

Он недорогой и полезен, особенно в условиях плохой видимости. У нас есть радар направленный вперед. Если уж вы собираетесь использовать активную генерацию фотонов, не используйте длину волны видимого света. Туман, пыль или снег, радар может видеть сквозь них. Теперь лучше используйте длину волны, с хорошими проникающими свойствами, например радар. Потому что, обладая пассивной оптикой, вы уже позаботились обо всем в видимом спектре. Хотите активно генерировать фотоны, делайте это вне видимого спектра. Лидар это просто активная генерация фотонов в видимом спектре. 8 мм против 400-700 нм вы получите возможность видеть в плохих погодных условиях. Используя 3. А также двенадцать ультразвуковых датчиков для ближнего окружения. Поэтому у нас есть радар. Радар наиболее полезен в направлении движения, потому что именно прямо вы движетесь очень быстро.

Достаточно ли их? Мы поднимали вопрос сенсоров много раз. Нужно добавить что-то еще? Есть ли у нас есть все что нужно? Достаточно. Хммм.

Это делается в режиме реального времени или на основе сохраненной информации? Вопрос: Похоже, что автомобили производят какие-то вычисления, чтобы определить, какая информацию вам отправить.

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

0+. Илон: У нас есть четыреста двадцать пять тысяч автомобилей с HW2. Его достаточно, чтобы вычислить, какая информация важна, а какая нет. Это означает, что в них есть восемь камер, радар, ультразвуковые датчики и по крайней мере компьютер nVidia. Это огромная степень сжатия данных из реального мира. Они сжимают важную информацию и отправляют ее в сеть для обучения.

Видите ли вы её применение для целей, отличных от автопилота? Вопрос: У вас есть эта сеть из сотен тысяч компьютеров, которая напоминает мощный распределенный ЦОД.

Пока мы сосредоточены на автопилоте. Илон: Я полагаю, это можно было бы использовать для чего-то еще. К тому времени это будут миллионы или десятки миллионов машин с HW3. Как только доведем его до нужного уровня, сможем подумать о других применениях. 0 или FSDC.

Вопрос: Вычисление дорожного трафика?

это может быть что-то вроде AWS (Amazon Web Services). Илон: Да, может быть.

Камера и радар не могут видеть дорожную разметку сквозь снег. Вопрос: Я водитель Model 3 в Миннесоте, где много снега. Будете использовать GPS высокой точности? Как вы собираетесь решать подобную проблему?

Даже когда разметка скрыта, или истертая, или покрыта водой в сильный дождь, все равно автопилот ведет себя относительно хорошо. Андрей: Уже сегодня автопилот довольно неплохо ведется себя на заснеженной дороге. Но я уверен, что эта задача поддается решению. Мы пока еще специально не обрабатывали заснеженную дорогу с помощью нашего data engine. Люди соглашаются в том где провести линии разметки. Потому что на многих изображениях заснеженной дороги, если вы спросите человека, где должна быть разметка, он покажет её вам. Вопрос только в том есть ли достаточно информации в исходном сигнале. И пока люди могут прийти к согласию и разметить ваши данные, нейронная сеть сможет этому научится и будет хорошо работать. Если ответ да, то нейронная сеть справится с этим просто отлично. Достаточно для человека аннотатора?

Так разметка, это лишь один из них. Илон: В исходном сигнале есть несколько важных источников информации. Где можно ехать, а где нельзя. Самый важный источник это проезжая часть (drive space). Распознавание проезжей части работает очень хорошо. Гораздо важнее разметки. Мы будем удивляться, как это может настолько хорошо работать. Я думаю, особенно после предстоящей зимы, будет работать просто невероятно. Это просто безумие.

До тех пор, пока вы, человек, можете преодолеть этот участок дороги. Андрей: Дело даже не в возможности людей нанести разметку. Мы знаем как вы проехали здесь. Флот будет учиться у вас. Вы не видели разметку, но использовали геометрию всей сцены. И вы, очевидно, использовали зрение для этого. Нейронная сеть автоматически выделит все эти шаблоны, нужно только получить достаточно данных о том, как люди преодолевают подобные ситуации. Вы видите, как дорога изгибается, как другие машины расположены вокруг вас.

Ошибка GPS может быть весьма существенной. Илон: Очень важно не привязываться жестко к GPS. Это может быть ремонт дороги или объезд. И реальная дорожная ситуация может быть непредсказуемой. Вы напрашиваетесь на неприятности. Если автомобиль слишком сильно полагается на GPS, это плохая ситуация. GPS хорошо использовать только как подсказку.

Используете ли вы что-то подобное в своей системе, видите ли вы в этом какую-то пользу? Вопрос: Некоторые из ваших конкурентов рассказывают о том, как они используют карты высокого разрешения (high definition maps) для улучшения восприятия и планирования пути. Есть ли области, где вы хотели бы иметь больше данных, не от флота, а что-то наподобие карт?

Система становится чрезвычайно неустойчивой. Илон: Я думаю, карты высокого разрешения — это очень плохая затея. Зрение это та вещь, которая должна делать все. Не способной адаптироваться к изменениям, если вы привязаны к GPS и картам высокого разрешения и не отдаете приоритет зрению. Мы пробовали использовать карты разметки и быстро поняли, что это большая ошибка. Смотрите, разметка это просто ориентир, а не самая важная вещь. Мы полностью отказались от них.

Но как быть с переговорным аспектом? Вопрос: Понимание того, где находятся объекты и как движутся машины это все очень полезно. Это скорее искусство, чем наука. Во время парковки, на кольцевых развязках и в других ситуациях, где вы взаимодействуете с другими автомобилями, и которыми управляют люди.

Если смотреть на ситуации с перестроениями и т.п., автопилот нормально справляется. Илон: Это работает довольно хорошо.

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

Система способна на это? Вопрос: у вас есть режим автоколонны (platooning)?

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

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

Возможно, для дальних поездок вы сможете использовать одного водителя в головной машине, и 4 грузовика Semi позади него в режиме автоколонны. Вероятно, для грузовых автомобилей, режим автоколонны будет одобрен регулирующими органами раньше всего остального.

На прошлой неделе я ехал в правой полосе автомагистрали, и там был въезд. Вопрос: Я очень впечатлён улучшением автопилота. Я тогда подумал, черт побери, это безумие, я не знал, что моя Model 3 способна на такое. Моя Model 3 смогла обнаружить две машины въезжающие на магистраль и сбавила скорость так, что одна машина спокойно встроилась передо мной, а другая позади меня.

И моя Model 3 не смогла правильно среагировать, мне пришлось вмешаться. Но на той же неделе я снова ехал в правой полосе, и там было сужение, моя правая полоса сливалась с левой. Можете рассказать, как Tesla может решить эту проблему?

Если вы вмешались, то, скорее всего, мы получили этот клип. Андрей: Я рассказывал про инфраструктуру сбора данных. Мы смотрим на эти цифры, смотрим на клипы, и мы видим что не так. Он попал в статистку, например, с какой вероятностью мы корректно вливаемся в поток. И мы пытаемся исправить поведение, чтобы добиться улучшения в сравнении с контрольными показателями.

У нас была презентация про оборудование с Питом, потом нейронные сети с Андреем, а теперь следует программное обеспечение со Стюартом.
Илон: Хорошо, у нас есть еще одна презентация, посвященная программному обеспечению.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть