目录
1. 准备代码与数据
deep_sort 开源代码 https://github.com/nwojke/deep_sort
克隆到本地服务器
Git clone https://github.com/nwojke/deep_sort.git
下载 MOT16 数据集 (MOT:Multi-Object Tracking, 16 的意思是相比 MOT15 多了更多的细节信息)
MOT16 数据集 https://motchallenge.net/data/MOT16/
预训练权重下载
1.1 数据集介绍
该数据集分为了 test 和 train, 每个文件夹有 7 个子文件夹.
./MOT16/train
以训练集中的 MOT16-02 为例, 探究数据数据集格式:
MOT16-02 下包含三个四个子文件: det,gt,img1,seqinfo.INI
1.1.1 det:
det 下只有一个文件, det.txt. 每行一个标注, 代表一个检测物体
格式为:
, , , , , , , , ,
: 第几帧 (可以看到 img1 中共 600 帧图)
: 目标运动轨迹编号 (在目标文件中都为 - 1)
<bb_*>:bbox 的坐标尺寸
: 分类的置信度分数
- <x, y, z>
- : 用于 3D 检测, 2D 检测总是为 1 1.1.2 img1
这个目录就是把视频一帧帧抽取出来的图片, 总共 600 张. 文件命名从 000001.jpg 到 000600.jpg.
1.1.3 gt
gt 文件夹下只有一个文件, gt.txt
第 1 个值: 视频帧号
第 2 个值: 目标运动轨迹的 ID 号
第 3-6 值: bbox 坐标 (x, y, w, h)
第 7 个值: 目标轨迹是否进入考虑范围 (0: 忽略, 1:active)
第 8 个值: 该轨迹对应的目标种类
第 9 个值:
box 的 visibility ratio, 表示目标运动时被其他目标 box 包含 / 覆盖或者目标之间 box 边缘裁剪情况.
1.1.4 seqinfo.INI 文件
视频的基本信息介绍
2. 运行目标跟踪器
- python deep_sort_app.py \
- --sequence_dir=./MOT16/test/MOT16-06 \
- --detection_file=./resources/detections/MOT16_POI_test/MOT16-06.npy \
- --min_confidence=0.3 \
- --nn_budget=100 \
- --display=True
- # 在自己生成的 feature 运行 tracker
- python deep_sort_app.py \
- --sequence_dir=./MOT16/test/MOT16-01 \
- --detection_file=./resources/detections/wemo_test/MOT16-01.npy \
- --min_confidence=0.3 \
- --nn_budget=100 \
- --display=True
可选参数解释:
--sequence_dir: 视频切成图片序列的文件夹, 包含帧序列, 每一帧的帧号, 目标的 bbox,
--detection_file: 检测的权重文件 .npy
--output_file: 输出类似于 gt.txt 的文件格式, 轨迹不再是默认 - 1, 发生变化
--min_confidence: 检测结果阈值. 低于这个阈值的检测结果将会被忽略
--nms_max_overlap: 非极大抑制的阈值
--max_cosine_distance: 余弦距离的控制阈值
--nn_budget: 描述的区域的最大值
--display: 显示目标追踪结果
- 3. generating detections
- generate features for persons re-identification.
- python tools/generate_detections.py \
- --model=resources/networks/mars-small128.pb \
- --mot_dir=./MOT16/train \
- --output_dir=./resources/detections/MOT16_train
- # 自定义生成 feature
- python tools/generate_detections.py \
- --model=resources/networks/mars-small128.pb \
- --mot_dir=./MOT16/test \
- --output_dir=./resources/detections/wemo_test
--model: 是模型框架的权重参数文件
输入:
输出:
4. 如何在自己的数据上运行 deep_sort, 实现目标追踪?
4.1 test
需要视频文件
需要目标检测 detection 的权重文件 (npy 文件)(ps: 目标检测框架和 deep_sort 框架应该一致)
效果: 直观来看还不错, 当然这是基于目标检测的检测的结果, 如果检测不到目标, tracking 也无法做. 当人行走过程中, 被遮挡之后再次出现, 目标 ID 还是维持不变.(思考: 这里人一般是直线前行, 如果目标在遮挡之后, 掉头再出现, 可能 ID 就会变化).
很大的问题: 生成的视频帧率很低, 不到 30FPS, 肉眼能看出明显卡顿.(网上说通过优化可以达到高帧率, 具体待查)
4.2 train
如何训练?
余弦度量学习方法 https://github.com/nwojke/cosine_metric_learning
来源: https://www.cnblogs.com/wemo/p/10600454.html