1
1
# YOLO v7 + 各种tracker实现多目标跟踪
2
2
3
- ## 更新记录
3
+ ## 0. 更新记录
4
+
5
+ ** 2023.1.15** 加入了** MOT17数据集** 的训练与测试功能, 增加了MOT17转yolo格式的代码(` ./tools/convert_MOT17_to_yolo.py ` ), 转换的过程中强制使得坐标合法, 且忽略了遮挡率>=0.75的目标. 您可以采用此代码转换并训练, 具体请见后面的说明. 在使用tracker的时候, 注意将` data_format ` 设置为yolo, 这样可以直接根据txt文件的路径读取图片.
4
6
5
7
** 2023.1.14** 加入了当前DanceTrack的SOTA[ C_BIoUTracker] ( https://arxiv.org/pdf/2211.14317v2.pdf ) , 该论文提出了一种增广的IoU来避免目标的瞬间大范围移动, 且弃用了Kalman滤波. 该代码没有开源, 我是按照自己的理解进行了复现. ** 有错误非常欢迎指出** .
6
8
19
21
** 2022.09.27** 修复了STrack类中update不更新外观的问题, 代码有较大更改, ** 您可能需要重新下载``` ./tracker ``` 文件夹** .
20
22
尝试加入StrongSORT, 但是目前还不work:(, 尽力调一调
21
23
22
- ## 亮点
24
+ ## 1. 亮点
23
25
1 . 统一代码风格, 对多种tracker重新整理, 详细注释, 方便阅读, 适合初学者
24
26
2 . 多类多目标跟踪
25
27
3 . 各种tracker集成在一个文件夹"./tracker/"内, 方便移植到其他detector.
26
28
27
- ## 集成的tracker:
29
+ ## 2. 集成的tracker:
28
30
SORT,
29
31
DeepSORT,
30
32
ByteTrack([ ECCV2022] ( https://arxiv.org/pdf/2110.06864 ) ),
@@ -34,14 +36,17 @@ UAVMOT([CVPR2022](https://openaccess.thecvf.com/content/CVPR2022/papers/Liu_Mult
34
36
C_BIoUTracker([ arxiv2211] ( https://arxiv.org/pdf/2211.14317v2.pdf ) )
35
37
36
38
37
- ## TODO
39
+ ## 3. TODO
38
40
- [x] 集成UAVMOT([ CVPR2022] ( https://openaccess.thecvf.com/content/CVPR2022/papers/Liu_Multi-Object_Tracking_Meets_Moving_UAV_CVPR_2022_paper.pdf ) )
39
41
- [ ] 达到更好的结果(缓解类别不平衡, 小目标等等)...
40
- - [ ] MOT challenge数据集
42
+ - [x ] MOT challenge数据集
41
43
- [x] 更换Re-ID模型(更换了OSNet, 效果不好...)
42
44
43
45
44
- ## 效果
46
+ ## 4. 效果
47
+
48
+ ### VisDrone
49
+
45
50
在VisDrone2019-MOT train训练约10 epochs, 采用YOLO v7 w6结构, COCO预训练模型基础上训练. GPU: single Tesla A100, 每个epoch约40min.
46
51
在VisDrone2019-MOT test dev测试, 跟踪所有的类别.
47
52
@@ -62,13 +67,21 @@ YOLO v7 VisDrone训练完模型:
62
67
63
68
![ gif] ( https://github.com/JackWoo0831/Yolov7-tracker/blob/master/test2.gif )
64
69
65
- ## 环境配置
70
+ ### MOT17
71
+
72
+ 在MOT17 train训练约15epochs, 采用YOLO v7 w6结构, COCO预训练模型基础上训练. GPU: single Tesla A100, 每个epoch约3.5min.
73
+
74
+ 这是在测试集03序列的C_BIoU Tracker的效果:
75
+
76
+ ![ gif] ( https://github.com/JackWoo0831/Yolov7-tracker/blob/master/C_BIoU2.gif )
77
+
78
+ ## 5. 环境配置
66
79
- python=3.7.0 pytorch=1.7.0 torchvision=0.8.0 cudatoolkit=11.0
67
80
- [ py-motmetrics] ( https://github.com/cheind/py-motmetrics ) (` pip install motmetrics ` )
68
81
- cython-bbox (` pip install cython_bbox ` )
69
82
- opencv
70
83
71
- ## 训练
84
+ ## 6. 训练
72
85
73
86
训练遵循YOLO v7的训练方式, 数据集格式可以参照[ YOLO v5 train custom data] ( https://github.com/ultralytics/yolov5/wiki/Train-Custom-Data )
74
87
即数据集文件遵循
@@ -88,7 +101,7 @@ python train_aux.py --dataset visdrone --workers 8 --device <$GPU_id$> --batch-s
88
101
```
89
102
> 更多训练信息参考[ YOLO v7] ( https://github.com/WongKinYiu/yolov7 )
90
103
91
- ## ` track.py ` 路径读取说明
104
+ ## 7. ` track.py ` 路径读取说明
92
105
93
106
通常来讲, 一个MOT数据集的目录结构大概遵循` 划分(训练、测试等)---序列---图片与标注 ` 的结构, 如下所示:
94
107
@@ -136,7 +149,9 @@ VisDrone2019/images/VisDrone2019-MOT-test-dev/uav0000120_04775_v/0000001.jpg
136
149
137
150
138
151
139
- ## 跟踪
152
+ ## 8. 跟踪
153
+
154
+
140
155
141
156
*** 在跟踪之前*** , 您需要选择读取数据的方式, 即` opts.data_format ` 参数, 如果选择` yolo ` 格式, 您需要在工程根目录下按照` yolo ` 的方式(例如本仓库的` ./visdrone/test.txt ` ), 您需要修改` track.py ` 中的` DATA_ROOT ` 等变量, 与` test.txt ` 中的路径配合起来. 如果使用数据集原本的路径, 要根据数据集本身的路径特点进行调整. 一是` track.py ` 中的路径变量, 二是` track_dataloder.py ` 中` TrackerLoader ` 类的初始化函数中的路径.
142
157
@@ -182,6 +197,14 @@ python tracker/track.py --dataset visdrone --data_format origin --tracker strong
182
197
python tracker/track.py --dataset visdrone --data_format origin --tracker c_biou --model_path runs/train/yolov7-w6-custom4/weights/best.pt
183
198
```
184
199
200
+ *** MOT17数据集*** : 与下面的命令一致:
201
+
202
+ ``` shell
203
+ python tracker/track.py --dataset mot17 --data_format yolo --tracker ${TRACKER} --model_path ${MODEL_PATH}
204
+ ```
205
+
206
+
207
+
185
208
> StrongSORT中OSNet的下载地址, 请参照https://github.com/mikel-brostrom/Yolov5_StrongSORT_OSNet/blob/master/strong_sort/deep/reid_model_factory.py
186
209
187
210
> 您也可以通过增加
@@ -190,7 +213,7 @@ python tracker/track.py --dataset visdrone --data_format origin --tracker c_biou
190
213
> ` ` `
191
214
> 来控制保存跟踪结果的图片与视频.
192
215
193
- # # 将./tracker应用于其他detector
216
+ # # 9. 将./tracker应用于其他detector
194
217
195
218
只需保证detector的输出格式为
196
219
` ` ` shell
0 commit comments