From fa22e47c89f8a0ed115d4836b9761b544e864efc Mon Sep 17 00:00:00 2001 From: KC-Zhang Date: Wed, 19 May 2021 12:29:54 -0400 Subject: [PATCH 1/7] add class in input output --- sort.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/sort.py b/sort.py index 4b2ca8a..f25bf5b 100644 --- a/sort.py +++ b/sort.py @@ -119,6 +119,7 @@ def __init__(self,bbox): self.hits = 0 self.hit_streak = 0 self.age = 0 + self.original_id = bbox[5] def update(self,bbox): """ @@ -128,6 +129,7 @@ def update(self,bbox): self.history = [] self.hits += 1 self.hit_streak += 1 + self.original_id = bbox[5] self.kf.update(convert_bbox_to_z(bbox)) def predict(self): @@ -207,7 +209,7 @@ def __init__(self, max_age=1, min_hits=3, iou_threshold=0.3): self.trackers = [] self.frame_count = 0 - def update(self, dets=np.empty((0, 5))): + def update(self, dets=np.empty((0, 6))): """ Params: dets - a numpy array of detections in the format [[x1,y1,x2,y2,score],[x1,y1,x2,y2,score],...] @@ -218,12 +220,12 @@ def update(self, dets=np.empty((0, 5))): """ self.frame_count += 1 # get predicted locations from existing trackers. - trks = np.zeros((len(self.trackers), 5)) + trks = np.zeros((len(self.trackers), 6)) to_del = [] ret = [] for t, trk in enumerate(trks): pos = self.trackers[t].predict()[0] - trk[:] = [pos[0], pos[1], pos[2], pos[3], 0] + trk[:] = [pos[0], pos[1], pos[2], pos[3], 0, 0] if np.any(np.isnan(pos)): to_del.append(t) trks = np.ma.compress_rows(np.ma.masked_invalid(trks)) @@ -243,14 +245,14 @@ def update(self, dets=np.empty((0, 5))): for trk in reversed(self.trackers): d = trk.get_state()[0] if (trk.time_since_update < 1) and (trk.hit_streak >= self.min_hits or self.frame_count <= self.min_hits): - ret.append(np.concatenate((d,[trk.id+1])).reshape(1,-1)) # +1 as MOT benchmark requires positive + ret.append(np.concatenate((d,[trk.id+1], [trk.original_id])).reshape(1,-1)) # +1 as MOT benchmark requires positive i -= 1 # remove dead tracklet if(trk.time_since_update > self.max_age): self.trackers.pop(i) if(len(ret)>0): return np.concatenate(ret) - return np.empty((0,5)) + return np.empty((0,6)) def parse_args(): """Parse input arguments.""" @@ -309,7 +311,7 @@ def parse_args(): plt.title(seq + ' Tracked Targets') start_time = time.time() - trackers = mot_tracker.update(dets) + trackers = mot_tracker.update(np.hstack((dets, np.zeros((dets.shape[0], 1))))) cycle_time = time.time() - start_time total_time += cycle_time From 84502de30c09230b8ee69b7d58616bf70a2bce48 Mon Sep 17 00:00:00 2001 From: KC-Zhang Date: Wed, 19 May 2021 13:20:43 -0400 Subject: [PATCH 2/7] output conf too --- sort.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/sort.py b/sort.py index f25bf5b..5c198f9 100644 --- a/sort.py +++ b/sort.py @@ -120,6 +120,8 @@ def __init__(self,bbox): self.hit_streak = 0 self.age = 0 self.original_id = bbox[5] + self.original_conf = bbox[4] + def update(self,bbox): """ @@ -130,6 +132,7 @@ def update(self,bbox): self.hits += 1 self.hit_streak += 1 self.original_id = bbox[5] + self.original_conf = bbox[4] self.kf.update(convert_bbox_to_z(bbox)) def predict(self): @@ -220,12 +223,12 @@ def update(self, dets=np.empty((0, 6))): """ self.frame_count += 1 # get predicted locations from existing trackers. - trks = np.zeros((len(self.trackers), 6)) + trks = np.zeros((len(self.trackers), 7)) to_del = [] ret = [] for t, trk in enumerate(trks): pos = self.trackers[t].predict()[0] - trk[:] = [pos[0], pos[1], pos[2], pos[3], 0, 0] + trk[:] = [pos[0], pos[1], pos[2], pos[3], 0, 0, 0] if np.any(np.isnan(pos)): to_del.append(t) trks = np.ma.compress_rows(np.ma.masked_invalid(trks)) @@ -245,14 +248,14 @@ def update(self, dets=np.empty((0, 6))): for trk in reversed(self.trackers): d = trk.get_state()[0] if (trk.time_since_update < 1) and (trk.hit_streak >= self.min_hits or self.frame_count <= self.min_hits): - ret.append(np.concatenate((d,[trk.id+1], [trk.original_id])).reshape(1,-1)) # +1 as MOT benchmark requires positive + ret.append(np.concatenate((d,[trk.id+1], [trk.original_id], [trk.original_conf])).reshape(1,-1)) # +1 as MOT benchmark requires positive i -= 1 # remove dead tracklet if(trk.time_since_update > self.max_age): self.trackers.pop(i) if(len(ret)>0): return np.concatenate(ret) - return np.empty((0,6)) + return np.empty((0,7)) def parse_args(): """Parse input arguments.""" From b7ecd5afe730cd544ccddc7da97bc52d83b327a8 Mon Sep 17 00:00:00 2001 From: Sepehr HM Date: Thu, 20 May 2021 23:44:16 -0400 Subject: [PATCH 3/7] remove tkagg because ubuntu 16.04 doesn't work with it --- sort.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sort.py b/sort.py index 5c198f9..5a26dcd 100644 --- a/sort.py +++ b/sort.py @@ -20,7 +20,6 @@ import os import numpy as np import matplotlib -matplotlib.use('TkAgg') import matplotlib.pyplot as plt import matplotlib.patches as patches from skimage import io From 0a5ed7dddfd64187af020940569cba25f42ea838 Mon Sep 17 00:00:00 2001 From: KC-Zhang Date: Fri, 21 May 2021 15:13:47 -0400 Subject: [PATCH 4/7] add git ignore for pycache --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 90a0bb3..46711f3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ output/ mot_benchmark +__pycache__ From 03aa1e358939e069fdc8e9a10783f01db30bc1ec Mon Sep 17 00:00:00 2001 From: KC-Zhang Date: Thu, 27 May 2021 11:01:49 -0400 Subject: [PATCH 5/7] cycle id number to pervent overflow --- sort.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sort.py b/sort.py index 5a26dcd..f901e02 100644 --- a/sort.py +++ b/sort.py @@ -95,6 +95,7 @@ class KalmanBoxTracker(object): This class represents the internal state of individual tracked objects observed as bbox. """ count = 0 + countReset = 10000 def __init__(self,bbox): """ Initialises a tracker using initial bounding box. @@ -113,7 +114,7 @@ def __init__(self,bbox): self.kf.x[:4] = convert_bbox_to_z(bbox) self.time_since_update = 0 self.id = KalmanBoxTracker.count - KalmanBoxTracker.count += 1 + KalmanBoxTracker.count = (KalmanBoxTracker.count+1) % KalmanBoxTracker.countReset self.history = [] self.hits = 0 self.hit_streak = 0 From 686ea1d66cb46e839b10354c3c4d10c030bb0d11 Mon Sep 17 00:00:00 2001 From: KC-Zhang Date: Wed, 23 Jun 2021 16:26:34 -0400 Subject: [PATCH 6/7] add requirement --- requirements.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements.txt b/requirements.txt index b70813b..0fc2b53 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,5 @@ +wheel==0.34.2 +numpy==1.17.4 filterpy==1.4.5 scikit-image==0.17.2 lap==0.4.0 From 03c14f4bf51d0ab0eb9ed71567bde11d0b07e4f9 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Wed, 23 Jun 2021 21:40:20 +0000 Subject: [PATCH 7/7] fix --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 0fc2b53..f3e3cfc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ wheel==0.34.2 -numpy==1.17.4 +numpy filterpy==1.4.5 scikit-image==0.17.2 lap==0.4.0