Исследование Google: портретный режим на смартфонах Pixel 2 и Pixel 2 XL

Google машинное обучение искусственный интеллект глубокое обучение Нейронные сети
Исследование Google: портретный режим на смартфонах Pixel 2 и Pixel 2 XL
Автор: главный инженер Марк Левой, инженер-программист Яэль Притч

Портретный режим — ключевая функция новых смартфонов Pixel 2 и Pixel 2 XL, позволяющая любому делать профессиональные фотографии с малой глубиной резкости. Эта функция помогла обоим телефонам заработать самые высокие оценки DxO.Рейтинг камер мобильных телефонов, а также для передней и задней камер, хотя ни один из телефонов не имеет двойных камер (для этого обычно требуется две камеры). Сегодня мы обсудим методы машинного обучения и вычислительной фотографии, лежащие в основе этой функции.
Не включеноПортретный режим (слева) ивключитьПортретный режим (справа) HDR+ фотографии. Обратите внимание, как синтетическая малая глубина резкости в портретном режиме помогает устранить фоновые помехи и сосредоточиться на объекте фотографии. Нажмите на ссылку в заголовке, чтобы просмотреть версию в полном разрешении. Фотограф: Мэтт Джонс
Что такое фотография с малой глубиной резкости?
Однообъективные зеркальные камеры (SLR) с большими объективами имеют мелкиеглубина резкостиособенность, то есть объекты на определенном расстоянии от камеры получаются резкими, а объекты впереди или позади «плоскости фокуса» размыты. Небольшая глубина резкости — отличный способ привлечь внимание зрителя к объекту фотографии или убрать загроможденный фон. Небольшая глубина резкости придает характерную эстетику портретам, снятым на цифровые зеркальные камеры.

Степень размытия на фотографии с малой глубиной резкости зависит от глубины; чем дальше объект находится от фокальной плоскости, тем более размытым будет изображение на дисплее. Степень размытия также зависит от размера отверстия объектива. Диафрагма Отверстие 50-мм объектива при f/2,0 выражается в диаметре как 50 мм/2 = 25 мм. С таким объективом объекты даже в нескольких сантиметрах от фокальной плоскости будут размыты.

Еще один параметр, который стоит знать о глубине резкости, — это форма размытого светового пятна. Эта форма называетсяБоке, что зависит от физической структуры апертуры объектива. Боке круглое? Или он шестигранный (поскольку в некоторых объективах диафрагма состоит из шести тонких листов металла)? Фотографы до сих пор неустанно спорят о том, что считать хорошим или плохим боке.

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

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

Более простая версия этого алгоритма, используемая некоторыми приложениями для смартфонов с одной камерой, включает разделение изображения на два слоя: пиксели, принадлежащие переднему плану (обычно люди), и пиксели, принадлежащие фону. Это деление иногда называютсемантика сегментация, он может размыть фон, но не имеет понятия глубины, поэтому не может дать степень размытия. Также, если перед человеком очень близко к камере находится объект, он не будет размыт, хотя реальная камера его размоет.

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

