Відео й анімація в ComfyUI: як оживити картинку
Картинка навчилася стояти. Тепер вчимо її рухатися - і платимо за це часом
Як зробити відео в ComfyUI простими словами: що таке кадри, звідки рух, навіщо AnimateDiff і відеомоделі та яке залізо реально потрібне для анімації.
Що таке відео в ComfyUI простими словами
Памʼятаєш блокнотик з дитинства? Малюєш чоловічка в кутку сторінки, трохи зміщуєш руку й ногу, гортаєш швидко - і чоловічок біжить. Ось це й є відео. Жодної магії: відео - це пачка картинок, які показують дуже швидко, одну за одною.
Отже, щоб ComfyUI видав тобі відео, йому потрібно намалювати не одну картинку, а багато. Цілу пачку кадрів. І тут вилазить головна засада. Попроси ШІ намалювати «кота» десять разів - отримаєш десять різних котів. Прогорнеш - і замість плавного руху матимеш смикучий калейдоскоп із чужих тварин.
Тож уся задача відео в ComfyUI зводиться до одного: зробити сусідні кадри майже однаковими, щоб мінялося лише те, що має рухатися. Кіт той самий. Ворушиться тільки хвіст.
Навіщо вайбкодеру розбиратися в анімації
Ти вайбкодер, а не аніматор. Але захочеш рухомий логотип, короткий ролик для сторіс або просто оживити свою картинку - і одразу впрешся у відео. Ось що врятує тебе від розчарування:
- ти зрозумієш, чому відео робиться довго, і не думатимеш, що в тебе щось зламалося;
- ти не купиш слабкий компʼютер у надії ганяти на ньому відео й не викинеш гроші марно;
- ти будеш просити розумного - пару секунд, а не голлівудський блокбастер з першого тику;
- ти не потонеш у назвах моделей, які застарівають швидше, ніж ти дочитаєш урок.
Як ComfyUI робить відео з кадрів
Кадри: малюємо не одну картинку, а пачку
Звичайний воркфлоу Воркфлоу - схема зі зʼєднаних блоків (нод) у ComfyUI, за якою йде генерація: завантажили модель, ввели промпт, отримали картинку. в ComfyUI видає одну картинку. Відео-воркфлоу видає багато кадрів за один запуск - зазвичай короткий відрізок, грубо кажучи пару секунд. Ти не робиш одразу хвилину. Ти робиш маленький шматочок, а потім, якщо треба, подовжуєш.
Чому так? Що більше кадрів - то більше памʼяті й часу. Машина тримає в голові одразу всю пачку, щоб кадри дружили між собою. Що довша пачка, то важче їй це дається.
Рух: хто вчить кадри триматися одне за одного
Модель, яка малює картинки, про час нічого не знає. Їй байдуже, що було на попередньому кадрі - вона щоразу починає з чистого аркуша. Тому у воркфлоу додають окремий «прошарок руху».
Першим популярним способом історично став AnimateDiff AnimateDiff - доповнення до звичайної моделі генерації картинок: додає «модуль руху», який звʼязує сусідні кадри, щоб вийшло плавне відео, а не набір різних картинок. . Ідея проста: до звичайної моделі картинок пристібають окремий «модуль руху». Він дивиться одразу на всю пачку кадрів і каже: «гей, це все одна сцена - тримайте композицію, міняйте лише те, що має рухатися».
Сьогодні, крім AnimateDiff, є й сучасні відеомоделі - їх одразу навчали на відео, а не на окремих картинках. Рух вони розуміють «з коробки» й дають результат помітно плавніший і стабільніший. Назви та версії змінюються буквально щомісяця, тому запамʼятовуй не імена, а принцип:
Text-to-video чи image-to-video: з чого почати
Відео зазвичай роблять двома шляхами, і тобі корисно знати різницю:
- З тексту (text-to-video): пишеш промпт - отримуєш ролик з нуля. Зручно, але контролю над тим, як саме все виглядатиме, менше.
- З картинки (image-to-video): даєш готову картинку - і модель її оживляє, додаючи рух. Часто простіше й передбачуваніше: ти вже знаєш, який вигляд має перший кадр.
Інтерполяція та подовження: фінальне доведення ролика
Сирий результат зазвичай короткий і трохи смикучий. Тут виручають два прийоми, які ти зустрічатимеш постійно:
- Інтерполяція кадрів Інтерполяція кадрів - добудова проміжних кадрів між уже готовими, щоб рух став плавнішим: було 12 кадрів на секунду - стало 24. - машина домальовує кадри між готовими, і відео стає плавнішим, ніби частота кадрів зросла.
- Подовження - беремо останній кадр готового відрізка й продовжуємо від нього новий, склеюючи в довший ролик.
Яке залізо потрібне для відео в ComfyUI
А ось тут чесна розмова, заради якої ти й читаєш урок. Відео - ненажерливе. Дуже.
- Картинку можна крутити майже на будь-якому ігровому компʼютері.
- Короткий ролик «оживи мою картинку» - найдешевший і найшвидший вхід у відео.
- Можна почати на хмарних сервісах, не купуючи потужне залізо.
- Інтерполяція та подовження дозволяють із коротких шматочків зібрати нормальний ролик.
- Відео хоче гарну відеокарту - помітно більше памʼяті, ніж для картинок.
- Чекати доведеться хвилини за пару секунд ролика, а не секунди.
- Що довше й чіткіше відео - то сильніше ростуть апетити щодо памʼяті й часу.
- На слабкому залізі ти впрешся в «не вистачає памʼяті» куди раніше, ніж на картинках.
Приклад: як оживити картинку для сторіс
Ти зробив класну картинку - неоновий кіт на тлі міста - і хочеш, щоб у нього світилися очі й ворушився хвіст для сторіс. Хвилинний мультфільм тут не потрібен. Потрібне інше: взяти готову картинку, попросити легкий рух, отримати пару секунд, за бажання згладити й зациклити.
Ось як розумно поставити таку задачу. Це не код, а людська постановка - щоб ти не просив неможливого:
- Візьми за основу готову картинку (image-to-video), а не генеруй ролик з нуля - так передбачуваніше.
- Проси короткий відрізок - пару секунд, а не хвилину. Довжину наростиш потім.
- Опиши лише те, що має рухатися: світяться очі й трохи похитується хвіст. Решта хай лишається нерухомою.
- Почни з невеликого розміру кадру. Стало гарно - тоді підвищуй чіткість.
- Готовий відрізок за бажання згладь інтерполяцією та зацикли для сторіс.
- Закладай хвилини на очікування - для відео це нормально.
Часті помилки під час генерації відео
- Просити одразу довгий ролик. Памʼять скінчиться, а чекати будеш вічність. Роби короткі відрізки й склеюй.
- Гнатися за максимальною чіткістю з першого разу. Спершу досягни нормального руху на маленькому розмірі, потім підвищуй якість.
- Чекати секунд, як від картинки. Відео рахується хвилинами - це не зависання, це робота.
- Описувати рух усього й одразу. Що більше всього ворушиться, то більше каші. Рухай один-два елементи.
- Завчати назви конкретних моделей. За місяць вийде нова. Тримайся за принцип: кадри плюс звʼязок між ними.
- Запускати відео на слабкому залізі й злитися. Памʼяті мало - бери хмару або починай із найлегших коротких роликів.
TL;DR - если коротко
- Відео - це просто багато картинок поспіль. Уся хитрість - щоб сусідні кадри були схожі, інакше замість руху вийде миготіння.
- AnimateDiff і відеомоделі додають у генерацію «відчуття руху» - вчать сусідні кадри триматися одне за одного.
- Генеруєш короткий відрізок на пару секунд, а вже потім подовжуєш і згладжуєш.
- Не малюй ролик з нуля - оживи готову картинку. Так передбачуваніше.
- Відео жере ресурси в рази сильніше за картинки: карта потужніша, а чекати - хвилини, а не секунди.
- Моделі змінюються щомісяця - тримайся за принципи, а не за назви.