Skip to content

Hi... #8

Description

@makhnoband

Hi!

First, thanks for FaceID. I'm using FaceID 0.9.1 with Frigate 0.17 and Home Assistant.

I have a use case where fast recognition is important: when several people approach the entrance together, I use the FaceID MQTT sensor in Home Assistant to identify who entered.

I noticed a case where FaceID recognized some people in the group quickly, but another person was recognized much later.

Looking at the FaceID log, I found what appears to be the reason.

For example, one event showed:

  • snapshot face size: 39 px
  • min_face_px: 48
  • result: face rejected as too small

Later, the recording fallback found a much better frame:

  • face size: 91 px
  • detection confidence: 0.86
  • match: Evgenii (0.502)

So the recording contained a perfectly usable face, but it became available to recognition much later than I need for real-time Home Assistant automations.

My current relevant settings are:

  • min_face_px: 48
  • det_size: 640
  • max_attempts: 6
  • clip_fallback: true
  • poll_interval: 0
  • Frigate detect stream: 1280x720 @ 10 fps
  • separate high-quality main stream is used by Frigate for recording

Would it be possible to add an optional live high-resolution fallback?

The idea would be:

  1. Receive the normal Frigate event/snapshot.
  2. Try the normal fast recognition path.
  3. If a face is detected but rejected because it is smaller than min_face_px (or perhaps if no usable face is found after N attempts), do not wait for the normal recording fallback.
  4. Immediately fetch/grab a higher-resolution frame from the camera/Frigate main stream or current recording.
  5. Run face detection/recognition on that frame.
  6. Continue using the existing behavior if the high-resolution attempt also fails.

Conceptually:

Normal path:

Frigate event
→ snapshot/person crop
→ face >= min_face_px
→ recognition

Proposed fallback:

Frigate event
→ snapshot/person crop
→ face < min_face_px
→ immediately get high-resolution frame
→ detect face
→ recognition

In my case this could potentially turn:

39 px face
→ rejected
→ wait/retries
→ recording fallback
→ 91 px face
→ recognized

into:

39 px face
→ too small
→ live high-res fallback
→ larger face
→ recognized immediately

I would prefer this over simply lowering min_face_px, because recognizing very small faces may reduce recognition reliability. The high-resolution fallback could preserve the current quality threshold while improving recognition latency.

It could perhaps be configurable, for example:

  • live_hires_fallback: true/false
  • live_hires_fallback_after_attempts: 1
  • optional camera allowlist
  • optional cooldown to avoid excessive CPU/network load

Do you think this is technically possible with the current Frigate integration?

If FaceID already has a mechanism that can achieve the same result, I'd also appreciate advice on the recommended configuration.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions