Site icon AppTractor

Почему ARKit лучше альтернатив?

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

Анонсирование Apple ARKit на последней конференции WWDC имело огромное влияние на экосистему дополненной реальности. Разработчики в первый раз встретились с надежным и широко доступным (с iOS11) SDK для дополненной реальности, который «просто работает» в их приложениях. Нет необходимости возиться с маркерами, инициализацией камер глубины или проприетарными инструментами разработки. Это предсказуемо привело к появлению большого количества демо-версий (@madewitharkit в Twitter). Однако многие разработчики не знают, как работает ARKit или почему он работает лучше, чем другие SDK. Сегодня мы посмотрим на ограничения ARKit, зачем и почему он нужен, а также когда подобные возможности будут доступны на Android и в очках виртуальной реальности (VR или AR).

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

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

На какой технологии основывается ARKit?

Технически ARKit — система визуальной инерциальной одометрии (VIO) с простым определением 2D плоскости. VIO обозначает, что программное обеспечение отслеживает вашу позицию в пространстве (вашу 6dof-позицию) в реальном времени, т.е. вычисляет её с каждым обновлением дисплея, 30 или более раз в секунду. Эти вычисления производятся дважды, параллельно. Ваша позиция отслеживается через визуальную систему (камеру), сравнивая точку в реальном мире с пикселями на сенсоре камеры. Также она отслеживается инерционной системой (вашим акселерометром и гироскопом — инерционной измерительной единицей или IMU). Выходные данные этих двух систем совмещаются через фильтр Калмана, который определяет, какая из двух систем предоставляет лучшую оценку вашей настоящей позиции (ground truth) и публикует это обновление позиции через SDK ARKit. Как одометр в вашем автомобиле определяет расстояние, которое проехал автомобиль, система VIO отслеживает расстояние, которое ваш iPhone прошел в 6D-пространстве. 6D объединяет 3D измерения по осям x, y и z (перемещение), а также крен, рыскание и тангаж (вращение).

Большим преимуществом, которое предлагает VIO, является то, что показания IMU производятся примерно 1000 раз в секунду и основаны на ускорении. Для измерения движения устройства между показаниями IMU используется навигационное счисление. Навигационное счисление — это в значительной степени догадка, Как если бы я попросил вас сделать шаг и угадать, сколько дюймов было в этом шаге, вы бы использовали навигационное счисление, чтобы оценить расстояние. Позднее я расскажу, почему эта догадка очень точна. Ошибки в инерциальной системе накапливаются с течением времени, поэтому чем больше времени проходит между кадрами IMU или чем дольше инерционная система работает без получения данных визуальной системы, тем больше отслеживание будет отклоняться от ground truth.

Визуальные / оптические измерения производятся с частотой кадров камеры, как правило это 30 кадров в секунду, и основаны на расстоянии (изменения сцены между кадрами). Оптические системы обычно накапливают ошибки в расстоянии (и времени в меньшей степени), поэтому чем дальше вы перемещаетесь, тем больше ошибка.

Хорошие новости — сильные стороны каждой системы отменяют недостатки другой.

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

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

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

Объяснение некоторых тайн

Я видел, как некоторые люди называют ARKit SLAM или используют термин SLAM, чтобы обозначить отслеживание. SLAM — это довольно широкий термин, как, например, “мультимедиа”. Отслеживание — это более широкий термин, тогда как одометрия — это более специфический, но они довольно близки в отношении AR. Это может вас запутать. Существует много способов осуществлять SLAM, и отслеживание — это один из компонентов полной системы SLAM. Я вижу ARKit как простую SLAM-систему. Системы Tango или Hololens обладают большим количеством функций, помимо одометрии.

Два самых частых вопроса о ARKit включают в себя: “Как вы получаете 3D из одной линзы?” и “Как вы получаете метрическую шкалу?”. Секрет здесь — в том, чтобы иметь хорошее удаление ошибок IMU, т.е. делать навигационное счисление более точным. Когда вы можете это сделать, происходит следующее:

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

Чтобы получить метрическую шкалу, система также полагается на точное навигационное счисление с IMU. С помощью измерений ускорения и времени от IMU, вы можете вычислить скорость и расстояние между кадрами. Вычисления не так сложны. Сложно в этом случае удалять ошибки IMU, чтобы получить почти идеальное измерение. Крохотная ошибка, которая происходит в течение нескольких секунд, пока вы двигаете телефон, может привести к ошибкам измерения в 30%. Впечатляет, что Apple снизил эту ошибку до 9% и менее.

