详细的原理参考: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类型的对象。

 

  1. demo_mot_vis.py的inference_mot调用model(data),这个Model为Model类型。
  2. 调用model时,会去调用相应模型的forward_test。调用的是BaseMultiObjectTracker基类的forward_test函数。然后调用派生类的同名函数simple_test()
    即调用了deepsort的simplt_test()函数
  3. 主要的流程在DeepSORT的simple_test()函数中。
    1. 特征提取
    2. 获取检测框
    3. 跟踪和检测框匹配
      1. kalman预测;cost马氏距离计算(这个称为距离模型)
      2. 根据IOU进行分配
      3. 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代码阅读相关推荐

  1. bert4keras中预训练代码阅读

    bert4keras中的预训练代码如下: (下面一段对应的代码在/home/xiaoguzai/下载/bert4keras-master/pretraining的data_utils.py文件之中) ...

  2. 【代码阅读】PointNet++中ball query的CUDA实现

    文章目录 本文为PointNet++ CUDA代码阅读系列的第三部分,其他详见: (一)PointNet++代码梳理 (二)PointNet++中的FPS的CUDA实现 (三)PointNet++中b ...

  3. AVS3代码阅读HPM4.0(更新中)

    文章目录 结构体 ENC_PICO:原图缓冲结构 ENC_PINTRA:帧内预测结构 ENC_PINTER:帧间预测结构 ENC_PARAM:编码器参数 ENC_SBAC:稍后再议 ENC_CORE: ...

  4. VINS-Mono代码阅读笔记(十):vins_estimator中的非线性优化

    本篇笔记紧接着VINS-Mono代码阅读笔记(九):vins_estimator中的相机-IMU对齐,初始化完成之后就获得了要优化的变量的初始值,后边就是做后端优化处理了.这部分对应论文中第VI部分, ...

  5. ffmpeg中的http协议相关代码阅读笔记

    ffmpeg中的http协议相关代码阅读笔记 今天闲来无事,尝试看了下ffmpeg中的相关http协议传输处理代码 先简单说下这个代码在整个仓库里面的位置: ffmpeg/libavformat/ht ...

  6. ORB_SLAM2代码阅读(5)——Bundle Adjustment

    ORB_SLAM2代码阅读(5)--Bundle Adjustment 1. 说明 2. Bundle Adjustment(BA)的物理意义 3. BA的数学表达 4. BA的求解方法 4.1 最速 ...

  7. ORB_SLAM2代码阅读(3)——LocalMapping线程

    ORB_SLAM2代码阅读(3)--LocalMapping线程 1.说明 2.简介 3.处理关键帧 4. 地图点剔除 5. 创建新的地图点 6.相邻搜索 6.剔除冗余关键帧 1.说明 本文介绍ORB ...

  8. ORB_SLAM2代码阅读(4)——LoopClosing线程

    ORB_SLAM2代码阅读(4)--LoopClosing线程 1.说明 2.简介 3.检测回环 4.计算Sim3 4.1 为什么在进行回环检测的时候需要计算相似变换矩阵,而不是等距变换? 4.2 累 ...

  9. ORB_SLAM2代码阅读(2)——tracking线程

    ORB_SLAM2代码阅读(2)--Tracking线程 1. 说明 2. 简介 2.1 Tracking 流程 2.2 Tracking 线程的二三四 2.2.1 Tracking 线程的二种模式 ...

最新文章

  1. datagrid的正反双向排序
  2. 编码gbk的不可映射字符_Python基础:编码表和字符的故事
  3. 如何使用xp_cmdshell扩展过程
  4. apache POI技术的使用
  5. openai-gpt_GPT-3不会承担您的编程工作
  6. Java Jad 反编译class文件
  7. 在word里批量插入由文件创建对象,word宏定义批量插入对象
  8. linux中MIB与MB单位的区别
  9. AI制作ICON流程
  10. Archlinux下对ape文件自动分轨并转mp3
  11. Table is marked as crashed and should be repaire (
  12. php中求解二元一次方程,PHP实现二元一次方程式的求解
  13. 小米11刷root记录
  14. AutoJs学习-读写手机联系人
  15. Dremel的学习与理解
  16. DM数据库配置开机自启动
  17. 《kafka面试100例 -6》如果在/admin/delete_topics/中手动写入一个节点会不会正常删除Topic
  18. 国内哪个域名注册商比较好?怎样选择域名注册商?
  19. 大厂面试核心知识点梳理
  20. XenApp / XenDesktop 7.6 初体验九 Director

热门文章

  1. 网易CEO丁磊:创业只是按自己的意图做事
  2. 在透视投影中物体z分量大小的变化
  3. EEROR:Windows named pipe error: The system cannot find the file specified. (code:2)
  4. 关于操作系统中的调度
  5. 任务计划执行结果0x0 0x1 0x4的意思与win2008系统计划任务用法
  6. 量化交易如何选择云服务器,如何在本地远程开发与调试云服务器程序
  7. ffmpeg文件名含特殊字符引起的问题
  8. 免费指纹浏览器怎么样,免费指纹浏览器版可以修改浏览器指纹吗
  9. 对比Tornado和Twisted
  10. ubuntu安装软件时,status-code=409报错解决方案