open-mmlab mmtracking中的DeepSort代码阅读
详细的原理参考:Deep SORT多目标跟踪算法代码解析 - pprp - 博客园 Deep SORT多目标跟踪算法代码解析
讲的很详细&画图也很认真。
0. demo_mot_vis.py 多目标跟踪demo的函数调用关系图call graph
- DeepSORT类有4个成员变量:detector、reid、motion、tracker
- DeepSORT负责推理,simple_test, tracker负责轨迹维护。
- simple_test去获取detector的检测框。
- with_motion的意思,是否需要运动模型的cost_matrix。实际上是计算了costs的,但是在分配时没有使用。
- 这个cost是用于reID的时候使用的。
- 检测、reID、运动、跟踪器。
- track的部分,是tracker在维护。且是SortTracker类型的对象。
- demo_mot_vis.py的inference_mot调用model(data),这个Model为Model类型。
- 调用model时,会去调用相应模型的forward_test。调用的是BaseMultiObjectTracker基类的forward_test函数。然后调用派生类的同名函数simple_test()
即调用了deepsort的simplt_test()函数 - 主要的流程在DeepSORT的simple_test()函数中。
- 特征提取
- 获取检测框
- 跟踪和检测框匹配
- kalman预测;cost马氏距离计算(这个称为距离模型)
- 根据IOU进行分配
- kalman correct
inference_motresult = model(data)# base.pyforward_test(img, img_metas, **kwargs)# deep_sort.py aimple_test()simple_test(img, img_metas, rescale, public_bboxes, **kwawrgs):x = self.detector.extract_feat(img) # 提取特征# 获取检测框:rpn的proposal + detector的获取检测框det_bboxes, det_labels = self.detector.....()# 跟踪track_bboxes, track_labels, track_ids = self.tracker.track(img, feats, det_bboxes)# sort_tracker.py #163 计算cost马氏距离矩阵①self.tracks, costs = model.motion.track(self.tracks, self.xyxy2xyah(bboxes))① kalman.predict② gating_distance # 马氏距离的计算costs[costs > self.gating_threshold] = np.nan # 注意有一个距离阈值,为5.9915# 这里使用的分配方式为:基于IOU的分配。然后分配后去track更新②row, col = linear_sum_assignment(dists)# track和detection的就算IOU,作为Dists进入到分配中③self.update(ids, bboxes, scores, labels)①update_track # 轨迹更新②init_track # 新建轨迹
1. 可参考的内容
就检测(background modeling、yolo模型检测)+ kalman预测 + 匈牙利分配的技术路线而言:
SORT&DeepSort显然属于此路线
yolo+kalman+匈牙利
yolo+网络feature+kalman+匈牙利
有sort&deepsort在MOT benchmark上的运行效果
mmtracking等有sort&deepsort的开源实现,可以自己跑demo看一下效果
MOT benchmark排行榜如下所示:https://motchallenge.net/results/MOT16/
MOT Challenge 可以预览SORT_OH在MOT上的效果。还不错的。
视频预览:https://motchallenge.net/movies/3241d9c48119e4c3fccffa9097dd6907cfff1dd3-MOT16-01.webm
这个是偏跟踪的(也就是评价标准是:ID维护的好)。至于框是否稳定,这个还OK,只要把长宽加入维护,框的长宽也会稳定,总体看着框就会比较稳定了。
开源代码实现 Project page / code: https://github.com/mhnasseri/sort_oh
SORT with Occlusion Handling
open-mmlab mmtracking中的DeepSort代码阅读相关推荐
- bert4keras中预训练代码阅读
bert4keras中的预训练代码如下: (下面一段对应的代码在/home/xiaoguzai/下载/bert4keras-master/pretraining的data_utils.py文件之中) ...
- 【代码阅读】PointNet++中ball query的CUDA实现
文章目录 本文为PointNet++ CUDA代码阅读系列的第三部分,其他详见: (一)PointNet++代码梳理 (二)PointNet++中的FPS的CUDA实现 (三)PointNet++中b ...
- AVS3代码阅读HPM4.0(更新中)
文章目录 结构体 ENC_PICO:原图缓冲结构 ENC_PINTRA:帧内预测结构 ENC_PINTER:帧间预测结构 ENC_PARAM:编码器参数 ENC_SBAC:稍后再议 ENC_CORE: ...
- VINS-Mono代码阅读笔记(十):vins_estimator中的非线性优化
本篇笔记紧接着VINS-Mono代码阅读笔记(九):vins_estimator中的相机-IMU对齐,初始化完成之后就获得了要优化的变量的初始值,后边就是做后端优化处理了.这部分对应论文中第VI部分, ...
- ffmpeg中的http协议相关代码阅读笔记
ffmpeg中的http协议相关代码阅读笔记 今天闲来无事,尝试看了下ffmpeg中的相关http协议传输处理代码 先简单说下这个代码在整个仓库里面的位置: ffmpeg/libavformat/ht ...
- ORB_SLAM2代码阅读(5)——Bundle Adjustment
ORB_SLAM2代码阅读(5)--Bundle Adjustment 1. 说明 2. Bundle Adjustment(BA)的物理意义 3. BA的数学表达 4. BA的求解方法 4.1 最速 ...
- ORB_SLAM2代码阅读(3)——LocalMapping线程
ORB_SLAM2代码阅读(3)--LocalMapping线程 1.说明 2.简介 3.处理关键帧 4. 地图点剔除 5. 创建新的地图点 6.相邻搜索 6.剔除冗余关键帧 1.说明 本文介绍ORB ...
- ORB_SLAM2代码阅读(4)——LoopClosing线程
ORB_SLAM2代码阅读(4)--LoopClosing线程 1.说明 2.简介 3.检测回环 4.计算Sim3 4.1 为什么在进行回环检测的时候需要计算相似变换矩阵,而不是等距变换? 4.2 累 ...
- ORB_SLAM2代码阅读(2)——tracking线程
ORB_SLAM2代码阅读(2)--Tracking线程 1. 说明 2. 简介 2.1 Tracking 流程 2.2 Tracking 线程的二三四 2.2.1 Tracking 线程的二种模式 ...
最新文章
- datagrid的正反双向排序
- 编码gbk的不可映射字符_Python基础:编码表和字符的故事
- 如何使用xp_cmdshell扩展过程
- apache POI技术的使用
- openai-gpt_GPT-3不会承担您的编程工作
- Java Jad 反编译class文件
- 在word里批量插入由文件创建对象,word宏定义批量插入对象
- linux中MIB与MB单位的区别
- AI制作ICON流程
- Archlinux下对ape文件自动分轨并转mp3
- Table is marked as crashed and should be repaire (
- php中求解二元一次方程,PHP实现二元一次方程式的求解
- 小米11刷root记录
- AutoJs学习-读写手机联系人
- Dremel的学习与理解
- DM数据库配置开机自启动
- 《kafka面试100例 -6》如果在/admin/delete_topics/中手动写入一个节点会不会正常删除Topic
- 国内哪个域名注册商比较好?怎样选择域名注册商?
- 大厂面试核心知识点梳理
- XenApp / XenDesktop 7.6 初体验九 Director
热门文章
- 网易CEO丁磊:创业只是按自己的意图做事
- 在透视投影中物体z分量大小的变化
- EEROR:Windows named pipe error: The system cannot find the file specified. (code:2)
- 关于操作系统中的调度
- 任务计划执行结果0x0 0x1 0x4的意思与win2008系统计划任务用法
- 量化交易如何选择云服务器,如何在本地远程开发与调试云服务器程序
- ffmpeg文件名含特殊字符引起的问题
- 免费指纹浏览器怎么样,免费指纹浏览器版可以修改浏览器指纹吗
- 对比Tornado和Twisted
- ubuntu安装软件时,status-code=409报错解决方案