Настоящее суперразрешение в мобильной фотографии

НачалоЧто такое суперразрешениеЗачем телефону объективЧто происходит в объективеКак создать оптимальный объектив

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

Базово большинство разработчиков понимают суперразрешение так: берём фото низкого разрешения и получаем высокое. Чтобы этого добиться, используем алгоритмы, например:

  • GAN — генеративная состязательная сеть. Улучшает разрешение текстур и придаёт изображениям фотореализма.
  • SRGAN — Super Resolution GAN. Суть в том, что к первому алгоритму нужно добавить перцептивный лосс и дискриминатор. Тогда картинка на выходе будет ещё приятнее.
  • Диффузионные модели — генерируют картинки идеального качества, особенно если используются предобученные версии.
Это пример, как работает диффузионная модель

Кажется, что последний алгоритм — это идеальный вариант, несмотря на то, что процесс нужно контролировать на каждом этапе. Но есть техническая проблема: диффузионную модель сложно заставить сгенерировать картинку на основе другой. Проще использовать для этого алгоритм Text-to-image. Правда, результат получается непредсказуемый.

Пример работы диффузионной модели Text-to-image. Результаты сильно отличаются. Исходное фото — в левом нижнем углу. Диффузионная модель пофантазировала, пока дорисовывала фрагменты, — результат в правом нижнем углу

Следующая задача, которую было бы интересно решить с помощью суперразрешения: восстановить лицо, даже из одного пикселя. Поняли бы мы вообще, что это лицо. С этим может справиться, например, фотоаппарат, который создал дизайнер из Дании Бьорн Карманн в конце 2000-х годов. Устройство называется Paragraphica и представляет собой коробочку без объектива, но с экраном.

Так выглядит фотоаппарат

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

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

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

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

Чтобы датчики научились определять цвет, нужно установить светофильтры. Но они могут работать неправильно. Например, человек считает, что у него RGB-сенсор, а в определённой точке сенсоры синие. Расположение красных и зелёных как будто приходится угадывать — не всегда верно.

Белая пластина — из кремния, а разноцветная — это светофильтры

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

Это формула тонкой линзы в идеальном мире

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

Та же формула, но на практике

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

Слева — строение объектива Индустар, по центру — японский патент на объектив, справа — объектив камеры смартфона

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

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

BSRGAN и Real-ESRGAN — алгоритмы, которые позволяют получить графические артефакты, как после сжатия изображения в JPEG и другие форматы.

KernelGAN — генератор деградаций, который учился на разных уровнях искажений и может их воспроизвести.

Пример работы KernelGAN

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

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

Функция размытия точки зависит ещё и от расстояния: фокусного и до объекта

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

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

Это варианты пятен, которые получаются с разной конструкцией объективов. Левое нижнее — идеальное, а правое — реальное

Рассчитать всё это можно с помощью интеграла Рэлея — Зоммерфельда по формуле ниже — она из курса оптики.

Чтобы проанализировать одну точку, нужно свести в неё все волны. Это нужно сделать для каждого пятна

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

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

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

  • Попробовать разные конфигурации линз в объективах
  • Построить ландшафт целевой функции и стохастически её оптимизировать

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

  • Объектив, конфигурацию которого можно менять, но не до бесконечности, чтобы ничего не сломать
  • Нейросеть, которая будет восстанавливать изображение из минимального пятна

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

Поделитесь увиденным

Скопировать ссылку
ТелеграмВКонтакте