Superside Florence-2 Smart Region Selector
Ask Florence-2 to find the face, and get a mask plus crop coordinates back
- image
- mask
- mask_image
- info
- center_x
- center_y
- crop_width
- crop_height
This is the automation half of the region-detail loop: instead of hand-painting a mask for "just the face," you tell this node what you want and it finds it, segments it, and hands you a mask plus the exact crop coordinates. It runs Florence-2's grounding/segmentation on fal, and it's built to feed the pack's Crop By Region + Stitch Region pair - you select the face here, crop just the face, render it at a resolution the model can actually resolve, and paste it back. The KB calls this kind of thing the "All detailers are doing is zooming in on a mask" loop, and this is the detector step of it.
It selects one semantic region at a time from a fixed set - face, upper_body, lower_body, full_body, or object. For object you supply custom_text ("red sneaker", "logo on the sleeve") and Florence-2 grounds that phrase to a region. selection_mode picks whether you want the largest instance (default, when there are several people) or to merge_all of them into one mask. padding_percent (default 8) pads the region out so your downstream crop has context, and return_rect_mask swaps the soft segmentation mask for a hard rectangle if that's what the next step wants.
The outputs are the important part, because they're the shared contract that makes this node interchangeable with the pack's SAM 3 selector:
mask(MASK) - the segmented region, ready for masking/inpainting.mask_image(IMAGE) - the same mask as an image, if you need to inspect it or convert.info(STRING) - JSON of what was selected.center_x,center_y,crop_width,crop_height(INT) - the region's center and size in original-image pixels. These feedCrop By Region's four matching inputs directly.
That last quartet is what makes the whole pipeline coordinate-exact: the crop node returns the precise crop rectangle it used, and the stitch node pastes the processed result back at the same spot in the full-res original. No guessing, no resizing the original.
The model itself is the same Florence-2 the caption node uses, but here it's doing grounding - matching text to a location - which is its genuinely strong task, not its weak one. One honest tradeoff to carry in: this is a single-region selector with a fixed vocabulary of five options. If you need "glasses frame without the lens" or "the third car's headlight," that's the pack's SAM 3 node, which has 19 presets and takes a box prompt to focus a sub-part. Florence's vocabulary is the five built-ins plus whatever you type into custom_text, and for the body-region basics it's fast and reliable.
It's an API call (fal credits, image leaves your machine - paste your key into api_key, blank falls back to FAL_KEY). The alternative is a local selector: the KB documents plenty of open detectors, but those need their own installs; this one is zero-setup and sits right next to the rest of the pack.
Install - ComfyUI Manager (search "comfyui-superside-nodes") or:
cd ComfyUI/custom_nodes
git clone https://github.com/Superside/comfyui-superside-nodes
pip install -r requirements.txt
Restart ComfyUI, look under Superside. No model downloads.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image | IMAGE | — | |
| region_type | COMBO | face | 5 options: face, upper_body, lower_body, full_body, object |
| api_key | STRING | — | |
| custom_textopt | STRING | — | |
| selection_modeopt | COMBO | largest | 2 options: largest, merge_all |
| padding_percentopt | FLOAT | 8.00–100 | — |
| return_rect_maskopt | BOOLEAN | false | — |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| mask | MASK | — |
| mask_image | IMAGE | — |
| info | STRING | — |
| center_x | INT | — |
| center_y | INT | — |
| crop_width | INT | — |
| crop_height | INT | — |