Возникло на почве вот этого поста:
#comment_253604048
Чем было сделано: 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