Генерируем пиксель арт

Окей, для пиксель арта характерно две вещи:

  • Низкое разрешение (или имитация оного)
  • Ограниченная цветовая палитра

Что у нас может делать stable diffusion:

  • лучше всего генерирует на разрешении 512x512
  • с помощью моделей, лор и остального, можем попробовать стилизовать как "пиксель арт"

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

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

А теперь давайте быстренько пройдемся по расширениям, которые у нас есть:

  • PXL8: скрипт, который использует nQuantCpp. Можем уменьшить картинку, есть много методов квантизации, ограничение цветов, включение/отключение дизеринга. В общем ок, но во-первых это скрипт и чтобы мне просто обработать картинку, мне нужно закинуть ее в img2img, поставить нулевой денойзинг и ждать, пока вся цепочка функций отработает ничего не делая и только потом отработает скрипт - это долго. Во-вторых, нет других цветовых режимов (черно-белого, градации серого или возможность закинуть свою палитру)
  • pixel art: скрипт. Можем уменьшить картинку, выбрать метод квантизации и количество цветов, а дизеринг ставят за нас по умолчанию. Остальные недостатки те же, что и у предыдущего
  • pixelization: добавляется в extras. Использует три сетки, чтобы обработать картинку. Можно только повлиять на размер картинки
  • sd-pixel: добавляется в extras. Размер картинки, количество цветов и перевод в черно-белый - это все, что нам доступно. Ни выбора квантизации, ни выбора дизеринга

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

Генерируем пиксель арт
  • Выбор количества цветов, методов квантизации и дизеринга + при добавил функцию для лучшего выбора цветов при квантизации (эта которая в конце, "Enable k-means for color quantization")
  • Добавил несколько режимов: цветной, градаций серого, черно-белый и возможность закинуть свою палитру или просто фотографию и использовать цвета из нее
  • Функционал в двух вариантах: скрипт - чтобы обрабатывать сразу после генерации, секция в extras - чтобы можно было быстро обработать отдельные фотки

Как пример, картинка прогнанная через pixelization и мое расширение

из размера 512x768 в 128x192
из размера 512x768 в 128x192

Так работают разные цветовые режимы

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

Хорошо, теперь технически у нас все готово, пришло время найти хорошую модель и погенерить. Но тут, к сожалению, все совсем плохо. То ли я не нашел, то ли действительно нет нормальных моделей для пиксель арта да и геймдева в целом. Есть хорошие рпгшные модели для всяких концепт артов, может найдется парочка лор для генерации ассетов, но по большей части толкового очень мало. Поэтому в двух словах о том, что накопал

Для всяких зелий неплохо подходит связка pixhell + gag-rpg-potions-or-lora-21

Генерируем пиксель арт

Для простенького пиксель арта подойдет rev-animated + mpixel lora (и вообще, это наверное лучшая лора, из тех, что есть)

Генерируем пиксель арт

Прикольные анимешные портреты получаются если использовать anything-v3 + pixel-art-style lora

Генерируем пиксель арт

Простенькие пейзажи можно сделать с помощью pixel-landscapes

Генерируем пиксель арт

Нейронки интересная и непростая штука, поэтому если хотите лучше в них разобраться, подписывайтесь на канал, там рассказываю как работать со stable diffusion

2020
6 комментариев

SD всё ещё не умеет в пиксельарт. Да и не научится никогда, потому что latent diffusion, апскейл и все дела. Вот Dalle-2 могёт, потому что там ничего этого нет. Зачем пытаться натягивать сову на глобус - решительно непонятно.

1

А как latent diffusion и апскейл мешает делать пиксель арт? Dalle-2 так то тоже диффузионная или дело в другом?
Мне кажется, с хорошей моделью может получаться вполне себе. Те же pixellabs и retrodiffusion свои модели сделали. Но если делать прям красиво, то по хорошему нужно изначально под другое разрешение модель делать, например под 64 и 128, а потом если нужно nearest'om интерполировать.

1

Пузырьки вышли плохо, а рыцари неплохо