目录

 

1. 准备代码与数据

deep_sort开源代码

克隆到本地服务器

git clone https://github.com/nwojke/deep_sort.git

下载MOT16数据集(MOT:Multi-Object Tracking, 16的意思是相比MOT15多了更多的细节信息)
MOT16数据集

预训练权重下载

1.1 数据集介绍

该数据集分为了test和train,每个文件夹有7个子文件夹。

./MOT16/train

以训练集中的MOT16-02为例,探究数据数据集格式:
MOT16-02下包含三个四个子文件:det、gt、img1、seqinfo.ini

1.1.1 det:

det下只有一个文件,det.txt。每行一个标注,代表一个检测物体

格式为:

, , <bb_left>, <bb_top>, <bb_width>, <bb_height>, , , ,

  • :第几帧(可以看到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
  1. 需要视频文件
  2. 需要目标检测detection的权重文件(npy 文件)(ps:目标检测框架和deep_sort框架应该一致)

效果:直观来看还不错,当然这是基于目标检测的检测的结果,如果检测不到目标,tracking也无法做。当人行走过程中,被遮挡之后再次出现,目标ID还是维持不变。(思考:这里人一般是直线前行,如果目标在遮挡之后,掉头再出现,可能ID就会变化)。

很大的问题:生成的视频帧率很低,不到30FPS,肉眼能看出明显卡顿。(网上说通过优化可以达到高帧率,具体待查)

4.2 train

如何训练?
余弦度量学习方法

deep sort的更多相关文章

  1. 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING WITH A DEEP ASSOCIATION METRIC (Deep SORT)

    网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,在SORT的基础 ...

  2. 《deep sort》复现过程

    目录 1. 准备代码与数据 deep_sort开源代码 克隆到本地服务器 git clone https://github.com/nwojke/deep_sort.git 下载MOT16数据集(MO ...

  3. 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING (SORT)

    网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是使用 tracking by detection 方法进行多目标跟踪的文章,是后续de ...

  4. 多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature

    网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,最大的特点是使用 ...

  5. 2019 AI CITY CHALLENGE

    官网:    https://www.aicitychallenge.org/ 基于来自交通,信号系统,基础设施和运输的传感器数据,存在使运输系统更智能的巨大机会.不幸的是,由于几个原因,进展受到限制 ...

  6. 无根树同构_hash

    先贴上地址 https://vjudge.net/problem/HDU-5732 判断有根树同构: 1. 直接用括号最小表示法 2. 利用括号最小表示法的思想进行hash 判断无根树同构: 1. 找 ...

  7. (9-4 )deepsort在ubuntu1604下配置

    Deep Sort with PyTorch YOLO https://github.com/ZQPei/deep_sort_pytorch 查看python版本 python3 --version ...

  8. 多目标跟踪MOT综述

    https://blog.csdn.net/u012435142/article/details/85255005 多目标跟踪MOT 1评价指标 https://www.cnblogs.com/YiX ...

  9. 【NOIP2016提高A组模拟8.15】Throw

    题目 分析 首先对于一个状态(a,b,c),假定a<=b<=c: 现在考虑一下这个状态,的转移方案: \[1,中间向两边跳(a,b,c)-->(a*2-b,a,c).(a,b,c)- ...

随机推荐

  1. 12-MySQL DBA笔记-MySQL复制

    第12章 MySQL复制 本章将为读者讲述MySQL的复制技术,首先,介绍最基础的主从复制,它是其他所有复制技术的基础,接着再为读者讲述各种复制架构的搭建,最后,列举了一些常见的复制问题及处理方式.复 ...

  2. 浅谈hashcode

    哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: 1 public native int hashCode(); 根据 ...

  3. 关于EF数据迁移的个人总结 简单有效

    有用的拿走,没用的嘴下留情!

  4. OpenCl入门getting-started-with-opencl-and-gpu-computing

    原文来自于:getting-started-with-opencl-and-gpu-computing/ 对整个程序的注释:http://www.kimicat.com/opencl-1/opencl ...

  5. sqoop1.4.6 用法总结一

    Sqoop是一个用于在Hadoop和关系数据库或大型机之间传输数据的工具.您可以使用Sqoop将关系数据库管理系统(RDBMS)中的数据导入Hadoop分布式文件系统(HDFS),在Hadoop Ma ...

  6. JavaSpring【四、Bean管理注解实现】

    前面讲的Bean相关配置全部是使用xml配置文件或实现接口来实现的,接下来将比较常用的用法,使用注解实现bean的注入和管理 内容包括 ClassPath扫描与组件管理 类的自动检测与注册bean c ...

  7. Mysql(五):索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  8. 5.安装bacula-web(监控页面)

    1.   安装bacula-web(监控页面) 用途:监控bacula状态. http://docs.bacula-web.org/en/master/index.html bacula-web-7. ...

  9. ReaderWriterLockSlim使用示例

    /// <summary> /// ReaderWriterLockSlim使用示例 /// </summary> internal sealed class Transact ...

  10. linux——命令2—删除—查看—搜索

    多种查看命令: 多种搜索命令: ll命令 -rw-rw-rw  - 表示文件 drw-rw-rw  d 表示目录文件夹 ========================== 使用rm删除文件 例如:r ...