Нейросетевые манулы (stable diffusion + textual inversion)
Возникло на почве вот этого поста:
Чем было сделано: Stable Diffusion.
https://github.com/AUTOMATIC1111/stable-diffusion-webui/
Как было сделано: Через "текстовую инверсию"
https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki...
Итак, была сделана попытка заставить stable diffusion рисовать нормальных манулов. Предыдущие попытки можно видеть здесь:
Манулы. С лампами и без (Stable Diffusion),
Также были сгенерированы варианты вроде тех что ниже,
В аниме стиле.
Как справедливо заметили - "получается тигрёнок". Потому что сетка манулов "знает" мало и "думает" что это серый кот с полосочками.
Для тренировки были надёрганы фотографии из сообщества "манул", и сделан набор фоток 29 штук. Выглядит это так:
Фотографии обрезаны до квадратного состояния.
Процесс тренировки "текстовой инверсии" (т.е. одного объекта или стиля) занимает несколько часов. Около 3х. В это время компьютер поёт песнь кулеров. Возможно, можно ускорить, пока способ не нашёл. В процессе выплёвываются промежуточные результаты, по которым можно посмотреть, а что, вообще происходит.
С 1й попыткой процесс пошёл так:
Собсно, стандарт. Где-то за пару тысяч итераций (итерация - один просмотр одной из тестовых картинок. Полный цикл тренировки - 20-30 тысяч, хотя можно и меньше), сеть находит приемлемый вариант, а потом бултыхается и не может её улучшить. Из интересного.
(Цифра в имени файла - номер итерации)
Сетка последовательно "догадывается" что:
"Манул - это серый шарик с ножками" "Манул - это кот". Потом рисует картинку физиономии.
Далее. На 3250-4500 шаге, генерит почти антропоморфную голову и красочную картинку.
В процессе тренировки на 5250м шаге потом всплывает вот это и больше не повторяется.
Красиво, похоже, но не то.
Дальше в процессе тренировки наблюдаем бултыхания и никакого критического улучшения не происходит.
Зато в процессе наблюдаем попытки нарисовать манулу на лбу паучьи глаза. Два пятна - однозначно паук, ну да. Просто очень логично. С другой стороны, я не писал, что там нарисовано, а дал разбираться нейросети полностью самостоятельно. Может можно было иначе.
Через 20000 итераций тренировку "инверсии" считаем оконченной получается файлик, с которым можно создавать запросы. "pallas_cat.pt".
Экспериментируем.
Фото:
Это сгенерированные. "pallas_cat, realistic photograph". Похоже. Лучше чем "кандинский"
"Манул в траве"
Теперь мешаем стили.
"На картине грега рутковски"
"Нарисованный тушью".
Пытаемся сделать красивый витраж. Не получается. Получаются японские картины но не очень.
Какие выводы?
Выводы следующие:
Уши получаются, выражение лица получается, но вот на месте носа оно пытается рисовать что-то странное и часто, плюс результат плохо дружит с другими стилями. Судя по всему, нейросеть "думает" - что манул, это такая пушистая шерстяная колбаса, с недовольной физиономией, а тело и лапы опциональны. Но с другой стороны, в тренировочном датасете было много мосек.
Пришёл к выводу что для обучения "что такое манул" нейросетке дал мало "памяти". Просто когда проводится такая вот тренировка для отрисовки нового объекта или стиля рисования, генерируется крошечный файлик, от нескольких килобайт, который называют "embedding" ("вставка"). Там просто пачка чисел. И вот когда в запросе на генерацию картинки использует название этого файла, числа загружаются, но вот их количество определяет, сколько информации туда можно впихнуть. А задал я по минимуму. Но вот нейросетке и не очень получается привести к общему знаменателю.
Попытка номер 2:
Начало тренировки выглядит так:
Нейросетка берёт за основу кота и пытается из него лепить манула, проходя через несколько фаз создания странных зверушек и енота. Дальше я меняю стиль тренировки и замедляю его, глядя на одну и ту же картинку. И там ничего интересного не происходит.
Один и тот же манул плавно меняется. Со временем у него иногда пропадают уши, меняется окрас, фон, но не более.
Результаты второй попытки:
Теперь получаются картины:
Что можно сказать? Ну, в принципе, получилось.
Есть мелкие проблемы. Например, иногда генерит крипоту. Например: глаз вместо носа, или паучьи глаза на лбу. Вообще, так понимаю, возня с нейросетью всё-таки не для нервных людей, т.к. иногда она абсолютно внезапно может сгенерировать лютейшую жесть или крайне неприятный контент, хотя происходит это нечасто.
Сгенерированные файлы "вставок" можно скачать тут:
https://anonfiles.com/AbafY0D5yc/pallas_cat_pt
https://anonfiles.com/P2a1YaDfy4/pallas_cat2_pt
Если используется сборка от automatic1111, их нужно бросить в папку "embeddings", и затем в запросах можно использовать pallas_cat и pallas_cat2,
И на этом всё.
Поглажено 8209 манулов
Осталось погладить 6791






















Манул
16.2K постов2K подписчика
Правила сообщества
1. Политика и война запрещены! Даже намёк будет пресекаться! Пожалуйста, идите со своим политическим мнением в соответствующие тематические сообщества.
2. Нельзя:
- 2.1 Оскорблять пользователей, всех представителей семейства кошачьих и само сообщество с его тематикой.
- 2.2 Нарушать правила Пикабу
3. Можно:
- 3.1 Публиковать материалы про манулов: фотографии, видео, истории из их жизни, полезную или интересную информацию, а также изображения рукотворных манулов (рисунки, игрушки, статуэтки и т.д.). Посты-исключения - на усмотрение администрации сообщества.
4. Нужно:
- 4.1 Добавляйте корректные теги к постам
- 4.2 Ставьте теги "манул", "малые кошки", "семейство кошачьих", "хищные животные", "дикие животные".
5. Напоминание:
- 5.1 Теги "кот" и "котёнок" в нашем сообществе не используются. Оставим их для домашних питомцев.
6. Дополнительная информация:
- 6.1 Администрация сообщества оставляет за собой право вынести пост в общую ленту без объяснения причин
- 6.2 Публикуя посты в сообществе вы автоматически соглашаетесь с правилами соо