MOT多目标跟踪评价指标代码py-motmetrics

博客先提及多目标跟踪评价指标及MOT数据集格式相关文章,接着介绍MOT格式示例。随后对多目标跟踪评价指标代码进行说明,包括项目地址、简便检测方法、代码流程,还列举了评价指标。最后给出单个和多个输出的例子。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

先看两篇文章:多目标跟踪评价指标介绍1多目标跟踪评价指标介绍2MOT数据集格式介绍
在这里插入图片描述
MOT的格式,例如gt.txt:

1,0,1255,50,71,119,1,1,1
2,0,1254,51,71,119,1,1,1
3,0,1253,52,71,119,1,1,1
...

例如test.txt:

1,1,1240.0,40.0,120.0,96.0,0.999998,-1,-1,-1
2,1,1237.0,43.0,119.0,96.0,0.999998,-1,-1,-1
3,1,1237.0,44.0,117.0,95.0,0.999998,-1,-1,-1
...

代码介绍

项目地址,其中多个test衡量代码可以参考eval_motchallenge.py

以下介绍简便检测方法:

  • 首先pip install motemetrics
  • 代码的大概流程是:使用mm.io.loadtxt()导入gt.txt和test.txt文件,然后使用mm.utils.compare_to_groundtruth()创建一个accumulator,再使用mh.compute()进行计算,最终通过mm.io.render_summary()得到规范化格式的输出。
import motmetrics as mm
import numpy as np 
import os
#评价指标
metrics = list(mm.metrics.motchallenge_metrics)
#导入gt和ts文件
gt_file="/path/to/gt/gt.txt"
ts_file="/path/to/test/0000.txt"
gt=mm.io.loadtxt(gt_file, fmt="mot15-2D", min_confidence=1)
ts=mm.io.loadtxt(ts_file, fmt="mot15-2D")
name=os.path.splitext(os.path.basename(ts_file))[0]
#计算单个acc
acc=mm.utils.compare_to_groundtruth(gt, ts, 'iou', distth=0.5)
mh = mm.metrics.create()
summary = mh.compute(acc, metrics=metrics, name=name)
print(mm.io.render_summary(summary, formatters=mh.formatters,namemap=mm.io.motchallenge_metric_names))

其中评价指标metrics有:

['idf1', 'idp', 'idr', 'recall', 'precision', 'num_unique_objects', 'mostly_tracked', 'partially_tracked', 'mostly_lost', 'num_false_positives', 'num_misses', 'num_switches', 'num_fragmentations', 'mota', 'motp', 'num_transfer', 'num_ascend', 'num_migrate']

创建accumulator

  • 单个:acc=mm.utils.compare_to_groundtruth(gt, ts, 'iou', distth=0.5)
  • 多个:accs=[],然后循环ts append到acc里:accs.append(mm.utils.compare_to_groundtruth(gt, ts, 'iou', distth=0.5))

计算accumulatormh = mm.metrics.create()

  • 单个:summary = mh.compute(acc, metrics=metrics, name=name)
  • 多个:summary = mh.compute_many(accs, metrics=metrics, name=names)

通过mm.io.render_summary得到对应格式的输出:

  • 转化成短名称namemap=mm.io.motchallenge_metric_names
    {'idf1': 'IDF1', 'idp': 'IDP', 'idr': 'IDR', 'recall': 'Rcll', 'precision': 'Prcn', 'num_unique_objects': 'GT', 'mostly_tracked': 'MT', 'partially_tracked': 'PT', 'mostly_lost': 'ML', 'num_false_positives': 'FP', 'num_misses': 'FN', 'num_switches': 'IDs', 'num_fragmentations': 'FM', 'mota': 'MOTA', 'motp': 'MOTP', 'num_transfer': 'IDt', 'num_ascend': 'IDa', 'num_migrate': 'IDm'}
    
  • 转化精度格式:formatters=mh.formatters

输出例子

单个输出例子:
在这里插入图片描述
如果直接print(summary),不规范化输出就会:
在这里插入图片描述

如果不加入formatters规范化就是:
在这里插入图片描述
多个输出例子:
在这里插入图片描述

评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nooobme

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值