Skip to content

Commit e08338b

Browse files
committed
forcing detection after x consecutive skips
1 parent 56dc696 commit e08338b

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

src/lib/opts.py

+1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ def __init__(self):
122122
self.parser.add_argument('--custom_video', default=False, help='is custom video provided')
123123
self.parser.add_argument('--skip_frames', default=1, help='how frequently to skip frames during detection 0: no skiping 1: 1/2 skipped 2: 2/3 skipped 3: 3/4 skipped')
124124
self.parser.add_argument('--eigen_threshold', default=10, help='threshold of similarity till which detection can be skipped')
125+
self.parser.add_argument('--detect_frame_interval', default=1, help='how frequently should detection not be skipped to handle new objects entering the scene')
125126
# mot
126127
self.parser.add_argument('--data_cfg', type=str,
127128
default='../src/lib/cfg/data.json',

src/track.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,11 @@ def eval_seq(opt, dataloader, data_type, result_filename, save_dir=None, show_im
7878
prev_online_targets = []
7979
prev_img = None
8080
eigen_threshold = int(opt.eigen_threshold)
81+
detect_frame_interval = int(opt.detect_frame_interval)
8182
num_detect = 0
8283
num_skipped = 0
8384
prev_area = 0
85+
num_consecutive_skips = 0
8486
total_areas = []
8587
largest_areas = []
8688
#for path, img, img0 in dataloader:
@@ -97,33 +99,40 @@ def eval_seq(opt, dataloader, data_type, result_filename, save_dir=None, show_im
9799

98100
if i > 0 :
99101
total_eig = 0
102+
num_boxes_counted = 0
100103
for prev_track in prev_online_targets:
101104
#filter targets like below
102105
previous_position_tlbr = prev_track.tlbr
103106
predicted_curr_position_tlbr = prev_track.predict_tlbr_without_updating_state()
104107
prev_detected_box, curr_predicted_box = get_crop_image_same_size(prev_img, previous_position_tlbr, img0, predicted_curr_position_tlbr)
105108

106-
total_eig += compute_eigen_value_similarity(prev_detected_box, curr_predicted_box)
107-
#print('index', i, previous_position_tlbr, predicted_curr_position_tlbr)
109+
prev_tlwh = prev_track.tlwh
110+
vertical = prev_tlwh[2] / prev_tlwh[3] > 1.6
111+
if prev_tlwh[2] * prev_tlwh[3] > opt.min_box_area and not vertical:
112+
total_eig += compute_eigen_value_similarity(prev_detected_box, curr_predicted_box)
113+
num_boxes_counted += 1
114+
#print('index', i, previous_position_tlbr, predicted_curr_position_tlbr)
115+
print('eig_', i ,": ", total_eig, 'num_boxes_counted ', num_boxes_counted)
108116
else:
109117
total_eig = 10000
110-
print('eig_', i ,": ", total_eig)
111118

112119
if use_cuda:
113120
blob = torch.from_numpy(img).cuda().unsqueeze(0)
114121
else:
115122
blob = torch.from_numpy(img).unsqueeze(0)
116123

117-
if total_eig >= eigen_threshold:
124+
if total_eig >= eigen_threshold or num_consecutive_skips >= detect_frame_interval:
118125
online_targets = tracker.update(blob, img0)
119126
prev_online_targets = online_targets
120127
prev_img = img0
121128
num_detect+=1
129+
num_consecutive_skips = 0
122130
print('detect at ', i, ' prev_area: ', prev_area)
123131
else:
124132
#eig = compute_eigen_values_consecutive(prev_img, img0)
125133
STrack.multi_predict(prev_online_targets)
126134
online_targets = prev_online_targets
135+
num_consecutive_skips += 1
127136
num_skipped+=1
128137
online_tlwhs = []
129138
online_ids = []

0 commit comments

Comments
 (0)