简体中文 | English
PaddleDetection中提供了SDE和JDE两个系列的多种算法实现:
-
SDE(Separate Detection and Embedding)
-
JDE(Joint Detection and Embedding)
注意:
- 以上算法原论文均为单类别的多目标跟踪,PaddleDetection团队同时也支持了ByteTrack和FairMOT(MCFairMOT)的多类别的多目标跟踪;
- DeepSORT和JDE均只支持单类别的多目标跟踪;
- DeepSORT需要额外添加ReID权重一起执行,ByteTrack可加可不加ReID权重,默认不加;
关于模型选型,PaddleDetection团队提供的总结建议如下:
MOT方式 | 经典算法 | 算法流程 | 数据集要求 | 其他特点 |
---|---|---|---|---|
SDE系列 | DeepSORT,ByteTrack | 分离式,两个独立模型权重先检测后ReID,也可不加ReID | 检测和ReID数据相对独立,不加ReID时即纯检测数据集 | 检测和ReID可分别调优,鲁棒性较高,AI竞赛常用 |
JDE系列 | FairMOT | 联合式,一个模型权重端到端同时检测和ReID | 必须同时具有检测和ReID标注 | 检测和ReID联合训练,不易调优,泛化性不强 |
注意:
- 由于数据标注的成本较大,建议选型前优先考虑数据集要求,如果数据集只有检测框标注而没有ReID标注,是无法使用JDE系列算法训练的,更推荐使用SDE系列;
- SDE系列算法在检测器精度足够高时,也可以不使用ReID权重进行物体间的长时序关联,可以参照ByteTrack;
- 耗时速度和模型权重参数量计算量有一定关系,耗时从理论上看
不使用ReID的SDE系列 < JDE系列 < 使用ReID的SDE系列
;
PaddleDetection团队提供了众多公开数据集或整理后数据集的下载链接,参考数据集下载汇总,用户可以自行下载使用。
根据模型选型总结,MOT数据集可以分为两类:一类纯检测框标注的数据集,仅SDE系列可以使用;另一类是同时有检测和ReID标注的数据集,SDE系列和JDE系列都可以使用。
SDE数据集是纯检测标注的数据集,用户自定义数据集可以参照DET数据准备文档准备。
以MOT17数据集为例,下载并解压放在PaddleDetection/dataset/mot
目录下:
wget https://bj.bcebos.com/v1/paddledet/data/mot/MOT17.zip
并修改数据集部分的配置文件如下:
num_classes: 1
TrainDataset:
!COCODataSet
dataset_dir: dataset/mot/MOT17
anno_path: annotations/train_half.json
image_dir: images/train
data_fields: ['image', 'gt_bbox', 'gt_class', 'is_crowd']
EvalDataset:
!COCODataSet
dataset_dir: dataset/mot/MOT17
anno_path: annotations/val_half.json
image_dir: images/train
TestDataset:
!ImageFolder
dataset_dir: dataset/mot/MOT17
anno_path: annotations/val_half.json
数据集目录为:
dataset/mot
|——————MOT17
|——————annotations
|——————images
JDE数据集是同时有检测和ReID标注的数据集,首先按照以下命令image_lists.zip
并解压放在PaddleDetection/dataset/mot
目录下:
wget https://bj.bcebos.com/v1/paddledet/data/mot/image_lists.zip
然后按照以下命令可以快速下载各个公开数据集,也解压放在PaddleDetection/dataset/mot
目录下:
# MIX数据,同JDE,FairMOT论文使用的数据集
wget https://bj.bcebos.com/v1/paddledet/data/mot/MOT17.zip
wget https://bj.bcebos.com/v1/paddledet/data/mot/Caltech.zip
wget https://bj.bcebos.com/v1/paddledet/data/mot/CUHKSYSU.zip
wget https://bj.bcebos.com/v1/paddledet/data/mot/PRW.zip
wget https://bj.bcebos.com/v1/paddledet/data/mot/Cityscapes.zip
wget https://bj.bcebos.com/v1/paddledet/data/mot/ETHZ.zip
wget https://bj.bcebos.com/v1/paddledet/data/mot/MOT16.zip
数据集目录为:
dataset/mot
|——————image_lists
|——————caltech.all
|——————citypersons.train
|——————cuhksysu.train
|——————eth.train
|——————mot16.train
|——————mot17.train
|——————prw.train
|——————Caltech
|——————Cityscapes
|——————CUHKSYSU
|——————ETHZ
|——————MOT16
|——————MOT17
|——————PRW
这几个相关数据集都遵循以下结构:
MOT17
|——————images
| └——————train
| └——————test
└——————labels_with_ids
└——————train
所有数据集的标注是以统一数据格式提供的。各个数据集中每张图片都有相应的标注文本。给定一个图像路径,可以通过将字符串images
替换为labels_with_ids
并将.jpg
替换为.txt
来生成标注文本路径。在标注文本中,每行都描述一个边界框,格式如下:
[class] [identity] [x_center] [y_center] [width] [height]
class
为类别id,支持单类别和多类别,从0
开始计,单类别即为0
。identity
是从1
到num_identities
的整数(num_identities
是数据集中所有视频或图片序列的不同物体实例的总数),如果此框没有identity
标注,则为-1
。[x_center] [y_center] [width] [height]
是中心点坐标和宽高,注意他们的值是由图片的宽度/高度标准化的,因此它们是从0到1的浮点数。
注意:
- MIX数据集是JDE和FairMOT原论文使用的数据集,包括Caltech Pedestrian, CityPersons, CUHK-SYSU, PRW, ETHZ, MOT17和MOT16。使用前6者作为联合数据集参与训练,MOT16作为评测数据集。如果您想使用这些数据集,请遵循他们的License。
- MIX数据集以及其子数据集都是单类别的行人跟踪数据集,可认为相比于行人检测数据集多了id号的标注。
- 更多场景的垂类模型例如车辆行人人头跟踪等,垂类数据集也需要处理成与MIX数据集相同的格式,参照数据集下载汇总、车辆跟踪、人头跟踪以及更通用的行人跟踪。
- 用户自定义数据集可参照MOT数据集准备教程去准备。
如果用户选择SDE系列方案,是准备准检测标注的自定义数据集,则可以参照DET数据准备文档准备。
如果用户选择JDE系列方案,则需要同时具有检测和ReID标注,且符合MOT-17数据集的格式。 为了规范地进行训练和评测,用户数据需要转成和MOT-17数据集相同的目录和格式:
custom_data
|——————images
| └——————test
| └——————train
| └——————seq1
| | └——————gt
| | | └——————gt.txt
| | └——————img1
| | | └——————000001.jpg
| | | |——————000002.jpg
| | | └—————— ...
| | └——————seqinfo.ini
| └——————seq2
| └——————...
└——————labels_with_ids
└——————train
└——————seq1
| └——————000001.txt
| |——————000002.txt
| └—————— ...
└——————seq2
└—————— ...
gt.txt
是原始标注文件,而训练所用标注是labels_with_ids
文件夹。gt.txt
里是当前视频中所有图片的原始标注文件,每行都描述一个边界框,格式如下:[frame_id],[identity],[bb_left],[bb_top],[width],[height],[score],[label],[vis_ratio]
img1
文件夹里是按照一定帧率抽好的图片。seqinfo.ini
文件是视频信息描述文件,需要如下格式的信息:[Sequence] name=MOT17-02 imDir=img1 frameRate=30 seqLength=600 imWidth=1920 imHeight=1080 imExt=.jpg
其中gt.txt
里是当前视频中所有图片的原始标注文件,每行都描述一个边界框,格式如下:
[frame_id],[identity],[bb_left],[bb_top],[width],[height],[score],[label],[vis_ratio]
注意:
frame_id
为当前图片帧序号identity
是从1
到num_identities
的整数(num_identities
是当前视频或图片序列的不同物体实例的总数),如果此框没有identity
标注,则为-1
。bb_left
是目标框的左边界的x坐标bb_top
是目标框的上边界的y坐标width,height
是真实的像素宽高score
是当前目标是否进入考虑范围内的标志(值为0表示此目标在计算中被忽略,而值为1则用于将其标记为活动实例),默认为1
label
是当前目标的种类标签,由于目前仅支持单类别跟踪,默认为1
,MOT-16数据集中会有其他类别标签,但都是当作ignore类别计算vis_ratio
是当前目标被其他目标包含或覆挡后的可见率,是从0到1的浮点数,默认为1
所有数据集的标注是以统一数据格式提供的。各个数据集中每张图片都有相应的标注文本。给定一个图像路径,可以通过将字符串images
替换为labels_with_ids
并将.jpg
替换为.txt
来生成标注文本路径。在标注文本中,每行都描述一个边界框,格式如下:
[class] [identity] [x_center] [y_center] [width] [height]
注意:
class
为类别id,支持单类别和多类别,从0
开始计,单类别即为0
。identity
是从1
到num_identities
的整数(num_identities
是数据集中所有视频或图片序列的不同物体实例的总数),如果此框没有identity
标注,则为-1
。[x_center] [y_center] [width] [height]
是中心点坐标和宽高,注意是由图片的宽度/高度标准化的,因此它们是从0到1的浮点数。
可采用如下脚本生成相应的labels_with_ids
:
cd dataset/mot
python gen_labels_MOT.py
Caltech:
@inproceedings{ dollarCVPR09peds,
author = "P. Doll\'ar and C. Wojek and B. Schiele and P. Perona",
title = "Pedestrian Detection: A Benchmark",
booktitle = "CVPR",
month = "June",
year = "2009",
city = "Miami",
}
Citypersons:
@INPROCEEDINGS{Shanshan2017CVPR,
Author = {Shanshan Zhang and Rodrigo Benenson and Bernt Schiele},
Title = {CityPersons: A Diverse Dataset for Pedestrian Detection},
Booktitle = {CVPR},
Year = {2017}
}
@INPROCEEDINGS{Cordts2016Cityscapes,
title={The Cityscapes Dataset for Semantic Urban Scene Understanding},
author={Cordts, Marius and Omran, Mohamed and Ramos, Sebastian and Rehfeld, Timo and Enzweiler, Markus and Benenson, Rodrigo and Franke, Uwe and Roth, Stefan and Schiele, Bernt},
booktitle={Proc. of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2016}
}
CUHK-SYSU:
@inproceedings{xiaoli2017joint,
title={Joint Detection and Identification Feature Learning for Person Search},
author={Xiao, Tong and Li, Shuang and Wang, Bochao and Lin, Liang and Wang, Xiaogang},
booktitle={CVPR},
year={2017}
}
PRW:
@inproceedings{zheng2017person,
title={Person re-identification in the wild},
author={Zheng, Liang and Zhang, Hengheng and Sun, Shaoyan and Chandraker, Manmohan and Yang, Yi and Tian, Qi},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
pages={1367--1376},
year={2017}
}
ETHZ:
@InProceedings{eth_biwi_00534,
author = {A. Ess and B. Leibe and K. Schindler and and L. van Gool},
title = {A Mobile Vision System for Robust Multi-Person Tracking},
booktitle = {IEEE Conference on Computer Vision and Pattern Recognition (CVPR'08)},
year = {2008},
month = {June},
publisher = {IEEE Press},
keywords = {}
}
MOT-16&17:
@article{milan2016mot16,
title={MOT16: A benchmark for multi-object tracking},
author={Milan, Anton and Leal-Taix{\'e}, Laura and Reid, Ian and Roth, Stefan and Schindler, Konrad},
journal={arXiv preprint arXiv:1603.00831},
year={2016}
}