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