docs(bench): v0.15 — deband radius premise-check validated positive (multi-scale deband headroom)#40
Merged
Conversation
…multi-scale deband has measured headroom) The first positive premise-check in the bench series after the v0.11-v0.13 encoder-RC negatives. Two parts: the metric-tooling unblock that enabled it, and the result. Metric unblock: the standalone vmaf cambi 'hang' that had blocked every quality check was the GPU-accelerated fork's dispatcher grabbing CUDA/Vulkan (forcing --backend cpu makes it deterministic) plus the known write-JSON-then-teardown-sleep (read the partial under timeout, as the harness --vmaf-timeout already does). cambi itself was never broken. Result: on a wide (~107px) low-amplitude gradient with dither off (isolating the spatial averaging), CAMBI falls monotonically with range (7.84 -> 6.21 -> 5.14 -> 4.53 -> 4.30 at range 8/15/24/31) and is still descending at the range=31 cap. The spatial pass leaves real residual on bands wider than a single <=31 radius can span; the default range=15 under-debands them. Premise supported. Ties to v0.1.0: with dither on, CAMBI floors regardless of radius, but the 8-bit encoder quantizes that dither away and re-bands, so the durable banding removal is the spatial averaging -- which this shows is radius-limited. Multi-scale spatial deband (a coarse downsampled pass under the existing detail mask) is the durable lever. Status: validated-positive, build pending. The build needs detail-bearing validation content (bands + texture, scored post-encode CAMBI for the gain + SSIM/SSIMULACRA2 for no over-smoothing) -- the failure mode the synthetic gradient cannot show. Converts the gains-hunt #1 quality candidate from corpus-blocked/unknown to premise-supported/ready-to-build. Docs-only (bench-results record); no code, ABI, or surface change. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
bench-results.mdv0.15 — the deband radius premise-check, validated positive. The gains-hunt's #1 quality candidate (multi-scale deband) moves from corpus-blocked / unknown to premise-supported / ready to build. Docs-only; no code, ABI, or surface change.The metric unblock (reusable)
Every quality-gain check this session had been blocked by the standalone
vmaf --feature cambiappearing to hang. Root cause was mundane, not a cambi failure:--backend cpumakes it deterministic and fast.--vmaf-timeoutalready exploits (v0.14 Open/next §3).timeout N … -o out.json --json+ read the partial returns scores in well under a second of compute.(The recurring "exit 1, no output" was a
pkill -9prelude being swallowed by the unsafe-bash hook — dropped.) This CPU-backend pattern unblocks all future quality work.Result
Synthetic wide low-amplitude luma gradient (16→24 over 854 px ⇒ ~107-px bands, wider than the 2·31 = 62-px max reach), 480p, dither off (
grainy=0 dither=none) to isolate the spatial averaging from the grain:rangeCAMBI falls monotonically and is still descending at the
range=31cap (24→31 still buys −5 %). The spatial pass leaves CAMBI ≈ 4.3 of real residual on bands wider than it can reach; the defaultrange=15under-debands them (5.14 vs 4.30 achievable). Premise supported.Why it matters through the encoder (ties to v0.1.0)
With the shipping default dither on, CAMBI floors to ≈ 3e-6 at every radius — the grain breaks the contour the metric keys on. But v0.1.0 established that an 8-bit encoder quantizes that dither away and re-bands, so the dither's banding removal never reaches the decoded output. What survives is the spatial averaging (it changes the actual luma plateaus, not added noise) — and this shows that durable pass is radius-limited. So multi-scale spatial deband (a coarse downsampled pass to span wide bands cheaply, blended under the existing detail mask) is the durable lever.
Status: validated-positive, build pending
The build is deliberately not in this PR. Proving it does not over-smooth needs detail-bearing content (wide bands and texture/edges), scored post-encode (or dither-off) CAMBI for the gain plus an SSIM/SSIMULACRA2 detail-preservation check — the failure mode the synthetic gradient cannot show. That validation corpus is the tracked blocker. This PR records the measurement and tees up the build behind a detail-preservation gate.
Deliverables
Docs-only measurement record (bench-results v0.15). Per the per-PR rule, a pure bench-results entry adds no surface — no ADR/changelog/patch (matches v0.12–v0.14 docs PRs). The follow-up build will carry its own ADR + docs + changelog + shader-lockstep + patch.
🤖 Generated with Claude Code