What Frigate’s Face Recognition Actually Is
Frigate added face recognition as a first-class built-in feature. Everything runs locally on your home server — no cloud API, no account with a face recognition service, no images leaving your network. Under the hood it uses InsightFace, an open-source face analysis library, to detect and match faces in your camera feeds against a database you build from your own detection history.
The hardware requirement is modest. A Coral TPU speeds things up significantly if you already have one. Without one, it runs on CPU and is still perfectly usable — you’ll add a few hundred milliseconds of processing per detection, which doesn’t affect notification delivery in any meaningful way. I run it on an Intel NUC with no Coral and the latency is acceptable for everything except live detection where speed matters.
Enabling It in config.yaml
In your Frigate config.yaml, enabling face recognition takes about three lines. You set face_recognition: enabled: true, optionally configure a minimum confidence score, and Frigate handles the rest. The Frigate documentation has the current exact syntax since it can change between versions. The feature is well documented and the config section is short — it’s one of the simpler things to add to any existing setup.
Once it’s running, Frigate analyzes the face crop from every person detection and compares it to your known faces database. When it finds a match above your confidence threshold, the person event gets a sub-label — “Loris,” “Sarah,” or whatever name you assigned during training. Events without a match get flagged as “unknown,” which is useful on its own.
Training Your Faces (Faster Than You Think)
There’s no offline batch training step. You train faces directly inside Frigate’s web UI from your existing detection history. Open a person event, click into the face crop, give it a name, and save. Frigate computes an embedding from that frame and adds it to the local face database. Repeat six to ten times per person, from different angles and lighting conditions, and the system becomes noticeably more reliable.
The one thing I’d recommend: train specifically from IR nighttime clips as well as daytime clips. Face recognition works on embeddings — numerical representations of facial geometry. IR footage looks meaningfully different from visible-spectrum footage, and if you only train on daylight frames, nighttime recognition suffers. I spend an extra few minutes labeling a handful of nighttime detections per person and it makes a real difference.
After about 20 minutes of labeling my existing detection history, Frigate was correctly identifying me roughly 75% of the time at my front door. Three months in, with more training samples accumulated, it’s around 90% in good light and 70% in poor IR conditions. Strangers get labeled “unknown person” rather than silently dropped, which is exactly the right behavior for a security system.
What the Detection Events Look Like
In Frigate’s web UI, a matched face shows up as a sub-label on the person detection. Instead of just “person,” you see “person — Loris” with the face crop and confidence score. The event timeline shows the name alongside the detection type. Recordings are tagged the same way.
In practice this changes how I review detection history. I can scroll through a full day of events and immediately see which were family members versus unknown visitors without opening a single clip. Before face recognition, every person detection looked identical in the list. Now the list is instantly readable — I see who it was, not just that someone was there.
How Lumen Surfaces This on iPhone
This is where the whole thing clicks into place. Lumen reads Frigate’s detection events including their sub-labels, so when Frigate flags a detection as “Loris,” Lumen’s push notification arrives saying “Loris at front door” instead of “person detected at front door.” Same delivery time, same snapshot thumbnail — just information that means something.
The triage this creates is immediate. A notification that says “Sarah at front door” when I’m at work means I can lower my wrist and carry on. A notification that says “unknown person at front door” at 11pm means I open the app immediately and look at the clip. I went from treating all person alerts as roughly equivalent events to having a built-in priority filter baked into the notification itself.
The Lumen event list carries the same sub-labels. Scrolling through the day’s detections on my iPhone, I see face names in line with each person event — no tapping into individual clips needed unless something looks off. The combination of named notifications and a labeled event list has made me much more consistent about actually reviewing detections instead of dismissing them en masse.
Try Lumen — the native Frigate NVR companion for iPhone, Mac & Apple Watch
Live streams, AI detection events with face sub-labels, multi-cam playback, geofencing, and Apple Watch notifications. Free to download.
Download FreeThree Things Worth Knowing Before You Set It Up
- Camera angle matters more than you’d expect. A camera looking steeply downward captures the top of heads, not faces. For a camera whose primary job is face recognition, near eye-level or a shallow angle works much better. My existing doorbell camera angle was decent; a camera I’d mounted for a wide overhead view of the driveway is essentially useless for face recognition — it just labels everything “unknown” because it almost never captures a face properly.
- Confidence thresholds are worth tuning. The default minimum score is conservative, which means fewer false positives but also more events labeled “unknown” for people you’ve trained. I found that lowering the threshold slightly for cameras I know have good face coverage improved detection rates without adding many false matches. There’s a tradeoff and it’s camera-specific.
- The face database is local and private. It lives on your Frigate server. Lumen doesn’t store face images. Frigate doesn’t send embeddings anywhere. If you shut down the server, it’s gone. This is the correct behavior for a home security system, but worth knowing before you invest time training faces on a server you’re planning to replace.
The Change That Stayed
I’ve had face recognition running for three months and it’s become one of the parts of my Frigate setup I’d miss most if it broke. Not because the accuracy is perfect — it isn’t, especially at night — but because even 80% correct identification is genuinely useful. The 80% of notifications that are correctly named allow me to make a fast, confident decision. The 20% labeled “unknown” when it’s actually me coming home are a mild annoyance, not a problem.
The thing that changed most wasn’t the accuracy number. It was how I relate to the alerts. “Person detected” is noise with a thumbnail. “Loris detected” is signal. The system went from telling me something happened to telling me what happened. That difference in information quality is what makes a security camera system feel like it’s actually doing something useful, rather than just generating data you need to interpret.