blakeblackshear.frigate/docs/docs/guides/false_positives.md
Nick 045aac8933
Add object filter ratio (#2952)
* Add object ratio config parameters

Issue: #2948

* Add config test for object filter ratios

Issue: #2948

* Address review comments

- Accept `ratio` default
- Rename `bounds` to `box` for consistency
- Add migration for new field

Issue: #2948

* Fix logical errors

- field migrations require default values
- `clipped` referenced the wrong index for region, since it shifted
- missed an inclusion of `ratio` for detections in `process_frames`
- revert naming `o[2]` as `box` since it is out of scope!

This has now been test-run against a video, so I believe the kinks are
worked out.

Issue: #2948

* Update contributing notes for `make`

Issue: #2948

* Fix migration

- Ensure that defaults match between Event and migration script
- Deconflict migration script number (from rebase)

Issue: #2948

* Filter objects out of ratio bounds

Issue: #2948

* Update migration file to 009

Issue: #2948
2022-04-10 08:25:18 -05:00

2.2 KiB

id title
false_positives 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:

Frame Current Score Score History Computed Score Detected Object
1 0.7 0.0, 0, 0.7 0.0 No
2 0.55 0.0, 0.7, 0.0 0.0 No
3 0.85 0.7, 0.0, 0.85 0.7 No
4 0.90 0.7, 0.85, 0.95, 0.90 0.875 Yes
5 0.88 0.7, 0.85, 0.95, 0.90, 0.88 0.88 Yes
6 0.95 0.7, 0.85, 0.95, 0.90, 0.88, 0.95 0.89 Yes

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.