@@ -21,16 +21,15 @@ git checkout v2 # change to v2 branch !!
2121
2222## 🗺️ Latest News
2323
24- - *** 2024.11.29*** Fix bugs of C-BIoU Track (the state prediction and updating bugs)
25- - *** 2024.10.24*** Add Hybrid SORT and fix some errors and bugs of OC-SORT.
24+ - *** 2025.4.3*** Support the newest ultralytics version (YOLO v3 ~ v12) and fix some bugs of hybrid sort.
2625
2726## ❤️ Introduction
2827
2928This repo is a toolbox that implements the ** tracking-by-detection paradigm multi-object tracker** . The detector supports:
3029
3130- YOLOX
3231- YOLO v7
33- - YOLO v8 ,
32+ - YOLO v3 ~ v12 by [ ultralytics ] ( https://docs.ultralytics.com/ ) ,
3433
3534and the tracker supports:
3635
@@ -61,7 +60,7 @@ The highlights are:
6160## 🔨 Installation
6261
6362The basic env is:
64- - Ubuntu 18 .04
63+ - Ubuntu 20 .04
6564- Python:3.9, Pytorch: 1.12
6665
6766Run following commond to install other packages:
@@ -86,12 +85,14 @@ python3 setup.py develop
8685
8786There is no need to execute addtional steps as the repo itself is based on YOLOv7.
8887
89- 3 . YOLO v8 :
88+ 3 . YOLO series by ultralytics :
9089
9190Please run:
9291
9392``` bash
94- pip3 install ultralytics==8.0.94
93+ pip3 install ultralytics
94+ or
95+ pip3 install --upgrade ultralytics
9596```
9697
9798### 📑 Data preparation
@@ -148,7 +149,11 @@ Some references may help you:
148149python train_aux.py --dataset visdrone --workers 8 --device < $GPU_id $> --batch-size 16 --data data/visdrone_all.yaml --img 1280 1280 --cfg cfg/training/yolov7-w6.yaml --weights < $YOLO v7 pretrained model path$> --name yolov7-w6-custom --hyp data/hyp.scratch.custom.yaml
149150```
150151
151- - YOLO v8: ` tracker/yolov8_utils/train_yolov8.py `
152+ - YOLO series (YOLO v3 ~ v12) by ultralytics:: ` tracker/yolo_ultralytics_utils/train_yolo_ultralytics.py `
153+
154+ ``` shell
155+ python tracker/yolo_ultralytics_utils/train_yolo_ultralytics.py --model_weight weights/yolo11m.pt --data_cfg tracker/yolo_ultralytics_utils/data_cfgs/visdrone_det.yaml --epochs 30 --batch_size 8 --img_sz 1280 --device 0
156+ ```
152157
153158
154159
@@ -157,42 +162,47 @@ python train_aux.py --dataset visdrone --workers 8 --device <$GPU_id$> --batch-s
157162If you only want to run a demo:
158163
159164``` bash
160- python tracker/track_demo.py --obj ${video path or images folder path} --detector ${yolox, yolov8 or yolov7 } --tracker ${tracker name} --kalman_format ${kalman format, sort, byte, ...} --detector_model_path ${detector weight path} --save_images
165+ python tracker/track_demo.py --obj ${video path or images folder path} --detector ${yolox, yolov7 or yolo_ultra } --tracker ${tracker name} --kalman_format ${kalman format, sort, byte, ...} --detector_model_path ${detector weight path} --save_images
161166```
162167
168+ > ❗❗Important Notes
169+ >
170+ > If you want to use the detector trained by ** ultralytics** , the ` --detector ` argument ** must include** the substring ` ultra ` , such as
171+ > ` --detector yolo_ultra ` , ` --detector yolo_ultra_v8 ` , ` --detector yolov11_ultra ` , ` --detector yolo12_ultralytics ` , etc.
172+
163173For example:
164174
165175``` bash
166- python tracker/track_demo.py --obj M0203.mp4 --detector yolov8 --tracker deepsort --kalman_format byte --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt --save_images
176+ python tracker/track_demo.py --obj M0203.mp4 --detector yolo_ultra_v8 --tracker deepsort --kalman_format byte --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt --save_images
167177```
168178
169179If you want to run trackers on dataset:
170180
171181``` bash
172- python tracker/track.py --dataset ${dataset name, related with the yaml file} --detector ${yolox, yolov8 or yolov7} --tracker ${tracker name} --kalman_format ${kalman format, sort, byte, ...} --detector_model_path ${detector weight path}
182+ python tracker/track.py --dataset ${dataset name, related with the yaml file} --detector ${yolox, yolo_ultra_v8 or yolov7} --tracker ${tracker name} --kalman_format ${kalman format, sort, byte, ...} --detector_model_path ${detector weight path}
173183```
174184
175185For example:
176186
177- - SORT: ` python tracker/track.py --dataset uavdt --detector yolov8 --tracker sort --kalman_format sort --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
187+ - SORT: ` python tracker/track.py --dataset uavdt --detector yolo_ultra_v8 --tracker sort --kalman_format sort --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
178188
179- - DeepSORT: ` python tracker/track.py --dataset uavdt --detector yolov7 --tracker deepsort --kalman_format byte --detector_model_path weights/yolov7_UAVDT_35epochs_20230507 .pt `
189+ - DeepSORT: ` python tracker/track.py --dataset visdrone_part --detector yolov7 --tracker deepsort --kalman_format byte --detector_model_path weights/yolov8l_VisDroneDet_35epochs_20230605 .pt `
180190
181- - ByteTrack: ` python tracker/track.py --dataset uavdt --detector yolov8 --tracker bytetrack --kalman_format byte --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
191+ - ByteTrack: ` python tracker/track.py --dataset uavdt --detector yolo_ultra_v8 --tracker bytetrack --kalman_format byte --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
182192
183193- OCSort: ` python tracker/track.py --dataset mot17 --detector yolox --tracker ocsort --kalman_format ocsort --detector_model_path weights/bytetrack_m_mot17.pth.tar `
184194
185- - C-BIoU Track: ` python tracker/track.py --dataset uavdt --detector yolov8 --tracker c_bioutrack --kalman_format bot --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
195+ - C-BIoU Track: ` python tracker/track.py --dataset uavdt --detector yolo_ultra_v8 --tracker c_bioutrack --kalman_format bot --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
186196
187197- BoT-SORT: ` python tracker/track.py --dataset uavdt --detector yolox --tracker botsort --kalman_format bot --detector_model_path weights/yolox_m_uavdt_50epochs.pth.tar `
188198
189- - Strong SORT: ` python tracker/track.py --dataset uavdt --detector yolov8 --tracker strongsort --kalman_format strongsort --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509 .pt `
199+ - Strong SORT: ` python tracker/track.py --dataset visdrone_part --detector yolo_ultra_v8 --tracker strongsort --kalman_format strongsort --detector_model_path weights/yolov8l_VisDrone_35epochs_20230509 .pt `
190200
191- - Sparse Track: ` python tracker/track.py --dataset uavdt --detector yolov8 --tracker sparsetrack --kalman_format bot --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
201+ - Sparse Track: ` python tracker/track.py --dataset uavdt --detector yolo_ultra_v11 --tracker sparsetrack --kalman_format bot --detector_model_path weights/yolov8l_UAVDT_60epochs_20230509.pt `
192202
193203- UCMC Track: ` python tracker/track.py --dataset mot17 --detector yolox --tracker ucmctrack --kalman_format ucmc --detector_model_path weights/bytetrack_m_mot17.pth.tar --camera_parameter_folder ./tracker/cam_param_files `
194204
195- - Hybrid SORT: ` python tracker/track.py --dataset mot17 --detector yolox --tracker hybridsort --kalman_format hybridsort --detector_model_path weights/bytetrack_m_mot17.pth.tar --save_images `
205+ - Hybrid SORT: ` python tracker/track.py --dataset visdrone_part --detector yolo_ultra --tracker hybridsort --kalman_format hybridsort --detector_model_path weights/yolov8l_VisDrone_35epochs_20230509.pt --save_images `
196206
197207> ** Important notes for UCMC Track:**
198208>
0 commit comments