КОНСТАНТИН ШАМИН
500
мегапикселей на старую камеру
Исследование Константина Шамина при поддержке Nature Photo Team и Яркий Фотомаркет
фото: Владимир Медведев
КОНСТАНТИН ШАМИН

500 мегапикселей
на старую камеру

Исследование Константина Шамина при поддержке Nature Photo Team и Яркий Фотомаркет
КОНСТАНТИН ШАМИН
500 мегапикселей
на старую камеру
Исследование Константина Шамина при поддержке Nature Photo Team и Яркий Фотомаркет
Амбициозная задача
В преддверии крупнейшего форума природной фотографии Nature Photo Talks мы провели эксперимент по экстремальному увеличению фотографии для печати большим форматом.

Исходным материалом послужила фотография Владимира Медведева, снятая на Canon EOS 5D Mark II в 2011 году (то есть 13 лет назад). Оригинальный кадр имеет разрешение 20 мегапикселей, а для печати 120 на 180 см при 400 dpi требуется файл 535 мегапикселей (28346 на 18898 px). Это значит, что нам надо увеличить оригинальную фотографию в 26 раз!
Фотография увеличена с 20 до 535 мегапикселей
Рабочий инструмент
При таком большом увеличении нам неоткуда брать детали поэтому было принято решение разрешить нейросетям их придумывать и дорисовывать. Для увеличения я выбрал нейросеть Stable Diffusion c моделью cyberrealistic (v41). Эта модель хорошо справляется с фотореалистичными изображениями.
Плюсы:
  • Бесплатно
  • Работает локально
  • Имеет огромное количество ручных настроек
Минусы:
  • Требовательна к железу
  • Надо разобраться в установке
  • Имеет огромное количество ручных настроек (тоже надо разобраться)
В этой статье мы опустим технические нюансы установки нейросети на компьютер. Всё это уже подробно расписано в интернете.
Напечатанную фотографию можно посмотреть вживую до 21 апреля 2024 на выставке Nature Photo Team
Как происходит увеличение?
Когда мы говорим о нейросетях, всегда имеет смысл помнить, что они не готовы на текущей стадии развития работать сразу с большим изображением. Поэтому с ними часто работают или в маленьких разрешениях или раскладывают фотографию на «плитки».
В случае увеличения фотографии как раз работает второй способ. Наша фотография автоматически режется на квадраты (обычно 512×512px) после чего нейросеть их перебирает и увеличивает, дорисовывая внутри детали из контекста и согласовывая с соседними квадратами. Это с одной стороны позволяет работать с большими изображениями, а с другой — приводит к забавным коллизиям, с которыми мы сегодня тоже столкнемся.
Настройки Stable Diffusion
Так как мы не генерируем новое изображение, а увеличиваем существующее, то нам нужен режим img2img, в котором мы выберем модель, которую предпочитаем и загрузим оригинал фотографии.
Параметры генерации
  • Семплер: для реалистичных изображений я предпочитаю DPM++ 2M Karras
  • Количество шагов — это то, сколько проходов сделает нейросеть, чтобы достичь нужного уровня детализации. Чем меньше — тем более «простым» (меньше деталей) будет результат. Для каждой модели есть свои предпочтительные значения шага, но обычно шаг в 20-30 пунктов подходит для практически всего.
  • Уровень шума — пожалуй, самый важный параметр! Он определяет то, насколько новое изображение будет идентично старому. Чем меньше это значение тем ближе к оригиналу будет сгенерированное изображение.
Разбивка на блоки
Далее нам понадобится дополнение ControlNet, который выполняет сразу несколько задач:
  1. Контролирует чтобы новая сгенерированная картинка соответствовала оригиналу
  2. Разбивает фотографию на блоки (препроцессор) и по очереди отдает блоки на генерацию
  3. Следит, чтобы картинка загруженная в ControlNet была важнее всего остального (каждый раз сверяется с оригиналом).

Загружаем оригинал и выставляем следующие настройки:
  • Препроцессор tile_resample
  • Модель препроцессора control_v11fle_sd15_tile
  • Выбираем чекбокс ControlNet is more important
Увеличение фотографии
Последний шаг настройки — указать Stable Diffusion как и с помощью чего увеличивать блоки. Для этого выбираем:
  • Ultimate SD upscale (в модуле Script)
  • Как рассчитывать увеличение (проще в кратностях: в 2 раза, в 4 раза…)
  • Модель апскейлера. Я предпочитаю 4x-UltraSharp
Уровень шума — самый важный параметр!
Если выше вы внимательно смотрели настройки, то заметили, что я специально сделал акцент на уровень шума. Именно он определяет сколько деталей будет придумано и дорисовано и насколько сильно новое изображение будет отличаться от оригинала.

Я рекомендую пользоваться значениями от 0.2 (максимально близко к оригиналу) до 0.5, но в рамках статьи в качестве иллюстрации покажу варианты до 0.7.
Лучший результат получится, если мы сделаем несколько увеличений с разными значениями шума и сложим их в Фотошопе

Уровень шума 0,2

При таком уровне шума мы видим, что изображение стало резче (слева оригинал, увеличенный в Фотошопе, а справа — в нейросети). Кроме резкости появилась детализация, которой не было в оригинале, но в целом это похоже на апскейлеры типа Topaz Photo Ai — без генерации новых текстур.

Уровень шума 0,3

Тут мы видим еще больше деталей, но также на однородных поверхностях (вода/небо) из-за того, что фотография изначально имела шум нейросеть начинает добавлять вольности — пририсовывать то, чего не было.
Текстура воды покрылась трещинами, а на небе появились пятна и «зачатки» облаков.

Уровень шума 0,4

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

Уровень шума 0,5

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

Уровень шума 0,6 и 0,7

Эти варианты изобилуют различными новыми сущностями и уже мало реалистичными рисовками. Предлагаю просто насладиться кропами лучших моментов.
Собираем итоговую фотографию
Как вы могли заметить, при разном значении уровня шума у нас хорошо получаются разные части фотографии. Поэтому изначально я и говорил, что лучший результат — это сборка из разных вариантов апскейла. Для финального результата мы возьмем:
  • лес с варианта с шумом 0.5
  • горы с шумом 0.3
  • камни с шумом 0.4
  • воду и небо с шумом 0.2
Результат
Несколько сравнений оригинала и получившегося результата

Результат отдельной фотографией

Даже при просмотре на сайте видно насколько более детализированная стала фотография.

Заключение

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

Это, даёт второй шанс старым фотографиям, снятым на камеры с низким разрешением. Убедиться в этом вы можете посетив фото-форум Nature Photo Talks, где сможете вживую изучить фотографию, распечатанную большим форматом! А ещё, я оставил на ней пасхалку от нейросети. Сможете найти?

P.S. Философский вопрос «Это все еще та же фотография или уже что-то новое» мы по-прежнему оставляем открытым!
  • Константин Шамин

    Профессиональный пейзажный и travel-фотограф

    Константин Шамин занимается фотографией более 20 лет. Работает в разных жанрах: творческие и коммерческие съёмки, тревел, пейзаж, постановочная фотография, аэросъёмка. Любит экспериментировать в жанрах и техниках съемки. Основатель Школы Первого Фото Канала, сооснователь компании-организатора профессиональных фототуров Еврофототур.

    Сайт автора