Florence2 → SAM2 → grow → blur
Сегментация находит людей и связанные классы, превращает bbox / points в SAM2-маску, расширяет край и смягчает его перед crop и composite.
Детекция, уточнение и мягкий край
Florence2 ищет не только “person”
Node 550 работает в режиме caption_to_phrase_grounding на размере 1024. В сохранённом списке есть people, human, face, hand, feet, shoe, leg, bag, backpack, pet, dog, cat, gun, animal.
Широкий список помогает захватить детали фигуры и предметы, но может добавить в маску лишний объект рядом с человеком.
Последовательность обработки края
| Node | Операция | Текущее значение / выход |
|---|---|---|
| 550 | Florence2Run | Detection result + data |
| 114 | Florence2toCoordinates | Coordinates для SAM2 |
| 115 | Sam2Segmentation | Mask output |
| 144 | GrowMask | 5 px, tapered = true |
| 146 | MaskBlur+ | 10, auto |
| 420 | easy imageCropFromMask | Crop области человека |
| 500 → 499 | MaskToImage → Separate Mask Components | Отдельные компоненты для inpaint |
Один canvas и individual_objects = ON дают маску всей группы
Runtime-проверка 2026-09-07 подтвердила полный маршрут Florence2 → BBOX → SAM2 на тестовом изображении 1280 × 720 с шестью людьми. Florence2 и SAM2 должны получать один и тот же image: координаты, рассчитанные на другом размере или кадре, приводят к смещённой либо ложной маске.
В установленной версии ComfyUI-segment-anything-2 список BBOX 0,1,2,3,4,5 дал маску всей группы только при individual_objects = ON. При OFF узел возвращал один силуэт, хотя Florence2 показывал рамки всех людей.
Six-person mask
Получены объединённая foreground-маска всей группы и корректная инвертированная protect-mask.
Final scene composite
Тест подтверждает detection/segmentation, но ещё не доказывает прохождение cutout через positioning, selector и final output.
| Проверка | Подтверждённое значение | Симптом ошибки |
|---|---|---|
| Image contract | Florence2 image = SAM2 image = 1280 × 720 | Маска здания, угла или пустой области |
| Florence generation | num_beams 3 · do_sample OFF | Нестабильные рамки и меняющиеся индексы |
| BBOX selection | index 0,1,2,3,4,5 | Выбран только один или не тот объект |
| SAM2 multi-object | individual_objects ON | При OFF остаётся один силуэт |
| Mask cleanup | Threshold 0.30 в тесте | Порог уточняется по краям одежды и конечностей |
Что считается рабочей маской
- Белый силуэт закрывает всю фигуру, включая ноги и мелкие предметы, которые должны остаться.
- Нет больших дыр внутри тела и случайных островков вдали от фигуры.
- Край не обрезает руки, ступни и головной убор.
- Grow 5 и blur 10 не создают заметный ореол на контрастном фоне.
Нет активного InvertMask
Отдельный explicit InvertMask node в этой ветке не найден.
Скрытая инверсия
Внутреннее поведение third-party nodes нельзя установить только по workflow JSON.