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


iPhone 8 и iPhone SE

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

Однако эта история про ПО. Текущий iPhone заходит на территорию, на которую не ступали ноги предыдущих – речь про технологию «монокулярной оценки глубины по единственному изображению» [Single Image Monocular Depth Estimation]. Если по-простому, то это первый iPhone, способный выдавать эффект портрета, используя при этом единственное двумерное изображение.


Снимок после нового обновления нашего приложения, Halide. Штатное приложение работает в портретном режиме только с людьми.


Данные по глубине сцены, полученные с двумерного изображения

«А умеет ли так iPhone XR? У него тоже одна камера!» – можете сказать вы. Мы уже писали, что, хотя у XR и одна камера, он всё равно получал информацию о глубине сцены на уровне оборудования. Он подключался к фокусным пикселям матрицы, которые вы можете представить себе, как пары крохотных «глаз», помогающих фокусировать изображение. XR использует небольшую разницу в картинках, которые видят разные глаза, чтобы генерировать грубую карту глубины.

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

Давайте выведем следующее фото на полный экран и сделаем его фотографию при помощи iPhone SE:


Это Джун, официальный маскот Lux Optics

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


Данные по глубине с iPhone XR

iPhone SE 2 выдаёт совершенно другую карту глубины. Неправильную, но потрясающую!



Я тут убирался в доме у отца и обнаружил там слайд 50-летней давности с фотографией моей бабушки.



Ого! Забавный трюк, но выглядит неестественно. Насколько хорошо эта технология справится с реальным миром?

Реальный мир: результаты в основном потрясающие


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



Вот тут нейросеть перепутала деревья на заднем плане с головой Джун. Может, она решила, что это рога?



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


2020-й стал тяжёлым годом для всех

Фото выше я делал на iPhone 11 Pro и SE2, и очевидно, что несколько камер позволяют получать гораздо лучшие данные. Если iPhone 11 выдаёт всю глубину коридора, то iPhone SE2 не видит, где пол переходит в задний план.


iPhone 11 Pro и iPhone SE2

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



iPhone 11 Pro демонстрирует чёткие контуры на карте глубин. iPhone SE2 примерно разобрался в происходящем. Возможно, нейросети показывали много собак и мало растений?



Что в итоге? Всё размывается, вместо того, чтобы элементы на переднем плане размывались не так, как фон.


Слева iPhone 11 Pro, справа – iPhone SE 2.

Учитывайте, что тут я выкрутил эффект портрета на максимум, чтобы разница была очевидной. Если вам больше нравится картинка с iPhone SE 2, вы всегда можете воссоздать её на iPhone 11 Pro. Но чётких слоёв iPhone 11 Pro вы на iPhone SE 2 не получите.

Второй ИИ от Apple принимает участие в процессе разделения картинки на слои. Одновременно с iPhone XR Apple представила API «Portrait Effects Matte», способное находить на фото людей и генерировать детальную маску. Разрешение у этой маски выше, чем у данных по глубине.


Снято на iPhone XS в 2018. Сжато в 4 раза для экономии трафика.

Если объект на переднем плане чёткий и резкий, большинство людей не заметит, что вы играетесь с размытием фона.

Возвращаясь к нашему вопросу: «Почему Apple ограничивает этот эффект людьми?»

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

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

Так что следующий вопрос – сможет ли машинное обучение (МО) когда-нибудь развиться так, что нам уже не будут нужны устройства с несколькими камерами?

Проблема оценки глубины при помощи МО


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

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

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



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

Это приводит нас к последнему средству – распознавать глубину на основе одной, монокулярной неподвижной картинки. Если вы знакомы с одноглазым человеком, вы знаете, что его жизнь мало чем отличается от других – ему просто немного тяжелее, например, водить машину. Всё потому, что в вопросе распознавания расстояний мы полагаемся и на другие подсказки, вроде относительного размера объектов.

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


Недооценённый фильм «Top Secret!»

Ну круто. Давайте тогда просто обучим нейросеть распознавать эти подсказки?

К сожалению, мы описали некорректно поставленную задачу. У корректно поставленной задачи всегда есть только одно решение. Подобные задачи звучат как-то так: «Поезд выехал из Чикаго со скоростью 60 миль в час. Другой поезд выехал из Нью-Йорка со скоростью 80 миль в час…»

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



А некоторые картинки вообще нельзя решить – либо на них мало подсказок, либо они в принципе нерешаемы.


«Водопад» М. К. Эшера

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

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

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

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

Интересное время настало для фотографии.

Попробуйте сами


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

Если ваш iPhone поддерживает портретный режим, вы можете использовать Halide для съёмки в режиме Depth и посмотреть полученные карты глубины. Довольно интересно смотреть, как ваш iPhone пытается прочувствовать удивительно трёхмерный мир.