Убрать предмет из видео: ProPainter
Урок «video-remove» в группе Паки и инструменты списка уроков. Шагов: 8.
Чему вы научитесь
Предмет, отмеченный видеомаской, исчезает, а фон за ним дорисовывается по соседним кадрам.
Что понадобится
- Урок продолжает Загрузить, обрезать и сохранить видео: VideoHelperSuite. Карточка говорит об этом; это подсказка, а не замок.
- Паки нод: ComfyUI-VideoHelperSuite, ComfyUI_ProPainter_Nodes. Их вы ставите в ComfyUI сами, потом выбираете Синхронизация ▸ Синхронизировать сейчас. До тех пор карточка говорит, что урок не подходит, и называет пак.
- Ноды: Load Video (Upload) 🎥🅥🅗🅢 / VHS_LoadVideoPath, Convert Image to Mask, ProPainter Inpainting, Video Combine 🎥🅥🅗🅢.
- Приложение ничего не скачивает и не устанавливает. Тексты шагов ниже говорят, какие файлы, в какие папки и какой шаблон ComfyUI их называет.
Шаги
Слова каждого шага, как их показывает урок. Имена нод выделены.
Сначала о цене (чтение)
Для урока нужен пак ComfyUI_ProPainter_Nodes. Поставьте его сами через менеджер ComfyUI. Пак запускает на вашем компьютере чужой код, поэтому берите его с официальной страницы и обновляйте. Пример пака ещё берёт ComfyUI-VideoHelperSuite, чтобы загрузить и сохранить видео.
ProPainter следит за движением между кадрами и заполняет место под маской тем, что за ним видно на других кадрах. Нужны два видео одной длины: сам ролик и видеомаска, где убираемый предмет красный (или белый), а всё остальное чёрное. Видеомаску делают в видеоредакторе или паком сегментации, например SAM2.
Цена: модели у него маленькие, пак сам скачивает их в свою папку при первом запуске графа в ComfyUI. Память быстро растёт с размером и числом кадров; пример уменьшает размер вдвое и берёт 24 кадра.
Если на холсте уже есть другой граф, начните с пустого: «Файл ▸ Новый проект».
Загрузите ролик
Добавьте ноду Load Video (Upload) 🎥🅥🅗🅢, выберите ролик в
videoи поставьтеframe_load_cap24.Сначала попробуйте короткий кусок: работа растёт с каждым кадром.
Загрузите видеомаску
Добавьте вторую ноду Load Video (Upload) 🎥🅥🅗🅢, выберите видеомаску в
videoи поставьте те жеframe_load_capиskip_first_frames, что у ролика.Маска должна совпадать с роликом кадр в кадр; сдвиг на один кадр оставит призрак предмета.
Превратите видеомаску в маску
Добавьте ноду Convert Image to Mask, подключите кадры видеомаски к её входу
imageи поставьтеchannelred.Нода читает один цвет каждого кадра как маску: где светло, там предмет убирается.
Уберите предмет
Добавьте ноду ProPainter Inpainting. Кадры ролика подключите к
image, выход Convert Image to Mask кmask. Поставьтеwidth640 иheight480 (размер ваших кадров) иmask_dilates5.mask_dilatesрасширяет маску на несколько пикселей, чтобы край предмета не остался.Если кадры большие, поставьте перед обоими входами ноду Upscale Image By со значением 0.5, как в примере; приложение принимает её на пути.
Сохраните результат
Добавьте ноду Video Combine 🎥🅥🅗🅢, подключите выход
IMAGEноды ProPainter Inpainting кimagesи поставьтеframe_rate24, частоту ролика.Если результат не тот (чтение)
- Осталась тень или край предмета: поставьте
mask_dilates8-10 или расширьте саму маску. - Заполненное место размыто: фон за предметом нигде в ролике не виден, и ProPainter может только грубо его придумать.
- Не хватает памяти: меньше кадров или меньше размер.
- Осталась тень или край предмета: поставьте
Граф готов (чтение)
Сохраните граф через «Файл ▸ Сохранить workflow для ComfyUI…», откройте файл в ComfyUI и запустите там. Само приложение в ComfyUI ничего не запускает.
Что проверяет урок
Шаг для чтения сделан, когда вы нажимаете Понятно, дальше. Шаг с делом отмечается сам, когда на холсте есть:
- Шаг 2, Загрузите ролик:
- нода Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath.
videoноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (ролик): значение выбрано.frame_load_capноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (ролик): от 1 до 300; «Сделать за меня» ставит 24.
- Шаг 3, Загрузите видеомаску:
- нода Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath.
videoноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (видео маски): не тот же файл, что в полеvideoноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (ролик).frame_load_capноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (видео маски) равно полюframe_load_capноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (ролик).
- Шаг 4, Превратите видеомаску в маску:
- нода Convert Image to Mask.
IMAGEноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (видео маски) во входimageноды Convert Image to Mask (можно через Upscale Image или Upscale Image By или ImageFromBatch или ImageResizeKJv2 или Resize Image или GetImageRangeFromBatch или ResizeImageMaskNode).channelноды Convert Image to Mask:red.
- Шаг 5, Уберите предмет:
- нода ProPainter Inpainting.
IMAGEноды Load Video (Upload) 🎥🅥🅗🅢 или VHS_LoadVideoPath (ролик) во входimageноды ProPainter Inpainting (можно через Upscale Image или Upscale Image By или ImageFromBatch или ImageResizeKJv2 или Resize Image или GetImageRangeFromBatch или ResizeImageMaskNode).MASKноды Convert Image to Mask во входmaskноды ProPainter Inpainting.widthноды ProPainter Inpainting: от 64 до 2560; «Сделать за меня» ставит 640.heightноды ProPainter Inpainting: от 64 до 2560; «Сделать за меня» ставит 480.mask_dilatesноды ProPainter Inpainting: от 0 до 20; «Сделать за меня» ставит 5.
- Шаг 6, Сохраните результат:
- нода Video Combine 🎥🅥🅗🅢.
IMAGEноды ProPainter Inpainting во входimagesноды Video Combine 🎥🅥🅗🅢.frame_rateноды Video Combine 🎥🅥🅗🅢: от 1 до 60; «Сделать за меня» ставит 24.