AnimateDiff
animatediff — модуль движения превращает Stable Diffusion в генератор видео
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 и заставляют каждый кадр «оглядываться» на соседние.
- Латенты сразу нескольких кадров (по умолчанию 16) обрабатываются вместе, одной пачкой.
- На каждом шаге шумоподавления временны́е слои сравнивают кадры между собой и подгоняют их друг к другу.
- В результате объекты и фон переходят из кадра в кадр плавно — модель «знает», что это последовательность, а не набор отдельных картинок.
Поверх можно добавить 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. Такой подход удобен для коротких управляемых анимаций, но чувствителен к базовой модели и настройкам движения.