Pull to refresh

Comments 56

Кажется, я знаю, как буду иллюстрировать корпоративную Wiki

Если будете сегодня это делать, то вот:

image

image

image
Colab не всегда дает годную видеокарту, надо перезапустить сеанс и посмотреть какая видеокарта подключилась в ячейке **!nvidia-smi**. Надо, чтобы была хотя бы T4, возможно и P4 хватит, но точно не K80.

Опять та же фигня. Не вижу где посмотреть видеокарту

Надо запустить верхнюю ячейку (на картинке — Tesla T4).

image

Гугл в зависимости от загруженности может разные карты подсовывать. Можно еще оформить Colab Pro подписку, тогда будет карты помощнее давать.

Отдает всегда Tesla K80

Вы только выбирайте не «перезапустить среду выполнения», а в управлении сеансами ее тушите. Потом заново подключайтесь.

image

Если все время k80 дает, то надо подождать, значит нет свободных. Вообще должен в итоге хотя бы P4 выдать.
Либо же раскошелиться на подписку.

Видимо нет. Я раз 20 пересоздавал машину.

Сейчас доступ к Colab Pro есть только в Бразилии, Великобритании, Германии, Индии, Канаде, США, Таиланде, Франции и Японии.

А локально не вариант то же самое запустить? У меня RTX 2060 Super

Да, это возможно, карточка тянет и 6Гб VRAM достаточно для запуска (при условии, что на вашем PC есть минимум 8Гб оперативки и минимум 11 свободных Гб на диске).
Проблема в том, что синтез пиксель арта здесь основан на diffvg, который придётся собирать из исходников на локальной машине, что не вполне тривиально.
Если у вас что-то вроде Debian или Ubuntu с установленными драйверами NVIDIA, CUDA Toolkit 10.2, и Python 3.7+, то могу написать небольшой гайд, как запустить эту нейронку локально. А вот под винду так даже и не соображу, что и как настраивать.

Так.
Oops: runtime error: CUDA out of memory. Tried to allocate 48.00 MiB (GPU 0; 7.43 GiB total capacity; 5.83 GiB already allocated; 32.81 MiB free; 5.95 GiB reserved in total by PyTorch) Try reducing --num-cuts to save memory

Сколько ему надо ресурсов? Никак зарезать нельзя?

От 4Гб и до бесконечности — зависит от разрешения, выставленного качества, набора используемых моделей и аугментаций.
В Colab'е очень часто выделяют меньше VRAM, чем есть на GPU. Издержки облака…
Можете попробовать в ячейке "III. Generate images" нажать на «Show code» и там, где задаются параметры, скажем после строчки
clipit.add_settings(use_pixeldraw=use_pixeldraw)
добавить строку:
clipit.add_settings(num_cuts=9)
Это очень сильно уменьшит потребление памяти.

Отлично, спасибо. Жаль опять Tesla K80 теперь только выпадает. На ней этот код вообще почему-то не взлетает. Даже медленно.

Да, в неё модель не поместится