Как работает портретный режим Pixel 2
Google Pixel 2 предлагает портретный режим как на задней, так и на передней камерах. Для фронтальной (селфи) камеры используется только сплит. Для задней камеры используется как стереосопоставление, так и сегментация. Но подождите, у Pixel 2 только одна задняя камера, как добиться стереофонического согласования? Давайте пошагово рассмотрим процесс.
Шаг 1: Создайте изображение HDR+.
Портретный режим начинается с фотографии, на которой все четко. Для этого мы используем технологию вычислительной фотографии Google.HDR+улучшить
качество, эта технология реализована на всех последних телефонах Nexus/Pixel. Он работает, захватывая серию недоэкспонированных изображений, чтобы избежать яркого света, регулируя и балансируя эти кадры, чтобы уменьшить шум в тенях, и улучшая тени таким образом, чтобы сохранить локальный контраст и разумно уменьшить общий контраст. Даже в условиях низкой освещенности результат будетрасширенный динамический диапазон, фотографии с низким уровнем шума и четкими деталями.
Идея уменьшения шума путем настройки и балансировки нескольких кадров использовалась в астрофотографии на протяжении десятилетий. Реализация Google немного отличается, потому что мы имеем дело с кадрами фотографий, сделанными с помощью портативной камеры, и нам нужно быть осторожными, чтобы избежать ореолов, если фотограф нестабилен или если объекты в сцене движутся. Ниже приведен пример сцены с высоким динамическим диапазоном, снятой с помощью HDR+.
Pixel 2 Не включено(слева) ивключить(справа) HDR+ сделаны фотографии.
Обратите внимание, как HDR+ избегает бликов на небе и во дворе, сохраняя при этом детали в тенях потолка аркады.
Фотограф: Марк Левой
Шаг 2. Сегментация переднего плана и фона на основе машинного обучения.
Начиная с фотографии HDR+, мы затем решаем, какие пиксели принадлежат переднему плану (обычно человеку), а какие относятся к фону. Это сложный вопрос, потому что сХромакей(также известный как зеленый экран), мы не можем предположить, что фон зеленый (или синий, или любой другой цвет). Поэтому вместо этого мы применили машинное обучение. 
В частности, мы обучилиTensorFlowНаписана нейронная сеть, которая изучает фотографии и оценивает, какие пиксели принадлежат людям, а какие нет. Конкретная сеть, которую мы используем, имеет пропуск соединений.Сверточная нейронная сеть(Си-Эн-Эн). «Свертка» означает, что изученные компоненты сети представлены в виде фильтров (взвешенных сумм соседних пикселей вокруг каждого пикселя), поэтому сеть можно рассматривать как фильтрацию изображения, а затем фильтрацию отфильтрованного изображения и т. д. «Пропустить соединения» позволяет легко передавать информацию от ранних стадий сети, где можно вывести признаки низкого уровня (цвета и края), на более поздние этапы сети, где можно вывести признаки высокого уровня (лица и части тела). Объединение этих этапов становится важным, когда вам нужно не только определить, есть ли человек на фотографии, но и определить, какие именно пиксели принадлежат человеку. наш CNN был обучен почти 1 миллиону фотографий людей в шляпах, солнцезащитных очках и с рожками мороженого в руках. Рассуждение, используемое для создания маски, используетTensorFlow Mobileработает на мобильном телефоне. Вот пример:
левыйэто фотография, созданная с помощью процесса HDR+,Правильно— сглаженный выход нейронной сети. Сеть считает белую часть маски передним планом, а черную — фоном.
Фотограф: Сэм Квескин
Насколько хороша маска? Не так уж плохо: наша нейронная сеть распознает волосы женщины и чашку чая как часть переднего плана и в результате сохраняет их резкость. Если мы размоем фотографию по этой маске, то получим следующее изображение:
Синтетическая малая глубина резкости, созданная с использованием маскиизображение.
Есть несколько замечаний по этому результату. Во-первых, уровень размытия постоянен, даже несмотря на то, что фон содержит объекты разной глубины. Во-вторых, DSLR также размывает закуску на тарелке (и саму тарелку), потому что она находится так близко к камере. Наша нейронная сеть знает, что димсам не является частью женщины (обратите внимание, что на изображении с маской он черный), но поскольку он находится ниже женщины, он также вряд ли является частью фона. Мы явно обнаруживаем это и сохраняем эти пиксели относительно четкими. К сожалению, это решение не всегда правильное, и в этом случае мы должны сделать эти пиксели более размытыми.
Шаг 3: От двойного пикселя к карте глубины
Чтобы улучшить этот результат, полезно знать глубину каждой точки сцены. Мы можем рассчитать глубину, используя стереоалгоритм. Pixel 2 не имеет двойной камеры, но имеет технологию, называемую пикселями фазового автофокуса (PDAF), которую иногда называютДвойной пиксельный автофокус(ДПАФ). Это запутанное чтение, но концепция очень проста. Представьте, что (крошечный) объектив задней камеры телефона разделен пополам, и поле зрения, видимое через левую сторону объектива, будет немного отличаться от поля зрения, видимого через правую сторону объектива. Две точки зрения одинаковы 1 мм (примерно диаметр объектива), но этой разницы достаточно для расчета стереозрения и создания карты глубины. Оптический принцип камеры эквивалентен разделению каждого пикселя на чипе датчика изображения на два меньших соседних пикселя, которые считываются отдельно с чипа, следующим образом:
На задней камере Pixel 2 правая сторона каждого пикселя просматривается через левую сторону объектива, а левая сторона каждого пикселя просматривается через правую сторону объектива.
Картограф:Markus Kohlpaintner, воспроизведено с разрешения.
Как показано, пиксели PDAF обеспечивают изображение через левую и правую стороны объектива на одном снимке. Или, если вы держите телефон вертикально, верхнюю и нижнюю части объектива. Изображение ниже представляет собой пример сцены, снятой через верхнюю и нижнюю половины объектива. Эти изображения являются монохромными, потому что мы используем только в стереоалгоритмеЦветовой фильтр БайераЗеленые пиксели сенсора, красные или синие пиксели не используются. Не можете различить два изображения? Может поможет анимированная гифка справа (ниже). Присмотревшись, разница действительно очень мала!
Через объектив Pixel 2начальствополовина иВнизПоловина полученного вида тестовой сцены. справаанимированный gifсередина,
Обратите внимание, что женщина почти не двигается, так как камера фокусируется на ней, а фон движется вверх и вниз.
Объекты перед ней (если мы можем это видеть) будут двигаться вниз, когда фон поднимается (и наоборот).
Технология PDAF, используемая во многих камерах (включая цифровые зеркальные фотокамеры), помогает камере быстрее фокусироваться при записи видео. В нашем приложении этот метод используется для вычисления карты глубины. В частности, мы используем левое и правое изображения (или верхнее и нижнее изображения) в качестве входных данных для стереоалгоритма, аналогичного алгоритму Google.JumpСистемный сшиватель панорам (названныйJump Assembler) используется в изображении. Этот алгоритм сначала выполняет разбиение с точностью до субпикселя для создания карты глубины с низким разрешением, а затем используетДвусторонний решательОн интерполируется для создания карты глубины с высоким разрешением. Это похоже на предыдущий Googleразмытие объективаТехнология, используемая в функции, аналогична. 
Еще одна деталь: поскольку камера Pixel 2 фиксирует очень близкие виды слева и справа, информация о глубине, которую мы получаем, неточна, особенно в условиях низкой освещенности, когда изображение зашумлено. Чтобы уменьшить этот шум и повысить точность определения глубины, мы делаем серию левых и правых изображений, затем корректируем и балансируем их перед применением нашего стереоалгоритма. Конечно, на этом этапе нам нужно быть осторожными, чтобы избежать ложных совпадений, как при обработке HDR+, иначе на карте глубины будут ореолы (этоЕще одна запись в блогеТема). Левое изображение ниже — это карта глубины, созданная для приведенного выше примера с использованием нашего стереоалгоритма.
левый: карта глубины, рассчитанная на основе изображений верхней и нижней половины передней линзы с использованием стереоалгоритма. Ярче значит ближе к камере. Правильно: визуализация размытия, которое мы применили к каждому пикселю исходного изображения. Черный цвет означает полное отсутствие размытия, красный означает, что элементы сцены находятся за плоскостью в фокусе (лицо женщины), чем ярче красный цвет, тем сильнее размытие, а синий — это элементы перед плоскостью в фокусе (тусклая сумма). .
Шаг 4: Сведите процесс для создания окончательного изображения
Последний шаг — объединить маску сегментации, которую мы вычислили на шаге 2, с картой глубины, вычисленной на шаге 3, чтобы определить, какое размытие установить для каждого пикселя на фотографии HDR+ с шага 1. То, как мы комбинируем глубину и маску, является секретом, однако наша общая идея состоит в том, что мы хотим, чтобы черты сцены, которые, по нашему мнению, принадлежат людям (белая часть маски), оставались четкими, а черты, которые, как мы думаем, принадлежат к фону (черная часть маски) согласно Они размываются пропорционально расстоянию до фокальной плоскости, которое получается из карты глубины. Красное изображение выше — это визуализация того, насколько размыт каждый пиксель.
На самом деле применение размытия концептуально является самой простой частью: каждый пиксель заменяется полупрозрачной пластиной того же цвета, но другого размера. Если мы скомпонуем эти пластины в порядке глубины, подобно балансу, который мы представили ранее, мы получим результаты, очень близкие к истинному оптическому размытию. Одна из приятных особенностей синтетической расфокусировки заключается в том, что, поскольку мы используем программное обеспечение, мы можем получить идеальное изображение.диск боке, не нужно ходить с килограммами стеклянных объективов камеры. Интересно, что в программном обеспечении у нас нет особых причин оставаться верными реальности; мы можем настроить форму боке так, как захотим. Ниже приведен окончательный результат для нашего примера сцены в портретном режиме. Если это
Сравните результат с результатом в крайнем правом углу на шаге 2, и вы увидите, что затемненная сумма теперь немного размыта, примерно так же, как у DSLR.
Окончательное комбинированное изображение с малой глубиной резкости, полученное путем объединения нашего HDR+
Фото, маска сегментации и генерация карты глубины. Нажмите, чтобы посмотреть в полном разрешенииизображение.
Как использовать портретный режим
Портретный режим на Pixel 2 можно активировать полностью автоматически за 4 секунды (в отличие от режима «размытие объектива» на предыдущих устройствах).
Этот режим требует специальных движений телефона вверх и вниз), а стабильность достаточно высока, чтобы
Использование неопытными пользователями. Вот примерФотоальбом, куда входят сложные ситуации вроде людей с кудрявыми волосами и букетом в руках и т.д. Ниже приведен список того, что мы можем сделать в совершенно новом Несколько способов использовать портретный режим на Pixel 2.
макросъемка
Если вы используете портретный режим и направляете камеру на небольшой объект, а не на человека (например, на цветок или еду), наша нейронная сеть не сможет найти лицо и не сгенерирует полезную маску сегментации. Другими словами, шаг 2 нашего процесса не применяется. К счастью, мы все еще можем создать карту глубины из данных PDAF (шаг 3), поэтому изображение с малой глубиной резкости можно вычислить только из карты глубины. Поскольку базовая линия между левой и правой сторонами объектива очень мала, это работает только для объектов, которые находятся примерно в пределах метра. Но для таких сцен можно получить очень красивые фотографии. Вы можете назвать этот режим режимом Synthetic Macro. Ниже приведен пример прямого и портретного снимка объекта крупного размера, а вот пример с дополнительными макроснимками.Фотоальбом, который включает в себя более сложные ситуации, такие как питьевые фонтанчики с тонкой проволочной сеткой позади них. Будьте осторожны, не подходите слишком близко, Pixel 2 не сможет четко сфокусироваться на объектах в пределах 10 см от камеры.
Не включеноПортретный режим (слева) ивключитьМакрофотография в портретном режиме (справа). Здесь никого нет, поэтому пиксели фона определяются чисто с помощью карты глубины. Фотограф: Марк Левой
селфи камера
Портретный режим поддерживается как на передней камере (селфи), так и на задней камере Pixel 2. Фронтальная камера имеет разрешение 8 Мп вместо 12 Мп. У него нет пикселей PDAF, то есть его пиксели не разделены на левую и правую части. В этом случае шаг 3 нашего процесса не применяется, но если мы сможем найти лицо, мы все равно сможем использовать нашу нейронную сеть (шаг 2) для создания маски сегментации. Таким образом, мы по-прежнему можем генерировать изображение с малой глубиной резкости, однако, поскольку мы не знаем расстояния до объекта, мы не можем устанавливать разные уровни размытия по глубине. Тем не менее, эффект выглядит очень хорошо, особенно для селфи с загроможденным фоном, и в этом случае размытие помогает подавить беспорядок. Ниже приведено использование Примеры селфи, снятые непосредственно с селфи-камеры Pixel 2 в портретном режиме.
Не включеноПортретный режим (слева) ивключитьСелфи в портретном режиме (справа). фронтальная камера отсутствует Пиксели PDAF, следовательно, фоновые пиксели можно определить только с помощью машинного обучения. Фотограф: Марк Левой

