![](https://habrastorage.org/getpro/habr/upload_files/c85/5a3/865/c855a3865896cca48c2ff4dd048acd67.png)
Для запуска нам понадобится Ubuntu с установленными: git, make, docker и ROCm.
ROCm установим по инструкции.
Краткая инструкция установки ROCm
sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)" sudo usermod -a -G render,video $LOGNAME wget https://repo.radeon.com/amdgpu-install/6.1.2/ubuntu/jammy/amdgpu-install_6.1.60102-1_all.deb sudo apt install ./amdgpu-install_6.1.60102-1_all.deb # If an error occurs, you must run: sudo chown -Rv _apt:root /var/cache/apt/archives/partial/ sudo chmod -Rv 700 /var/cache/apt/archives/partial/ sudo apt update sudo apt install amdgpu-dkms sudo apt install rocm-hip-libraries sudo reboot
Скопируем проект позволяющий настроить и запустить Stable Diffusion в docker контейнере:
git clone https://github.com/HardAndHeavy/stable-diffusion-webui-rocm-docker cd stable-diffusion-webui-rocm-docker
Запустим Stable Diffusion с помощью команды make run
. При первом запуске будет происходить длительный процесс инициализации. Когда этот процесс завершится, Stable Diffusion станет доступен по адресу http://localhost.
Модель для преобразования текста готова, и теперь можно создать обложку для статьи. Предлагаю такую идею для обложки: изображение грузовика с контейнером, на котором написано «Stable Diffusion». Грузовик стоит в порту, готовый к погрузке на контейнеровоз с именем «docker AMD».
Для упрощения процесса рисования нам потребуется расширение ControlNet. Чтобы его установить, нужно перейти на вкладку «Extensions» — «Available». Затем следует нажать кнопку «Load from». После этого откроется список доступных расширений, в котором нужно выбрать «sd-webui-controlnet» и нажать кнопку «Install». Далее необходимо перейти на вкладку «Installed» и нажать кнопку «Apply and quit». После этого контейнер остановится, и чтобы запустить его снова, нужно выполнить команду make run
.
Для рисования я буду использовать модель Level4 XL. Её и другие модели можно найти на сайте civitai.com.
Исходя из идеи, промт будет таким: «container ship, container truck, oil painting, heavy brush strokes dominate the canvas, calm colors, pier». Негативный промт — «watercolour». Sampling method выберем DPM++ SDE, Sampling steps — 15, CFG Scale — 2. Теперь можно создать изображение, нажав на кнопку «Generate».
![Результат генерации Результат генерации](https://habrastorage.org/getpro/habr/upload_files/afb/27a/443/afb27a4436276ee7f9fbf019bef392f5.png)
Поскольку на картине нет надписей и корабля в порту, как было задумано, нам нужно внести изменения. Для этого мы воспользуемся рисованием по контуру и ещё найдём подходящее изображение в интернете:
![Подходящее изображение найденное в интернете Подходящее изображение найденное в интернете](https://habrastorage.org/getpro/habr/upload_files/3f3/388/e93/3f3388e93d942f917b74ca721397aba4.jpg)
Для рисования по контору скачаем файл diffusers_xl_canny_full.safetensors, который необходимо разместить в каталоге ./data/stable-diffusion/models/ControlNet. Перед копированием файла необходимо предоставить доступ к каталогу data, так как контейнер запускался от имени пользователя root. Для этого нужно выполнить команду sudo chmod -R 777./data
.
На вкладке «ControlNet» загрузим изображение, которое мы нашли в интернете. Установим флаг Pixel Perfect. Control Type выберем Canny, Preprocessor — canny, Model — diffusers_xl_canny_full [2b69fca4], Control Weight — 0.7, Ending Control Step — 0.5. Увеличим размер холста пропорционально загруженному изображению: Width — 828, Height — 476. В результате генерации получится два изображения: рисунок и представление препроцессора для режима canny. Представление препроцессора можно отредактировать в любом графическом редакторе, удалив ненужные линии и добавив необходимые. После этого препроцессорное представление можно сразу загрузить в изображение для «ControlNet».
Результат генерации
![Сгенерированное изображение Сгенерированное изображение](https://habrastorage.org/getpro/habr/upload_files/649/4b8/06d/6494b806df8ef97d7f937721ef1f10e3.png)
![Препроцессорное представление Препроцессорное представление](https://habrastorage.org/getpro/habr/upload_files/082/e3f/f29/082e3ff294f2891867ad188a42028b9a.png)
В графическом редакторе мы изменяем линии, представленные в препроцессоре, и добавляем надписи отдельным слоем. Затем мы сохраняем результат в виде двух изображений: одно без первого слоя, а другое — без второго.
Работа в графическом редакторе
![Отредактированное препроцессорное представление Отредактированное препроцессорное представление](https://habrastorage.org/getpro/habr/upload_files/1e9/7ba/c1a/1e97bac1aafa477b08546fa3069d896f.png)
![Надписи Надписи](https://habrastorage.org/getpro/habr/upload_files/227/8ff/352/2278ff352dbb5abbbc6a7062b3c4090f.png)
Вместо исходного изображения загрузим отредактированный контур. Перейдём на вторую вкладку «ControlNet Unit 1» и добавим изображение надписей. Control Type выберем Canny, Preprocessor — canny, Model — diffusers_xl_canny_full [2b69fca4], Control Weight — 1, Ending Control Step — 1. Обратите внимание, что вес и шаг остановки установлены на 1, чтобы надписи были чёткими и не исчезали.
Нажимаем сгенерировать изображение и получаем обложку для статьи.
Замечание
Для замены лиц рекомендую использовать ReActor. После установки ошибка исправляется докачиванием файла inswapper_128.onnx по рекомендации в каталог .data/stable-diffusion/models/insightface.
Так же лица хорошо заменяет IP-Adapter FaceID, Instant ID и уже описанный здесь Canny.
ссылка на оригинал статьи https://habr.com/ru/articles/821967/
Добавить комментарий