2019年7月14日:
参考链接:https://www.cnblogs.com/wemo/p/10600454.html
g
https://blog.csdn.net/zjc910997316/article/details/83899474

Github开源代码链接:https://github.com/nwojke/deep_sort.git

完全版更加详细的加强版deepsort完整复现+MOT评测生成!!,持续更新!

1 准备工作()

下载deep sort代码文件
下载MOT16数据集
下载权重文件

2 导入库文件

进入pycharm ,open这个deep_sort-master文件夹

再把下载好的MOT16放在这个目录下,以及权重文件rescourses

找到deep_sort_app.py这个py文件并执行这个py文件。
若只显示以下内容,证明不缺少库,显示其他内容就调用相关的库文件即可。

3 开始复现

3.1 整理环境

找到readme这样一个文件双击,里面是这个代码的说明书,按照要求执行操作,从pycharm底部的terminal运行。文件的一开始给出了一些库,一般缺少的就是这些库。并要求tensorflow版本不能低于1.10.

根据上图,创建文件夹networks放在resources下,并把准备好的mars.pb文件放进去。
此时,我们可以看到MOT文件下是两个子文件架train和test

而resources文件下是以下内容而刚在调整的pb文件在networks文件架下。

2019年7月15日:

3.2 Running the tracker(执行跟踪轨迹)

下面的示例启动其中一个上的跟踪器
(MOT16基准)序列。
我们假设资源已被提取到存储库根目录中
MOT16基准数据在’ ./MOT16 '中:

python deep_sort_app.py  \--sequence_dir=./MOT16/test/MOT16-06  \--detection_file=./resources/detections/MOT16_test/MOT16-06.npy  \--min_confidence=0.3  \--nn_budget=100  \--display=True

查看“python deep_sort_app.py -h”以获得可用选项的概述。存储库中还有一些脚本可以可视化结果,生成视频,并评估MOT挑战基准。

3.3 生成检测

在主跟踪应用程序旁边,这个存储库包含一个脚本为人物重新识别生成特征,适合比较视觉效果使用余弦相似性的行人边界框外观。
下面的示例从标准MOT挑战生成这些特性检测。同样,我们假设已经将资源提取到存储库中根目录和MOT16数据在’ ./MOT16 ':

python tools/generate_detections.py \--model=resources/networks/mars-small128.pb \--mot_dir=./MOT16/train \--output_dir=./resources/detections/MOT16_train

模型由TensorFlow 1.5生成。如果你遇到
不兼容时,重新导出freeze_model推理图,得到一个新的
“mars-small128。与你的版本兼容的pb ':

python tools/ freeze_model.py

“generate_detections’‘为MOT16数据集的每个序列存储一个单独的二进制文件,采用NumPy本机格式。每个文件包含一个数组形’ Nx138 ',其中N为对应MOT中检测到的次数序列。这个数组的前10列包含原始MOT检测从输入文件复制过来。其余128列存储外观描述符。此命令生成的文件可以作“deep_sort_app.py”。

NOTE:

If python tools/generate_detections.py raises a TensorFlow error,
try passing an absolute path to the --model argument. This might help in
some cases.
如果“python工具/ generate_detections。’ ‘引发一个tensorflow流错误,
尝试将绝对路径传递给’’–model’'参数。这可能有助于某些情况下的调试。

源文件的高级概览(Highlevel overview of source files)

In the top-level directory are executable scripts to execute, evaluate, and
visualize the tracker. The main entry point is in deep_sort_app.py.
This file runs the tracker on a MOTChallenge sequence.

In package deep_sort is the main tracking code:

  • detection.py: Detection base class.
  • kalman_filter.py: A Kalman filter implementation and concrete
    parametrization for image space filtering.
  • linear_assignment.py: This module contains code for min cost matching and
    the matching cascade.
  • iou_matching.py: This module contains the IOU matching metric.
  • nn_matching.py: A module for a nearest neighbor matching metric.
  • track.py: The track class contains single-target track data such as Kalman
    state, number of hits, misses, hit streak, associated feature vectors, etc.
  • tracker.py: This is the multi-target tracker class.

