-
Recognition now falls back to the recording when the snapshot has no face. This is
the single biggest limit on recognition — bigger than the gallery, the threshold or
match_top_k, all of which took far more effort to tune.Frigate picks its snapshot by highest person score, which is not the same as "a face
is visible" — frequently it is the moment someone turns away. Over seven days of real
events only 21% of snapshots held a usable face: 68% had no detectable face at all
and 11% one belowmin_face_px.Re-checking twelve of the failed events against the clip found a good face in nine
(det 0.68–0.87).How much this gains depends on where a camera points, so measure yours: at the front
door, at head height, the recording rescued 4 of 4 events; on a high-mounted indoor
camera and a zoomed garden view it rescued none — there the clip holds no face either.Three plausible explanations were measured and ruled out: night (IR yielded 9 usable
faces out of 41 events, colour 4 out of 22 — no disadvantage), distance (not one crop
was narrower than 120px), and detection resolution
(det_size1280 gave results identical to 640 at twice the cost). What remains is the
viewing angle. -
Runs only when the snapshot found nothing, once per event, on its own thread with a
short queue — live recognition and presence updates are never delayed, and a burst of
events skips scans rather than building a backlog. New option Search the recording
(clip_fallback, default on); turn it off on tight hardware. -
The frame is selected by detection quality, deliberately not by gallery similarity:
picking whichever of twelve frames looks most like someone known would flatter the
numbers and invite misassignments. Identity is decided afterwards, as on the snapshot
path. -
Faces found this way skip the
hires_enrollpass — they already come from the
recording, so re-scanning the same clip would only cost time.