diff --git a/docs/docs/configuration/index.md b/docs/docs/configuration/index.md index f659b5339..1fe1048e9 100644 --- a/docs/docs/configuration/index.md +++ b/docs/docs/configuration/index.md @@ -231,6 +231,8 @@ detect: fps: 5 # Optional: enables detection for the camera (default: True) enabled: True + # Optional: Number of consecutive detection hits required for an object to be initialized in the tracker. (default: 1/2 the frame rate) + min_initialized: 2 # Optional: Number of frames without a detection before Frigate considers an object to be gone. (default: 5x the frame rate) max_disappeared: 25 # Optional: Configuration for stationary object tracking diff --git a/frigate/config.py b/frigate/config.py index 2c9734ec6..ebec6c843 100644 --- a/frigate/config.py +++ b/frigate/config.py @@ -352,6 +352,9 @@ class DetectConfig(FrigateBaseModel): default=5, title="Number of frames per second to process through detection." ) enabled: bool = Field(default=True, title="Detection Enabled.") + min_initialized: Optional[int] = Field( + title="Minimum number of consecutive hits for an object to be initialized by the tracker." + ) max_disappeared: Optional[int] = Field( title="Maximum number of frames the object can dissapear before detection ends." ) @@ -1143,6 +1146,11 @@ class FrigateConfig(FrigateBaseModel): else DEFAULT_DETECT_DIMENSIONS["height"] ) + # Default min_initialized configuration + min_initialized = camera_config.detect.fps / 2 + if camera_config.detect.min_initialized is None: + camera_config.detect.min_initialized = min_initialized + # Default max_disappeared configuration max_disappeared = camera_config.detect.fps * 5 if camera_config.detect.max_disappeared is None: diff --git a/frigate/track/norfair_tracker.py b/frigate/track/norfair_tracker.py index 058f246c7..1b7c63a4f 100644 --- a/frigate/track/norfair_tracker.py +++ b/frigate/track/norfair_tracker.py @@ -68,7 +68,6 @@ class NorfairTracker(ObjectTracker): self.untracked_object_boxes: list[list[int]] = [] self.disappeared = {} self.positions = {} - self.max_disappeared = config.detect.max_disappeared self.camera_config = config self.detect_config = config.detect self.ptz_metrics = ptz_metrics @@ -81,8 +80,8 @@ class NorfairTracker(ObjectTracker): self.tracker = Tracker( distance_function=frigate_distance, distance_threshold=2.5, - initialization_delay=self.detect_config.fps / 2, - hit_counter_max=self.max_disappeared, + initialization_delay=self.detect_config.min_initialized, + hit_counter_max=self.detect_config.max_disappeared, ) if self.ptz_autotracker_enabled.value: self.ptz_motion_estimator = PtzMotionEstimator(