Skip to main content

Reducing false positives

Tune your object filters to adjust false positives: min_area, max_area, min_ratio, max_ratio, min_score, threshold.

The min_area and max_area values are compared against the area (number of pixels) from a given detected object. If the area is outside this range, the object will be ignored as a false positive. This allows objects that must be too small or too large to be ignored.

Similarly, the min_ratio and max_ratio values are compared against a given detected object's width/height ratio (in pixels). If the ratio is outside this range, the object will be ignored as a false positive. This allows objects that are proportionally too short-and-wide (higher ratio) or too tall-and-narrow (smaller ratio) to be ignored.

For object filters in your configuration, any single detection below min_score will be ignored as a false positive. threshold is based on the median of the history of scores (padded to 3 values) for a tracked object. Consider the following frames when min_score is set to 0.6 and threshold is set to 0.85:

FrameCurrent ScoreScore HistoryComputed ScoreDetected Object
10.70.0, 0, 0.70.0No
20.550.0, 0.7, 0.00.0No
30.850.7, 0.0, 0.850.7No
40.900.7, 0.85, 0.95, 0.900.875Yes
50.880.7, 0.85, 0.95, 0.90, 0.880.88Yes
60.950.7, 0.85, 0.95, 0.90, 0.88, 0.950.89Yes

In frame 2, the score is below the min_score value, so Frigate ignores it and it becomes a 0.0. The computed score is the median of the score history (padding to at least 3 values), and only when that computed score crosses the threshold is the object marked as a true positive. That happens in frame 4 in the example.