Что мы поняли, когда обучили свою text2video нейронку
Привет, я основатель проекта insomnia.land, платформы для генерации контента различными нейросетями: Midjourney, Stable Diffusion, Kandinsky, ControlNet, и пр. Веб версия платформы генерации доступна по адресу https://insomnia.land/#/image, где можно выбрать, например, модель Gif, о которой пойдет речь ниже.
В статье я покажу первые результаты нашей модели text2video, а точнее text2gif модели, выводы и что мы поняли в целом о данной задаче.
На фоне прогресса диффузионных нейросетей для генерации изображений наша команда задумалась попробовать свои силы в задаче генерации видео. У нас был крохотный кластер на 90Гб GPU памяти, а также мы собрали небольшой датасет видео из интернета, около 100 тысяч, коротких видео и gif.
Мы решили не строить космолет, а просто дообучить Stable Diffusion нейросетку на задачу генерации коротких гифок. Учили это все примерно неделю в несколько подходов.
В результате получили нейросеть, которая может генерить короткие гифки размером 256 на 256 пикселей. Да это конечно жипеги, по сравнению с той же нейросетью Gen2. Однако мы поняли, что наш подход лучше в плане генерации динамических сцен, а также обладает более высокой связностью между кадрами. Это навело нас на ряд мыслей, куда могут двинуться разработки генерации видео и какие есть подводные камни в задаче генерации целого фильма.
О наших выводах я напишу в конце, но для начала приложу ниже некоторые примеры более-менее приличных результатов генерации с помощью нашей нейросети.
промпт: «Elon Musk thumbs up»
«pug is dancing»
«Panda with money»
Inumaki Toge (Jujutsu Kaisen), , head and shoulders girls portrait, anime lightnings in eyes, lightning glare power, 8k resolution concept art portrait by Greg Rutkowski, Artgerm, WLOP, Alphonse Mucha dynamic lighting hyperdetailed intricately detailed Splash art trending on Artstation triadic colors Unreal Engine 5 volumetric lighting
Negative prompt:
(deformed, distorted, disfigured, doll:1.3), poorly drawn, bad anatomy, wrong anatomy, extra limb, missing limb, floating limbs, (mutated hands and fingers:1.4), disconnected limbs, mutation, mutated, ugly, disgusting, blurry, amputation, 3d, illustration, cartoon, black and white
Результаты:
Наша нейронка далека от идеала или хотя бы качества того же SD, однако наш подход показывает субъективно более высокую связность кадров, так как мы производим немного, но сразу все кадры. Если нейроизображения уже иногда тяжело отличать от реальных фотографий, то с видео сложнее — на рынке еще нет достойных решений. Человечество все еще далеко от создания целого фильма в один клик.
Я считаю, что для создания больших и качественных видео понадобятся несколько нейросетей для решения разных задач, чтобы не работать с одной огромной нейросетью и всеми кадрами сразу:
1) Нейросеть для раскадровки сцен. Вы подаете сценарий фильма или мультфильма, описания главных персонажей и ключевых сцен. На выходе получается 10–100 ключевых кадров, при желании их можно быстро переделать. В теории это уже можно делать с помощью ControlNet или подбора сида с фиксированным промптом.
2) Поминутная Нейросеть. Вы подаете несколько кадров из раскадровки, а нейросеть делает что-то вроде слайд-шоу, но все еще не полноценные 30–60 fps, а где-нибудь 1–5 fps.
3) Секундная нейросеть. Из ранее полученных и проверенных сцен вы производите уже необходимы нам 60 или даже 120 fps в хорошем качестве. Данной нейросети контекст всего фильма уже не так важен, достаточно хорошо и четко отрисовать все движения и эмоции.
Мы планируем разивать нашу нейросеть и дальше. Мне очень интересно, что вы думаете о будущем генерации видео и нашем проекте, напишите в комментариях. Спасибо!