Я и нейросеть, хождение по мукам.

Автор: Круподёров Сергей

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

Выбор пал на вариант с stable-diffusion-webui, как о ней пишут - самый развитый и навороченный вариант обертки над Stable diffusion. Сам не сравнивал, так что поверим на слово. У меня Linux с картой Nvidia, но CUDA не удалось запустить, так что работать можно только на процессоре с генерацией изображений.

Если надо инструкция чисто под виндовс https://www.ixbt.com/live/sw/ustanavlivaem-neyronnuyu-set-na-lichnyy-pk.html

Так же есть для линукса с видеокартой AMD https://habr.com/ru/articles/727834/

Сначала вам понадобится git и python версии 3.9+, хотя желателен 10.6. Если у вас есть поддержка CUDA или hip, то это совсем шикарно, ибо работать нейросеть будет намного шустрее. Причем видеокарта желательно с 8Gb+, или если без поддержки видеокарты 16Gb оперативной памяти и 4+ ядерный процессор(как у меня). Причем чем больше тем лучше. У меня обработка одной задачи занимает 5-15 минут, а если настройки повыше поставить то и до часа, на компьютере при этом мало что можно делать, ибо процессор занят. Полностью забита как оперативная память так и все ядра процессора, так что если у вас только машина послабже, то нейросеть будет конечно работать и у вас... часами и сутками. Наиболее быстрый и производительный вариант с видеокартой.

Устанавливаем сначала torch - основную библиотеку нейросети:

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu

После чего проверяем есть ли у вас CUDA и смогли ли вы справиться с её настройкой:

python3 -c 'import torch; print(torch.cuda.is_available())'

Если вам ответили True - радуйтесь Вы Круты, если ответ False - читаем дальше.

Так мы еще забыли установить саму обёртку для нейросети, выбираем папку где это будет стоять и запускаем:

git clone --branch "v1.2.1"  https://github.com/AUTOMATIC1111/stable-diffusion-webui.git

Тут --branch "v1.2.1" нужно только чтобы выдало последнюю версию, которую сами разработчики считают стабильной, но если прошло много времени с написания данной статьи это лучше опустить, иначе все новые возможности и исправление ошибок пройдут мимо вас.

Дальше заходим в получившуюся папку stable-diffusion-webui и открываем на редактирование файл webui-user.sh. Раскоментируем(убираем решетку) строчки начинающиеся как ниже и добавляем в кавычки содержимое:

export COMMANDLINE_ARGS="--skip-torch-cuda-test --precision full --no-half --use-cpu interrogate"

export TORCH_COMMAND="pip install torch==2.0.1+cpu torchvision==0.15.2+cpu torchaudio==2.0.2+cpu --index-url https://download.pytorch.org/whl/cpu"

Тут важно чтобы поставились версии torch без зависимостей от CUDA, иначе не будет работать нейросеть. Ну и не ставить xformers, потому как эта библиотека подтягивает в зависимостях CUDA. Хотя может какая версия и не тянет, но я не стал разбираться: работает - не трогай. И ещё такой момент, по истечении времени нужно новые совместимые версии сюда вписывать, но если нигде не менять то хоть работать будет, а иначе - самостоятельно разбиратся со всеми зависимостями и совместимостями.

Так, саму нейросеть мы установли, теперь осталось добавить к ней дополнительные возможности. Для этого качаем модели одна будет закачана сама, а в инструкции для винды посоветовали: https://civitai.com/models/4823/deliberate. На том же сайте можно и другие модели посмотреть.

Куда модели пихать, и как можно ставить другие дополнения можно подсмотреть в видео на английсом (можно включить титры с переводом).

Из этого же видео я позаимствовал еще два дополнения, первое из которых и нужно для того чтобы получались те картинки которые меня вдохновили:

https://github.com/Mikubill/sd-webui-controlnet

https://github.com/Coyote-A/ultimate-upscale-for-automatic1111

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

http://www.youtube.com/watch?v=-2YoKsi0sLA - видео как правильно пользоватся Control Net

https://dzen.ru/a/Y4_G35hMtU0oTE_L - статья о коррекции лица

https://habr.com/ru/companies/selectel/articles/712316/ - немного о настройках и как пользоватся

https://tengyart.ru/sintaksis-stable-diffusion-v-automatic1111-i-nmkd/ - о синтаксисе запросов (promt)

Теперь запускаем веб-интерфейс и вводим текст на английском для генерации изображения:

A beautiful girl holding roses on a sunny day by El Greco

Получили вот такое, для обложки сойдет. Но на этом мы не останавливаемся ищем или рисуем скетч, под это описание. Я вот поискал:

Затем запускаем генерацию с включением ControlNet, настройки на своё усмотрение и получаем уже другое изображение:









Получилось похоже и с незарисованным холстом в виде полей. А потом увеличиваем с помощью второго дополнения:

Не без косяков (палец под розой) но сойдет. Особенно когда генерируешь не одно изображение, а сразу несколько и из них уже выбираешь.

Вывод

Вещь всё таки занятная и полезная. Но больше художникам от слова умею рисовать полезна. Ибо нарисовал набросок, показал заказчику, получил одобрение концепции, зашёл во вкладку img2img и вставил набросок и попросил нейросеть составить словесное описание данной картинки, поправил это описание как надо, и в txt2img сгенерировал несколько разных вариантов, потом выбранный увеличил до нужного разрешения и готово.

А если ты художник от слово худо, и английский не понимать. То нейросеть будет рисовать картинки "моя твоя не понимай".

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

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

+12
310

0 комментариев, по

0 8 3
Наверх Вниз