AnimateDiff

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

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

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

Коротко

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

Что это такое

У вас есть любимый чекпоинт Stable Diffusion. Он рисует идеальный кадр в нужном стиле — и хочется, чтобы этот кадр ожил. Очевидный путь — обучить отдельную видеомодель — упирается в стену: это дорого, долго и стиль придётся собирать заново.

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

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

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

Обычная Stable Diffusion генерирует каждый кадр независимо. Запустите её 16 раз с одним промптом — получите 16 не связанных картинок. Поставьте их подряд — будет мерцание: фон прыгает, детали пляшут.

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

  1. Латенты сразу нескольких кадров (по умолчанию 16) обрабатываются вместе, одной пачкой.
  2. На каждом шаге шумоподавления временны́е слои сравнивают кадры между собой и подгоняют их друг к другу.
  3. В результате объекты и фон переходят из кадра в кадр плавно — модель «знает», что это последовательность, а не набор отдельных картинок.

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

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

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

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

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

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

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

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

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

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

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

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

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

Какой модуль движения выбрать? Для SD 1.5 — mm_sd_v15_v2, проверенный базовый вариант. Под SDXL — отдельные модули (AnimateDiff-SDXL, Hotshot-XL), они требовательнее к железу.

Работает ли с SDXL? Да, но через специальные SDXL-модули и с большим запасом видеопамяти. Самый накатанный путь по-прежнему SD 1.5.

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

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

Главное

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