AnimateDiff

animatediff — модуль движения превращает Stable Diffusion в генератор видео

Раздел
Видео
Обновлено
05.09.26

AnimateDiff — способ заставить обычную модель Stable Diffusion рисовать не один кадр, а короткое видео. К модели подключается отдельный «модуль движения» (motion module), обученный на видео: он связывает соседние кадры, чтобы уменьшить разрывы движения между ними. Для SD 1.5 и SDXL нужны совместимые модули; возможности сочетания с ControlNet и LoRA зависят от реализации.

Коротко

Коротко. AnimateDiff подключает к Stable Diffusion «модуль движения» и превращает генератор картинок в генератор коротких клипов. Модуль обучен на видео и связывает кадры между собой, что помогает связности движения, но не исключает мерцания и деформаций. Совместим с SD 1.5 и SDXL, работает в связке с ControlNet, IP-Adapter и LoRA. Для ComfyUI существует расширение AnimateDiff-Evolved.

Что это такое

Представьте, что у вас уже есть чекпоинт Stable Diffusion с подходящим стилем. Хочется использовать его для короткой анимации, не обучая видеомодель с нуля. AnimateDiff предлагает добавить к нему отдельный модуль, обученный на последовательностях кадров.

Проект AnimateDiff представили Yuwei Guo и соавторы. Базовую модель не трогаем вообще — замораживаем. А между её слоями вставляем отдельный модуль движения, который один раз обучили на большом наборе видео. Модуль работает с признаками нескольких кадров и помогает учитывать изменения во времени. Он не является самостоятельным генератором: результат создаётся вместе с базовой моделью.

Обученный модуль можно применять к разным совместимым чекпоинтам. Однако степень сохранения стиля и качество движения у них различаются.

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

Если независимо генерировать изображения с разным шумом, одинаковый промпт не связывает их движение. В последовательности могут прыгать фон и мелкие детали. А повторение одного seed при одинаковых условиях скорее повторит изображение, чем создаст анимацию.

Модуль движения — это дополнительные слои внимания, но не пространственные, а временны́е. Они вставлены в U-Net и заставляют каждый кадр «оглядываться» на соседние.

  1. Латенты сразу нескольких кадров в пределах рабочего окна модуля обрабатываются вместе, одной пачкой.
  2. На каждом шаге шумоподавления временны́е слои сравнивают кадры между собой и подгоняют их друг к другу.
  3. Генерация учитывает последовательность кадров. Это уменьшает независимые изменения, хотя объект всё ещё может деформироваться или менять внешность.

Поверх можно добавить motion LoRA — небольшие адаптеры, задающие движение камеры: наезд, отъезд, панораму. А для управляемой анимации модуль соединяют с ControlNet: последовательность поз OpenPose задаёт ориентиры движения персонажа. Точное совпадение и устойчивость деталей всё равно проверяются.

Пример на практике

Видеомейкеру нужен короткий зацикленный клип для заставки: неоновый город, лёгкое движение камеры.

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

Движением камеры можно управлять совместимым адаптером движения, а траекторией объектов — последовательностью поз, глубины или другого ControlNet-условия. Для ролика длиннее рабочего временного окна используют перекрывающиеся контексты, после чего проверяют стыки и дрейф внешности.

С чем часто путают

  • AnimateDiff и видеомодели вроде Sora/Kling — Sora, Kling, Runway это самостоятельные видеомодели; AnimateDiff — надстройка над обычной Stable Diffusion. AnimateDiff можно выполнять локально; сравнение качества и длины зависит от конкретных моделей и настроек.
  • AnimateDiff и Deforum — Deforum использует покадровые преобразования и управляемую генерацию; AnimateDiff добавляет обученные временные слои. У обоих подходов возможны мерцание и изменение деталей.
  • AnimateDiff и Image-to-Video — image-to-video описывает вход задачи — исходное изображение. AnimateDiff с подходящими средствами управления тоже может использовать изображения, поэтому категории не исключают друг друга.
  • Motion module и motion LoRA — модуль добавляет временные связи; motion LoRA это добавка, задающая конкретное движение камеры поверх модуля.

Частые ошибки и заблуждения

  • «AnimateDiff заменит Runway или Kling». Эти инструменты выбирают под задачу. AnimateDiff удобен, когда важны собственный чекпоинт, локальный запуск и совместимые средства управления; это не обещает равного качества во всех сценах.
  • «Из коробки получится длинное видео». Базовый временной контекст ограничен. Для длинного клипа нужны скользящее окно, монтаж и проверка переходов.
  • «Любой чекпоинт оживёт одинаково хорошо». Community-модели реагируют по-разному: некоторые дают артефакты, под анимацию приходится подбирать чекпоинт.
  • «AnimateDiff — это и есть Sora». Нет, это разные вещи. Sora — большая видеомодель от OpenAI; AnimateDiff — лёгкая надстройка над SD, которую запускают дома.
  • «Чем больше кадров, тем лучше». Больше кадров — больше видеопамяти и времени, а последовательность за пределами рабочего окна может терять связность без подходящих настроек контекста.

Связанные термины

  • Text-to-Video — генерация видео из текста, более общая категория.
  • Image-to-Video — оживление готовой картинки, соседний подход.
  • ControlNet — управление позой и композицией по кадрам анимации.
  • IP-Adapter — перенос стиля или лица в анимацию через картинку-референс.
  • Stable Diffusion — базовая модель, к которой подключается модуль движения.
  • LoRA — в форме motion LoRA задаёт движение камеры.
  • ComfyUI — одна из сред для сборки схем с AnimateDiff.

Частые вопросы

Сколько кадров генерирует AnimateDiff? Длина рабочего окна зависит от motion module и реализации. Более длинную последовательность строят перекрывающимися окнами и проверяют, не расходятся ли персонаж, фон и направление движения.

Какой модуль движения выбрать? Сначала проверяют совместимость с архитектурой чекпоинта и расширением. Модуль для SD 1.5 нельзя просто подключить к SDXL. Hotshot-XL — отдельный проект, хотя некоторые расширения поддерживают и его модули.

Работает ли с SDXL? Для SDXL существуют отдельные варианты. Совместимость конкретного модуля и схемы указана в документации расширения; пример для SD 1.5 нельзя переносить без изменений.

Как управлять движением, а не получать случайное? Через motion LoRA (движение камеры) и ControlNet (последовательность поз или карт глубины для движения в кадре).

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

Главное

AnimateDiff — не отдельная видеомодель, а модуль движения для диффузионной модели. Он добавляет связи между кадрами и в подходящей реализации сочетается с ControlNet, IP-Adapter и LoRA. Такой подход удобен для коротких управляемых анимаций, но чувствителен к базовой модели и настройкам движения.