在Matlab下使用指标评估代码对多目标跟踪结果进行评测

多目标跟踪方面,已经读了不少论文,跑过部分开源代码,最近开始也着手实践,首先将指标评估这方面功夫做了下,虽然已有开源代码和作者对代码使用方法的介绍,但还是顺便记录下步骤方便日后工作。


步骤1:下载指标评估代码


首先在MOTChallenge上可以浏览并且下载历年的训练和测试图像序列,根据需要下载,每年的总文件大小5g左右。主要是包括了图像本身,每一种图像序列就有成百上千帧图像,不同大小的都有,所以整个文件是比较庞大的。如果只需要使用到gt和det,可以在网站上点击get detections and labels only,这里就大概10M不到。

然后在https://bitbucket.org/amilan/motchallenge-devkit/上download代码,大概7M。


下载下来的评估代码里有compile.m、evaluateDetection.m、evaluateTracking.m等文件,seqmaps里存放着包含不同年份train、test或all文件名的txt。



下载下来的数据文件就分为不同类型的测试训练图像序列,train的每类分别含有det(存放public detections)、img(存放图像序列)、gt(存放标注),test的每类则去掉了gt。下面以MOT16的train为例:





步骤2:编译+设置路径


首先用matlab进入到指标评估代码路径下,运行compile.m。

其次,作者已经写好了15年16年和17年Det的demo,只需要修改demo里你的benchmark文件存放路径和你已经生成的对应txt文件存放路径,就可以运行起来。下面以MOT16为例:



设置benchmarkGtDir变量为MOT16的训练文件路径(代码会自动在该文件路径下寻找gt.txt),evaluateTracking函数的第一个变量是使用到的图像序列名(包含在seqmaps文件下,不需要修改),第二个变量是你的算法生成的对应跟踪结果存放路径,剩下的两个变量也不用修改。

benchmarkGtDir变量(路径)下包含的文件有:


第二个变量(路径)下包含的文件有:


步骤3:运行demo


只要路径正确,没有缺漏文件,直接运行刚刚步骤2修改的demo就可以得到结果,下面是我的运行结果(使用没有调过参数的MOT17的IOU17算法生成,出自“High-Speed Tracking-by-Detection Without Using Image Information”,详见多目标跟踪竞赛结果摘要:Multiple Object Tracking Challenge 2017 Results):


可以看到这个结果里包含了17个指标参数,参考MOTChallenge提供的主要指标,可以根据以下这张表来选取需要的参数:



如果还没准备好跟踪结果文件,又想试一试多目标跟踪评估代码的,也可以直接使用代码里附带的一组results,就在代码目录下的res文件夹中,根据年份选择。虽然不知道来源何处,但和IOU17的结果也差不多:),如下:



到此为止,根据benchmark对多目标跟踪结果进行评测告一段落~

  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
MATLAB 是一种强大的科学计算工具,它支持多种数学运算、数据可视化、算法开发等功能,并能够进行复杂的数值模拟和分析。当涉及到多目标优化问题时,MATLAB 提供了一系列的工具和函数来帮助解决这类问题。 多目标优化问题是指需要同时最小化或最大化多个相互冲突的目标函数的问题。例如,在工程设计中,你可能会遇到需要平衡成本、性能和环保等多个因素的情况。在这种情况下,找到一个最优解通常是不可行的,而是寻找一组称为帕累托最优解的解集,即没有任何一个目标可以单独通过改变而得到改善而不损害其他目标。 在 MATLAB 中实现多目标优化通常会利用到 `MultiObjectiveOptimization` 类库或直接使用全局优化工具箱如 `gamultiobj` 函数,它是用于遗传算法求解多目标优化问题的函数之一。下面是一个基本的示例说明如何使用 `gamultiobj` 来解决一个多目标优化问题: ```matlab % 定义两个目标函数 fun = @(x) [x(1)^2 + x(2); -(x(1) - 5)^2]; % 设置初始点 x0 = [0; 0]; % 设定边界条件 lb = [-6; -6]; % 下界 ub = [6; 6]; % 上界 % 调用 gamultiobj 进行多目标优化 options = optimoptions('ga','Display','iter'); % 设置迭代显示选项 [x,fval] = gamultiobj(fun,x0,A,b,[],[],lb,ub,[],options); ``` 在这个例子中,我们有两个目标函数 `fun` 和两个变量。`gamultiobj` 会在满足给定约束条件下搜索并返回一组帕累托最优解以及它们对应的函数值。结果 `x` 包含了所有帕累托最优解的位置,`fval` 则包含了这些解对应的目标函数值。 为了更好地理解多目标 HV 指标,我们可以进一步解释一下。HV (Hypervolume) 是评价多目标优化算法性能的一种指标。它量化的是帕累托前沿覆盖的体积大小,较大的 HV 表明算法产生的 Pareto 前沿覆盖了更多的可行区域,这通常被认为是在多目标优化问题中衡量算法性能的一个好标准。 如果你正在寻找实现 HV 指标的特定代码片段,可以参考一些开源的 MATLAB 库或自定义编写。一般而言,实现 HV 需要对当前的解集进行排序,然后计算出覆盖整个解空间中未被当前集合占据部分的体积。 ### 相关问题: 1. **如何评估多目标优化算法的性能?** 在多目标优化中除了 HV 指标外还有哪些常用指标? 2. **在 MATLAB 中自定义多目标优化函数应该注意哪些事项?** 3. **如何在 MATLAB 中处理多目标优化问题中的约束条件?**
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值