Что насчет Tango, Hololens и Vuforia?

Tango — это бренд, а не продукт. Он состоит из аппаратного референсного дизайна (RGB и фишай-линзы, датчик глубины и некоторые спецификации CPU/GPU) и программного стека, который обеспечивает VIO (отслеживание движения), Sparse Mapping (изучение области) и плотную 3D-реконструкцию (восприятие глубины).

Hololens имеет тот же самый стек программ, но включает и некоторые ASIC (которые они называют блоками голографической обработки, Holographic Processing Units), чтобы разгрузить CPU и GPU.

Vuforia предлагает примерно то же самое, но имеет свое оборудование.

Все они используют одну и ту же систему VIO (Tango и ARKit даже одну и ту же базу кода, разработанную FlyBy). Ни Hololens, ни Tango не используют камеру глубины для отслеживания, хотя я верю, что они будут интегрировать её в некоторых случаях. Итак, почему ARKit так хорош?

Ответ в том, что ARKit не лучше Hololens (я бы даже поспорил, что трекер Hololens является лучшим на рынке), но оборудование Hololens не так доступно. Microsoft мог бы реализовать трекер Hololens в смартфоне с Windows, но я думаю, что они не сделали этого по коммерческим причинам: это добавило бы стоимости и времени на то, чтобы откалибровать сенсоры в смартфоне, который бы не продавался, а Microsoft-версия ARKit не убедила бы разработчиков переключиться с iOS или Android.

В Google могли бы внедрить VIO-систему Tango в смартфонах Android для массового рынка около года назад, но и они этого не сделали. Если бы они так поступили, ARKit выглядел бы повтором, а не прорывом. Я думаю, что так произошло по причине того, что они не хотели калибровать каждый сенсор у каждого производителя, и версия одного производителя работала бы не так, как у другого, а выделять группу крупных производителей, таких как Samsung, Huawei, и делать систему на их основе Google, очевидно, не хотел. Вместо этого они дали им референсный дизайн, который можно принимать или не принимать. Так как Android стандартизировал начинку смартфонов, камера и сенсоры остались последними различиями между смартфонами, поэтому было невозможно, чтобы все производители согласились на условия Google.

Google также потребовал, чтобы датчик глубины был частью набора, что добавляло стоимости телефону и тратило заряд батареи, и по этой причине производители отказались от этой системы. Так как с момента релиза ARKit мир изменился, было бы интересно посмотреть, найдут ли производители альтернативные Tango системы или изменится ли требования Google к смартфонам.

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

Стоит заметить, что существуют альтернативы крупным OEM системам. Многие академические трекеры (ORB Slam, OpenCV) предлагают только оптические системы (моно или стерео-RGB, камера глубины, некоторые используют разреженные карты, некоторые — плотные, а также карты глубины и другие косвенные данные от сенсоров). Некоторые стартапы работают над системами отслеживания, хорошо работает система от Augmented Pixels, но любая VIO-система нуждается в настройке и калибровке оборудования.

Я разработчик, что мне использовать и почему?

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

Затем вы можете использовать Tango или Hololens. Посмотрите, что происходит, когда ваше содержимое может взаимодействовать с 3D-структурой неконтролируемой обстановки.

Это действительно крутой переход. Более крутой, чем переход от веба к мобайлу или от мобайла к VR. Вам нужно полностью пересмотреть работу приложений, кейсы и UX. Я вижу много демо, которые я видел 4 года назад на Vuforia и ещё 4 года назад на Layar. Разработчики снова учатся тем же вещам, только в другом масштабе.

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