Как получить максимальную отдачу от портретного режима
Портреты, созданные Pixel 2, зависят от основного изображения HDR+, масок сегментации и карт глубины; проблемы с этими входными данными могут вызвать артефакты в результатах. Например, если объект переэкспонирован (выставлен как белый) на изображении HDR+, маловероятно, что в левом и правом изображениях будет полезная информация, что приведет к ошибке в карте глубины. Что может пойти не так с сегментацией? Это нейронная сеть, которая была обучена почти миллиону изображений, но мы держим пари, что она не изучила фотографию человека, целующего крокодила, поэтому она может игнорировать крокодила из маски, в результате чего изображение крокодила будет размытым. А карта глубины? Наш стереоалгоритм может дать сбой на объектах, которые не имеют текстуры (например, глухие стены), потому что стереоалгоритму нечего вычислять; он также может дать сбой на повторяющихся текстурах (например, клетчатых рубашках) или горизонтальных и вертикальных линиях, потому что Стереоалгоритмы могут соответствовать неправильной части изображения, что приводит к тому, что триангуляция создает неправильную глубину.

Однако, поскольку любая сложная техника требует компромиссов, вот несколько советов по созданию великолепных фотографий в портретном режиме:
  • Встаньте достаточно близко к объекту, чтобы его голова (или голова и плечи) заполнили кадр.
  • Если вы хотите, чтобы все на групповом фото были резкими, убедитесь, что они находятся на одинаковом расстоянии от камеры.
  • Если вам нужно лучшее размытие, оставьте некоторое расстояние между объектом и фоном.
  • Удалите черные солнцезащитные очки, шляпы с широкими полями, огромные шарфы и шкуры из кожи аллигатора.
  • Для макросъемки сфокусируйтесь, нажав, чтобы объект, который вы хотите запечатлеть, оставался четким.
