В ходе новогодних экспериментов с дообучением FLUX, у меня появилось несколько моделей которыми я хотел бы поделиться с сообществом и рассказать про их особенности. Про то, как сделать такую модель самому, я написал в предыдущей статье.
Дообучать можно на чем угодно, а не только на лицах. Можете взять несколько картинок (хватит 15-30, если они не очень разнообразны) одного стиля или класса с ресурса типа Pinterest или просто нагуглить.
Запускать будем через ComfyUI. Это приложение само по себе очень гибкое и мощное (интерфейс видно на картинке), так что, если поразбираетесь в нём, то сможете автоматизировать трудоёмкие процессы при работе с нейросетями. Например, оцветнение старых изображений с последующим их масштабированием.
К тому же, есть тысячи моделей от других пользователей, которые вы сможете запускать подобным образом. Обычно, правда, это перенос аниме или что-то пикантное.
ComfyUI
Установим и запустим Comfy. Самое простое, это скачать из репозитория архив с портативной версией. После распаковки и запуска в браузере станет доступен интерфейс приложения.
Вся работа идет визуально, через блоки. Каждый блок умеет делать одну вещь: загружать модель, сохранять картинку, сравнивать что-то и т.д. Есть огромное количество кастомных блоков, которые надо устанавливать отдельно. Блоки объединяются в workflow.
Сразу установите расширение ComfyUI-Manager, оно позволит вам на лету устанавливать недостающие модули.
В прошлой статье мы обучали модель FLUX и подкладывали все дополнительные модели в папки с ComfyUI. То же самое надо сделать и сейчас, но чтобы не запускать обучение, просто скачайте их отсюда:
https://huggingface.co/cocktailpeanut/xulf-dev/resolve/main/flux1-dev.sft
https://huggingface.co/cocktailpeanut/xulf-dev/resolve/main/ae.sft
https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/clip_l.safetensors
https://huggingface.co/comfyanonymous/flux_text_encoders/resolve/main/t5xxl_fp16.safetensor
Положите их в соответствующие папки:
flux1-dev.sft → comfyui/models/unet
ae.sft → comfyui/models/vae
clip_l.safetensors → comfyui/models/clip
t5xxl_fp16.safetensors → comfyui/models/clip
Дообученные модели — это LoRA (Low-Rank Adaptation), подход, который позволяет обучить только малую часть параметров хорошей открытой фундаментальной модели под свои задачи. За счет него у вас и получится обучить такое на своих фото (для этого, опять же, обращайтесь к предыдущей статье).
Их надо будет положить в следующую папку:
<model_name>.safetensors → comfyui/models/loras
Модели
Модели я загрузил на Hugging Face, общее место, в котором исследователи делятся своими наработками в области машинного обучения (данные, модели, статьи и т.д.). Просматривать статьи с HF Daily papers, кстати, довольно полезное занятие, если хотите быть в курсе последних веяний. Это удобно делать на HFday.ru (мой небольшой открытый пет-проект) #самореклама.
Пушкин: итак, начнем. Модель с Александром Сергеевичем самая нестабильная, так как Пушкин свои фото в инстаграм не выкладывал, а дудям интервью не давал. В итоге я собрал 10 картинок с его портретами и попробовал обучиться на них.
Все генерации, глядя на которые читатель скажет "да, это Он", это в основном сгенерированные портреты в стиле Кипренского и Тропинина. Можно поиграться с композицией:
Ещё Пушкин
Можно получить ракурсы, которых нет на портретах, поменять прическу и эмоции:
Ещё
Если попробовать вытягивать генерации в стиль фотографии, то будут получаться некие пушкино-подобные люди, но насколько они похожи на оригинал не понятно, так как нет ни одной референской фотографии. Главное, я считаю, что не получился Сергей Безруков.
Еще «фото» с Пушкиным:
Модель: https://huggingface.co/averoo/flux-lora-pushkin
Ключевое слово: pushk1n. Это триггерное слово, которое надо указывать при генерации, оно не обычно, чтобы гарантированно не спутаться с тем, что модель уже знает. Промпт может выглядеть как-то так: «pushk1n portrait with christmas tree, high quality, high resolution, man, happy mood».
Что может пойти не так: всё. Могут генерироваться случайные вещи, почему-то часто это красный мопед (?). Может генерироваться не тот пол, поэтому не удивляйтесь, когда будете обучаться на себе, получается забавно. Дописывайте пол в ваш промпт, также можете писать дополнительно «pushk1n face is visible».
Достоевский: с Федором Михайловичем дела обстоят получше, известны несколько его фотографий.
Как следствие, картинки создаются стабильней и точней, можно увеличить параметр cfg (classifier-free guidance), об этом писал ранее, чтобы было больше деталей от модели.
Можно добавлять фотореалистичности, добавлять современные детали, менять костюмы.
Ещё
Модель: https://huggingface.co/averoo/flux-lora-dostoevsky
Ключевое слово: d0st0evsk1. Пример промпта «d0st0evsk1 portrait with axe in old Saint Petersburg, gloomy, high quality, high resolution, man, beard, retro style, evening, lantern».
Идём дальше.
Толстой: Ну тут совсем всё хорошо. Лев Николаевич застал стремительное развитие технологического прогресса, так что можно отыскать даже его фотографии в молодости (да-да, он тоже был молод).
Заметка: при обучении на лицах лучше все же использовать фото примерно одного возраста и одного человека. Я пробовал обучаться сразу на обоих Братьях Стругацких (пытался использовать разные ключевые слова), но получался некий средний человек, либо побеждал Аркадий.
Ключевое слово: t0lst0y. Пример промпта «d0st0evsk1 portrait with axe in old Saint Petersburg, gloomy, high quality, high resolution, man, beard, retro style, evening, lantern».
Ещё немного Толстого
Заметка: LoRA модели являются своего рода «нашлёпками» на основную модель и могут храниться отдельно. Так работают популярные сервисы по клонированию фото типа fal.ai, можете попробовать сами, если нет желания возиться с обучением.
Из-за этого же LoRA можно последовательно применять друг за другом. Например, вы можете обучить одну модель на фотографиях, а другую на картинах Рембрандта и, объединяя их с разными весами, переносить вместе и личность и художественный стиль.
Дополнительно: можно использовать подходы с картами глубин и переносом композиции с существующего изображения (ControlNet), тем самым сохраняя позицию человека или ландшафта на генерации.
Удачных экспериментов
Меня зовут Сергей, я занимаюсь машинным обучением и веду небольшой телеграм-канал Градиент обреченный (в названии отсылка к одной книге, догадайтесь к какой). Заходите в гости, буду рад.
ebt
Спасибо. Замечу только, что у реального Александра Сергеевича отчётливо видны негроидные черты лица (вспоминаем его предка), а на представленных изображениях он почти ариец.
averkij Автор
Ну на портреты он, имхо, похож. А так как фотографий в обучении нет, поэтому сгенерированные фото в сторону красивых модельных людей уходят. Скорее всего их в обучении основной модели много было со всяких стоков.