Найти в Дзене

Нейросеть OMOST. Качественная генерация изображений с помощью LLM (large language model).

Здравствуйте, дорогие друзья!

Сегодня я хочу рассказать вам о новом проекте автора нейросети Fooocus Lyumin Zhang, известного под псевдонимом lllyasviel. Его проект называется Omost.

Что такое Omost?

Omost — это не просто генератор изображений, это мультимодальный (работающий с разными типами данных: текст, изображения, аудио) инструмент, который упрощает процесс создания изображений по текстовым подсказкам. Название «Omost» отражает его главную функцию: после использования этого инструмента желаемое изображение практически готово.

Omost использует возможности большой языковой модели LLM (Large Language Model) для лучшего понимания и интерпретации сложных текстовых описаний. Благодаря этому может создавать композиции изображений с хорошей точностью.

Что это нам даёт?

* Простые текстовые подсказки. Вы можете вводить простые текстовые описания, а Omost сгенерирует на их основе сложные изображения.

* Предопределённые параметры. Omost упрощает описания элементов изображения, предоставляя набор предопределённых параметров, таких как положение, смещение и площадь.

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

* Модульность и гибкость. Omost позволяет изменять отдельные элементы изображения, обеспечивая высокий уровень контроля над конечной композицией.

* Удобный интерфейс. Вы можете использовать Omost как через официальное пространство Hugging Face space, так и локально, что делает его доступным как для новичков, так и для опытных пользователей.

Важный момент. Пока вы не начали установку. Omost будет работать только на видеокартах Nvidia и требуемый объём видеопамяти составляет минимум 8 гигабайт. Опять дискриминация по цветовому признаку!

Давайте посмотрим, как всё это работает на практике!

Если вы хотите просто ознакомиться с проектом, то установка не требуется. Достаточно пройти по ссылке и посмотреть работу проекта онлайн.

Если вам понравился Omost, вы можете установить его на свой компьютер.

Давайте начнём установку.

Убедитесь, что на вашем компьютере уже установлены Python версий 3.9.10 или 3.10.11, а также Git последней версии. Инструкции по установке и скачиванию Python и Git можно найти по этой ссылке.

Если у вас уже установлены Python и Git, можно приступать. Выберите жёсткий диск и папку, куда вы хотите установить Omost. Затем зайдите в эту папку и в адресной строке проводника введите «cmd». После этого должен открыться терминал, в который необходимо вставить и запустить следующую команду:

git clone https://github.com/lllyasviel/Omost.git

Терминал должен отображать такую информацию:

Затем нам нужно повторить команду cmd, но уже находясь внутри только что созданной папки Omost.

-2

Теперь нам нужно установить необходимые для работы модули. Для этого скопируйте и вставьте следующую команду:

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121
-3

Далее нам нужно установить остальные зависимости для нашего проекта. Для этого в командной строке необходимо ввести следующую команду:

pip install -r requirements.txt

И снова нужно немного подождать, пока они скачаются и установятся.

-4

Зависимости успешно загружены и установлены. Теперь осталось выполнить последний шаг — ввести эту команду.

python gradio_app.py
-5

Процесс загрузки и установки может занять продолжительное время, так как потребуется загрузить и установить файлы общим размером примерно 20 гигабайт. По крайней мере у меня Omost занимает именно столько. Наберитесь терпения.

Если в процессе установки возникают ошибки, это обычно происходит из-за отсутствия какого-либо компонента.

Например, если вы столкнулись с ошибкой ModuleNotFoundError: No module named 'setuptools', это означает, что в вашей системе или виртуальном окружении отсутствует пакет setuptools. Setuptools — это пакет, который необходим для установки и управления сторонними пакетами Python.

Чтобы решить эту проблему, вам нужно установить пакет setuptools. Вы можете сделать это с помощью следующей команды:

pip install setuptools
Пример
Пример

Чтобы запустить Omost, вам нужно создать текстовый документ в корневой папке. Переименуйте его в «run.bat» или другое удобное для вас имя. Затем откройте этот файл в режиме редактирования и вставьте в него следующий скрипт:

@echo off

echo.

echo Checking for updates...

git fetch origin

git diff --quiet origin/main

if %errorlevel%==0 (

echo Project is up to date.

) else (

echo Updates available! Updating...

git pull origin main

echo Project updated!

)

echo.

python .\gradio_app.py %*

pause

Сохраните внесенные в файл изменения и теперь для последующих запусков Omost нужно запускать этот файл. Наличие обновлений также будет проверяться автоматически при запуске этого файла.

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

-7

После того как загрузка и установка завершены, перед нами появляется интерфейс Omost. Это лаконичное окно интерфейса alя Gradio. Посмотрим, что в нём.

-8

