sort目标跟踪算法

  • 概述
  • sort算法流程图
  • sort关键参数
  • sort过程代码
  • 匈牙利算法

概述

sort(Simple Online and Realtime Tracking),简单的在线实时跟踪,常用于多目标追踪(Multiple Object Tracking)中,其中不涉及到图像识别、特征匹配等算法,sort算法以目标检测结果作为输入,用数据关联算法(匈牙利算法)进行目标匹配,并以卡尔曼进行目标预测,通过IOU也建立目标间的关系,其主要目的在于连续跟踪目标的ID,优点是跟踪速度快。

sort算法流程图

sort关键参数

self.max_age = 1             # 在跟踪列表中有几帧没有关联匹配成功就从跟踪列表中移除,否则就将失去关联计数加1
self.min_hits = 3            # 连续3帧以上都匹配成功,则作为跟踪结果输出
self.iou_threshold = 0.3     # IOU匹配的阈值
self.trackers = []           # 跟踪缓存
self.frame_count = 0         # 帧率统计

sort过程代码

1.从现有跟踪器中获取预测位置

const auto get_pred_boxes = [] (auto &trackers) {std::vector<cv::Rect2f> boxes;boxes.reserve(trackers.size());for (auto it = trackers.begin(); it != trackers.end();){const cv::Rect2f &box = (*it)->Predict();if (box.x >= 0 && box.y >= 0){boxes.emplace_back(box);it++;}else{it = trackers.erase(it);}}return boxes;
};const std::vector<cv::Rect2f> &pred_boxes = get_pred_boxes(trackers_);

2.得到所有检测框与跟踪框的匹配矩阵

std::vector<int> assignment;
const auto trk_num = pred_boxes.size();
const auto det_num = detected_box.size();
const auto &iou_matrix = CalcIou(detected_box, pred_boxes);// 使用匈牙利算法进行分配问题
hung_algo_.Solve(iou_matrix, trk_num, det_num, assignment);// 过滤低IOU的框,得到unmatched_trajectories, unmatched_detections, matched_pairs

3.更新trackers跟踪器

// 对跟踪列表关联成功的检测结果,使用检测结果进行更新
for (unsigned int i = 0; i < matched_pairs.size(); i++)
{// 跟踪列表索引const int trk_idx = matched_pairs[i].x;// 检测列表的索引const int det_idx = matched_pairs[i].y;// 用检测结果的信息来更新跟踪结果trackers_[trk_idx]->Update(detected_box[det_idx]);
}

4.创建并初始化新的跟踪器给没匹配上的检测结果

for (auto umd : unmatched_detections)
{cv::Rect2f rect;rect.x = detected_box[umd].rect.x;rect.y = detected_box[umd].rect.y;rect.width = detected_box[umd].rect.width;rect.height = detected_box[umd].rect.height;trackers_.push_back(std::make_unique<TrackerManager>(rect, counter_));counter_++;
}

匈牙利算法

匈牙利算法是解决二分图最大匹配问题的算法,是一种数据关联算法,其目的在于匹配个数最大化,而不是匹配的准不准问题,所以可能会匹配错误。
它的输入是代价矩阵IOU。

sort目标跟踪算法相关推荐

  1. DeepSort目标跟踪算法

    DeepSort目标跟踪算法是在Sort算法基础上改进的. 首先介绍一下Sort算法 Sort算法的核心便是卡尔曼滤波与匈牙利匹配算法 卡尔曼滤波是一种通过运动特征来预测目标运动轨迹的算法 其核心为五 ...

  2. Siamese-RPN目标跟踪算法

    Siamese-RPN目标跟踪算法 这个比较全:不是具体项目,是个目录 https://github.com/HonglinChu/SiamTrackers 没有预训练: SiamTrackers/4 ...

  3. 目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking 原文:https://zh ...

  4. 目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)

    目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军) 文章链接:https ...

  5. 基于MeanShift的目标跟踪算法及实现

    from: http://blog.csdn.net/jinshengtao/article/details/30258833 一.简介 首先扯扯无参密度估计理论,无参密度估计也叫做非参数估计,属于数 ...

  6. 基于特征点匹配的自适应目标跟踪算法

    基于特征点匹配的自适应目标跟踪算法 2016-01-29 13:11 摘 要:由于实际场景复杂多变,目标在运动过程中往往会出现形变.遮挡等问题,增加了跟踪的难度.为了解决上述问题,提出一种基于特征点匹 ...

  7. 视频目标跟踪算法综述

    视频跟踪:基于对比度分析的目标跟踪.基于匹配的目标跟踪和基于运动检测的目标跟踪       基于对比度分析的目标跟踪:主要利用目标和背景的对比度差异实现目标的检测与跟踪.这类算法按照跟踪参考点的不同可 ...

  8. 基于MeanShift的目标跟踪算法及实现(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/jinshengtao/article/details/30258833 这次将介绍基于MeanShi ...

  9. 基于嵌入式设备的 单目标跟踪算法

    基于嵌入式设备的单目标跟踪实现 最近基于嵌入式设备(Khadas Vim3)做了一套单目标跟踪算法,跟踪效率可以做到每秒25帧左右. 算法运行耗时记录 time is:37.6241 ms time ...

  10. 目标跟踪算法综述与分析

    本人硕士期间研究过10个月左右的目标跟踪算法,刚入门时苦于没人指点,自己每天乱看文章,后来发现看的好多文章都是没有意义的(ps....看了一大堆meanshift,kalman啥的......),做了 ...

最新文章

  1. cobbler网络装机
  2. IBM Storwize V7000 Introduction(1)
  3. 【janino】CompileException Closing single quote missing
  4. javascript优化--01高质量编码
  5. 在Unity中添加图标
  6. mathtype2022数学公式编辑器快捷键及操作技巧分享教程
  7. 下载Google Earth的地图并用ArcMap对其georeferencing
  8. 别爱太满,别睡太晚:寺庙的流量密码与新媒体生意经
  9. 电场在计算机专业的应用,电磁场毕业论文题目范文 数值计算和教学理论方面本科论文范文8000字...
  10. Embase,PubMed,Cochrane,WebOfScience,ScienceDirect检索方法
  11. win10计算机磁盘图标,电脑win10系统磁盘分区ioc图标修改技巧
  12. 天心阁吉他神秘人专访
  13. 蓝桥杯——种植园问题(prev54)
  14. 并发之Striped64(l累加器)
  15. 计算机显示适配器禁用了电脑黑屏,Win10电脑禁用集成显卡后黑屏如何解决_Win10系统禁用集成显卡后黑屏解决方案...
  16. 一文阐述数据科学完整学习路线图
  17. UML之教学管理系统——1、需求分析
  18. Ubuntu服务器远程桌面分辨率低的解决办法
  19. c#编写部署windows服务
  20. java帮助中心_Java | 保利威帮助中心 - Part 9

热门文章

  1. 2021年10月份大厂网络工程师面试笔试题题【推荐收藏】
  2. chrome/firefox插件ie tab,解决无法使用网银的问题
  3. 左程云 Java 笔记--排序
  4. 计算机网络练习题——一起肥学
  5. python编写收入支出明细程序_python 处理微信对账单数据的实例代码
  6. Android BT STACK BTU 和 HCI之间的消息传递
  7. 压垮硬盘的最后一次备份
  8. Windows10系统删除文件夹“找不到该项目”强删方法
  9. HTML-CSS常用元素居中对齐方法
  10. MATLAB中四阶单位矩阵,matlab-线性代数 创建 N阶数量矩阵 N阶单位矩阵 对角矩阵 范德蒙矩阵 等差数列......