Tune a cull profile¶
krites' judgement — how harshly it flags blur, exposure, closed eyes and
near-duplicates — lives in a cull profile, not in the code. krites init seeds
a wedding-default profile as a starting point; tuning it to your taste is
expected.
What a profile controls¶
A profile sets, per signal:
- hard gates — conditions that force a reject (e.g. badly out of focus);
- soft penalties — weighted marks that pull a frame toward maybe;
- dedup aggressiveness — how tightly near-duplicate bursts are grouped.
The judgement is config-driven and hot-reloaded, so edits take effect on the next cull.
Global default, per-shoot override¶
The profile cascades: a global default every shoot inherits, and optional per-shoot overrides on top. Tune the global once and every un-customised shoot follows; override a threshold in one shoot without disturbing the rest.
The easiest way is the studio — the Settings gear edits the global default, and a shoot's Cull profile panel toggles per-shoot overrides with a checkbox per control. See Configure krites from the studio.
Adjust and re-cull (CLI)¶
The thresholds are cull.profile.* config keys. Set a global default:
A per-shoot override is the same key in that shoot's own
<shoot>/.krites/config.yaml; unset it to re-inherit the global. Because verdicts
are non-destructive records, you can re-cull with a revised profile as often as you
like without touching originals — compare the outcomes and keep the profile that
matches your eye.
Where the knobs live¶
Every threshold, with its type and default, is in the configuration reference. The eye/smile/facing thresholds the face provider feeds are in the face/eye section.
Why re-culling after a tweak is instant¶
Changing a threshold does not re-measure anything. The measurements — sharpness,
exposure, perceptual hashes, face signals — are cached in
.krites/analysis.yaml, and re-culling re-derives verdicts from them. On a
four-thousand-frame shoot that is the difference between minutes and seconds.
A handful of settings do invalidate the cache, min_face_box among them. Which
ones, and why, is in
The analysis cache.
What you cannot do¶
There is only one profile. wedding-default is it. --profile is an
assertion checked against the shoot's resolved profile, not a selector — passing
a different name fails with unknown profile "x" — this shoot uses
"wedding-default". Keeping several named rulesets and switching between them is
not supported today.
aesthetic_floor does nothing. The key is real and the ranking tier exists,
but no aesthetic scorer backend ships, so setting it will not move a verdict. See
Limitations.
Nothing learns from your tuning. The learning loop that would adapt a profile to your keep/reject history is still ahead, with no release date. For now, profiles are tuned by hand — and every decision you make is being banked for it.