Амбициозная задача
В преддверии крупнейшего форума природной фотографии Nature Photo Talks решили сделать необычное: взять фотографию со старой камеры и увеличить ее до размеров печати 180×120см и 400 dpi.
За исходный материал была взята фотографии Владимира Медведева, снятая на Canon EOS 5D Mark II в 2011 году (то есть 13 лет назад). Фотография имеет разрешение 20 мегапикселей. А мы захотели её увеличить до 535 мегапикселей (28346×18898px) — то есть в 26 раз!
Особенность увеличения
При таком большом увеличении нам неоткуда брать детали поэтому было принято решение разрешить нейросетям их придумывать и дорисовывать.
Рабочий инструмент
Для такого увеличения была выбрана нейросеть Stable Diffusion c моделью cyberrealistic (v41). Эта модель хорошо справляется с фотореалистичными изображениями.
Плюсы:
- Работает локально
- Имеет огромное количество ручных настроек
- Бесплатно
Минусы:
- Надо разобраться в установке
- Имеет огромное количество ручных настроек (тоже надо разобраться)
- Требовательна к железу
В этой статье мы опустим нюансы установки нейросети на компьютер, поиска и добавления моделей, ControlNet, препроцессоров и скриптов. Всё это есть в огромных количествах в интернете — достаточно погуглить название того или иного и вы найдете как это устанавливать.
Как происходит увеличение?
Когда мы говорим о нейросетях, всегда имеет смысл помнить, что они не готовы на текущей стадии развития работать сразу с большим изображением. Поэтому с ними часто работают или в маленьких разрешениях или раскладывают фотографию на «плитки». В случае увеличения фотографии как раз работает второй способ.
Наша фотография автоматически режется на квадраты (обычно
512×512px) после чего нейросеть их перебирает и увеличивает, дорисовывая внутри
детали из контекста и согласовывая с соседними квадратами. Это с одной
стороны позволяет работать с большими изображениями, а с другой —
привозит к забавным коллизиям, с которыми мы сегодня тоже столкнемся :)
Настройки Stable Diffusion
Так как мы не генерируем новое изображение, а увеличиваем существующее, то нам нужен режим img2img, в котором мы выберем модель, которую предпочитаем и загрузим оригинал фотографии.
Далее нам необходимо выставить параметры генерации:
- Семплер: для реалистичных изображений я предпочитаю DPM++ 2M Karras
- Количество шагов — это то, сколько проходов сделает нейросеть чтобы достичь нужного уровня детализации. Чем меньше — тем более «простым» (меньше деталей) будет результат. Для каждой модели есть свои предпочтительные значения шага, но обычно шаг в 20-30 пунктов подходит для практически всего.
- Уровень шума — пожалуй самый важный параметр! Он определяет то, насколько новое изображение будет идентично старому. Чем меньше это значение тем ближе к оригиналу будет сгенерированное изображение.
Разбивка фотографии на блоки
Для этого нам понадобится дополнение ControlNet, в котором:
- Мы опять загружаем оригинал
- Выбираем препроцессор tile_resample с моделью control_v11fle_sd15_tile.
- и выбираем чекбокс ControlNet is more important
ControlNet выполняет несколько задач:
- Контролирует чтобы новая сгенерированная картинка соответствовала оригиналу
- Разбивает фотографию на блоки (препроцессор) и по очереди отдает блоки на генерацию
- Следит, чтобы картинка загруженная в ControlNet была важнее всего остального (каждый раз сверяется с оригиналом)
Увеличение фотографии
Остается последний шаг настройки — это указать Stable Diffusion как и с помощью чего увеличивать блоки. Для этого:
- В модуле Script выбираем Ultimate SD upscale
- Выбираем как рассчитывать увеличение (проще в кратностях: в 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. А вот классический философский вопрос «Это все еще та же фотография или уже что-то новое» мы снова оставим открытым :)