Nodes/ECHO · 回响/ECHO Reference Match / 回响·参考追色
ComfyUI Node

ECHO Reference Match / 回响·参考追色

Make a thousand product shots look like one photo shoot — no GPU needed

By x9c4gqtpv4-coder·Created 21 days ago·Updated 10 days ago· 1
ECHO Reference Match / 回响·参考追色
  • source
  • reference
  • source_background_mask
  • reference_background_mask
  • protect_mask
  • corrected
  • background_mask
  • review_report
strength0.85
adjustment_modebackground + person
transform_pathauto
mask_backendheuristic

This is the node for when your images are right, just not consistent. You have ten shots of the same jacket - some on location, some under studio strobes, a few straight out of a generator - and they all look like different products. ECHO Reference Match (displayed as "ECHO Reference Match / 回响·参考追色") takes one reference image and drags the background and the person in your source toward its color and exposure, in a single deterministic pass. No diffusion model, no NVIDIA card, nothing uploaded anywhere. ECHO is a color-consistency engine aimed at e-commerce and fashion SKU work; this node is its ComfyUI front door.

回响 means "echo" - your images echo one visual standard. The author is a solo dev (x9c4gqtpv4-coder); the pack is new with essentially no community footprint yet, so treat it as promising rather than proven.

How it works

Most color-match nodes in ComfyUI do a whole-image Reinhard-style statistics transfer - push the source's mean and variance toward the reference's and call it done (the post-processing folks know the one from spacepxl). ECHO is a step above that, and deliberately conservative:

  1. It builds a color profile from the reference - background statistics measured in OKLab, which tracks human perception of lightness and chroma far better than RGB.
  2. It splits your source into background and person via a heuristic studio-background estimate.
  3. It measures the gap between source and reference regions, then applies a bounded, one-pass color transform. Background is graded toward the reference's background; in the default mode the whole person - skin, hair, clothing - shares one smooth transform so you don't get color blocks at your neckline.

The transform is amplitude-limited to protect highlights, shadows, and neutrals, edges are soft-masked, and protected pixels don't move. It's graded, not regenerated - no re-roll lottery, no texture rewriting.

The inputs that matter

Only source and reference (both IMAGE) are strictly required. Of the rest, beginners actually set two or three:

  • strength (default 0.85): blends from identity at 0 up to the full bounded candidate at 1. Start at 0.5 if you're nervous.
  • adjustment_mode: background + person (default) or background only, which leaves every non-background pixel byte-identical.
  • transform_path: leave on auto - it compares a conservative global fit against a spatial "surface" fit and picks whichever scores better. global forces the safest path.

mask_backend is heuristic by default: deterministic, cross-platform, pure Python. auto only helps if you've separately built the optional macOS Vision helper - otherwise it just falls back to heuristic.

Three optional MASK inputs do the heavy lifting on hard images: source_background_mask and reference_background_mask let you supply reviewed background masks (white = background), and protect_mask keeps white pixels exactly as they are - that's your book, logo, or garment tag shield.

What comes out

Three outputs. corrected (IMAGE) is the candidate - wire it to Save Image. background_mask (MASK) shows you what ECHO decided was background, worth previewing once. review_report (STRING) is JSON describing what the engine did. Note the philosophy: every result is flagged "status": "review" and "approved": false. The node never auto-approves; sign-off stays a human decision.

Install

The lightweight kind. Clone it, install two pure-Python deps with ComfyUI's own Python, restart:

cd ComfyUI/custom_nodes
git clone https://github.com/x9c4gqtpv4-coder/ECHO.git
/path/to/comfyui/python -m pip install -r ECHO/requirements.txt

That's numpy and Pillow - no model downloads, no torch install needed (ComfyUI already ships torch; the node only uses it to hand tensors back). ComfyUI Manager also finds it if you search "ECHO". One catch: the engine needs Python ≥ 3.11 and < 3.13, so an older portable ComfyUI on 3.10 will refuse the requirements.

Common issues

  • Clipped/weird results on cluttered scenes. The heuristic assumes a fairly clean product background. For complex shots, connect reviewed background masks - the README is blunt that you shouldn't lean on lightweight guessing there.
  • "Mask geometry does not match image geometry." Masks must be the exact pixel size of their image. ECHO deliberately refuses to silently resize a mask because that would shift protection edges - resize it yourself first.
  • Repeated runs feel slow? The reference profile is cached in memory (up to eight, keyed by reference pixels), so a batch against one reference only analyzes it once.

Honest boundary: this fixes relative consistency - getting everything onto one look - not recovering absolute physical colors from a casual sRGB shot. If a garment color must be exact, you still want a physical color card or a human-approved anchor, not any color-match node.

CategoryECHO / 回响

Inputs (9)

NameTypeDefaultDescription
sourceIMAGE
referenceIMAGE
strengthFLOAT0.850–1
adjustment_modeCOMBObackground + person2 options: background + person, background only
transform_pathCOMBOauto3 options: auto, global, surface
mask_backendCOMBOheuristic2 options: heuristic, auto
source_background_maskoptMASK
reference_background_maskoptMASK
protect_maskoptMASK

Outputs (3)

NameTypeDescription
correctedIMAGE
background_maskMASK
review_reportSTRING