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


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

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

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

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

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

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

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



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

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


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

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

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



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

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

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

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

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

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

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


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



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

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



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



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

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



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

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

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


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



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



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

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

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

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




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

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

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



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



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



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

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

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



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

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


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



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

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


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

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



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

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

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


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



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

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

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

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

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





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

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

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



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

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

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

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

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

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

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




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

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

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



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

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



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

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


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

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



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

Self-supervision


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



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

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


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



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

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

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

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




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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

Илон: У нас есть четыреста двадцать пять тысяч автомобилей с HW2.0+. Это означает, что в них есть восемь камер, радар, ультразвуковые датчики и по крайней мере компьютер 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 может решить эту проблему?

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

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

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


  1. kryvichh
    13.05.2019 11:22

    Я догадался кто такой Илон, но не понятно кто Андрей. )


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


    Учитывая важность зрительной информации, как Тесла чистит свои камеры, и как определяет пятна загрязнений? Водитель пользуется дворниками, в крайнем случае остановит авто и почистит стекла. А что делает автопилот? Отключается?


    1. roryorangepants
      13.05.2019 11:29

      Я догадался кто такой Илон, но не понятно кто Андрей. )

      Директор AI в Тесле.


    1. psman
      13.05.2019 12:30

      Тип, качество покрытия и т.п. от датчиков ускорения понять можно. Под одному на каждое колесо + энкодеры вращения колес и будет полное понимание где какое колесо как едет/скользит


      1. kryvichh
        13.05.2019 13:29

        А если датчики заглючат? А если соседняя машина подаёт сигнал? В Индии водители когда хотят пойти на обгон — гудят в клаксон. Опытный водитель по звуку определяет конкретную неисправность. Так что ещё один канал дорожной информации (звуковой) не был бы лишним.

        Ещё вопрос вспомнил: как Тесла справляется с левосторонним движением? Держат ли они отдельные НС на оба вида движения?


        1. Kowi
          14.05.2019 09:31

          А если датчики заглючат? А если соседняя машина подаёт сигнал?


          Обязательно когда-нибудь заглючат. Это ж техника и вероятности на больших числах работают весьма предсказуемо — какому-то 1 водиле из 1 000 000 однажды не повезёт.

          Что касается Индии — ну, Тесла же не может и не обязана учитывать специфику вождения и ПДД каждого региона. У нас вон вообще чулками стопаки и поворотники тонируют, а наносить разметку считают зашкваром — как с этим Тесле решать вопрос?


          1. RomanoBruno
            15.05.2019 03:45

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


    1. androude Автор
      13.05.2019 13:04
      +1

      Добавил представление докладчика.

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


      1. winotix
        14.05.2019 19:18

        Или дворники


  1. dimkss
    13.05.2019 13:13
    +1

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


    1. androude Автор
      13.05.2019 14:48

      Кое-какая связь все же есть. Отображаются участники и полосы движения. С недавним обновлением Navigate on Autopilot стали отображаться предложения перестроиться с траекториями:


  1. rinaty
    13.05.2019 13:24

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

    Странно что для построения карты расстояний по нескольким камерам и кадрам они используют нейросеть, а не какой-нибудь специальный алгоритм под эту задачу.


    1. Hardcoin
      13.05.2019 17:38

      Ошибка сети не означает ошибку разработчика. Это может быть ошибка аннотатора или уникальная ситуация, к которой нейросеть не готова.


      1. rinaty
        13.05.2019 19:30

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


        1. Stasklymenko
          13.05.2019 22:44

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

          По этой причине не используется алгоритм, а применяют нейросеть.
          По этой причине в тексте указали, что в процентах (99,9999) последние девятки (уникальные ситуации) учесть будет сложнее всего.

          Интересно каково им писать софт зная, что точно из-за твоей ошибки софт убьет кого-нибудь

          Представьте, каково будет человеку, если благодаря его работе разобьется, условно, 10 человек, а не 100.


  1. Avadon
    13.05.2019 13:53

    Интересно, сколько трафика потребляет автомобиль Tesla за месяц?


    1. vassabi
      13.05.2019 14:41
      +1

      … на карте во время презентации у них были помечены дороги Китая,
      вот что действительно интересно — как им удается забирать данные оттуда?


    1. androude Автор
      13.05.2019 15:52

      Тема частично затронута в вопросах из зала, но чисел не озвучено.
      Благодаря мощному железу, передают сжатые данные, только ту их часть, которая важна для обучения и только тогда, когда сработало условие для отправки.
      Еще Илон в двух словах упомянул большую программу в Tesla под названием «Доджо». Это мощный суперкомпьютер для тренировки нейросетей. Он сможет обрабатывать громадный объем сырых видео данных для обучения без учителя.


  1. muhaa
    13.05.2019 16:57
    -2

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


    1. Hardcoin
      13.05.2019 17:52
      +3

      Человек тоже. А значит нельзя спокойно уснуть в машине, которую ведёт белковый водитель.


      Как работают простые и жёсткие классические алгоритмы, мы видим на примерах аварий самолётов. Любой классический алгоритм имеет право на ошибку, например из-за железа.


      1. muhaa
        13.05.2019 19:52
        -2

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


        1. kryvichh
          13.05.2019 22:51

          Очень просто определить ситуации, когда НС начинает чудить: когда на основе полученных данных в какой-то момент времени она выдает 2 или несколько вариантов дорожной обстановки. Тогда надо притормаживать и передать управление водителю.


          1. muhaa
            13.05.2019 23:01

            Я писал про полностью автономный автопилот.


        1. Hardcoin
          14.05.2019 00:22

          он должен быть как минимум на порядок безопаснее водителя

          А при чем тут профессиональные водители из первого предложения?


          1. muhaa
            14.05.2019 11:02

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


            1. Hardcoin
              14.05.2019 11:26

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


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


              1. androude Автор
                14.05.2019 11:47

                В 3й части Маск утверждает что, хоть ему это и не очень нравится, но общество очень скоро будет требовать запретить людям водить «эти 2-тонные махины».


                1. Hardcoin
                  14.05.2019 12:51

                  Возможно так будет. Но не в первый год. В первый год таких автомобилей будет мало, доступны они будут немногим (как и сейчас Тесла доступна немногим), требовать запрещать 99% автопарка и в голову не придёт.


              1. muhaa
                14.05.2019 14:33

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


                1. Hardcoin
                  14.05.2019 15:34

                  Вас устроит, если автомобиль будет экстренно тормозить от пакета? И устроит аварию, резко притормозив и уйдя в сторону, гарантированно не смертельную?


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


                  1. muhaa
                    14.05.2019 18:36

                    С лидара алгоритмом можно получить информацию о том, что объект неподвижен и узнать его примерный размер. Допустим, на пути находится неподвижный объект большого размера. Допустим, нейронная сеть уверенно ведет машину прямо в этот объект на большой скорости, но при этом дорожная обстановка позволяет сбросить скорость до не фатальной или объехать объект без опасности столкнуться с чем-то еще (включая задние автомобили). Тогда алгоритм может взять на себя управление, забрав его у нейронных сетей.
                    Худшее что случится — машина притормозит перед большим неподвижным безобидным объектом, лежащим на дороге (я бы тоже тормозил) или спокойно его объедет.
                    Если нейронная сеть специально ехала в этот объект, считая его абсолютно безобидным (неподвижный большой пакет?), то притормозить все равно не помешает. Если нейронная сеть ехала в этот объект потому что это было меньшее из зол, то алгоритм тоже не найдет безопасной траектории и не станет вмешиваться: уже в любом случае все плохо, пусть решение ищут алгоритмы минимизации ущерба (классические или та же нейронная сеть).
                    Подстраховаться от столкновений с другими автомобилями пересекающими траекторию сложнее, но тоже можно.
                    Реальная архитектура конечно будет намного сложнее и умнее. Написанное выше — просто пример как лидар может позволить застраховаться от причуд обученной нейронной сети.


                    1. androude Автор
                      14.05.2019 18:48

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


                    1. Hardcoin
                      14.05.2019 19:24

                      Вам верно несколько раз сказали про радар. В чем преимущество лидара в этой ситуации, мне, честно говоря, не ясно. Оно есть?


                      1. muhaa
                        15.05.2019 11:29

                        Я тоже каждый раз пишу «лидар или достаточно совершенный радар». Простейший радар работает не только вперед и дает картину с гораздо меньшим разрешением.


                1. roryorangepants
                  14.05.2019 17:01

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

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


            1. Halt
              14.05.2019 12:51

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


    1. Rukis
      13.05.2019 22:27

      А такой алгоритм проще сделать на основании информации лидара.

      Почему это? Часть ПО отвечающая за принятие решений вообще может не зависеть от части отвечающей за «зрение» (распознание, класификацию, вычисление расстояния, скорости, вектора и тп). То есть что данные с лидара, что с камер после обработки в таком случае будут приводится к одному формату.


      1. muhaa
        13.05.2019 23:13

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


        1. rroyter
          14.05.2019 00:28

          Так а какая польза-то от этих измерений? По этой информации нельзя определить обьект, об этом Андрей и Илон и говорят.


          1. muhaa
            14.05.2019 11:31

            Лидар не запрещает использовать и камеры тоже. Так что информации о том что это за объект станет не меньше а больше. Зато с лидаром и алгоритмом исключена ситуация, когда на пути есть объект, но ПО этого не поняло.


            1. rroyter
              14.05.2019 19:21

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


              1. muhaa
                15.05.2019 14:56

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


                1. kryvichh
                  15.05.2019 16:51

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


        1. Alex_ME
          14.05.2019 01:37

          Если посмотреть на результаты бенчмарка KITTI, то сегментация дороги, детектирование объектов (особенно в 3d все плохо) лучше всего sensor fusion lidar+камера. Но там лидар тоже подается на вход нейросетки. Есть разные варианты, например, спроецировать в С.К. камеры, или спроецировать в вид сверху. Есть и более интересное, например pointnet/voxelnet/итп, которые работают прямо с пространственными данными.


        1. billyevans
          14.05.2019 07:34

          А кто вам сказал, что в теслах нет радаров, которые точно так же меряют расстояние, независимо от освещения?


          1. muhaa
            14.05.2019 11:38

            Но по какой-то причине тесла врезалась в ограждение и подъезжала под грузовик. Не знаю, проблема в недостаточно совершенном радаре или в ПО.


            1. billyevans
              14.05.2019 18:44

              Да, авария это факт. Не знаю в чем была проблема. Возможно ПО, возможно что-то с железяками случилось.


  1. Sly_tom_cat
    13.05.2019 17:31

    Что-то про заснеженные дороги — они там далеки от наших реалий.

    У нас зимой, за пределами городов, часто умудряются раскатать дороги так, что там оказывается тройная колея: по крайне правой и центральной едут туда, а по крайне левой и центральной — оттуда. Когда встречаются, то кто-то или оба должны отрулить в сторонку для разъезда.
    Или вовсе одна колея для туда и обратно…

    Хотел бы я по такой дороге на тесле проехать и посмотреть как на ней снесет мозг ее автопилоту в при появлении встречки… :)

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


    1. AlexSky
      13.05.2019 19:36

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


    1. kryvichh
      13.05.2019 23:04

      Уверен что можно обучить НС оптимальному стилю езды и по заснеженной трассе, и по бездорожью. Но будет ли Тесла этим заниматься сейчас? Как в любой задаче, на охват 80% дорожных ситуаций нужно 20% усилий. И на оставшиеся 20% — 80% усилий. Т.е. им нужно будет (условно) в 4 раза увеличить обучающую выборку, размер НС, производительность процессора и т.п.


  1. barbanel
    13.05.2019 17:40
    +4

    Прикольно будет, если через десят лет тесла сможет сама учить водить.
    Садится такой новичок за руль, а тесла ему говорит:
    — Не дрейфь, ща я тебе покажу как надо вести машину! =)
    Или начинающий водитель выполнил маневр, а тесла ему говорит:
    — Ты был слишком близко к другим авто при перестроении, а еще забыл включить поворотник!


    1. AlexSky
      13.05.2019 19:38
      +5

      Скорее, будет так: садится новичок за руль, а руля нет.


  1. Alex_ME
    13.05.2019 22:03
    +1

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

    Мы получили разметку, знаки, светофоры, других участников движения, предсказали их поведение. Что дальше? Как автомобиль планирует движение? Там применяются классические методы, машинное обучение, все вместе? Как реализуются правила дорожного движения? Вот мы распознали знак, как определить допустимое поведение?

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


    1. androude Автор
      13.05.2019 22:55

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


      1. Alex_ME
        13.05.2019 23:30

        Вы знаете какие-нибудь доклады/работы/etc по этой теме?


        1. androude Автор
          14.05.2019 00:42

          Увы нет. Вообще тема автопилота интересная, если что-то зацепит — будут еще переводы.


  1. NIKOSV
    14.05.2019 04:06

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

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

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


    1. androude Автор
      14.05.2019 09:30

      весь автопилот это датасет -> ручная разметка -> обучение
      Так нет же. Они наоборот делают упор на автоматическую разметку. Автоматическая разметка объектов и расстояний радаром и ультразвуковыми датчиками, автоматическая разметка перестроений (и не только) постфактум по сохраненному видео, автоматическая разметка поведением водителей-людей, self-supervision в конце концов.
      И масштабирование ручной разметки заметно облегчено автоматическим поиском заданных дорожных ситуаций, не нужно просматривать миллионы км только чтобы найти там велосипеды или животных.


  1. Halt
    14.05.2019 09:56

    Пользуясь случаем, дам ссылку на канал одного британца, делающего очень качественные видео об автопилоте Теслы и подробно комментирующего происходящее. В отличие от вылизанных автобанов, он ездит по узким улочкам провинциальных городков, где безумие и непредсказуемость реального мира особенно заметно. Масла в огонь подливает отсутствие разметки и припаркованные абы как автомобили.

    Такие дороги Тесле все еще не по зубам


  1. Tachyon
    14.05.2019 11:14

    Как отчетливо на карте обозначены Питер и Москва с пригородами

    Карта из статьи
    image