Skip to main content

Choosing a model

Frigate+ offers several model types, sizes, and input resolutions. This page compares their accuracy and speed to help you decide which one to request. Make sure the model type you choose is supported by your detector, as shown in the supported detector types table.

Recommendations​

  • YOLOv9-s at 320 is the balanced default if your hardware runs it well. It detects about twice as many objects as MobileDet, and 15 more per 100 than YOLO-NAS-s at 320, at the same false alarm rate.
  • Moving up a size at 320 helps more than moving to 640 for most cameras. YOLOv9-m at 320 detects more objects than YOLOv9-s at 640 (60% vs 59%) with lower GPU latency.
  • 640 input is rarely needed. Frigate doesn't run detection on the full frame. It crops a region around motion and resizes it to the model's input size, so with a 320 model it zooms in on a smaller area of the frame and small objects are no longer small to the model. 640 models detect small objects better within a large region, but not compared to a 320 model looking at a smaller, zoomed-in region. See object size and input resolution for details.
  • YOLOv9-c gains little over YOLOv9-m: about 2 points of detection rate at 320 and none at 640, with more latency. On CPU it takes 1.4 to 1.7 times as long as YOLOv9-m.
  • YOLOv9-t at 640 is no better than YOLOv9-s at 320 (55% vs 54%) and is slower on both GPU and CPU.
  • YOLO-NAS-s and MobileDet are only worth considering on hardware that can't run YOLOv9. Everywhere else, a YOLOv9 model of similar speed is more accurate.

Results on your own hardware and cameras will differ, so test with the base models before requesting a model.

Thresholds​

Each model's threshold for 95% precision is listed in the accuracy table. YOLOv9 models reach it at about 0.70 to 0.77. MobileDet (0.82) and YOLO-NAS-s (0.86 to 0.89) need higher thresholds, so with Frigate's default threshold they produce more false positives than the YOLOv9 models. See object filters for how to adjust thresholds.

How these were measured​

The numbers on this page are for the 2026.3 base models.

  • Images: 10,947 images from the Frigate+ validation set, from real Frigate cameras. Images that share a source with training images are excluded.
  • Processing: every model runs through Frigate's own detector code and post-processing (Frigate 0.18.2), exactly as deployed.
  • Labels: results cover the 12 most common labels: car, person, waste_bin, license_plate, dog, cat, face, bicycle, bird, deer, bbq_grill, and package.
  • Single frames: each image is scored on its own. In Frigate, an object has to score well across several frames before it becomes a tracked object, so brief one-frame mistakes rarely reach you. Use these numbers to compare models with each other, not as event rates.

Detection rate at 95% precision is the main accuracy number. It's the share of real objects a model detects when its threshold is set so that 95% of its detections are correct (about 1 false detection in 20). Every model is held to the same false alarm rate, so the detection rates compare directly. The threshold that achieves this is shown too, because it differs between models.

Accuracy​

ModelInputDetection rate at 95% precisionMissed objects per 100Threshold for 95% precisionAP50
MobileDet32024%760.820.47
YOLO-NAS-s32039%610.860.44
YOLO-NAS-s64048%520.890.55
YOLOv9-t32045%550.690.44
YOLOv9-t64055%450.700.54
YOLOv9-s32054%460.740.54
YOLOv9-s64059%410.750.61
YOLOv9-m32060%400.750.58
YOLOv9-m64064%360.770.64
YOLOv9-c32062%380.750.60
YOLOv9-c64063%370.770.64

AP50 is the standard COCO metric (IoU 0.5) averaged over the 12 labels. It summarizes accuracy across every threshold, while the detection rate describes one realistic setting.

note

These AP50 numbers can't be compared to the COCO results published for YOLOv9, YOLO-NAS, and other models. Those results are measured on the COCO dataset, while these are measured on images from security cameras, with a different set of labels (several, such as license_plate, face, and package, aren't in COCO) and through Frigate's own post-processing. Published COCO results also usually report mAP averaged over IoU 0.5 to 0.95 rather than AP50. Use these numbers only to compare Frigate+ models with each other.