Кнопки New chat - «Создать новый чат» и Edit last input - «Редактировать последний ввод».

Чтобы создать новый чат, каждый раз, когда вы хотите получить новое изображение, не связанное с предыдущими, нажмите на кнопку New chat «Создать новый чат».

Если вам нужно отредактировать ваш запрос, нажмите на кнопку Edit last input «Редактировать последний ввод».

Random seed.

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

Если вы ввели своё значение, но после нажатия кнопки «Генерировать» ничего не происходит, внимательно проверьте терминал на наличие ошибок.

-9

Language Model.

Далее настройте языковую модель. Вы можете установить Temperature, которая определяет, насколько точно или независимо модель будет решать, как обрабатывать ваши запросы. Чем выше значение Temperature, тем больше модель будет руководствоваться вашим запросом.

Top-P фильтрация — это метод, используемый нейросетями для создания более естественного и разнообразного текста. Он ранжирует сгенерированные слова и выбирает только наиболее вероятные, уменьшая повторения и увеличивая разнообразие. Значение P позволяет вам контролировать уровень креативности в созданном тексте.

Также можно установить максимальное количество токенов. Здесь всё понятно: чем больше, тем лучше, наверное.

Image Diffusion Model.

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

Advanced.

CFG Scale

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

HR-fix Scale

1 (отключено): отключает функцию HR-Fix.

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

Highres Fix Steps

Устанавливает количество итераций алгоритма HR-Fix. Чем больше шагов, тем выше разрешение, но дольше будет происходить генерация.

Highres Fix Denoise

Управляет уровнем шумоподавления в алгоритме HR-Fix. Более высокие значения делают изображения более гладкими, но могут привести к потере деталей.

Negative Prompt

Позволяет ввести текст, который нейросеть должна избегать при генерации изображения. Это может быть полезно для предотвращения появления нежелательных или неуместных элементов в сгенерированном изображении.

Используемая по умолчанию модель SDXL RealVisXL_V4.

На этом всё о настройках. Давайте попробуем сгенерировать что-нибудь.

Вводим текст и смотрим, что получится.

-10

Вот как это работает: вы вводите запрос и нажимаете Submit - «Отправить». Нейросеть создаёт расширенный запрос на основе вашего запроса. Чтобы начать генерацию изображения, нужно нажать на небольшую кнопку слева. Она станет активной, когда запрос будет обработан с помощью LLM.

-11
-12

Я не менял параметры генерации и не проводил эксперименты с сидами. Я просто ввёл текст для генерации, и вы видите результат.

В этом контексте в рамках этого запроса мы можем попросить нейросеть заменить котов на собак, изменив действующих лиц. Для этого нужно написать запрос: «замени котов на собак».

-13

Конечно же не стоит ожидать от Omost чего то запредельного пока не придет понимание принципов работы LLM. Если вы разберётесь, как языковая модель обрабатывает ваши запросы, то быстро поймёте, как правильно формулировать запросы и создавать точные с точки зрения позиционирования объектов и визуально привлекательные изображения.

На мой взгляд, важно использовать глобальные и локальные описания.

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

Позиционирование и смещение: Omost разбивает холст на сетку позиций и смещений, что позволяет точно размещать элементы. Это включает в себя предопределённые позиции и смещения, которые упрощают создание ограничивающей рамки.

Расстояние и цвет: расстояние до зрителя помогает распределить элементы от фона к переднему плану. Веб-названия цветов в HTML присваивают цвета элементам, внося свой вклад в общую визуальную композицию.

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

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

И если вас затянул Omost, загляните на страницу разработчика и прочтите его рекомендации, он довольно понятно расписал принцип построения запросов.

В завершение хочу поделиться своими размышлениями.

С одной стороны, мы видим довольно интересные результаты и имеем обширное пространство для экспериментов с запросами. Однако, несмотря на это, есть проблемы, которые мы наблюдаем уже долгое время. Например, «кривые руки, ужасные пальцы» и другие сложности, которые продолжают нас преследовать в генерируемых нами изображениях.

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

Но это лишь моё субъективное мнение.

Оставляю вас наедине с Omost и желаю удачи в ваших экспериментах!

Всего доброго и до новых встреч!

Ну и конечно же, если вам понравилась эта статья, буду рад вашим подпискам, комментариям и лайкам. Недавно я запустил Discord-канал и постараюсь поддерживать его насколько возможно, там вы сможете не только следить за новостями, но и общаться, делиться опытом и приобретать новые знания о нейросетях. Чтобы всегда быть в курсе моих новых материалов, подписывайтесь на мой Boosty, Telegram-канал и страницу "ВКонтакте". Пока что нас немного, но я надеюсь, что с течением времени сообщество станет больше. Это станет отличной мотивацией для меня активно работать и над другими социальными сетями.