BoxMOT数据集制备:MOT格式标注与转换工具

【免费下载链接】boxmot BoxMOT: pluggable SOTA tracking modules for segmentation, object detection and pose estimation models 【免费下载链接】boxmot 项目地址: https://gitcode.com/GitHub_Trending/bo/boxmot

你是否还在为多目标跟踪(Multi-Object Tracking, MOT)数据集的标注格式问题而困扰?标注工具输出格式不兼容主流跟踪算法?手动转换标注文件耗时费力且易出错?本文将系统介绍BoxMOT框架下的MOT数据集制备全流程,从原始视频到标准MOT格式标注文件的自动化转换,帮助算法工程师快速构建训练与评估数据集。读完本文你将掌握:

  • MOT17/20标准数据格式的核心规范与字段解析
  • 使用BoxMOT自动生成检测框(Detections)与外观特征(Embeddings)
  • 多跟踪算法统一接口的结果转换与格式验证
  • 工业级数据集制备的性能优化与质量控制方法

MOT数据集格式规范

1.1 标准MOT格式定义

MOT(Multiple Object Tracking)数据集采用纯文本格式存储标注信息,每个视频序列对应一个.txt文件,每行代表一帧中单个目标的标注信息。其核心字段定义如下:

字段索引 字段名称 数据类型 描述
0 帧序号(Frame ID) 整数 视频帧的顺序编号(从1开始)
1 目标ID(Track ID) 整数 跨帧唯一的目标标识符(-1表示未跟踪目标)
2 边界框左上角X坐标(X) 浮点数 目标外接矩形左上角X像素坐标
3 边界框左上角Y坐标(Y) 浮点数 目标外接矩形左上角Y像素坐标
4 边界框宽度(Width) 浮点数 目标外接矩形宽度(像素)
5 边界框高度(Height) 浮点数 目标外接矩形高度(像素)
6 置信度(Confidence) 浮点数 检测置信度(1.0表示人工标注)
7 类别ID(Class ID) 整数 目标类别(0=行人,1=自行车,2=汽车等)
8 可见性(Visibility) 浮点数 目标可见比例(0.0-1.0,1.0表示完全可见)

注意:MOT格式采用1-based索引(帧序号从1开始),坐标系统以图像左上角为原点,与OpenCV默认坐标系一致。

1.2 数据目录结构

标准MOT数据集遵循严格的目录组织结构,BoxMOT已内置对该结构的支持,典型布局如下:

MOT17-02-FRCNN/       # 序列文件夹(序列ID+检测器类型)
├── img1/             # 视频帧文件夹
│   ├── 000001.jpg    # 帧图像(6位数字命名)
│   ├── 000002.jpg
│   └── ...
├── det/              # 检测结果文件夹
│   └── det.txt       # 自动检测结果(MOT格式)
├── gt/               # 人工标注文件夹
│   └── gt.txt        # 真实标注(MOT格式)
└── seqinfo.ini       # 序列元信息文件

其中seqinfo.ini包含关键元数据:

[Sequence]
name=MOT17-02-FRCNN
imDir=img1
frameRate=30
seqLength=600
imWidth=1920
imHeight=1080
imExt=.jpg

BoxMOT数据制备工具链

2.1 工具架构与工作流

BoxMOT提供从原始视频到MOT格式的端到端数据处理流水线,核心工具包括generate_dets_n_embs.py(检测与特征生成)和generate_mot_results.py(跟踪结果转换),其工作流程如下:

mermaid

2.2 环境准备与安装

2.2.1 基础环境配置
# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/bo/boxmot
cd boxmot

# 安装依赖
pip install poetry
poetry install
poetry shell
2.2.2 模型权重下载

BoxMOT支持自动下载预训练模型,首次运行时会将权重保存至boxmot/weights/目录:

  • YOLOv8检测模型:用于生成目标边界框
  • OSNet/CLIP重识别模型:用于提取目标外观特征

检测与特征文件生成

3.1 generate_dets_n_embs.py核心功能

该工具实现从视频/图像序列到MOT格式检测文件(dets.txt)和特征文件(embs.txt)的自动化转换,支持多模型、多序列批量处理。其核心参数说明:

参数名称 类型 默认值 描述
--yolo-model Path yolov8n.pt YOLO系列检测模型路径
--reid-model Path osnet_x0_25_msmt17.pt 重识别模型路径
--source str 0 输入源(视频文件/图像文件夹/摄像头)
--conf float 0.5 检测置信度阈值
--iou float 0.7 NMS交并比阈值
--classes list[int] [0] 目标类别过滤(0=行人)
--project Path runs/dets_n_embs 结果保存根目录

3.2 单序列处理示例

处理单个视频序列并生成检测文件:

python tracking/generate_dets_n_embs.py \
  --yolo-model yolov8x.pt \
  --reid-model osnet_x1_0_imagenet.pt \
  --source ./assets/MOT17-mini/train/MOT17-02-FRCNN/img1 \
  --conf 0.3 \
  --classes 0 \
  --project ./custom_dataset \
  --name mot17_mini_dets
3.2.1 输出文件结构

运行成功后将在custom_dataset/mot17_mini_dets/生成:

mot17_mini_dets/
├── dets/
│   └── MOT17-02-FRCNN.txt  # MOT格式检测文件
└── embs/
    └── osnet_x1_0_imagenet/
        └── MOT17-02-FRCNN.txt  # 外观特征文件
3.2.2 检测文件格式解析

生成的dets.txt示例内容:

