API Kandinsky 3.0 и метод улучшения качества генераций

Posted by

Итак, совсем недавно вышла третья версия генеративной нейросети от Сбера, названной в честь знаменитого художника.

Её отличительной особенностью является генерация видео и собственное 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

!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *