Друзья, всем привет, даже от меня вы уже не раз слышали, что в нейросетях сейчас можно делать буквально все: создавать тексты, генерировать музыку, делать дипфейки, создавать изображения и даже видео. Раньше генерировать видео можно было только в больших платных проектах типа Gen-2 от Runway или в пока еще бесплатном дискорд боте Pika Labs. Локальные решения были плохими или требовали топовых видеокарт.

Но времена меняются и сообщество создало открытое и доступное решение, которое позволяет создавать прекрасные анимированные видео прямо в нашем любимом Stable Diffusion в интерфейсе Automatic 1111. Об этом решении сегодня и пойдет речь.

Что нам понадобится:

  1. Нейросеть Stable Diffusion в интерфейсе Automatic 1111 версии 1.6 или старше;

  2. Расширение AnimateDiff;

  3. Любимая модель семейства 1.5, у меня epiCRealism и подходящий промпт.

В этом гайде я не буду заострять внимание на установке Automatic 1111, она подробно описана на странице гитхаба, или посмотрите первые 5 минут из моего видео Чистая установка нейросети Stable Diffusion в интерфейсе Automatic 1111, но пока можете не скачивать SDXL модель, сегодня речь пойдет только про 1.5 модели и лоры движений к ним. Про модели движения для SDXL я расскажу в следующий раз, так что не забудьте оценить эту публикацию и оставить комментарий, так я увижу, что тема действительно интересна.

Установка расширения

Automatic 1111 у вас установлен и готов к работе. Осталось установить расширение которое и позволит нам создавать анимированные генерации. Расширение называется AnimateDiff, это порт одноименного исследовательского проекта, там можно скачать и отдельную от Automatic версию, но возможностей в ней намного меньше как и удобства использования.

Для установки расширения переходите на вкладку Extensions, затем Install from URL и просто вставляем в первое поле ссылку https://github.com/continue-revolution/sd-webui-animatediff и жмем Install. Ждем окончания установки и перезагружаем автоматик.

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

Но это еще не все, теперь надо скачать модели движения, проще всего это сделать с гугл диска. Скачивайте mm_sd_v15_v2.ckpt и всю папку MotionLoRA. Модель mm_sd_v15_v2.ckpt размещаем тут stable-diffusion-webui\extensions\sd-webui-animatediff\model, а лоры как обычно кладем в stable-diffusion-webui\models\Lora, можно прям в папке MotionLoRA, так даже удобнее, к лорам мы вернемся позже.

Почти все, осталось зайти в Settings/Optimization и активировать галочку Pad prompt/negative prompt to be same length. И нажать Apply SettingsНо скорее всего вы это сделаете когда будете второй раз перечитывать гайд, не понимая почему у вас анимация состоит из двух разных кусочков в одной гифке.

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

Ура, все готово, у нас должен появится аккордеон с заголовком AnimateDiff. Если у вас не появился, попробуйте еще раз перезагрузить автоматик. А если появился, то копируйте любой запрос со страницы модели которую используете, ставьте настройки как у меня на скрине ниже и запускайте генерацию.

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

Я же создам анимашку по своему промпту, это персонаж-маскот одного из моих проектов, так что весь гайд нас будет сопровождать одна и та же девушка по имени Дженна. Вот что получилось у меня.

Как это работает

Специально обученная на видео модель встраивается в уже существующую модель Stable Diffusion 1.5 во время генерации и таким образом задает направление движения согласно данным на которых была обучена. Схожим образом работает и ControlNet. Это позволяет использовать любые модели Stable Diffusion 1.5 созданные сообществом как основу для вашего видео. Эта техника будет работать и с аниме моделями и с фотореалистичными, ниже вы увидите пример с тем же самым промптом что и девушка на пляже, но на другой модели.

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

Cекрет этой технологии очень прост, главное достижение, оно же главное проклятье, все кадры генерируются на "одном листе", это позволяет достичь консистетности на видео, потому что все кадры создаются из одного замороженного латентного пространства. Но это же накладывает ограничения по производительности, потому что это единое полотно занимает много видеопамяти. Если у вас меньше 6гб видеопамяти, пытаться даже не стоит. Оптимально 12гб.

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

