API Kandinsky 3.0 и метод улучшения качества генераций
Разобрали API Kandinsky 3.0 и автоматизировали процесс генерации изображений с примерами кода. Код написан на Python.
5К открытий10К показов
Итак, совсем недавно вышла третья версия генеративной нейросети от Сбера, названной в честь знаменитого художника.
Её отличительной особенностью является генерация видео и собственное API. Видео – тоже интересная тема, однако тут речь пойдёт именно о изображениях.
Ранее я уже автоматизировал генерацию (на 2.2 версии), но без API она пользовалась UI Mozilla Firefox и давала сбои. Среднее время генерации находилось на отметке 28,7 секунд/картинку, а теперь – 11,6.
Писать нам придётся на python, чему многие не обрадуются, но поверьте, в данном случае это на скорость не влияет.
По себе знаю, что программисты уже жаждут кода, поэтому без длинных предисловий…
Поверьте, оно всё нам понадобится.
Дальше я “своровал” с Дзена целый класс (я пока не умею в ООП):
А вот теперь наконец функция генерации и сохранения. На вход она получает запрос (prompt) и путь сохранения итога.
Само API выдаёт данные в формате base64, и для их преобразования мы используем соответствующую библиотеку.
По умолчанию функция сохраняет файл в директорию res/, и поэтому её можно создать и в функции не указывать.
Теперь вы можете делать запросы очень просто:
Код выше сохранит 4 варианта картинки с одним запросом в одноимённой папке в директории программы.
Структура получится такая:
Метод улучшения качества генераций GAN (на примере генератора изображений) посредством оптимизации запроса генетическим алгоритмом
Для начала я бы очень посоветовал вам каналы Veritasium и Vert dider (перевод), не только потому, что я использую тут их видео, а и потому, что это помогает мне лучше понимать физику ещё с 5 класса.
В представленном ниже видеоматериале описан эволюционный эксперимент, и деталью, необходимой нам оттуда является то, что при появлении удачной модификации гена он вытесняет менее эволюционно успешные версии.
Итак, алгоритм действий:
- Из списка слов случайно составляем запрос
- генерируем и сохраняем с названием
- удаляем кривые и некачественные, с плохой стилизацией и т.п.
- !ВАЖНО! Берём названия успешных, и используем это как список слов для нового цикла, начиная с пункта 1.
При осуществлении работы такого алгоритма мы узнаём, какие слова влияют на поведение модели. Даже больше: удаляете картинки вы лично, а значит новые генерации вам понравятся. Возьмём список популярных художников. Сама модель о них и не слышала никогда, но некоторые слова делают генерации лучше. Мы переберём их всех, и те хорошие слова помогут создать хорошее изображение. Вы можете составить из этих слов свой запрос, а можете просто найти его в каталоге. Это быстрее и удобнее – больше вариантов, есть из чего выбрать.
В запросе есть слова типа fair hair, 1girl, cute.
Это значит, что можно удовлетворить все ваши потребности одной поисковой системой. Вы же понимаете, что в интернете конечное количество информации, но на каждый плюс-минус осмысленный и нужный запрос найдётся статья или новость.
Так и тут: изображений можно сделать настолько много, что генерировать уже не потребуется.
По моим примерным оценкам для 95% удовлетворения потребностей будет достаточно 2М изображений.
Их генерация займёт 3*2`000`000*11,6= 69,6М секунд или 2,2 года.
Кажется, это много, но ведь никто не запрещает использовать больше одного аккаунта.
SEGIM (СПГИ)
Ранее я уже делал жалкое подобие того, что представляю сейчас, и у этого даже есть “сайт” – правильнее называть это страничкой. У новой версии тоже есть такая, хоть и не понятно, зачем.
Сиситема Поиска Готовых Изображений работает просто: вы выполняете поиск по папке. Никаких алгоритмов лично от меня и т.п. Отлично работает стандартный проводник windows, но, может быть, вы знаете что-то другое. Например, поиск в Яндекс диске тоже отличный и предоставляет все файлы в удобном виде.
Собственно, мой вклад – изображения.
Возникает проблема… не моя. Они выполнены только в одном стиле. Если вам нужно что-то другое – можно подождать обновления (примерно 4 – 5 лет) или попробовать сделать это самому.
Ниже представлена функция, генерирующая в папку res/
4000 изображений.
Внимательный программист заметит, что присутствует некий список res. Это собственно список слов для запросов. Их история изменения также приведена, как и последний на сегодня вариант – четвёртый.
Заключение
С помощью приведённого выше кода можно не только быстрее и удобнее пользоваться нейросетью, но и немного раскрыть её творческий потенциал.
SMTHelse, 2023
5К открытий10К показов