Я и нейросеть, хождение по мукам.
Автор: Круподёров СергейБыло прилично постов про освоение нейросетей с целью порисовать. Только я задался целью обзавестись своей локальной нейросетью с... эм это из другой истории. Вдохновился я этим изображением возможностей:
Выбор пал на вариант с 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/
Устанавливаем сначала 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
Второе дополнение предназначено для увеличения сгенерированных картинок, с возможными модификациями и добавлением деталей.
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 сгенерировал несколько разных вариантов, потом выбранный увеличил до нужного разрешения и готово.
А если ты художник от слово худо, и английский не понимать. То нейросеть будет рисовать картинки "моя твоя не понимай".
В целом локальная нейросеть по возможностям слабо отличается от того что может сделать веб-сервис, но твои сгенерированные картинки не попадают сразу в сеть - они только твои до первой публикации.
Еще художнику не помешает натренировать на своих работах модель, чтобы работы на свои похожие выходили. Данная реализация интерфейса и на эта заточена, но я ближе к художнику второго типа, поэтому не разбирался.