EPS Technical Manual
13 / 64
Файлы
13
PART I · WORKFLOW ENGINEERING FOR COMFYUI

Resolution, Coordinate Space & Batch Semantics — скрытая геометрия графа

Большая часть труднообъяснимых ошибок в production ComfyUI возникает не из-за модели, а из-за несовпадения размеров, coordinate space или batch cardinality. Этот раздел учит проверять геометрию данных до запуска тяжёлых генеративных стадий.

CONFIRMEDРаздел опирается на реальные size/batch contracts Hansen и на подтверждённый тип ошибки Florence2 → SAM2, где cardinality bbox и image batch расходилась.
01 · THREE CONTRACTS

Перед соединением веток нужно проверить размер, координаты и cardinality

02 · DIMENSIONS

Одинаковый визуальный кадр может существовать в нескольких размерах

Base image, latent canvas, detection image, external depth, mask atlas и crop могут иметь разные resolution. Пока данные обрабатываются независимо, это допустимо. Проблема начинается в момент, когда координаты или mask из одного canvas применяются к другому.

Поэтому resize — это не косметическая операция. Он меняет систему координат downstream.

ОбъектЧто проверить
IMAGEwidth × height и aspect ratio
MASKтот же canvas или явный resize
LATENTожидаемый model canvas / divisible constraints
BBOX / pointsв координатах какого image они были вычислены
CROPorigin + width/height относительно исходного canvas
03 · COORDINATE SPACE

BBOX имеет смысл только вместе с изображением, на котором он рассчитан

Bounding box — это не абстрактный прямоугольник. Координаты x/y привязаны к конкретным width/height. Если detection выполнялся после resize, bbox нельзя без преобразования применять к original image другого размера.

То же относится к placement masks, crops и points для segmentation.

04 · MASK SPACE

Маска должна совпадать с тем canvas, которым она управляет

Даже правильная по смыслу маска становится неправильной, если была построена на другом resize/crop. Перед composite/inpaint нужно проверить dimensions и mapping маски на target image.

Для локального crop workflow полезно явно разделять local mask и full-scene mask — это разные contracts.

05 · BATCH

Batch — это количество элементов, а не просто «несколько картинок»

IMAGE может содержать batch N. MASK может содержать другой batch. Detection result может содержать список объектов. Downstream node должен понимать, как эти cardinalities сопоставляются.

Некоторые ноды broadcasting поддерживают, другие ожидают строгую пару 1:1. Нельзя предполагать поведение без проверки конкретной node implementation.

СценарийРиск
1 image + 1 maskБазовый и обычно безопасный
N images + N masksНужно подтвердить порядок соответствия
N images + 1 maskНужна поддержка broadcasting или явное повторение
1 image + N object masksВозможен object batch / combined mask режим
N images + M bboxesОпасно, если node индексирует bbox по image index
06 · REAL FAILURE CASE

Почему segmentation может падать при правильных моделях

В нашем Florence2 → SAM2 тесте Florence уже успешно нашла объекты, но downstream segmentation получила несогласованную cardinality: image batch содержал больше элементов, чем список bbox. Node индексировала bbox по image index и получила выход за границу массива.

Это пример важного принципа: ошибка после AI-model inference не обязательно означает проблему модели. Сначала проверяй data contract.

07 · DEBUG RULE

Сначала доказать single-image route, потом увеличивать batch

Для сложной detection/segmentation ветки правильный benchmark начинается с batch=1. После успешного single-image результата можно отдельно проверять multiple objects и только затем multi-image batch.

08 · RESIZE POLICY

Resize должен иметь владельца и понятную точку в pipeline

Если каждая ветка произвольно resize-ит source, coordinate mapping быстро становится непрозрачным. Лучше иметь явные working canvases и подписывать, какая стадия владеет преобразованием размера.

INFERRED

Engineering rule

Стараться выполнять spatially-coupled операции — image/mask/bbox/composite — на одном named working canvas, либо документировать transform между canvas.

09 · PRACTICE

Практика: составить spatial ledger для одной ветки

Если хотя бы одна строка неизвестна, ветка ещё не готова к надёжной интеграции в Master Workflow.

StageW×HBatchCoordinate owner
InputзаполнитьзаполнитьBASE
ResizeзаполнитьзаполнитьWORKING CANVAS
DetectionзаполнитьзаполнитьDETECTION SPACE
MaskзаполнитьзаполнитьMASK SPACE
CompositeзаполнитьзаполнитьDESTINATION SPACE