Add seg_force_fg: saturated seg confidence overrides the hue-split demotion
New rule 4 in fuse_trimap_directional: a chroma-unknown pixel whose seg confidence is >= trimap.seg_force_fg (default 0.98) stays sure-FG even when background-hued. Bright skin on a warm same-hue-family background (peach, pale yellow) was being demoted to unknown by the hue split and then lost -- either ViTMatte itself misfires there (raw 0.07-0.13 measured) or the chroma suppressor does (raw 0.89 halved to 0.45 via the RGB-proximity confidence path). The segmenter meanwhile rates those pixels a saturated 1.0; that semantic certainty now outranks same-hue colour suspicion. Safety: chroma_unknown excludes sure background, so a real flat backdrop can never be forced foreground; the silhouette band still re-opens the boundary; the cross-check veto still overrides trimap-FG. Set > 1.0 to disable. Verified (GPU bf16): yellow-bg frame face 0.84->1.00, peach-bg thigh 0.87->1.00 (residual softness only where chroma is near-sure-bg, by design). Pastel-blue TestImage3 regression: 0.047% of pixels differ with cross-check on, 0.058% without it (hair-gap suppression path), both visually negligible. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -46,6 +46,12 @@ trimap:
|
||||
mode: directional
|
||||
seg_low: 0.15
|
||||
bg_hue_proj_min: 4.0
|
||||
# Semantic override (directional mode): chroma-unknown pixels with seg confidence
|
||||
# at/above this stay sure-FG even when background-hued — rescues bright skin on a
|
||||
# warm (same-hue-family) background that the hue split would otherwise hand to
|
||||
# ViTMatte/suppression, which misfire exactly there. Never overrides chroma
|
||||
# sure-background. Set > 1.0 to disable.
|
||||
seg_force_fg: 0.98
|
||||
|
||||
alpha_post:
|
||||
chroma_suppress: true
|
||||
|
||||
Reference in New Issue
Block a user