Это влияет и на работу сида, если вы думали, что сначала сгенерируете картинку, найдете классный сид, а затем включите AnimateDiff и картинка просто станет анимированной, то вынужден вас огорчить, с включенным расширением результат будет совсем другой. Ваш сид будет использован при построении всего большого полотна со всеми кадрами и это выдаст совсем другой результат. Так что подбирать сид придется случайным образом просто генерируя пока не найдем тот самый.

Настройки расширения

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

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

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

Еще обратите внимание, что png info (информация о генерации) не записывается в форматы отличные от png, а это значит что если вы не поставите галочку на png либо на txt, то просто не сможете восстановить информацию о генерации потом. Рекомендую каждый раз сохранять отдельно финальную генерацию в виде png.

Number of frames - сколько всего будем генерировать кадров, чем больше - тем дольше. К тому же более длинные ролики получаются "рваными". Оптимально 16.

Context batch size - размер окна контекста генерации, зависит от модели. В нашем примере модель обучена на видео по 16 кадров и лучшего всего генерит именно их, нормально если меньше, отвратительно если больше.

FPS - количество кадров в секунду, оптимально 8-16, можно интерполировать в других программах позже.

Closed loop - режим закольцовывания видео, - никакого, R-P - режим вычитания, расширение попробует вычесть кадры и закольцевать видео; R+P режим добавления, расширение попробует добавить кадры чтобы закольцевать видео; A - агрессивный режим, расширение попробует закольцевать видео форсированно, иногда приводит к артефактам, а иногда к хорошим результатам как ниже, тут склейка почти не видна.

Все остальные настройки нам мало интересны или задействуются в других режимах работы. Перейдем к самому вкусному!

Моушен Лоры

Наверное одна из самых классных вещей - это специальные лоры движения которые совместимы только с той самой моделью mm_sd_v15_v2.ckpt, с другими они попросту не работают.

Каждая из 8 лор обучена на свой собственный тип движения: Zoom In - приближение; Zoom Out - отдаление; Pan Left - смещение в лево; Pan Right - смещение вправо; Pan Up - смещение вверх; Pan Down - смещение вниз; Rolling Anti-Clockwise - вращение против часовой стрелки; Rolling Clockwise - вращение по часовой стрелке. Используя эти лоры вы можете воплотить практически любую режиссёрскую задумку.

Подключение лор

Подключаются в промпт моушен лоры так же просто как и обычные, открываете вкладку Lora, и просто кликайте на лору с желаемым эффектом. Вес рекомендуется поставить 0.7, на высоком весе будет больше артефактов, но вы вольны с этим экспериментировать. Посмотрим как работают лоры на примере с девушкой и салютом из начала публикации, я не буду менять запрос, только подключу по очереди разные лоры на движение. Не забудьте переключить Closed loop в режим N, чтобы получить больше движения при использовании лор.

Zoom In - приближение

Zoom Out - отдаление

Pan Down - смещение вниз

Pan Up - смещение вверх

Pan Left - смещение влево

Pan Right - смещение вправо

Rolling Anti-Clockwise - вращение против часовой стрелки

Rolling Clockwise - вращение по часовой стрелке

Самые крутые конечно это приближение и отдаление, некоторые портят композицию и надо поиграться с весом, потому что смещение влево заметно меньше, чем на том же весе смещение вправо, но в целом это фантастический инструмент для творчества доступный теперь и локально.

Секреты и советы

Используйте простые промпты. Моушен модель обучалась на видео из дата сета WebVid-10M, я приведу парочку примеров пар видео - описание, чтобы вы имели представление.

Lonely beautiful woman sitting on the tent looking outside. wind on the hair and camping on the beach near the colors of water and shore. freedom and alternative tiny house for traveler lady drinking.

Billiards, concentrated young woman playing in club

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

Не превышайте 16 кадров. Модель тренировали на видео из 16 кадров, поэтому не смотря на все костыли, видео длиннее все равно будут дергаться.

Не используйте несколько лор одновременно. Каждая лора добавляет больше шума и в результате мешает работе моушен модели, то же самое касается и контролнета, его можно использовать, но каждый слой будет уменьшат движение.

