«Хотим быть дальновидней тех, кто тратит все ресурсы на лидары и радары». Почему белорусский офис Mapbox передумал делать автопилот и занялся продвинутым видеорегистратором
Осенью прошлого года компания Mapbox, «поднявшая» 164 миллиона долларов инвестиций, открыла белорусский R&D офис. Команда собиралась разрабатывать программы для самоуправляемых автомобилей и уже через полгода представила Vision SDK — набор инструментов разработчика для объединения возможностей смартфона, камеры и автомобиля. А в сентябре у минского офиса выйдет большой релиз 1.0. Над чем сейчас работает офис и что ещё нужно успеть до продакшна, dev.by выяснял у руководителя Александра Матвеенко и его команды.
Задача: собирать данные о дорожной обстановке, используя только смартфон
Александр Матвеенко: Когда мы стартовали, то заявляли, что будем делать самоуправляемый автомобиль и работать с компьютерным зрением, чтобы понимать дорожную обстановку. В процессе работы мы осознали, что таким классическим автопилотом занимаются очень много компаний, 10–12 минимум.
Мы решили сконцентрироваться на том, чтобы собирать данные о дорожной обстановке, используя только смартфон.
Это может быть полезно по очень многим причинам. Начнём с того, что смартфоны очень распространены: потенциально каждый человек может быть нашим клиентом. Мы делаем такие штуки, как навигация в AR, распознавание знаков и светофоров в режиме реального времени. Также мы можем оценивать качество вождения человека, основываясь только на том видео и телеметрии, что забираем с телефона. Выходит, что мы делаем умный видеорегистратор с дополнительными функциями.
Кому это нужно?
Это может быть интересно компаниям, работающим с такси, службам доставки, страховым компаниям. Некоторые страховые компании в Америке высылают своим клиентам зубные щётки с датчиком, которые трекают, как часто и как тщательно человек чистит зубы. Данные автоматически отсылаются на сервер, и в зависимости от показателей цена страховки для них снижается или повышается. Абсолютно такой же юзеркейс будет, когда страховая компания скажет: пожалуйста, катайся с этим видеорегистратором. И тебе польза: ты попал в аварию – запись сохранилась. И мы будем смотреть: аккуратно ездишь – мы снизим сумму страховки, неаккуратно ездишь – повысим. Эти штуки работают, и потребность у рынка в них очень высокая.
Соответственно, мы будем собирать более качественные данные и надеемся, что станем делать это по всему миру. И как раз через несколько лет придём к тому, что технологии умеют уже сильно больше, а мы будем иметь хорошие данные, чтобы все это обрабатывать.
Также хотим улучшать качество картографических данных посредством нашего продукта, ведь мы в режиме реального времени можем обновлять данные на карте: где какой знак, где какой светофор.
Мы делали свой стенд на конференции CVPR – это крупнейшая в мире конференция в области компьютерного зрения. Было много интересных ребят и проектов, но очень мало компаний, которые работают с Computer Vision на мобильных устройствах в режиме реального времени. Были люди, что работают с embedded-девайсами: встраиваемые видеорегистраторы и т.п. Но таких явных продуктов, как у нас, я ещё не видел. Нам приходилось уверять других участников, что мы действительно делаем это на телефонах.
Возможно, это не будет приложение для AppStore и GooglePlay: мы больше сконцентрированы на том, чтобы сделать SDK. Наш опыт показал: очень много компаний заинтересованы в том, что мы делаем. Он хотят встраивать наши решения в свои продукты. Заинтересовалось немало автопроизводителей. У них остро стоит вопрос с мощностью «железа», которое стоит на борту: это увеличивает размеры и вес машины, а также удорожает ее. А низкомощные девайсы сейчас все ставят, они не занимают много места и недорого стоят, но приносят существенную пользу водителю.
Будем ли мы выпускать приложение для маркета — это, скорее, решает наш головной офис. Сейчас идёт речь о многих партнёрских соглашениях. В том числе среди партнёров производитель мобильных процессоров ARM. Хотим понимать, что в будущем будет происходить с процессорами, с видеокартами, чтобы наши нейросети работали лучше, чем сейчас.
Сколько нужно телефонов, чтобы объехать препятствие
Есть смысл работать именно с мобильными телефонами, потому что они самые распространённые. Не у каждого есть определённый видеорегистратор, не каждый ездит с определённой платформой.
В автомобилях и сейчас уже ставят системы collision detection. Когда я слишком близко подъезжаю к другому автомобилю, то мой автомобиль начинает пищать. То же самое можно делать с телефоном, ведь он есть у всех.
Сколько нужно телефонов, чтобы управлять автомобилем? Мы используем лишь один телефон, который смотрит вперёд по ходу движения. Как посмотреть на то, что происходит за спиной? Самый простой способ – это второй телефон, который стоит сзади. В целом же я не вижу, как с помощью одного только мобильного телефона можно управлять автомобилем в городских условиях. Для того, чтобы смотреть во все стороны, нужно где-то шесть телефонов. Но мы сейчас не ставим своей целью запустить автомобиль, который будет ездить только с помощью мобильного телефона. Скорее, мы делаем driver assistant. Наш софт будет лишь помогать водить машину. Вы можете слушать его, можете не слушать; можете делать, как он говорит, а можете не делать. Это помощник, так же, как навигатор. Можете ехать по навигатору, можете не ехать. И потом жаловаться, что вы не послушались навигатора и заблудились, глупо.
Пока что компьютерное зрение не способно решить всех-всех вопросов. Но та тенденция позволяет думать, что в будущем оно способно решать больше задач, чем сейчас. И мы работаем на то, чтобы в будущем оказаться в более выгодной позиции, чем те люди из селф-драйвинга, что сейчас тратят все ресурсы на лидары, радары и так далее. Я думаю, что их модель очень сильно изменится уже через пять лет.
Мы работаем над технологией, которая со временем может стать платформой. Смысл не в том, чтобы обвешивать машину телефонами, а чтобы делать очень точные и очень лёгкие нейронные сети.
Почему к бизнес-модели классических self-driving компаний есть вопросы
Для всех компаний классического self-driving характерно иметь на борту очень мощное железо и кучу дорогих датчиков. Это экстенсивный путь: наращивать мощности, чтобы запустить один-единственный автомобиль, — сейчас это дорого. Я не вижу, как машина стоимостью около миллиона долларов превратится в массовую. Если бы так было, то все бы ездили на «Феррари». Возможно, у того же «Яндекса» и не такая дорогая машина, но те экземпляры, что мы видели на американских выставках, стоят от полумиллиона долларов.
Мы умеем определять дистанцию до объекта только по видео, не используя датчиков.
Мне нравится то, что делает Tesla, это продуманные и простые вещи. У них не самое сложное железо, зато они разработали свой чип GPU. Машина держит полосу, предупреждает об авариях, — такие штуки вполне можно делать с помощью камер. Причём не обязательно камер телефонов: это может быть камера, подключённая к небольшому устройству в машине.
То, что делает «Яндекс», тоже очень здорово. И то видео, где они ездят по заснеженной Москве, пропускают пешеходов, — это великолепно. Я смотрю и восхищаюсь нашими коллегами.
Просто мы решаем разные задачи. Они готовят свой собственный автомобиль, мы же хотим сделать массовую технологию. Мы знаем, что всё, что мы сейчас делаем, ляжет в основу позже, — и это всё равно путь, который проходит каждый производитель автопилота. Они всё равно работают с компьютерным зрением, с детекцией, сегментацией и так далее. Мы же просто хотим делать это более эффективно. Это для нас интереснее, чем участвовать в олимпиаде по созданию самоуправляемого автомобиля.
Один конкурент
Возьмите компанию Mobileye. Капитализация у них колоссальная, на десятки миллиардов. Они уже лет пятнадцать на рынке. Они как раз работали с датчиками, с компьютерным зрением. Они поставляют свои решения многим производителям, и в моей машине стоит их решение, которое делает coliision detection. При этом они не делают свой самоуправляемый автомобиль. И мы в такой же позиции. По сути, конкурент у нас один — Mobileye; эти ребята меня восхищают, и их бизнес-модель мне нравится гораздо больше, чем бизнес-модель автомобиля, который едет сам и стоит очень дорого.
Распространять софт проще, чем распространять железо, переоборудовать машину. Вы захотите, чтобы вам понаставили на машину датчиков, врезали в дверь что-то, камер повесили? Не каждый согласится на такую модификацию. И что вы получаете взамен? Возможность почитать телефон, пока машина едет? Мне кажется, автомобиль должен продаваться с такими датчиками и камерами изначально, а не подвергаться дальнейшей модификации.
Технические требования: работаем на четырёх «айфонах»
Минимальные технические требования к телефону, предъявляемые нашей программой, сейчас достаточно высоки для рынка. Прямо сегодня мы умеем хорошо работать на iPhone 7, 8, 8 Plus и X. С андроидом есть определённая печаль, потому что очень многие производители делают проприетарные вещи для этих устройств. И каждый делает свой продукт, закрывает доступ к нему и не стремится делать его массовым. Говорит: вот, хотите готовить специальное приложение для нашей архитектуры – можете пользоваться. А для других мы не будем стараться.
Единственный участник андроид-рынка, который заинтересован в массовой популярности таких вещей, — это Google. Есть основания полагать, что очень скоро фреймворк для развёртывания нейронных сетей появится. Мы полностью к этому готовы. У нас уже есть версия под Android, просто она пока работает очень медленно. И от технических требований этого фреймворка будет зависеть, на каких моделях телефонов мы сможем работать хорошо, а на каких похуже.
Мы стремимся сделать охват устройств пошире. Причём мы делаем ведь не отдельное приложение, а SDK, — возможно, на старых телефонах мы будем запускать не весь функционал. У нас есть вещи, которые работают быстрее, а какие-то медленнее, так что будем обрубать часть функционала для старых устройств. Будем продавать продукт только на те девайсы, на которых мы протестировали программу.
Какие возможности телефона используются
Мы используем все возможности телефона: GPS, акселерометр, гироскоп, значение угловой скорости, — то есть, используем все доступные варианты, чтобы улучшать качество. Одна из идей, которую мы сейчас пытаемся реализовать, — это улучшение позиционирования на карте, с использованием видео и датчиков телефона. В больших городах есть большая проблема с использованием GPS, когда вы вызываете «Убер», а вас «матчит» через дорогу.
Две камеры в смартфоне мы не используем. Там слишком маленькое расстояние между камерами, чтобы это на что-то влияло. Есть много наработок, которые позволяют лучше определять расстояние до объекта, используя две камеры. Но это хорошо только для небольших расстояний, когда вы делаете селфи и вам нужно размазать фон. Но когда надо что-то увидеть за 50 метров, то там это всё теряется. Даже у вас расстояние между глазами больше, чем между двумя объективами смартфона, а ведь человек очень слабо определяет расстояние на глазок. Так что вторая камера у нас не используется никак.
Наш продукт работает без интернета. Это абсолютно оффлайн-продукт. Сейчас он частично онлайн, потому что мы используем онлайн-карты Mapbox, но, я думаю, вскоре они станут оффлайновыми. Косвенно мы влияем на то, чтобы это произошло как можно скорее. Не только мы просим эту функцию — многие другие партнёры тоже просят. Например, на китайском рынке сложно работать через интернет, обязательно должен быть оффлайн.
«Конь приравнивается к препятствию». Что система умеет распознавать и какие есть ограничения
Карты MapBox в Беларуси не сильно популярны; они активно используются в Америке, в Европе в силу того, что компания представлена на этих рынках. Качество карт не хуже, чем у OSM, потому что один из источников данных – это OpenStreetMap. И не хуже, чем у Maps.Me, а у Maps.Me очень хорошие карты по Беларуси. Это я говорю как бывший глава разработки Maps.Me и как человек, живущий в Беларуси и постоянно использующий эти карты. В качестве источника данных для нейронных сетей используем Mapillary — сервис, который собирает картинки с видеорегистраторов по всему миру. Когда нам нужен локализованный датасет, мы выбираем на карте в нужном месте картинку и знаем дату, время съемки и точную позицию.
Мы сейчас очень хорошо умеем распознавать знаки в Америке, — это наш основной рынок. В Австралии тоже очень специфические знаки. Еще мы натренировали систему на знаки скорости в Китае — и они очень похожи на европейские, на наши белорусские и российские. Сейчас у нас есть доступ к хорошему датасету, есть хорошие разметчики, так что мы сможем очень быстро собрать данные и подготовить версию, которая будет локализована для какой-то страны.
Александр Приставко, iOS-разработчик: Распознавание знаков решается с помощью проигрывания нейронной сети на устройстве, и здесь мы сталкиваемся с проблемой производительности. Большой объем нашей работы сконцентрирован на оптимизации самих сетей и подходов к их проигрыванию. Мы используем готовый фреймворк CoreML для проигрывания нейронных сетей. Простое его использование довольно неоптимально, поэтому мы адаптируем наши сети для оптимизации, которая заложена в этом фреймворке.
Мы поняли, что не нужно запускать сеть на 30 кадров в секунду, чтобы читать дорожную обстановку. В зависимости от скорости движения можно запускать сети с разной частотой и за счет этого оптимизировать перформанс и энергопотребление.
Александр Матвеенко: Когда мы выпустили первую версию, я подключил телефон к автомобильной зарядке и поехал, запустив программу. И телефон разряжался быстрее, чем успевал заряжаться от бортовой сети. Вот это был челлендж. У нас уже были более-менее оптимальные сети, мы сделали базовые оптимизации производительности, всё запускалось и работало — но за полчаса телефон разрядился в ноль. Нам удалось победить это.
Месяца три назад я тестировал систему на скорость, и дорожные знаки распознавались на скорости до 100 км/ч, на 130 уже не успевали. Но мы нашли, почему это происходит, поправили, и в ближайшее время посмотрю, какая максимальная скорость теперь. Понятно, что на скорости 200 км/ч, скорее всего, не сможем работать.
В обычных условиях нам не требуется 30 кадров в секунду, поэтому мы какие-то кадры пропускаем. По скриншотам может создаваться ощущение, что программа работает с запаздыванием. Но на самом деле это не запаздывание, это просто пропуск кадров. Именно для того, чтобы работать в режиме реального времени, мы какую-то часть кадров пропускаем. А когда скорость машины растет — то и число обрабатываемых кадров увеличивается
Ночью скорость детекции падает. Но ночью и ехать следует чуть помедленнее, чем днем. Правда, люди, как правило, рискуют — и, как правило, ничего не происходит. Но если уже происходит, то случается нечто серьезное.
Да, ночью качество снижается, и тут мы очень сильно зависим от камеры. Чем лучше картинка, тем дальше мы видим и на большем расстоянии распознаём. В «айфоне» неплохая камера, но всё равно сильно хуже, чем человеческий глаз. Эффективно мы можем работать на расстоянии не больше 100 метров, даже, наверное, метров 70. Вот в Штатах хорошо, там знаки большие, метровые, очень ярко светятся отраженным светом фар. А у нас знаки маленькие, да ещё и ночью плохо отражают свет.
Велосипедист у нас распознается как велосипедист, человек — как человек, камни мы пока не распознаём. Зато распознаем и лошадей, и лосей. Гужевая повозка, едущая по обочине, будет распознана, скорее всего, как препятствие. Пусть это и участник дорожного движения, но мы понимаем, что туда, в эту повозку, нам перестраиваться не надо. С точки зрения логики нам даже не надо точно знать, велосипедист это или лошадь. Скорее — пересекаются траектории или нет, делать Warning или не делать. Ребята из селф-драйвинга занимаются такими вещами глубже: гужевая повозка не может двигаться, как автомобиль — и они делают какой-то предикт, мол, повозка может двигаться только так, но не вот так. Для них это более критично, они ведь отвечают за жизни.
Планируем научиться распознавать многие объекты: пожарные машины, полицейские. Мы уже умеем распознавать знаки «Школьная зона» и просить водителя снизить скорость и быть более внимательным. Или железнодорожный переезд — тоже просим быть внимательнее.
Денис Каноник, data science инженер: Дорожную разметку мы распознаем хорошо, видим её на расстоянии до 50 метров. Мы прекрасно понимаем, какая разметка относится к нам, а какая просто случайная. На основании этого можем оценивать число полос и их ширину, воссоздавать дорожную ситуацию и понимать, кто на какой полосе находится. Например, дорожные знаки, нарисованные прямо на полосе, распознаём как элемент разметки, но это не наш элемент, — прямо сейчас мы его игнорируем, но в будущем сможем использовать. Элементы вроде световозвращающих отражателей, которые уложены в асфальт на переходах, проходят у нас отдельным классом. Мы их видим и игнорируем, когда восстанавливаем картину дороги — просто потому, что они не совсем к нам относятся.
Ольга Иванова, data science инженер: Немного умеем распознавать разметку ночью, даже совсем-совсем тёмной ночью. Но это пока еще на стадии ресерча и добавления.
Александр Матвеенко: Пока не очень хорошо работаем при плохих погодных условиях. Хорошо работаем в хорошую погоду, а в плохую – не очень. Тут вопрос приоритетов: сначала надо всё идеально отладить для хороших условий, а потом уже взяться за плохие. Слабый дождь никаких проблем не вызывает, а вот сильный, плотный дождь или туман — тут проблемы. Лучше распознавать медленнее, но увереннее. Если от качества работы наших нейронных сетей будут зависеть жизни, то лучше уж хорошо распознавать объекты на низкой скорости и совсем отключаться на высоких. При движении в городских условиях мы хорошо всё распознаем, но будем предупреждать водителя, что на высоких скоростях за городом какие-то вещи можем пропускать.
Недавно взялись за предсказание траекторий движения объектов. Это достаточно сложная алгоритмическая задача, она требует много вычислительных ресурсов. Нам пока не удаётся хорошо восстановить дорожную картину. Пока работаем в режиме постобработки - записал видео, а потом восстанавливаешь картинку вида сверху: вот были такие-то машины, они ехали по таким-то траекториям, а вот это я относительно этой траектории. В режиме реального времени на телефоне этого пока сделать не удаётся. Нам понятно, как делать, но пока все упирается в ресурсы телефона.
Почему у нас многое планируется, многое игнорируется? Всё упирается в то, что мы работаем на телефоне, и ёмкость нейронной сети очень сильно ограничена. Люди из селф-драйвинга, у которых в багажнике пять компьютеров, могут без проблем классифицировать несколько тысяч классов. А мы, пока не научимся работать быстрее, не сможем добавлять сразу много новых классов.
В продакшн
Александр Матвеенко: CEO Mapbox Эрик Гундерсен объявил, что у нас 9 сентября выйдет релиз. Какие фичи туда войдут, я пока не буду говорить. Мы готовимся выпустить SDK, набор компонентов, которые можно будет использовать в уже существующих мобильных приложениях. В первой версии юзкейсы использования нашего продукта будут скорее связаны с данными, их сбором и распознаванием, распознаванием дорожной обстановки онлайн. Пока что это не будет сильно связано с безопасностью. В дальнейшем мы больше сконцентрируемся на возможности предсказания аварий. Ведём переговоры с автопроизводителями, чтобы встраивать наш продукт в бортовые системы навигации.
Текст: Александр Лычавко
Фото: Андрей Давыдчик