Главная

Thursday, 16 November 2023

Про AnimateDiff.

Всем привет.

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

Каюсь, сперва я решил что оно не может на выходе дать больше чем просто GIF, однако при более тесном знакомстве оно меня приятно удивило. Что приятно его форки есть и для ComfyUI  и для Automatic1111. Даже в ComfyUI его работа понравилась больше, там весь процесс генерации происходит нагляднее. Разумеется есть некоторе особенности, но в сети так много туториалов на эту тему что буду повторяться.

Допустим вы написали простой описательный промпт и решили дать на откуп Stable Diffusion создание самого движения по кадрам анимации. Тогда модель самого AnimateDiff вы можете выбирать любую из трех возможных: mm-Stabilized_high.pth, mm_sd_v15_v2.ckpt, temporaldiff-v1-animatediff.safetensors. Анимация получится неторопливой. Ну а если вам нужен заметный движ в кадре тогда надо соблюсти ряд условий:

- модель AnimateDiff только mm_sd_v15_v2.ckpt

- motion_scale больше 1.

Если вам нужен контролируемый движ в кадре, тогда лучше нацепить парочку motion_lora из того же AnimateDiff. Что важно во всех случаях - движение объектов будет заметно только при генерации кадров от 32 штук и более и это справедливо и для ComfyUI и для Automatic1111.

Приятно что и ComfyUI и Automatic1111 позволяют сделать в AnimateDiff closed loop. Т.е. закончить анимацию на том же кадре на котором начали. Но помните что чем больше кадров тем легче AnimateDiff это выполнить для вас.

Как еще устроить движ? В Automatic1111 можно добавить скрипт Prompt Travel, тогда основной промпт можно будет расписывать по шагам:

cyberpunk art, photorealism, (best quality, masterpiece, perfect face), 1woman, solo, (hyper realism, soft light, dramatic light, sharp, HDR), 8K
0: eye-level shot, eyes closed, (very tired, fatigued, weary), head tilted
8: eye-level shot, eyes open, (anxious, nervous, worried)
16: eye-level shot, eyes open, (thrilled, ecstatic, overjoyed)
24: eye-level shot, eyes open, (smiling, beaming)

Правда, это уже мне напоминает Loopback Wave Script или Deforum. В ComfyUI для этого есть нода BatchPromptSchedule, которая имеет тот же функционал. Также рекомендую содержимое файла \ComfyUI\custom_nodes\ComfyUI-AnimateDiff-Evolved\video_formats\h264-mp4.json изменить на следующее:
{
    "main_pass":
    [
        "-n", "-c:v", "libx264",
        "-pix_fmt", "yuv420p",
        "-b:v", "15000k",
        "-crf", "50"
    ],
     "extension": "mp4"
}

Это позволит вам получать более качественные mp4 на выходе.

AnimateDiff позволяет брать в качестве исходника и видео-файл. Надо будет обязательно попробовать эту фишку.

В качестве отличий - в Automatic1111 AnimateDiff позволяет также указать готовое изображение на котором вы хотите закончить свою анимацию. Скажу честно, если оно будет сильно отличаться от промпта или исходного изображения результат вас озадачит. Но при генерации в 64 кадра и больше все возможно.)

На сегодня все. Удачи.

1 comment:

  1. AnimateDiff это специально обученные темпоральные слои к моделям типа StableDiffusion и он скорее больше похож на особый вид LoRA. По изначальной задумке подразумевалось, что AnimateDiff сам не умеет ничего рисовать, эта модель знает только как делать динамику, а за то как это выглядит должен отвечать базовый SD. Так что, по задумке авторов, AnimateDiff должен давать видео по стилю близкие к выбранной SD модели. Но он работает далеко не со всеми моделями, и по моим ощущениям чем сильнее они по промптам отличаются от базовой тем хуже результат.

    CogVideo напротив умеет все рисовать сам, а не является «особой приправой» к какой-то существующей модели поэтому у него нет проблем с тем, что разные его части обучались на разных датасетах. Но зато у него могут быть проблемы с анимированием тех вещей которых в его датасете не представлено.

    Вообще хотелось бы чтобы модульные системы вроде AnimateDiff хорошо работали, но скорее всего на монолитных моделях вроде CogVideo получится быстрее достичь приемлемого качества.

    ReplyDelete

А что вы думаете по этому поводу?