| # NOTES — саммари сессии (для продолжения) |
|
|
| ## Цель |
|
|
| Заменить персону в видео на «дилера» (4 фото блондинки в чёрном платье) через |
| SCAIL-2 пайплайн, без ComfyUI-сервера — прямым Python-скриптом. |
|
|
| ## Что сделано и работает ✅ |
|
|
| 1. **`generate.py`** — self-contained скрипт: ComfyUI ноды импортируются напрямую, |
| без API/сервера/GUI. Модели → промпты → маски → `SCAILAutoExtend.generate()` → mp4. |
| 2. **Мультиреференс работает нативно**: `reference_image` батчем `[N,H,W,C]` — |
| первый = основной, остальные = доп. виды. WanAnimatePlus для этого НЕ нужен. |
| 3. **Критичные параметры найдены** (из workflow автора, файл |
| `ComfyUI/custom_nodes/scail-auto-extend/SCAIL Auto Extend.json`): |
| `ModelSamplingSD3 shift=5` + `euler` + `simple` scheduler + `6 steps` + |
| `lightx2v LoRA @ 0.8` + пустой negative. Без shift — мыло. |
| 4. **SAM3-маски с кэшем** (`masks.py`): pose_video_mask + reference_image_mask, |
| single-person (max_objects=1), кэш по хэшу входов в `mask_cache/`. |
| 5. **Результат (animation mode, без масок и с масками)**: дилер перенесён |
| (блондинка, чёрное платье), движения следуют видео, зелёный фон сохранён. |
| 81 кадр за ~1 мин на 6 шагах. |
| 6. Ollama остановлен. GPU 2–6 — чужая тренировка, не трогаем. |
|
|
| ## Что НЕ работает / открытые проблемы ❌ |
|
|
| 1. **Позиция персоны**: в исходнике она слева, в выходе — по центру. |
| Маска (синий силуэт слева) идеальна, но НЕ управляет позицией. |
| Гипотеза: pose mask — про «какие пиксели какой персоне» (multi-person), |
| а layout модель берёт из референсов (центрированные портреты → центр). |
| 2. **Replacement mode с нашими входами — мусор**: гигантское лицо дилера |
| на весь кадр + брюнетка-двойник. Причины: |
| - **Баг референсов**: портретные фото 3024×4032 центр-кропятся в ландшафт |
| 832×480 → остаётся полоса «подбородок–грудь», голова отрезана |
| (`load_reference_images` в generate.py). Надо: letterbox/pad вместо crop |
| или портретное разрешение. |
| - Возможно, replacement mode ждёт полноростовый реф, а не хедшот. |
| 3. **Маски не чинят позицию в animation mode** (проверено: result3 — всё равно центр). |
| |
| ## План действий (next steps) |
|
|
| ### Ветка А: crop-and-composite (приоритет) |
| `composite.py` уже написан, не подключён. Идея: |
| 1. Из SAM3-маски → union bbox персоны (`person_bbox` уже есть) |
| 2. Кроп видео вокруг персоны с margin → портрет (напр. 576×832) |
| 3. Генерация дилера в кропе (центрирование не мешает — кроп и так на персоне; |
| заодно портрет = пропорции рефов дилера = голова не режется; |
| персона ~340px ширины вместо 130px → лицо качественнее) |
| 4. `composite_back` — вклейка в исходные кадры (с feather-маской) |
|
|
| ### Ветка Б: идея пользователя — первый кадр через 4B edit-модель |
| Пользователь ранее делал так: брал 1-й кадр видео, прогонял через маленькую |
| 4B-модель с редактированием (промпт «замени персону на персону из изображения»), |
| получал первый фрейм с нужной идентичностью. Дальше это можно использовать |
| как стартовый кадр/реф для видео-пайплайна. Кандидаты: Qwen-Image-Edit, |
| FLUX.2-klein-4b (уже лежит в diffusion_models: `flux-2-klein-4b-fp8.safetensors`!). |
| Обсудить на следующей сессии: стыковка с SCAIL-2 (edited first frame → |
| reference или previous_frames). |
|
|
| ### Ветка В (отложено): WanAnimatePlus |
| `prefix_frames` (до 5 доп. рефов поверх нативных) + `transition_video` |
| (бесшовная склейка 21-кадровыми хвостами). Требует установки |
| ComfyUI-WanVideoWrapper + ComfyUI-WanAnimatePlus. Пока хватает нативного. |
|
|
| ## Полезные факты |
|
|
| - SCAIL-2 = Wan 2.1 14B, pose кодируется на ПОЛОВИННОМ разрешении. |
| - Ширина/высота — кратны 32 (иначе circular-pad артефакты). |
| - `SCAILAutoExtend`: чанки 81 кадр, overlap 5, color transfer Reinhard LAB |
| между чанками (борьба с дрифтом цвета). |
| - Маски в SCAIL-2 — цветные: animation mode = pose-маска на ЧЁРНОМ фоне, |
| ref-маска на БЕЛОМ; replacement — наоборот. 28-канальный поток. |
| - Ссылки на демо-видео в README WanAnimatePlus протухли (user-attachments). |
| - Загрузка на HF: `hf upload AiArtLab/video . --repo-type model` (auth: recoilme). |
|
|
| ## Текущие артефакты |
|
|
| - `dealer_test2.mp4` — animation без масок (центр, иначе хорошо) |
| - `dealer_test3.mp4` — animation с масками (центр, маска не влияет на позицию) |
| - `dealer_repl.mp4` — replacement mode (мусор, см. выше) |
| - `mask_cache/` — 2 набора масок (animation + replacement варианты) |
| - `dealer/` — 4 фото дилера (портрет 3024×4032, EXIF ок) |
| - `drive.mp4` — тестовое видео (женщина в красном корсете, зелёный экран, |
| 81 кадр, 1280×720, 16 fps, персона слева) |
|
|