DOGMA v36 Four Present Categories
The planner that turns the detection recall up
- plan_preview
- category_1
- sam_prompt_1
- sam_threshold_1
- category_2
- sam_prompt_2
- sam_threshold_2
- category_3
- sam_prompt_3
- sam_threshold_3
- category_4
- sam_prompt_4
- sam_threshold_4
- category_5
- sam_prompt_5
- sam_threshold_5
- category_6
- sam_prompt_6
- sam_threshold_6
What it is
DOGMASectorPlanV36 is the fourth-generation sector planner in the DOGMA pack, and it's the one where the author got greedy about detection recall. Same four-live-slot layout as v35.4, same text-safe normalization pass, but the SAM prompts are rewritten to catch small stuff:
vehicles: car:400,automobile:320,parked car:260,vehicle:220,bus:120,... threshold 0.08
people: person:320,pedestrian:280,human:220,... threshold 0.10
faces: face:180,human face:180 threshold 0.13
Compare v27, which asked for car:80 at threshold 0.13. v36 asks for 400 cars at 0.08. That's a fundamentally different detector behaviour: it will find the car half-occluded behind a pillar, the two-wheeler in shadow, the people far down the street - and it will also find a few things that aren't cars at all.
The node's docstring calls it "stronger SAM recall for small vehicles/people," and that's precisely the problem this whole pack exists to solve. On a 4K wide shot, a pedestrian occupies maybe 40 pixels. A detail-and-inpaint pass over that region is the only way to make them not look like smears, and a conservative detector just doesn't see them.
Why recall is a lever and not a slider
Here's the thing about this pack's mindset: it treats detection recall as something you compensate for later, not something you get exactly right up front. Aggressive prompts hand the downstream nodes a mess - hundreds of overlapping instances - and the crop nodes in the same pipeline are built to absorb exactly that mess, by dilating the union mask, grouping nearby instances into region crops, and enforcing non-overlapping ownership windows so the same semantic pixel is never edited twice.
So the trade is legible: v36 pays more per sector in crop count and compute, and buys back small-object coverage. If you're on a plate where a few vehicles and a couple of pedestrians are the whole job, that's a good trade. If you're doing a portrait or a still life, you're paying for detections you don't need.
"Four present categories"
The display name is a reminder rather than a mechanism - the node doesn't check whether the categories are actually present in your frame. "Present" is a note to the user: feed it the categories that are actually visible in this shot, not a generic list. That's the whole reason the planner exists at all: a local VLM looks at the frame, tells you what's in it, and you paste that answer in. If you hand it a wish list, you'll spawn masks and crops for objects that don't exist, and the local edit pass will be invited to invent them.
Inputs and outputs
planner_text: STRING, multiline, forceInput - no widget, so wire a text node into it. Lines, commas and bullet points all parse; duplicates are dropped; broad scene words (road, sky, wall, background) and any text/sign category are discarded to __none__.
Outputs are the standard nineteen. plan_preview prints the parser's decision per slot - read it, because it is the only feedback you get. Slots 2–5 emit a live category_N (normalized name), sam_prompt_N (the class:count prompt), and sam_threshold_N (the float). Slot 1 and slot 6 stay empty.
Wire sam_prompt_N and sam_threshold_N into your SAM-style detector, and category_N into whatever picks per-category settings downstream.
Install
ComfyUI Manager → DOGMA Nodes, or:
cd ComfyUI/custom_nodes
git clone https://github.com/axior/ComfyUI-DOGMA-Nodes
Restart, then look under DOGMA/Semantic Detailer in the node search. No dependencies beyond PyTorch and ComfyUI itself, no weights, no API keys. A SAM/GroundingDINO-style detector from another pack is assumed.
Gotchas
- Low thresholds make noise. At 0.08 the detector will occasionally fire on shadows and reflections. That's fine if your crop node is grouping instances - it's not fine if you're wiring the masks straight into a per-instance inpaint loop, where you'll get dozens of tiny crops and an enormous render time.
- Text is still refused. Signs, billboards, posters, logos, license plates - all normalized away by the inherited text-safe rule. Generated lettering is not worth the risk in this pack's view, and it's a defensible call.
- Counts are not guarantees.
car:400isn't "find 400 cars," it's a cap on how many detections that class may contribute. It's a budget line. - There is no tutorial for any of this. Zero reddit threads name the pack, and the README skips the semantic detailer entirely. The docstrings and the prompts themselves are the documentation.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| planner_text | STRING | — |
Outputs (19)
| Name | Type | Description |
|---|---|---|
| plan_preview | STRING | — |
| category_1 | STRING | — |
| sam_prompt_1 | STRING | — |
| sam_threshold_1 | FLOAT | — |
| category_2 | STRING | — |
| sam_prompt_2 | STRING | — |
| sam_threshold_2 | FLOAT | — |
| category_3 | STRING | — |
| sam_prompt_3 | STRING | — |
| sam_threshold_3 | FLOAT | — |
| category_4 | STRING | — |
| sam_prompt_4 | STRING | — |
| sam_threshold_4 | FLOAT | — |
| category_5 | STRING | — |
| sam_prompt_5 | STRING | — |
| sam_threshold_5 | FLOAT | — |
| category_6 | STRING | — |
| sam_prompt_6 | STRING | — |
| sam_threshold_6 | FLOAT | — |