А А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 кадра и больше все возможно.)

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

No comments:

Post a Comment

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

Версия на печать

Популярное