By object size​

AP50 by object size:

ModelInputSmallMediumLarge
MobileDet3200.230.620.71
YOLO-NAS-s3200.230.570.60
YOLO-NAS-s6400.420.630.58
YOLOv9-t3200.220.600.67
YOLOv9-t6400.420.630.57
YOLOv9-s3200.350.700.73
YOLOv9-s6400.510.690.69
YOLOv9-m3200.400.730.74
YOLOv9-m6400.540.710.72
YOLOv9-c3200.440.730.77
YOLOv9-c6400.540.710.74

In these single-image results, 640 input mostly helps small objects, such as distant people, license plates, and faces, and doesn't help medium and large objects. For example, license plate AP50 rises from 0.32 to 0.55 for YOLOv9-s. These numbers overstate the benefit of 640 in Frigate, as explained below.

Object size and input resolution​

Frigate doesn't send the full camera frame to the model. It crops a region around motion or a tracked object and resizes that region to the model's input size. With a 320 model the regions are smaller, so Frigate effectively zooms in on that part of the frame, and an object that is small in the full frame is no longer small to the model. A 640 model detects small objects better than a 320 model when both look at the same large region, but not when compared to a 320 model looking at a smaller, zoomed-in region.

640 input can still help in scenes with large objects in the foreground and small objects in the background at the same time, such as a doorbell camera that sees a person on the porch and another person across the street. The region has to be large enough to fit the nearby person, so the distant person is small within it. Frigate already handles much of this case: when an object is small relative to the region it was detected in, Frigate runs a separate detection on a smaller region around it.

By label​

AP50 by label:

LabelMobileDet 320YOLO-NAS-s 320YOLOv9-t 320YOLOv9-s 320YOLOv9-m 320YOLOv9-c 320YOLO-NAS-s 640YOLOv9-t 640YOLOv9-s 640YOLOv9-m 640YOLOv9-c 640
car0.730.720.700.770.810.820.820.790.830.850.84
person0.650.620.620.720.750.760.710.690.760.780.77
waste_bin0.520.490.490.550.570.580.600.600.620.620.63
license_plate0.310.310.230.320.360.390.550.460.550.600.61
dog0.380.350.390.530.530.570.400.480.530.550.58
cat0.410.370.390.510.570.590.430.460.580.610.62
face0.390.410.230.330.420.450.600.430.570.630.63
bicycle0.460.430.400.510.560.550.540.490.580.620.60
bird0.300.180.330.420.470.500.230.300.390.430.38
deer0.510.500.510.620.690.710.590.560.600.700.67
bbq_grill0.680.600.690.770.780.810.740.740.810.830.84
package0.350.280.340.460.470.490.390.430.500.480.50

Speed​

Average time per detection in milliseconds, measured through Frigate's detector code and including post-processing. Lower is better. A blank cell means that combination was not measured.

ModelInputNVIDIA RTX 5060 Ti (ONNX, CUDA)Intel i9-13900K (OpenVINO, CPU)Intel i9-13900K (ONNX, CPU)Intel i9-13900K (TFLite, CPU)
MobileDet3208.4
YOLO-NAS-s3204.98.48.9
YOLO-NAS-s6407.129.628.6
YOLOv9-t3202.94.36.5
YOLOv9-t6405.012.917.0
YOLOv9-s3203.99.311.5
YOLOv9-s6406.333.132.6
YOLOv9-m3205.223.219.8
YOLOv9-m64010.188.169.5
YOLOv9-c3205.438.827.5
YOLOv9-c64011.1147.899.5

CPU times vary by about ±15% between runs. Speeds on other hardware, such as Google Coral, Hailo, Intel iGPUs and NPUs, AMD GPUs, and Rockchip NPUs, are not included here. Test the base models on your own hardware to compare speeds.