Use a rolling average of iou to determine if an object is no longer stationary (#9381)

* Use a rolling average of iou to determine if an object is no longer stationary

* Use different box variation to designate when an object is stationary on debug

* In progress

* Use average of boxes instead of average of iou

* Update frigate/track/norfair_tracker.py

Co-authored-by: Blake Blackshear <blake@frigate.video>

---------

Co-authored-by: Blake Blackshear <blake@frigate.video>
This commit is contained in:
Nicolas Mowen
2024-02-26 06:37:56 -07:00
committed by GitHub
parent 0a15ef022b
commit 3f1bd891e4
3 changed files with 41 additions and 11 deletions

View File

@@ -323,6 +323,22 @@ def reduce_boxes(boxes, iou_threshold=0.0):
return [tuple(c) for c in clusters]
def average_boxes(boxes: list[list[int, int, int, int]]) -> list[int, int, int, int]:
"""Return a box that is the average of a list of boxes."""
x_mins = []
y_mins = []
x_max = []
y_max = []
for box in boxes:
x_mins.append(box[0])
y_mins.append(box[1])
x_max.append(box[2])
y_max.append(box[3])
return [np.mean(x_mins), np.mean(y_mins), np.mean(x_max), np.mean(y_max)]
def intersects_any(box_a, boxes):
for box in boxes:
if box_overlaps(box_a, box):