Skip to content

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:

krites config set cull.profile.soft_sharpness 180
krites cull --shoot ~/Pictures/smith-wedding

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

The eye/smile/facing thresholds the face provider uses are in the configuration reference. The profile and look catalogs, and how they're structured, are described in specs 0001 §6 and 0006.

The Phase-4 learning loop — which adapts profiles to your keep/reject history automatically — is still ahead on the roadmap. For now, profiles are tuned by hand.