Кстати, в портретном режиме вы заметите, что камеры немного увеличиваются (в 1,5 раза для задней камеры и в 1,2 раза для селфи-камеры). Это сделано намеренно, так как более узкое поле зрения заставит вас немного отступить, что, в свою очередь, уменьшит искажение перспективы.
Это, в свою очередь, позволяет получать более качественные портреты.

Пришло ли время (навсегда) отказаться от зеркальных фотокамер?
Когда мы присоединились к Google 5 лет назад, количество пикселей на фотографиях с мобильных телефонов не
Однако, догоняя количество пикселей DSLR, этого более чем достаточно для нужд большинства людей. даже на больших домашних компьютерах
На экране вы также не можете видеть отдельные пиксели на фотографии, сделанной на телефон.
Тем не менее, телефонные камеры не могут конкурировать с зеркальными камерами в четырех областях:
  1. Динамический диапазон в ярких сценах (переэкспонированное небо)
  2. Отношение сигнал/шум (SNR) при слабом освещении (шумные фотографии, отсутствие деталей)
  3. Zoom (для селфи-фотографий)
  4. Малая глубина резкости
HDR+ от Google и аналогичные технологии от конкурентов добились огромных успехов на 1-м и 2-м. На самом деле, в условиях низкой освещенности мы обычно не снимаем с помощью DSLR, потому что мы можем получить более качественную фотографию с нашего телефона без трудоемкой многократной экспозиции и постобработки. Для масштабирования помогают не очень большие телеобъективы (обычно с 2-кратным фокусным расстоянием), которые добавляются к некоторым смартфонам, но ничто не заменит объектив 400 мм (который также является гораздо более безопасным инструментом!). Для малой глубины резкости синтетическая расфокусировка отличается от истинной оптической расфокусировки, но визуальный эффект достаточно близок для достижения той же цели, которая состоит в том, чтобы сфокусировать ваше внимание на объекте.

Исчезнут ли зеркальные фотокамеры с большими сенсорами и большими объективами (или их беззеркальные собратья со сменными объективами (MIL))? Это утверждение сомнительно, однако на них будет приходиться лишь небольшая доля рынка. Мы оба путешествуем с большой камерой и Pixel 2. В начале поездки мы будем верны зеркальной камере, но в конце большую часть времени она будет в чемодане. Добро пожаловать в новый мир программно-определяемых камер и вычислительной фотографии!
Чтобы узнать больше о портретном режиме на Pixel 2, посмотритеNat & Friendsсделал это видео.
Ниже другойФотоальбом, который включает в себя использование Фотографии Pixel 2 (с включенным портретным режимом и без него) и видео.