Skip to content

Commit ae28142

Browse files
committed
fix some bugs of demo and sort
1 parent 96bc575 commit ae28142

File tree

6 files changed

+22
-10
lines changed

6 files changed

+22
-10
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ git checkout v2 # change to v2 branch !!
2121

2222
## 🗺️ Latest News
2323

24+
- ***2025.4.14*** Fix some minor bugs [issue#144](https://github.com/JackWoo0831/Yolov7-tracker/issues/144), and fix the lost tracklet bugs in sort.
2425
- ***2025.4.7*** Add more Re-ID modules (ShuffleNet, VehicleNet, MobileNet), fix some bugs (such as abandon bbox aspect ratio updating if the tracklet is not activated), and add some functions (customized low filter threshold, fuse detection score, etc.)
2526
- ***2025.4.3*** Support the newest ultralytics version (YOLO v3 ~ v12) and fix some bugs of hybrid sort.
2627

README_CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ git checkout v2 # change to v2 branch !!
1515

1616
## 🗺️ 最近更新
1717

18+
- ***2025.4.14*** 修复[issue#144](https://github.com/JackWoo0831/Yolov7-tracker/issues/144)中提到的一些bug,修复sort对丢失轨迹处理的bug.
1819
- ***2025.4.7*** 增加更多Re-ID模型 (ShuffleNet, VehicleNet, MobileNet), 修复一些bug (例如在轨迹为非活动状态时停止更新边界框长宽), 增加一些小功能 (例如可以修改两阶段关联策略的最低阈值,原来是固定的0.1; 增加将IoU和检测置信度融合的选项)
1920
- ***2025.4.3*** 增加了ultralytics库最新版本的支持,修复了hybrid sort中的一些bug.
2021

tracker/track_demo.py

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,11 @@ def main(args):
134134
if args.save_videos:
135135
args.save_images = True
136136

137+
save_dir = args.save_dir
138+
save_obj_name = args.obj.replace('/', '_') # save seq name w.r.t. the obj name, but replace '/'
139+
logger.info(f'demo result will be saved in {os.path.join(save_dir), save_obj_name}.txt')
140+
logger.info(f"images and videos (if you enable it) will be saved in {os.path.join(save_dir, save_obj_name, 'vis_results')}")
141+
137142
"""2. load detector"""
138143
device = select_device(args.device)
139144

@@ -196,9 +201,6 @@ def main(args):
196201

197202
tracker = TRACKER_DICT[args.tracker](args, )
198203

199-
200-
save_dir = args.save_dir
201-
202204
process_bar = enumerate(data_loader)
203205
process_bar = tqdm(process_bar, total=len(data_loader), ncols=150)
204206

@@ -219,7 +221,7 @@ def main(args):
219221
# get detector output
220222
with torch.no_grad():
221223
if 'ultra' in args.detector:
222-
output = model.predict(img, conf=args.conf_thresh, iou=args.nms_thresh)
224+
output = model.predict(img, conf=args.conf_thresh, iou=args.nms_thresh, verbose=False)
223225
else:
224226
output = model(img)
225227

@@ -264,14 +266,14 @@ def main(args):
264266

265267
if args.save_images:
266268
plot_img(img=ori_img, frame_id=frame_idx, results=[cur_tlwh, cur_id, cur_cls],
267-
save_dir=os.path.join(save_dir, 'vis_results'))
269+
save_dir=os.path.join(save_dir, save_obj_name, 'vis_results'))
268270

269-
save_results(folder_name=os.path.join(save_dir, 'txt_results'),
270-
seq_name='demo',
271-
results=results)
271+
save_results(save_dir=save_dir,
272+
seq_name=save_obj_name,
273+
results=results)
272274

273275
if args.save_videos:
274-
save_video(images_path=os.path.join(save_dir, 'vis_results'))
276+
save_video(images_path=os.path.join(save_dir, save_obj_name, 'vis_results'))
275277
logger.info(f'save video done')
276278

277279
if __name__ == '__main__':

tracker/tracker_dataloader.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ def __init__(self, file_name, img_size=[640, 640], model='yolox', legacy_yolox=T
185185

186186
self.legacy = legacy_yolox
187187

188+
self.other_param = kwargs
189+
188190
def __getitem__(self, idx):
189191

190192
if not self.is_video:

tracker/trackers/deepsort_tracker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def __init__(self, args, frame_rate=30):
3232

3333
self.motion = args.kalman_format
3434

35-
self.with_reid = args.reid
35+
self.with_reid = True # In deepsort, reid model must be included
3636

3737
self.reid_model = None
3838
if self.with_reid:

tracker/trackers/sort_tracker.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ def update(self, output_results, img, ori_img):
8686
track.re_activate(det, self.frame_id, new_id=False)
8787
refind_tracklets.append(track)
8888

89+
for it in u_track:
90+
track = tracklet_pool[it]
91+
if not track.state == TrackState.Lost:
92+
track.mark_lost()
93+
lost_tracklets.append(track)
94+
8995

9096
'''Deal with unconfirmed tracks, usually tracks with only one beginning frame'''
9197
detections = [detections[i] for i in u_detection]

0 commit comments

Comments
 (0)