Если на вашем видео проявляется логотип шаттерстока, то проработайте негативный промпт или поменяйте негативный эмбединг. Особенно это заметно при использовании моушен лор, и не всегда удается решить до конца на этапе генерации.

Используйте Topaz Video AI. Все видео в посте прогнаны с такими настройками:

Создание анимированных видео в нейросети Stable Diffusion, пошаговое руководство Искусственный интеллект, Нейронные сети, Stable Diffusion, Арты нейросетей, Гайд, Видеомонтаж, TikTok, YouTube, Видео, Без звука, Длиннопост

Все, что вы любите - работает! Вы можете использовать с этим расширением ControlNet, и Hires. fix, но не советую ставить больше увеличение больше чем в 1.3-1.5, даже на мощных видеокартах. Вы можете использовать ADetailer, но делать этого не стоит, потому что будет нежелательная на видео шевеленка даже с низким деноизнгом. Вы можете использовать любой фейсвап и сделать что-то подобное со своим лицом:

Ну и конечно экспериментируйте с моделями, не все одинаково хорошо работают, на некоторых есть странная серая дымка, но большинство топовых моделей с цивита отлично себя показали.

Друзья, а на этом у меня все, из этого гайда вы узнали как создавать короткие анимированные ролики из своих генераций, поняли как работает технология, познакомились с моушен лорами и теперь можете самостоятельно создать небольшую короткометражку, или даже что-нибудь по круче. Делитесь своими результатами в комментариях и в нашем чатике нейро-операторов.

Я рассказываю больше о нейросетях у себя на YouTube, в телеграм, на Бусти, буду рад вашей подписке и поддержке. До встречи на стримах, ближайший уже в понедельник, подпишитесь чтобы не пропустить.

Всех обнял, Илья - Nerual Dreming.

