| # RUN — как запускать генерацию |
|
|
| ## Быстрый старт |
|
|
| ```bash |
| cd /home/ubuntu/video |
| CUDA_VISIBLE_DEVICES=0 python3 generate.py \ |
| --pose drive.mp4 \ |
| --ref dealer/ \ |
| -o output.mp4 \ |
| --width 832 --height 480 \ |
| --steps 6 --shift 5 \ |
| --lora "lightx2v_I2V_14B_480p_cfg_step_distill_rank64_bf16.safetensors" \ |
| --lora-strength 0.8 \ |
| --fps 16 --mask \ |
| --positive "The person dances and gestures in a studio" \ |
| --negative "" |
| ``` |
|
|
| Время: ~1 мин SAM3-маски (только первый раз, дальше кэш) + ~1 мин загрузка моделей + ~1 мин генерация (81 кадр, 6 шагов). |
|
|
| ## Обязательные параметры (критичные!) |
|
|
| | Параметр | Значение | Почему | |
| |---|---|---| |
| | `--shift` | 5 | Без ModelSamplingSD3 shift — мыльное пятно вместо видео | |
| | `--sampler` | euler (default) | Эталон из workflow автора | |
| | `--scheduler` | simple (default) | Эталон из workflow автора | |
| | `--steps` | 6 (default) | С distill-LoRA хватает; 20 без LoRA — хуже | |
| | `--lora` | lightx2v...rank64 | Distill LoRA, включает cfg=1 + мало шагов | |
| | `--lora-strength` | 0.8 | Как в workflow автора | |
| | `--negative` | "" | У автора пустой | |
|
|
| ## Ключевые флаги |
|
|
| - `--ref` — файл ИЛИ директория. Директория = мультиреференс (первый по алфавиту = основной, остальные = доп. виды). Нативная поддержка SCAIL-2, до N изображений. |
| - `--mask` — SAM3-маски (pose_video_mask + reference_image_mask). Кэшируются в `./mask_cache/` по хэшу входных файлов. Повторный прогон — маски из кэша. |
| - `--replacement-mode` — режим замены (маски: белый фон для pose, чёрный для ref). С портретными рефами пока даёт мусор — см. NOTES.md. |
| - `--chunk-length 81 --overlap 5` — для видео >81 кадра идёт auto-extend чанками. |
| - `--max-frames N` — обрезать входное видео. |
| - `--seed` — для воспроизводимости. Внутри чанков seed инкрементируется. |
|
|
| ## Типичные проблемы |
|
|
| - **Мыльное пятно** → забыл `--shift 5` или LoRA. |
| - **OOM при масках** → уже починено (inference_mode в masks.py); если повторится — не грузить ничего до SAM3. |
| - **Персона по центру вместо позиции из видео** → известная проблема animation mode, см. NOTES.md. |
| - GPU: работаем только на `cuda:0`. GPU 2–6 заняты чужой тренировкой (train-babka.py) — НЕ ТРОГАТЬ. |
| |
| ## Файлы проекта |
| |
| - `generate.py` — основной скрипт (загрузка моделей → маски → генерация → mp4) |
| - `masks.py` — SAM3-маски с кэшем (single-person, max_objects=1) |
| - `composite.py` — crop-around-person + composite-back (написан, ещё НЕ подключён) |
| - `mask_cache/` — кэш масок (.pt) |
|
|