VIO впервые была внедрена в военно-промышленной компании Intersense в середине 2000-ых годов. Один из соавторов Леонид Наимарк был главным ученым в моем стартапе Dekko в 2011 году. После того, как Dekko доказал, что VIO не может работать на IPad 2 из-за сенсорных ограничений, Леонид вернулся к военным контрактам, но технический директор Dekko Пьер Георгель теперь является старшим инженером команды Google Daydream. Ogmento был основан моим партнером по Super Ventures Ори Инбаром. Ogmento стал FlyBy, и команда там успешно построила систему VIO на iOS, используя дополнительную камеру фишай. Эта база кода была лицензирована Google и стала системой VIO для Tango. Apple позже купила FlyBy, и эта же кодовая база является ядром ARKit VIO. Технический директор FlyBy Крис Броддус продолжил создание трекера для Daqri и теперь находится в автономной робототехнической компании с бывшим главным специалистом Zoox. Первая мобильная SLAM-система была разработана в 2007 году в лаборатории Оксфорда Active Computing (PTAM) Джорджем Кляйном, который продолжил создание системы VIO для Hololens вместе с Дэвидом Нистером, который ушел, чтобы построить систему автономного вождения в Tesla. Однокурсник Джорджа Герхард Рейтмайр возглавил разработку системы VIO Vuforia. Бывший руководитель Vuforia Эйтан Пилипски в настоящее время возглавляет разработку программного обеспечения AR в компании Snap. Основные члены исследовательских команд в Оксфорде, Кембридже и Имперском колледже разработали системы слежения Kinect и теперь ведут команды слежения в Oculus и Magic Leap.

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

Производительность — это статистика

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

По этой причине никогда не стоит доверять демо-версии AR-приложения, особенно если это отличное видео на YouTube. Существует огромный разрыв между чем-то, что хорошо работает в контролируемой обстановке, и чем-то, плохо работающим в обычной ситуации. Эта ситуация не применима для приложений или VR (представьте, если бы Slack работал/не работал в зависимости от того, куда указывает камера или как вы повернули запястье), поэтому зрители часто оказываются обманутыми.

Вот технический пример того, как статистика определяет качество работы системы:

На изображении выше мы видим сетку, которая представляет цифровой сенсор изображения в вашей камере. Для того, чтобы отслеживание было стабильным, каждый пиксель должен соответствовать точке в реальном мире (то есть устройство должно быть идеально неподвижным). Однако второе изображение показывает, что фотоны действуют не так, и свет разной интенсивности приходится на разные места, а каждый пиксель это сумма фотонов, попадающих на него. Любое изменение света меняет состав фотонов, попавших на сенсор, и теперь уже другие пиксели соответствуют точке в реальном мире. Визуальная трекинговая система предполагает, что вы переместили устройство. По этой причине мерцают точки в различных демках ARKit, так как система должна решить, на какие из них можно положиться. Затем система должна произвести триангуляцию, чтобы рассчитать позицию, усредняя эти расчеты, чтобы получить наилучшую оценку. Удаление статистических ошибок из этого процесса приводит к большей надежности системы. Это требует интеграции и калибровки оборудования камеры (линзы и покрытия, затвор, особенности сенсора изображения), IMU и алгоритмов приложения.

Интеграция оборудования и программного обеспечения

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

Даже если у вас есть доступ к одному из этих людей, всё будет зависеть от совместной работы оборудования и программы устранения ошибок. IMU может быть идеально настроен, с полным доступом к камере и настройкам каждого компонента, но без точной синхронизации система не будет работать правильно. Она должна знать, какие данные IMU соответствуют началу захвата кадра, а какие — концу. Это жизненно важно для корреляции двух систем, и до недавних пор это было невозможно, так как производители не хотели заниматься этим вопросом. Поэтому система Dekko для iPad 2 требовала так много времени для калибровки. Первый телефон Tango Peanut был первым устройством с точной синхронизацией и первым смартфоном, предлагающим отличное отслеживание. Сегодня SoC от Qualcom и других компаний имеют синхронизированный сенсорный хаб для всех компонентов, а VIO теперь жизнеспособны на большинстве современных устройств с соответствующей калибровкой датчика.

Из-за этой тесной связи между оборудованием и программным обеспечением для разработчика невозможно создать отличную систему без поддержки производителя устройств. Google много потратил на то, чтобы некоторые производители поддерживали требования Tango. Microsoft, Magic Leap создают свои собственные устройства, и поэтому Apple так успешна в создании ARKit.

Оптическая калибровка

Существует два типа калибровки камеры:

Геометрическая калибровка: Она использует модель камеры-обскуры для коррекции поля зрения линзы и таких вещей, как «эффект бочки» линзы. Почти каждое изображение деформируется из-за формы линзы. Многие разработчики могут справиться с этим шагом без сотрудничества с производителями, используя базовые публичные спецификации камеры.

Luden.Io представила первую ARKit-игру AR Tribe

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

Инерционная калибровка