Комментарии (26)


  1. Miklirik
    03.11.2023 19:02

    Спасибо за такую развернутую статью, я тоже пытаюсь заниматься созданием контента при помощи нейросетей. Мне кажется за этим будущее:+)))


  1. AlexB17
    03.11.2023 19:02
    +1

    В принципе нормально расписали, только вот нет рекомендаций по разрешению рендера, особенно в связке с HiresFix.


    1. timonin Автор
      03.11.2023 19:02
      +1

      А рекомендации стандартные 512х768 и обратно, а в хай резе писал, не выше 1.3 не стоит повышать, на 1.8 вешается 4090 даже у меня.


  1. nidalee
    03.11.2023 19:02
    +2

    Не самое удачное время для статьи, к сожалению.

    По текущим requirements_versions собирается ботва, которая при highresfix конфликтует с AnimtedDiff:

    RuntimeError: CUDA error: invalid configuration argument CUDA kernel errors might be asynchronously reported at some other API call, so the stacktrace below might be incorrect. For debugging consider passing CUDA_LAUNCH_BLOCKING=1. Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.

    Без highresfix SD вообще особого смысла не имеет. По issue предлагают запускать без xformers, но оно тогда даже на 4090 в разрешении 640х736 мгновенно ужирает 99.9% GPU, а уж на этапе highresfix я даже 1% не дождался, с такой скоростью быстрее банально разложить картинку на слои и анимировать вручную. Без навыков. :)

    UP: Settings/AnimateDiff -> Optimize attention layers with sdp (torch >= 2.0.0 required) вроде помогает


    1. timonin Автор
      03.11.2023 19:02

      Блин, а я даже не знал, потому что SDP поставил с самого начала =)


    1. iiiytn1k
      03.11.2023 19:02

      После того как в torch запилили нативную оптимизацию SDP смысла в xformers особо нет (если только разработчики всё-таки сделают поддержку Flash Attention 2 в windows).

      Hidden text

      При обычной генерации (без AnimateDiff) с параметрами запуска:

      set COMMANDLINE_ARGS=--opt-sdp-attention --opt-channelslast
      set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512

      Скорость генерации EulerA, 512x512, 150 Steps — около 35 it/s.

      При использовании --xformers — около 31 it/s.

      Это с учётом того, что карточка в 70% поверлимите.

      P.S: У меня и с SDP оптимизацией иногда вылетает эта ошибка.


      1. timonin Автор
        03.11.2023 19:02

        set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.9,max_split_size_mb:512

        А у меня проблемы были с собиралкой мусора из-за такой конструкции плюс тормозило больше =)


      1. nidalee
        03.11.2023 19:02

        После того как в torch запилили нативную оптимизацию SDP смысла в xformers особо нет

        Хм. Не знаю. Попробовал только что - 2 минуты было с xformers, 3 стало с SDP.


        1. timonin Автор
          03.11.2023 19:02

          А какая карта? Хформерс эффективнее на всем, что старее середины 30 серии. Топовые карты 30 серии уже лучше на sdp работают.


          1. nidalee
            03.11.2023 19:02

            4090.


            1. timonin Автор
              03.11.2023 19:02

              на 4090 sdp точно должен быть быстрее, дрова еще стоит обновить на видео.


  1. Nick_Shl
    03.11.2023 19:02

    А в какой нейросети делают сменяющие друг-друга "киберпанк" картинки типа как в этом видео с 6:00:
    https://youtu.be/kNnI7JWn64A?si=725HeUZIZfxN6SNi


    1. timonin Автор
      03.11.2023 19:02
      +1

      В этой же, это расширение Deforum.


  1. Andrey_Epifantsev
    03.11.2023 19:02

    это персонаж-маскот одного из моих проектов

    А можете ссылку скинуть, где почитать про то как воспроизводимо создавать одного и того же персонажа на разных картинках?


  1. rPman
    03.11.2023 19:02
    +6

    про гифки, выкладывайте видео h264, пинайте разработчикв хабра, когда закончится эти вср**ые 8-битные видеовставки, когда браузеры поддерживают адекватные форматы с 10-кратным выигрышем по трафику.


    1. nidalee
      03.11.2023 19:02

      GIFки должны умереть!


    1. timonin Автор
      03.11.2023 19:02
      +2

      Для меня на самом деле таким шоком было, что на хабре нельзя загружать mp4 или webm, это же просто дичь, несколько часов потратил, чтобы найти баланс между размером и качеством гифок.


  1. ASPCT
    03.11.2023 19:02
    +1

    Спасибо тебе добрый человек, все внимательно прочитал, ссылочки на модель и Лору использовал, Ваш труд очень ценен, огромная благодарность, учимся, двигаемся вперед, благодаря Вам!✨


  1. Levin7
    03.11.2023 19:02

    Я уже надеюсь кто нибудь возьмёт и загонит в ИИ одни и те же фильмы разного качества - ts, hd и тд. Может оно когда нибудь обучится и будет выдавать приемлемый результат качества с рядовых экранок


  1. Emulyator
    03.11.2023 19:02

    Жду качественной перегонки текста в 3д, с последующей генерацией кадров на базе более гибкой и более устойчивой к артефактам анимации полученной 3д модели. И ролики будут подлиннее и управляемость получше.


  1. Larymar
    03.11.2023 19:02

    А есть инфа про xl, сколько не искал, кажется все еще реализаций не существует?


    1. timonin Автор
      03.11.2023 19:02

      Инфа есть, как и реализация, более того, она прям внутри этого же расширения доступна. Почитать можно тут https://github.com/hotshotco/Hotshot-XL, но меня совсем не устраивает что оно генерит и как, слишком сильно уступает 1.5 моделям, выжирая в два раза больше ресурсов. Даже с их фирменной моделью для разрешения 512 результаты получаются прям не очень. Будем подождать дальнейших оптимизаций. Но если очень хочется, можно уже тестить.


  1. Vsevo10d
    03.11.2023 19:02
    +2

    На гифках не совсем зум, это транстрав (dolly-zoom):


  1. Ucheniy
    03.11.2023 19:02

    Надеюсь эта технология не умрет, так и не родившись.


    1. rPman
      03.11.2023 19:02
      +1

      Именно эта технология скорее всего тупиковый путь, но она может дать развитие системам сжатия видео (еще 10х к компактности).

      Для качественной генерации ее нужно совмещать с генерацией 3d моделей и всей сцены.


      1. vassabi
        03.11.2023 19:02

        да. и это не только вы так думаете: https://habr.com/ru/news/771976/