Nodes/ikki Pack/Ultralytics Detector ☃️
ComfyUI Node

Ultralytics Detector ☃️

The YOLO detector that turns detections into a detailer's SEGS

By RedsAnalysis·Created 2 months ago·Updated about a month ago· 0
Ultralytics Detector ☃️
  • image
  • segs
  • combined_mask
  • bbox_mask
model_name
threshold0.50
dilation10
crop_factor1.5
drop_size16
labelsall
deviceauto

Every automatic detailer starts with a detector: a model that looks at your image and says "there's a face here, a hand there." IkkiUltralyticsDetector is that first step for the Ikki detailer pipeline - it runs a YOLO model from Ultralytics over your image and emits SEGS, the same segment container Impact Pack made standard, so the rest of the pipeline can crop and re-render each detection.

The KB's detailing essay has the best one-line summary of the whole genre: "all detailers are doing is zooming in on a mask, upscaling the image, and then diffusing the upscaled image to add details. You can get that mask in SO many ways." This node is one of those ways - specifically the YOLO path, which is what most people use for faces and hands because purpose-trained face_yolov8-style weights are fast, mature, and do exactly that job.

What it needs that other nodes don't

Two things, and both are common failure points:

  1. The ultralytics Python package. It's imported optionally, and the node raises a clear RuntimeError ("Run 'pip install ultralytics'") if it's missing. The pack's pyproject.toml declares zero dependencies, so nothing installs it for you:
    pip install ultralytics
  2. A model file. The node auto-creates ComfyUI/models/ultralytics - drop a .pt YOLO weight in there and it appears in the model_name dropdown. Until you do, the dropdown literally reads NO_MODELS_FOUND. Grab the usual suspects: face_yolov8n.pt, face_yolov8s.pt, hand_yolov8n.pt, or person_yolov8n-seg.pt - a segmentation model gives polygon masks, which produce far less visible seams than bbox rectangles.

Inputs that matter

  • image - the full image to scan.
  • threshold (0.5) - confidence cutoff. Lower to 0.3 if faces keep getting missed; raise if you're drowning in false positives.
  • dilation (10) - expand each detected mask. Positive grows it, negative shrinks.
  • crop_factor (1.5) - how much context around each detection gets carried into the crop.
  • drop_size (16) - detections smaller than this (in pixels, per side) are discarded. Raises it to skip tiny junk.
  • labels ("all") - filter to specific classes: face, hand, comma-separated.
  • device (auto/cuda/cpu) - let it pick, unless you're on CPU-only.

Outputs: segs (feed to IkkiDetailerProcessor), plus combined_mask and bbox_mask - full-image masks of all detections, handy for previewing exactly what got found before you spend sampling time on it.

Install

Via ComfyUI Manager (search "ikki") or:

cd ComfyUI/custom_nodes
git clone https://github.com/RedsAnalysis/comfyui-ikki-pack
# restart ComfyUI
pip install ultralytics

The part you should actually care about

The Ultralytics path is AGPL-3.0 - it reaches the weights and runtime, not just the code - and it has a genuinely ugly history: a compromised Ultralytics release in December 2024 shipped a cryptominer that reached ComfyUI users through Impact Pack, which the KB's detailing essay and the Impact Pack panel both document. That doesn't make this node malware - it makes it a supply-chain surface. Practical mitigations: install ultralytics and pin it, don't auto-update it blindly, and be careful about which .pt model files you download and from whom, because arbitrary weights are another way in. For face-finding specifically, MediaPipe (Apache-2.0) is the license-clean alternative if you care.

Also worth knowing: this pack is brand new (v2.1.0, minimal docs - the README doesn't even mention the detailer pipeline). The node itself is well-behaved and Impact-compatible in structure, but you're adopting a young pipeline, so smoke-test it before trusting it on a big batch.

CategoryIkki/Detailer Pipeline

Inputs (8)

NameTypeDefaultDescription
imageIMAGE
model_nameCOMBO1 options: NO_MODELS_FOUND
thresholdFLOAT0.500–1
dilationINT10-512–512
crop_factorFLOAT1.51–10
drop_sizeINT161–4096
labelsSTRINGall
deviceCOMBOauto3 options: auto, cuda, cpu

Outputs (3)

NameTypeDescription
segsSEGS
combined_maskMASK
bbox_maskMASK