From 75d2caa26f5f68d26363d8d0b6453345b35abfa7 Mon Sep 17 00:00:00 2001 From: sr99622 <54281528+sr99622@users.noreply.github.com> Date: Wed, 27 Jul 2022 08:39:55 -0400 Subject: [PATCH 1/2] Update byte_tracker.py Problem with ByteTracker during long running process. Virtual memory is consumed in same manner as memory leak. This is due to the self.removed_stracks list member variable growing without bound. The issue may be fixed by removing stale tracks from the self.removed_stracks list. A limit is placed such that tracks older that 10 * self,max_time_lost are removed from the self.removed_stracks list. This change had no discernible effect on the algorithm. --- yolox/tracker/byte_tracker.py | 1 + 1 file changed, 1 insertion(+) diff --git a/yolox/tracker/byte_tracker.py b/yolox/tracker/byte_tracker.py index 2d004599..5e6b22e7 100644 --- a/yolox/tracker/byte_tracker.py +++ b/yolox/tracker/byte_tracker.py @@ -282,6 +282,7 @@ def update(self, output_results, img_info, img_size): self.lost_stracks.extend(lost_stracks) self.lost_stracks = sub_stracks(self.lost_stracks, self.removed_stracks) self.removed_stracks.extend(removed_stracks) + self.removed_stracks = [track for track in self.removed_stracks if self.frame_id - track.end_frame < 10 * self.max_time_lost] self.tracked_stracks, self.lost_stracks = remove_duplicate_stracks(self.tracked_stracks, self.lost_stracks) # get scores of lost tracks output_stracks = [track for track in self.tracked_stracks if track.is_activated] From e0ea907d83628e420c56f3ea16439357cb0d9e0d Mon Sep 17 00:00:00 2001 From: sr99622 <54281528+sr99622@users.noreply.github.com> Date: Sun, 18 Sep 2022 09:56:58 -0400 Subject: [PATCH 2/2] Update byte_tracker.py pytorch uint8 to bool for deprecation --- yolox/tracker/byte_tracker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yolox/tracker/byte_tracker.py b/yolox/tracker/byte_tracker.py index 5e6b22e7..44c2027f 100644 --- a/yolox/tracker/byte_tracker.py +++ b/yolox/tracker/byte_tracker.py @@ -178,7 +178,7 @@ def update(self, output_results, img_info, img_size): inds_low = scores > 0.1 inds_high = scores < self.args.track_thresh - inds_second = np.logical_and(inds_low, inds_high) + inds_second = np.logical_and(inds_low, inds_high).bool() dets_second = bboxes[inds_second] dets = bboxes[remain_inds] scores_keep = scores[remain_inds]