Важно помнить, что IMU измеряет ускорение, а не расстояние или скорость, а ошибки в измерениях IMU быстро накапливаются. Цель калибровки и моделирования — убедиться, что измерение расстояния достаточно точно для X доль секунды. В идеале этот период покрывает время, которое камера прекращает отслеживание на пару кадров, или пользователь закрывает камеру, или что-то ещё происходит в кадре.

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

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

Получить действительно точную систему даже сложнее, чем может показаться. Производители должны проходить этот процесс со всеми устройствами в портфолио, но даже тогда у разных устройств могут быть разные IMU. Например, в Galaxy 7 может быть IMU от Invensense или от Bosch, и моделирование двух устройств работает по-разному. Apple при этом имеет ещё одно преимущество перед Android.

Будущее отслеживания

Если VIO работает сейчас, то что будет потом и станет ли ARKit ненужным? VIO останется лучшим способом отслеживания в пределах нескольких сотен метров (для большей длины системе нужно проводить релокализацию, используя сочетание GPS и распознавания ландшафта). Причина этого заключается в том, что даже если оптические системы станут такими же точными, как VIO, они потребуют больше мощности GPU или камеры, что действительно влияет на работу очков виртуальной реальности. Монокулярная VIO — самая точная система с наименьшими затратами энергии и наименьшей стоимостью.

Глубокое обучение действительно влияет на исследовательское сообщество. Сейчас системы, основанные на глубоком обучении, дают ошибку около 10%, а лучшие VIO-системы — менее 1%, но они продолжают развиваться и помогут с релокализацией на открытом воздухе.

Датчики глубины могут помочь VIO-системам. Точное измерение ground truth и метрической шкалы, а также отслеживание крайних характеристик для низкокачественных сцен — их самые большие преимущества. Но они потребляют очень много энергии, поэтому их стоит запускать на очень низкой частоте кадров, а между этими кадрами использовать VIO. Датчики глубины не работают вне помещений, потому что фоновое инфракрасное излучение от солнечного света мешает работать инфракрасному проектору датчика. Их диапазон работы зависит от потребления энергии, и для телефона он составляет несколько метров. Эти датчики дорого стоят, и производители избегают их в телефонах, которые выпускаются в больших объемах.

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

Самое интересное из того, что ожидается сейчас — это поддержка отслеживания на больших площадях. Не существует почти никакой разницы между отслеживанием для AR и отслеживанием беспилотных автомобилей, только AR-системы работают на меньшем количестве сенсоров и с меньшей мощностью. Так как ни у одного устройства не хватит памяти на то, чтобы создавать карты для больших территорий, необходим облачный сервис, и по этой причине Google недавно анонсировал Tango Visual Positioning Service. Мы увидим больше в ближайшее время. По этой же причине все сейчас так обеспокоены 3D-картами.

Будущее AR-компьютерного зрения

6DoF-позиционное отслеживание будет широко распространено через 12-18 месяцев на всех устройствах. Остается решить ещё несколько вещей:

3D-реконструкция. Это система, способная определить форму или структуру реальных объектов в сцене. Она позволяет виртуальному контенту встроиться в реальный мир. Эта функция также заставляет многих думать, что AR — это “смешанная реальность” (спасибо, Magic Leap!). Это всегда дополненная реальность, просто во многих демо люди не видят поддержки 3D-реконструкции, поэтому кажется, что контент просто движется перед объектами реального мира. 3D-реконструкция работает, захватывая плотное облако точек из сцены (с помощью датчика глубины), затем конвертирует его в сетку, которую отправляет в Unity вместе с координатами реального мира. Виртуальный контент при этом взаимодействует с реальным миром. ARKit осуществляет двухмерную версию этой функции, определяя плоскости. Это необходимый минимум. Без основной плоскости у контента Unity не будет опоры и он будет просто парить вокруг.

Все проблемы с датчиками глубины по-прежнему актуальны и здесь. Сейчас проводятся исследования, цель которых — создание реалистичной 3D-реконструкции в реальном времени, используя только RGB-камеру. Это главная причина, по которой я считаю, что очки виртуальной реальности для большого числа потребителей будут созданы не так скоро.

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

Будущее других функций AR

Невозможно охватить всё в этой статье, но дальше с технологиями будет происходить много всего:

[notice]

Дополнительные материалы

[/notice]

 

Exit mobile version