image
Там проблема не в Tesla K80, а в том, что гугловцы положили в этот контейнер кривую сборку pytorch. Но можно сделать финт ушами и, если не получается выкрутить ничего кроме K80, заменить diffvg на vqgan — тогда будет работать даже в таких условиях, хотя такого замечательного пиксель арта и не выйдет (но поиграться можно, а результат всё же будет довольно неплох).
Для этого можно, к примеру, воспользоваться этим Colab'ом. Там после установки всего нужного и перезапуска runtime'а:
1. Устанавливаем scale в 1.
2. Снимаем галочку use_pixeldraw (теперь у нас вместо diffvg будет vqgan).
3. Показать код (Show code) в этой ячейке и там:
clipit.add_settings(prompts=prompts, aspect=aspect)
заменить на
clipit.add_settings(prompts=prompts)
(иначе модель не влезет в память). Кроме того, после этой строчки добавить:
clipit.add_settings(size=(256,256))
clipit.add_settings(num_cuts=9)
Тем самым мы запрашиваем генерацию квадратного изображения 256x256 пикселей (размеры должны быть кратны 16, чтобы сеть переварила).
Всё, можно запускать, не забывая указывать в запросе тип рендеринга (скажем, #Unreal Engine или #pixelart):

Crystal cave #Unreal engine

Crystal cave #pixelart
Работать будет довольно медленно, хотя можно значительно ускорить ценой снижения вменяемости изображения, изменив в строке
clipit.add_settings(quality="better", scale=scale)
«better» на «draft».

Спасибо. Я уже думаю, что проще на своей RTX 2060S завести.

А из PyPi не получится более корректную версию PyTorch вытащить в процессе сетапа?

Вряд ли, скорее всего кастомный билд собирать придётся. Но вы можете попробовать перебрать официальные билды — вдруг на чём-то запустится? (Хотя шансы невелики).
Можно --num-cuts параметр меньше указать. В блокноте раскройте ячейку с настройками и добавьте строку

clipit.add_settings(num_cuts=96)

image
96 в 7Гб VRAM вряд ли влезет. Я бы начинал с совсем низких значений, а поднять всегда можно успеть.
Согласен, тут надо поиграться.

Добавил в код:

import tensorflow as tf
device_name = tf.test.gpu_device_name()
print(device_name)

Выдал:

/device:GPU:0

Большое спасибо за статью! И за ссылки на блокноты отдельно. Вроде бы только недавно синтез изображения по текстовой подсказке был чем-то недосягаемым. Теперь же все делается в 2 клика. Страшно представить, к чему это придет через 10 лет. Синтез фильма по краткому описанию сюжета?

UFO just landed and posted this here
В ожидании новой книжки можно немного порисовать

image

image
Рад, что понравилось! Можете тоже поиграть, получите массу удовольствия.
Ага, вот остров в космосе и девушка с татуировкой дракона

image

image
Тот же самый CLIP, соединённый с vqgan, позволяет генерировать довольно качественные полноразмерные обоины абстрактного содержания. Правда, степень понимания языка всё ещё оставляет желать лучшего, и как ни формулируй запрос, на выходе никогда не получается в точности то, что хочется.
Вот например

Lyra-shaped crystal cave #Unreal Engine


Модель «не понимает», что в пещере деревья обычно не растут, да и пожелание сделать планировку пещеры в форме указанного музыкального инструмента реализовать не удалось даже после нескольких модификаций текста запроса.
Для улучшения качества можно добавлять различного рода подсказки, — fine details, high resolution, professional photo of, ultra settings, ray tracing.
А какие изображения лучше получаются, на какую тему?
Лучше всего абстрактные вещи. Пещеры, горы, леса, парусник в море и т.д.
В общем, разного рода фоновые вещи. Людей, особенно крупным планом, оно обрабатывает так себе (в pixelart-варианте это не слишком видно, но если делать FullHD, то ужас-ужас).
И совсем паршиво обрабатываются мифические животные, например гарпии, грифоны, драконы или (особенно) русалки. Сгенерировать нормальный русалочий хвост в FullHD так и не удалось. Похоже, нужно тюнить модель или использовать её как feature extractor, набросив сверху два дополнительных слоя, чтобы генерировать мифических животных.
А вы какие модели используте, которые в сети гуляют (натренированные на Imagenet'ах, WikiArt, Flickr и т.д.)? Я вот на этих пробовал:

image

Но вот, действительно, точного выполнения от них не получается. Лица в принципе генерируются, но страшненькие. Вот картины довольно неплохо заходят.
Да, эти плюс vqgan_gumbel_f8, которая даёт достаточно интересные результаты.

Не силён в ноутбуках... Что-то у меня упорно не находит модуль pixeldrawer :(

Какую ошибку выводит?
Забавно выходит, если скармливать сетке разные абстрактные вещи. Например,
Linux vs FreeBSD

В тему, даже пингвин боком развернут.
Двери в осень, зиму, весну и лето

image
image
image
image
В моём случае дверь в осень получается всегда без людей и результат напоминает
скрин из какой-то компьютерной игрушки времён DOS



Круто, а поделитесь кодом для такой генерации?
Вверху уже поделился инструкцией — нужно в этих Colab'ах отключить diffvg, вместо этого используя vqgan.
Ну, и если запускать локально, то там намного больше возможностей и параметров для настройки. Я использовал такой вариант запуска:

python generate.py -p "the door into autumn #pixelart" -i 600 -qua "normal" --num_cuts 15 --output "result/output" -s 416 224 -lr 0.1 --save_every 10 --pixelize_every 50 --out_unpix "unpix/output"
Высоцкий в Москве

image

Вин Дизель в космосе

image

Джим Керри

image
На Хабре опубликовали статью со ссылкой на апскейл-нейронку, которая на удивление неплохо обрабатывает пиксельарт.
Так что можно взять «выхлоп» CLIP, уменьшить так, чтобы каждый пиксельный кадратик изображения занимал ровно 1 реальный пиксель, после чего увеличить с помощью этой нейронки.
Результаты







Спасибо, классно выглядит. Надо поиграться.
Sign up to leave a comment.

Articles