Раньше фотографии восстанавливали вручную с помощью Photoshop, но теперь на помощь приходят нейросети и процесс занимает гораздо меньше времени. Сегодня я поделюсь с вами, как бесплатно восстановить старую фотографию быстро и просто в Fooocus. Мы поработаем одновременно с функцией «Describe», «Inpaint or Outpaint» и «Image Prompt» 👇
Хочу сразу предупредить, что не стоит ожидать мгновенного идеального результата. Для получения задуманного изображения вам придётся потратить время. Это связано с тем, что нейросети могут добавлять и искажать детали (см. пример выше), и поиск нужной генерации может занять больше времени. Тем не менее, это хороший способ восстановления фотографий. Для примера я взял архивную фотографию солдата РККА с russiainphoto.ru. И сразу извиняюсь за исторические неточности (цвет и форму деталей одежды), этим можно заниматься долго и обычно это ручная работа. Цель статьи — не достичь идеального результата, а показать сам процесс 👇
Процесс восстановления будет состоять из трёх этапов, каждый из которых я подробно объясню:
1. Распознавание
2. Удаление дефектов
3. Стилизация
4. Доработка деталей
И прежде чем перейти к работе, я хочу порекомендовать вам свой телеграмм-канал, где я выкладываю авторские генерации и отвечаю на ваши вопросы в комментариях. Подписывайтесь, общайтесь и пользуйтесь Fooocus Prompts 👇
1. Распознавание
Данный этап необходим для получения текстового запроса, который в дальнейшем подскажет нейросети что именно мы хотим сгенерировать. Для этого воспользуемся функцией описания «Describe» в Fooocus.
Ставим галочку «Input Image» (1), далее во вкладках выбираем функцию «Describe» (2) и перетаскиваем фото в соответствующее поле (3). В настройках укажем тип контента «Photograph» и проверим что отключены оставшиеся галочки «Art/Anime» и «Apply Styles» (3). Тем самым мы указали, что распознаваемое изображение это не арт/анимэ , а фотография и отключили применение стилей Fooocus. Можно распознавать, нажимаем кнопку «Describe this Image into Prompt» (5) 👇
Будьте готовы к тому, что Fooocus загрузит необходимые модели нейросетей, если вы впервые запускаете данную функцию. Это займет некоторое время, которое зависит от скорости интернета. В результате вы получите в строке запроса подсказку 👇
an old photo with a picture of a man in uniform
Нейросеть распознала, что это старое фото "an old photo", на котором есть изображение мужчины в форме "with a picture of a man in uniform". Если вас не устроил результат, попробуйте еще раз.
На самом деле, если изображение, как в данном случае, достаточно простое, то этот шаг можно пропустить и описать изображение самостоятельно. Однако иногда стоит частично доверить это дело нейросети, так как описание может быть сложным, и человек может упустить некоторые важные детали. Поэтому я решил подробно рассмотреть этот шаг.
2. Удаление дефектов
Этот этап также не должен вызвать особых затруднений. Откройте вкладку «Inpaint or Outpaint» (1), как и в прошлый раз, поместите изображение в соответствующее поле и аккуратно закрасьте трещины, пятна и другие видимые дефекты (2). Постарайтесь сделать это более аккуратно, чем я. Чем больше незакрашенных областей вы оставите, тем меньше нейросеть исказит общую картину, и тем более естественными будут результаты.
Убедитесь, что выбран метод «Inpaint or Outpaint (default)» (3). Теперь можно приступать к генерации (4) 👇
Вы получите несколько изображений. Выберите наиболее подходящее. В моём случае это первое изображение (1), так как во втором пуговица вышла за пределы рамки, и появился невнятный нагрудный знак (2).
Если результаты вас не устраивают, повторите процесс генерации. Обратите внимание, что можно увеличить количество получаемых изображений. Для этого поставьте галочку «Advanced» (1) и в первой открытой вкладке «Setting» (2) в поле «Image Number» (5) выберите большее число изображений 👇
Вы можете повторить процесс улучшения, запустив его заново с уже полученным результатом. Однако я остановлюсь на этом и перейду к более сложной части 👇
3. Стилизация
Если вам достаточно было только удалить дефекты, то вы можете остановиться на втором этапе. Я же перейду к стилизации изображения.
Как вы знаете, существует множество художественных стилей и направлений, в которых можно стилизовать изображение: аниме, иллюстрации, арт и пр. Моя цель — восстановить фотографию, иными словами я буду стилизовать данное изображение под фотореализм. Важно понимать, что любая стилизация с помощью нейросети неизбежно искажает изображение, ведь нейросеть додумывает детали. Я покажу общий принцип.Теперь всё зависит от вашей усидчивости.
Откроем вкладку «Image Prompt (1)» и перенесём подходящий результат с прошлого шага во все 4 указанных области (2) 👇
Чуть ниже поставим галочку «Advanced» (1) и выберем под каждой фотографией 4 разных настройки соответственно 👇
Если коротко, то «Image Prompt» (2) и «FaceSwap» (5) — это СontrolNet IP adapter, которые помогают использовать изображения в качестве запроса для генерации изображений. «Image Prompt» (2) захватывает стиль и контекст с указанного изображения. «FaceSwap» (5) захватывает лица и пытается вставить их в генерацию. «PyraCanny» (3) создает карту контуров (границ объектов). «CPDS» (4) создает карту с информацией об очертаниях, резкости и глубине.
Так же нажмите на «Advanced» (1) и во вкладке «Styles» (2) настройте стили Fooocus (3). Я намерено оставил только Fooocus V2, вы же вправе отключить, или наоборот включить, любые стили. Помните, что каждый стиль добавляет в текстовый запрос токены, которые влияют на результат генерации, а соответственно приведут к искажениям 👇
Также удаляем ненужные токены из нашей подсказки, чтобы не генерировалось «старое фото».
a man in uniform
Запускаем генерацию и получаем результаты 👇
Из положительных моментов стоит отметить, что фото уже не старое, без трещин, потёртостей и клякс, что соответствует нашим требованиям. Однако есть и недостатки: человек на фотографии не похож на оригинал, а форма далека от оригинала.
Наша цель — приблизить изображение к оригиналу. Для этого мы увеличим веса «FaceSwap» при помощи ползунков, чтобы лицо стало более похожим на оригинал, и повысим веса параметра «Image Prompt», чтобы форма стала ближе оригиналу. Значения весов будут варьироваться в зависимости от исходного изображения, поэтому вам придётся настраивать их опытным путём, увеличивая каждый ползунок по отдельности и оценивая, как это изменение влияет на результат 👇
Наша цель — выбрать результат, который приближен к оригиналу. Для этого мы настроим весы, а затем тщательно поработаем над каждой деталью. Чтобы упростить задачу, мы можем воспользоваться дополнительными подсказками, например, указать, что это цветное фото 👇
color photo a man in uniform
Однако на этом вы можете не останавливаться и добавлять дополнительные детали, касающиеся элементов одежды, черт лица, фона и так далее 👇
Для моих целей это изображение достаточно близко к оригиналу. Мы завершили основную часть работы и это изображение будет ориентиром на остальные 4 этапа. Оставшаяся часть будет довольно продолжительной. Она включает в себя доработку и исправление мелких деталей. Этим и займемся.
4. Доработка деталей
Начнём с замены лица, а затем перейдем к доработке. Чтобы заменить лицо в нейросети Fooocus нам необходимо воспользоваться одновременно функцией «Image Prompt» и функцией «Inpaint or Outpaint». Иными словами нам нужно доработать конкретную область и взять в качестве подсказки изображение для этой области.
Давайте подготовимся к работе. Для этого удалите все ненужные поля с изображениями во вкладке «Image Prompt» (1), используя крестики (2). Оставьте только одно поле, для которого будет активен режим «Face Swap». Это изображение станет источником нашего лица 👇
Во вкладке «Inpaint or Outpaint» (1) выберите большую кисть (2) и укажите область лица (3) на улучшенном изображении, которое вы создали на третьем шаге. Затем активируйте метод «Improve Detail (face, hand, eyes, etc.)» (4) и добавьте токен «Detail man face». Этот шаг поможет модели понять, что вам нужно детализированное лицо в область куда мы будем подставлять лицо с фото 👇
Итак. Мы настроили «Image Prompt», который поможет нейросети рисовать похожее для нас лицо, а также настроили «Inpaint or Outpaint», где мы указали область переносимого лица (6). Далее ставим галочку «Advanced» (1) и во вкладке «Advanced» (2) ставим галочку «Developer Debug Mode» (3). И наконец включаем режим смешения функций «Image Prompt» и «Inpaint or Outpaint» (5) 👇
Нажимаем генерацию. Теперь мы будем получать иные лица, которые нейросеть будет захватывать с указанной нами фотографии. К примеру 👇
Теперь можно заняться улучшением каждой детали при помощи уже знакомого нам «Inpaint», последовательно выделяя и дорабатывая каждую деталь. И кстати, не забудьте отключить режим смешения. Ранее я писал о том, как исправить руки и лица, последовательно генерируя вариации деталей изображения и улучшая их в дальнейшем 👇
В целом можно довести до идеала и получить максимальное портретное и исторически верное сходство. К примеру исправить прическу, увеличить объем щек и поработать с формой носа, не говоря уже о форме бойца. Но я остановлюсь на промежуточном результате 👇
Надеюсь, статья вам понравилась. Здесь я описал довольно сложные методы улучшения старой фотографии, замены лиц при помощи нейросетей и даже стилизацию. Fooocus это отличное бесплатное решение для множества задач. Пользуйтесь!
Подписывайтесь также на мой бусти, где я буду выкладывать в дальнейшем подобные статьи и еще множество новых авторских стилей для Fooocus 👇