# ./assets/MOT17-mini/train/MOT17-02-FRCNN/img1
1 0.0 588.0 173.0 86.0 273.0 0.92 0.0
1 0.0 923.0 169.0 79.0 261.0 0.89 0.0
2 0.0 589.0 172.0 85.0 271.0 0.93 0.0
...

每行格式:帧序号 X Y W H 置信度 类别ID(注意:MOT检测文件中Track ID固定为0)

3.3 多序列批量处理

对于包含多个视频序列的数据集(如MOT17训练集),可通过指定根目录实现批量处理:

python tracking/generate_dets_n_embs.py \
  --yolo-model yolov8x.pt \
  --reid-model clip_vit-b-32.pt \
  --source ./MOT17/train \
  --classes 0 2 \  # 同时处理行人和汽车
  --vid-stride 2 \  # 隔帧处理提高速度
  --project ./MOT17_processed \
  --exist-ok

该命令将自动遍历./MOT17/train下的所有序列文件夹,分别生成对应的检测和特征文件。

跟踪结果格式转换

4.1 generate_mot_results.py使用指南

当使用外部跟踪算法处理检测结果后,可通过该工具将跟踪输出转换为标准MOT格式。核心参数:

参数名称 类型 默认值 描述
--tracking-method str deepocsort 跟踪算法类型
--dets str yolov8n 检测结果文件夹名称
--embs str osnet_x0_25_msmt17 特征文件夹名称
--benchmark str MOT17 基准数据集类型

4.2 从检测到MOT结果的转换示例

python tracking/generate_mot_results.py \
  --tracking-method botsort \
  --reid-model osnet_x0_25_msmt17.pt \
  --dets yolov8x \
  --embs osnet_x1_0_imagenet \
  --project ./custom_dataset \
  --name botsort_results \
  --save-mot

生成的MOT结果文件将包含完整的跟踪ID信息:

1 1 588.0 173.0 86.0 273.0 0.92 0 -1 -1
1 2 923.0 169.0 79.0 261.0 0.89 0 -1 -1
2 1 589.0 172.0 85.0 271.0 0.93 0 -1 -1
...

4.3 多算法结果对比

通过指定不同--tracking-method参数,可生成多种算法的MOT格式结果进行对比:

# DeepOCSort
python tracking/generate_mot_results.py --tracking-method deepocsort

# StrongSORT
python tracking/generate_mot_results.py --tracking-method strongsort

# ByteTrack
python tracking/generate_mot_results.py --tracking-method bytetrack

质量控制与性能优化

5.1 数据质量评估指标

指标 描述 可接受范围
检测覆盖率 人工标注目标被检测到的比例 >95%
边界框偏差 检测框与人工标注的IoU >0.7
特征区分度 同一ID特征相似度/不同ID相似度 >1.5倍
帧率 处理速度 >10 FPS(单GPU)

5.2 性能优化策略

5.2.1 模型精度与速度平衡

mermaid

5.2.2 批量处理优化
# 使用多进程处理多序列
python tracking/generate_dets_n_embs.py \
  --source ./MOT17/train \
  --batch-size 8 \  # 批处理大小
  --half \          # FP16精度
  --vid-stride 3    # 隔3帧处理

5.3 常见问题排查

5.3.1 检测文件为空
  • 检查--conf阈值是否过高(建议先设为0.1排查)
  • 确认输入源路径正确,图像文件格式符合seqinfo.ini定义
  • 验证YOLO模型是否支持当前图像尺寸
5.3.2 特征文件体积过大
  • 使用降维技术:--emb-dim 128(默认512维)
  • 启用特征量化:--quantize embs(将float32转为uint8)

高级应用与扩展

6.1 自定义数据集格式转换

对于非标准输入格式(如COCO、Pascal VOC),可通过扩展tracking/utils.py中的convert_to_mot_format函数实现转换:

def convert_custom_to_mot(custom_annotation, frame_id):
    """
    将自定义标注转换为MOT格式
    custom_annotation: 包含x1,y1,x2,y2,score,class,track_id的字典
    """
    mot_line = [
        frame_id,                      # 帧序号
        custom_annotation['track_id'], # 目标ID
        custom_annotation['x1'],       # X坐标
        custom_annotation['y1'],       # Y坐标
        custom_annotation['x2'] - custom_annotation['x1'],  # 宽度
        custom_annotation['y2'] - custom_annotation['y1'],  # 高度
        custom_annotation['score'],    # 置信度
        custom_annotation['class'],    # 类别ID
        -1, -1                         # 预留字段
    ]
    return '\t'.join(map(str, mot_line)) + '\n'

6.2 大规模数据集管理

对于超过100万帧的大型数据集,建议采用分布式处理架构:

mermaid

总结与最佳实践

BoxMOT数据集制备工具链通过自动化检测生成、特征提取和格式转换,显著降低了MOT数据集的制备门槛。工业级应用建议遵循以下工作流:

  1. 数据采集:使用1080p以上分辨率摄像头,固定帧率30FPS
  2. 预处理:统一图像尺寸,去除模糊/过曝帧
  3. 检测生成:先使用高置信度(0.5)生成初步结果,再人工修正漏检
  4. 特征提取:优先选择OSNet系列模型平衡速度与精度
  5. 格式验证:使用boxmot/utils/vis.py可视化检查前100帧结果

【免费下载链接】boxmot BoxMOT: pluggable SOTA tracking modules for segmentation, object detection and pose estimation models 【免费下载链接】boxmot 项目地址: https://gitcode.com/GitHub_Trending/bo/boxmot

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