Tune a cull profile¶
Change a threshold, then re-cull. This makes krites harsher on soft focus for every shoot that hasn't overridden it:
The re-cull takes seconds, not minutes, because it re-judges measurements krites already has. Compare the verdicts, adjust, and repeat until they match your eye. In the studio the same thresholds are sliders; see Configure krites from the studio.
What a profile controls¶
krites' judgement (how harshly it treats blur, exposure, closed eyes and
near-duplicates) lives in a cull profile, not in the code. You start on the
built-in wedding-default, and tuning it to your taste is expected.
For each signal a profile sets:
- hard gates, which force a reject (badly out of focus, blown highlights);
- soft floors, which demote an otherwise good frame to maybe (slightly soft focus, a likely blink);
- dedup distance, which sets how alike two frames must be to count as one burst.
The profile is read from config and hot-reloaded, so a change takes effect on the next cull.
You won't find wedding-default in ~/.krites/config.yaml. The config holds
only the thresholds you've changed, and every other one takes its built-in value,
so a fresh config has none. The
configuration reference lists each
threshold with its built-in default, and the studio's Settings panel shows
the values in effect.
Set a default, or override one shoot¶
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.
krites config set changes the global default. A per-shoot override is the same
key in that shoot's own <shoot>/.krites/config.yaml; remove it there to inherit
the global again. In the studio, the Settings gear edits the global default,
and a shoot's ⚙ Profile panel has an override checkbox beside each control.
Verdicts are records, never changes to your photos, so you can re-cull with a revised profile as often as you like and keep the one that matches your eye.
Where the thresholds are listed¶
Every threshold, with its type and default, is in the configuration reference. The eye, smile and facing thresholds that the face provider feeds are in the face/eye section.
Why re-culling after a change is quick¶
Changing a threshold doesn't re-measure anything. The measurements (sharpness,
exposure, perceptual hashes, face signals) are cached in .krites/analysis.yaml,
and re-culling re-derives the verdicts from them. On a four-thousand-frame shoot
that's 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 checks the
name you give against the shoot's profile rather than choosing one, so passing a
different name fails:
Keeping several named rulesets and switching between them isn't supported today.
aesthetic_floor does nothing. The key is real and the ranking tier exists,
but no aesthetic scorer ships, so setting it won't move a verdict. See
Limitations.
Nothing learns from your tuning. The learning loop that would adapt a profile to your keep and reject history is designed but not started, with no release date. For now you tune by hand, and every decision you make is recorded so that loop will have something to learn from.