@@ -21,16 +21,15 @@ git checkout v2 # change to v2 branch !!
21
21
22
22
## 🗺️ Latest News
23
23
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.
26
25
27
26
## ❤️ Introduction
28
27
29
28
This repo is a toolbox that implements the ** tracking-by-detection paradigm multi-object tracker** . The detector supports:
30
29
31
30
- YOLOX
32
31
- YOLO v7
33
- - YOLO v8 ,
32
+ - YOLO v3 ~ v12 by [ ultralytics ] ( https://docs.ultralytics.com/ ) ,
34
33
35
34
and the tracker supports:
36
35
@@ -61,7 +60,7 @@ The highlights are:
61
60
## 🔨 Installation
62
61
63
62
The basic env is:
64
- - Ubuntu 18 .04
63
+ - Ubuntu 20 .04
65
64
- Python:3.9, Pytorch: 1.12
66
65
67
66
Run following commond to install other packages:
@@ -86,12 +85,14 @@ python3 setup.py develop
86
85
87
86
There is no need to execute addtional steps as the repo itself is based on YOLOv7.
88
87
89
- 3 . YOLO v8 :
88
+ 3 . YOLO series by ultralytics :
90
89
91
90
Please run:
92
91
93
92
``` bash
94
- pip3 install ultralytics==8.0.94
93
+ pip3 install ultralytics
94
+ or
95
+ pip3 install --upgrade ultralytics
95
96
```
96
97
97
98
### 📑 Data preparation
@@ -148,7 +149,11 @@ Some references may help you:
148
149
python 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
149
150
```
150
151
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
+ ```
152
157
153
158
154
159
@@ -157,42 +162,47 @@ python train_aux.py --dataset visdrone --workers 8 --device <$GPU_id$> --batch-s
157
162
If you only want to run a demo:
158
163
159
164
``` 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
161
166
```
162
167
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
+
163
173
For example:
164
174
165
175
``` 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
167
177
```
168
178
169
179
If you want to run trackers on dataset:
170
180
171
181
``` 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}
173
183
```
174
184
175
185
For example:
176
186
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 `
178
188
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 `
180
190
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 `
182
192
183
193
- OCSort: ` python tracker/track.py --dataset mot17 --detector yolox --tracker ocsort --kalman_format ocsort --detector_model_path weights/bytetrack_m_mot17.pth.tar `
184
194
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 `
186
196
187
197
- 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 `
188
198
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 `
190
200
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 `
192
202
193
203
- 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 `
194
204
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 `
196
206
197
207
> ** Important notes for UCMC Track:**
198
208
>
0 commit comments