The deep_sort_app.py expects detections in a custom format, stored in .npy
files. These can be computed from MOTChallenge detections using
generate_detections.py. We also provide
pre-generated detections.

翻译:

在顶层目录中是要执行、计算和执行的可执行脚本可视化跟踪器。主要入口点在’ deep_sort_app.py '中。
该文件以MOTChallenge序列运行跟踪器。

在package ’ deep_sort '中是主要的跟踪代码:

detection.py : 检测 基本的 class。
kalman_filter.py:
一个卡尔曼波器的具体实现,
图像空间滤波参数化。
*’linear_assignment.py :该模块包含最小成本匹配和
匹配的级联。
*’iou_matching.py ':这个模块包含IOU匹配度量。
*’nn_matching.py:最近邻匹配度量的模块。
*’track.py:类包含单目标跟踪数据,如Kalman
状态、命中次数、未命中次数、命中条纹、相关特征向量等。
*tracker.py’:这是多目标跟踪器类

“deep_sort_app.py '期望检测以自定义格式存储在.npy中
文件。这些可以通过使用MOTChallenge检测来计算
“generate_detections.py”。我们还提供
(预生成的检测)(https://drive.google.com/open?id=1VVqtL0klSUvLnmBKS89il1EKC3IxUBVK)。

Citing DeepSORT

If you find this repo useful in your research, please consider citing the following papers:

@inproceedings{Wojke2017simple,title={Simple Online and Realtime Tracking with a Deep Association Metric},author={Wojke, Nicolai and Bewley, Alex and Paulus, Dietrich},booktitle={2017 IEEE International Conference on Image Processing (ICIP)},year={2017},pages={3645--3649},organization={IEEE},doi={10.1109/ICIP.2017.8296962}
}@inproceedings{Wojke2018deep,title={Deep Cosine Metric Learning for Person Re-identification},author={Wojke, Nicolai and Bewley, Alex},booktitle={2018 IEEE Winter Conference on Applications of Computer Vision (WACV)},year={2018},pages={748--756},organization={IEEE},doi={10.1109/WACV.2018.00087}
}

最后附,运行样张:



小结:《deepsort》算法作为2017最具轰动的一篇人工智能总结性的文献,十分具有代表性,特别适合我这种小白入门学习,今后会反复琢磨早日出师。不过,从这几张图片可以看出,并不是可以百分之百的识别准确,今后会更加深入的学习其他算法。
end。

2019年7月28日晚 ==> 加强版复现过程

系统环境 ubuntu18.04Lts + pycharm 2019.6 +tensorflow==1.12 + gtx960M

之前没有完全理解程序调试过程,目前已完全掌握,重新编写过程,供大家参考.

1 下载MOT15-17(这里我采用的是16,记住下载的最大的那个包,大约2个g)

2下载预训练模型mars-small128.ckpt-68577,一会用

(论文对这个预训练权重的描述:以上方法的成功应用需要提前离线训练区分度高的特征嵌入。为此,DeepSORT 采用了一个在大规模行人重新识别数据集(MARS)上训练的 CNN,其中包含1261个行人的超过110万张图像,这使得它非常适合行人跟踪中的深度度量学习。
如下表所示,模型结构为宽残差网络(WRNS),其中有两个卷积层,后面是六个残差块。维度 128 128128 的全局特征映射在 “Dense 10”层中计算。规范化投影特征到单元超球面上从而与余弦外观度量兼容。网络参数量为2.67M,在 Nvidia GeForce GTX 1050移动 GPU 上,32个边界框的一次前向花费大约 Unexpected text node: ’ 'Unexpected text node: ’ '30ms。因此,只要有现代 GPU,该网络就非常适合在线跟踪。作者在 GitHub 仓库中提供了预先训练的模型以及可用于生成特征的脚本。)

3 把预训练权重mars.ckpt6857放到deep_sort-master内新建的文件夹下,resources/networks/


注意:一开始是没下面这个文件的,一会告诉原因!

4 打开readme.md,开始阅读手册

5 我们发现手册的第一步中,我们并没有一些内容(.npy),所以无法执行,我们先看后面

6

这里也有一个没有的内容,就是这个mars-small128.pb,不过这个文件是不是很熟,我们刚才下载过一个类似的文件,所有推测,应该是有关系的,到这里我们generating detections和running tracker部分都没有做.只是浏览了一下.其实很多时候复线都是这样的,不可以一根筋,不一定要顺序的执行我们可以往下看

7

模型由TensorFlow 1.5生成。如果遇到不兼容,则重新导出冻结推理图,以获得一个新的mars-small128。与你的版本兼容的pb:


为MOT16数据集的每个序列存储一个单独的二进制文件,格式为NumPy本机格式。每个文件包含一个形状为Nx138的数组,其中N是相应MOT序列中检测到的数目。这个数组的前10列包含从输入文件复制过来的原始MOT检测。其余128列存储外观描述符。这个命令生成的文件可以用作deep_sort_app.py的输入。

注意:如果python tools/generate_detections.py引发一个TensorFlow错误,请尝试向——model参数传递一个绝对路径。这在某些情况下可能会有所帮助。

由此我们知道了.我们可以通过tool文件夹下的freeze_model.py文件利用我们下载好的mars-samll128.ckpt68577来生成一个mars128.pb,也就是这个权重模型.

经过修改和阅读我们知道让生成的128.pb放到与之前ckpt文件同一文件夹下,这样我们就得到了128.pb
,所以,由此,我们就得到了执行generate decetions的全部条件.

8 generating decetions

我们执行这个程序,通过跟踪权重模型和MOT16中的train部分视频(帧img),生成关于train部分视频的decetion 结果
–model 为freeze model生成的mars128.pb文件
–mot_dir为MOT16中的部分视频,这里也可以是test视频test就是测试用的视频,train就是训练用的视频,分工明确,所以是两部分组成.
–output_dir为生成的视频decetions,为.npy numpy的二进制文件.如图所示(这个执行比较慢,跟显卡有关,所以需要耐心等待一会!!!)

到这里为止,我们就又或得了视频的.npy文件也叫decetions

9 running tracker

所以我们倒推到了第一步,这里就可以执行了,我们input
–sequence 图像的信息序列,在MOT16的子文件下自带
–detection_file 这个就是上一步的结果 .npy文件
– min_confidence 最小置信度,默认
–nn_buget 某个阈值 默认
–display 显示结果视频
执行就可以看到多目标跟踪的视频啦,视频在第一p的结尾可以看到这里就不赘述了.

10 MOT生成评价表部分

这个可是真的很久才明白,不过不难
https://blog.csdn.net/sinat_34715587/article/details/90340160
这里面参数讲解很详细,这里只做复现过程
下载python版本的评分包 py-motmerocs-master
1.readme
2. 直接app文件里的内容,想仔细了解原理的可以看readme.md,这里对包也有要求.
3. app下有个eval_motchallenge.py顾名思义就是它了,如图,我们可以发现这个程序也需要相关数据的路径,这里我把它修改做成了一个方法,run就可以运行不需要手动输入参数了,大家可以自己试一下,很方便

↓↓↓
grouthturth这里要注意,只有train视频有,这为什么我也不清楚,怎么生成后面我再要就,所以我们这里就直接用train部分,不考虑test先


之后会等待很长一段时间,runmerix…
这个时候为什么这么漫长我也不知道,但是就是这么漫长…然后就会有表格出现,end
.今后可能会进行补充更新,欢迎大家关注我!小白一枚,请多指教!!

(Deep_sort)代码复现及理解笔记➕deep_sort_app.py代码理解相关推荐

  1. ResNeXt代码复现+超详细注释(PyTorch)

    ResNeXt就是一种典型的混合模型,由基础的Inception+ResNet组合而成,本质在gruops分组卷积,核心创新点就是用一种平行堆叠相同拓扑结构的blocks代替原来 ResNet 的三层 ...

  2. 《代码阅读》读书笔记(一)

    <代码阅读>读书笔记(一) <代码阅读>(<Code Reading The Open Source Perspective>)Diomidis Spinellis ...

  3. 图像分割套件PaddleSeg全面解析(一)train.py代码解读

    首先祝贺百度团队百度斩获NeurIPS2020挑战赛冠军,https://www.jiqizhixin.com/articles/2020-12-09-2. 在此次比赛中使用的是基于飞桨深度学习框架开 ...

  4. 经典神经网络论文超详细解读(三)——GoogLeNet InceptionV1学习笔记(翻译+精读+代码复现)

    前言 在上一期中介绍了VGG,VGG在2014年ImageNet 中获得了定位任务第1名和分类任务第2名的好成绩,而今天要介绍的就是同年分类任务的第一名--GoogLeNet . 作为2014年Ima ...

  5. 经典神经网络论文超详细解读(八)——ResNeXt学习笔记(翻译+精读+代码复现)

    前言 今天我们一起来学习何恺明大神的又一经典之作: ResNeXt(<Aggregated Residual Transformations for Deep Neural Networks&g ...

  6. frustum pointnets训练代码学习笔记——kitti_object.py

    frustum pointnets训练代码学习笔记--kitti_object.py 本文记录了博主学习frustum pointnets过程中遇到的2D和3D数据库显示程序.为了画出输出结果,博主希 ...

  7. 3D目标检测——代码理解——Second代码:数据处理kitti_dataset.py的理解

    3D目标检测-代码理解-Second代码:数据处理kitti_dataset.py的理解 Second代码的github地址:Second代码的github地址 Second文章的链接:Second文 ...

  8. 论文学习笔记: Learning Multi-Scale Photo Exposure Correction(含pytorch代码复现)

    论文学习笔记: Learning Multi-Scale Photo Exposure Correction--含pytorch代码复现 本章工作: 论文摘要 训练数据集 网络设计原理 补充知识:拉普 ...

  9. GraphDTA论文阅读小白笔记(附代码注释和复现流程)

    目录 摘要 背景 数据和方法 GraphDTA概述 药物表征 蛋白表征 分子图的深度学习 GCN GAT GIN GAT-GCN 基准 模型解释 结果讨论 图模型的表现超过了其它模型 图模型发现已知药 ...

最新文章

  1. 【转】解决smtplib发送多人邮件没有展示收件人的问题
  2. Python语言学习 (七)1.1
  3. winform DataGrid排序、去掉第一的空白列
  4. python与图书编辑
  5. redis和kafka比较
  6. 形参与实参在函数中的传递
  7. IDEA写sql语句的时候没有提示信息的处理办法
  8. Spring源码解析目录
  9. 关于在Google Earth中动态加载地标问题
  10. java使用阿里邮箱发送邮件
  11. 虚短”“虚断”两板斧,搞定运算放大器 11张大图详(转)感觉特别有用 转过来收藏...
  12. GAN(生成对抗网络)的系统全面介绍(醍醐灌顶)
  13. PMP 项目进度管理 -CPI SPI CV SV
  14. Web身份验证(WebAuthn)
  15. matplotlib 设置坐标轴位置(spines),设置坐标别名(xticks,yticks)
  16. android禁止输入框自动弹出软键盘,怎么禁用输入法-Android禁止EditText输入框自动弹出软键盘的4种方法...
  17. MTK虚拟sensor梳理
  18. Cisco RV340命令执行漏洞(CVE-2022-20707)及关联历史漏洞分析
  19. Negroni中间件源码分析
  20. 华为云数据库mysql云灾备方案_华为云MySQL云灾备解决方案发布,放心的数据库都有异地保护...

热门文章

  1. 深度学习环境配置 (Ubuntu18.04 + CUDA10.0 + cuDNN7.6.5 + TensorFlow2.0)
  2. 【芝麻背调百科】​员工隐瞒婚姻状况入职是否构成劳动法意义上的欺诈?
  3. 南京市软件行业协会程序员分会(筹)章程
  4. oracle 数据库体系结构详解
  5. fastTime格式化时间
  6. PC 销量下滑原因多,Windows 10 背后在补刀?
  7. 用ChatGPT通过WebSocket开发一个交互性的五子棋微信小程序(二)
  8. 赶鸭子上架之Vue学习(一)
  9. React中实现tab切换
  10. transform的高级用法