基本内容:

先附上Track_eval下载地址:.GitHub - JonathonLuiten/TrackEval: HOTA (and other) evaluation metrics for Multi-Object Tracking (MOT).

各个指标的原理我在这里不谈了,主要讲一下使用该工程计算指标的方法

我们在计算MOT评价指标的时候需要用到以上这个工程,下载好后,新建工程。

在算多目标跟踪指标的时候,我之前使用了motmetrics这个库,但是这个库不能算最新的HOTA指标,所以我们使用以上工程。


目录结构:

data
├─ gt
│    └─ mot_challenge
│           ├─ MOT17-train
│           │    ├─ MOT17-02-DPM
│           │    │    ├─ gt
│           │    │    │    └─ gt.txt
│           │    │    └─ seqinfo.ini
│           │    ├─ MOT17-04-DPM
│           │    │    ├─ gt
│           │    │    │    └─ gt.txt
│           │    │    └─ seqinfo.ini
│           │    ├─ MOT17-05-DPM
│           │    │    ├─ gt
│           │    │    │    └─ gt.txt
│           │    │    └─ seqinfo.ini
│           │    ├─ MOT17-09-DPM
│           │    │    ├─ gt
│           │    │    │    └─ gt.txt
│           │    │    └─ seqinfo.ini
│           │    ├─ MOT17-10-DPM
│           │    │    ├─ gt
│           │    │    │    └─ gt.txt
│           │    │    └─ seqinfo.ini
│           │    ├─ MOT17-11-DPM
│           │    │    ├─ gt
│           │    │    │    └─ gt.txt
│           │    │    └─ seqinfo.ini
│           │    └─ MOT17-13-DPM
│           │           ├─ gt
│           │           │    └─ gt.txt
│           │           └─ seqinfo.ini
│           └─ seqmaps
│                  └─ MOT17-train.txt
└─ trackers└─ mot_challenge└─ MOT17-train└─ MOT└─ data├─ MOT17-02-DPM.txt├─ MOT17-04-DPM.txt├─ MOT17-05-DPM.txt├─ MOT17-09-DPM.txt├─ MOT17-10-DPM.txt├─ MOT17-11-DPM.txt└─ MOT17-13-DPM.txt

在下载好的项目主目录中创建data目录,需要创建的结构如上所示,其中trackers目录下的txt文件就是我们检测跟踪到的信息,gt下的gt.txt就是我们标定的目标信息文件。注意gt目录中的MOT17-train目录下的这些文件目录名要与trackers下的txt的文件名对应。seqinfo.ini是此视频序列的信息。(在不改变原代码的情况下,请按照上图配置)

上图所示,序列名,视频长度,像素等信息。对于要评测的MOT17数据集这个是给定的。

注意到gt目录下seqmaps中有一个MOT17-train.txt文件,此文件中记录了我们要评测的序列名字,格式如下:

请注意此文件在项目中从第二行开始读取,第一行一定空出来或者写其他标注信息。

运行代码:

打开工程中主目录下的scripts,运行run_mot_challenge.py 则可得到MOTA,MOTP,HOTA等结果。完成对行人跟踪的评测。


使用此项目评价自己的数据集:

该工程不仅可以评价MOT数据集,也可以评价自己数据集,接下来进行讲解:

打开run_mot_challenge.py文件,找到如下代码,进入到get_default_dataset_config()

default_dataset_config = trackeval.datasets.MotChallenge2DBox.get_default_dataset_config()

修改default_config字典中的值

default_config = {'GT_FOLDER': os.path.join(code_path, 'data/gt/demo/'),  # Location of GT data'TRACKERS_FOLDER': os.path.join(code_path, 'data/trackers/demo/'),  # Trackers location'OUTPUT_FOLDER': None,  # Where to save eval results (if None, same as TRACKERS_FOLDER)'TRACKERS_TO_EVAL': None,  # Filenames of trackers to eval (if None, all in folder)'CLASSES_TO_EVAL': ['pedestrian'],  # Valid: ['pedestrian']'BENCHMARK': 'DEMO',  # Valid: 'MOT17', 'MOT16', 'MOT20', 'MOT15' #'VIS19''SPLIT_TO_EVAL': 'val',  # Valid: 'train', 'test', 'all''INPUT_AS_ZIP': False,  # Whether tracker input files are zipped'PRINT_CONFIG': True,  # Whether to print current config'DO_PREPROC': True,  # Whether to perform preprocessing (never done for MOT15)'TRACKER_SUB_FOLDER': 'data',  # Tracker files are in TRACKER_FOLDER/tracker_name/TRACKER_SUB_FOLDER'OUTPUT_SUB_FOLDER': '',  # Output files are saved in OUTPUT_FOLDER/tracker_name/OUTPUT_SUB_FOLDER'TRACKER_DISPLAY_NAMES': None,  # Names of trackers to display, if None: TRACKERS_TO_EVAL'SEQMAP_FOLDER': None,  # Where seqmaps are found (if None, GT_FOLDER/seqmaps)'SEQMAP_FILE': None,  # Directly specify seqmap file (if none use seqmap_folder/benchmark-split_to_eval)'SEQ_INFO': None,  # If not None, directly specify sequences to eval and their number of timesteps'GT_LOC_FORMAT': '{gt_folder}/{seq}/gt/gt.txt',  # '{gt_folder}/{seq}/gt/gt.txt''SKIP_SPLIT_FOL': False,  # If False, data is in GT_FOLDER/BENCHMARK-SPLIT_TO_EVAL/ and in# TRACKERS_FOLDER/BENCHMARK-SPLIT_TO_EVAL/tracker/# If True, then the middle 'benchmark-split' folder is skipped for both.}

第一行和第二行分别指的是自己的数据集gt主目录和检测跟踪结果的主目录,第五行是要评价的类别,这里先不提,要与下文进行对应,第六行和第七行就是上述的主目录下的目录(用杠连接起来如下所示)。

整理下就是gt目录为:data/gt/demo/DEMO-val/

跟踪结果主目录为:data/trackers/demo/DEMO-val ,其他不变动。

在此py文件往下翻找代码找到如下属性,将这个改成自己数据集标号和类别。

self.valid_classes = ['pedestrian'] #有效类别设置
self.class_name_to_class_id = {'pedestrian': 1, 'person_on_vehicle': 2, 'car': 3, 'bicycle': 4, 'motorbike': 5,'non_mot_vehicle': 6, 'static_person': 7, 'distractor': 8, 'occluder': 9,'occluder_on_ground': 10, 'occluder_full': 11, 'reflection': 12}

继续向下翻找找到如下属性。下图为干扰类别项,将其改为自己类别的干扰项,不要为空会报错,博主已试。

distractor_class_names = ['person_on_vehicle', 'static_person', 'distractor', 'reflection'] #这个是mot评价的干扰项

到这里需要改的代码就已经修改完毕了。这个时候还需要添加一些文件到目录中。

对于我的设置,在data/gt/demo中创建seqmaps目录,在该目录下创建DEMO_val.txt,请注意这个文件名字与我们之前设置的default_config字典中的第六行和第七行的值要匹配。

文件内容的类型与之前所描述的MOT17-train.txt中的一致。

接下来就可以参考目录结构中第一个图进行创建目录和文件了,注意gt中序列目录的名字要和trackers的txt文件名对应上。

全部配置完后运行run_mot_challenge.py即可得到结果。

我这里附上一张效果图,仅供参考,计算了一个序列。

(HOTA)多目标跟踪MOT指标计算方法相关推荐

  1. 多目标跟踪(MOT,Multiple Object Tracking)评价指标

    简述 在事先不知道目标数量的情况下,对视频中的行人.轿车.卡车.自行车等多个目标进行检测并赋予ID进行轨迹跟踪.不同的目标拥有不同的ID,以便实现后续的轨迹预测.精准查找等工作. 多目标跟踪中即要面对 ...

  2. MOT 指标汇总 (详讲 说明 含义 )

    HOTA metrics paper:pdf HOTA(高阶跟踪精度)是一种用于评估多目标跟踪 (MOT) 性能的新指标.它旨在克服先前指标(如 MOTA.IDF1 和 Track mAP)的许多限制 ...

  3. 多目标跟踪MOT(Multiple Object Tracking)最全综述

    1.MOT概念 多目标跟踪,一般简称为MOT(Multiple Object Tracking),也有一些文献称作MTT(Multiple Target Tracking).在事先不知道目标数量的情况 ...

  4. 多目标跟踪(MOT)最新综述,一文快速入门

    多目标跟踪(MOT)最新综述,一文快速入门 0 写在前面 去年暑期实习的时候,误打误撞进了一家自动驾驶公司,做了多目标跟踪的工作,工作也是秋招时靠着相关工作拿到了几个算法岗offer,后来毕业课题也换 ...

  5. 多目标跟踪MOT入门

    摘自:一线算法工程师整理!超实用的3大多目标跟踪算法 一线算法工程师整理!超实用的3大多目标跟踪算法https://mp.weixin.qq.com/s/LkfFY5PXzek-KRblo2gKGA ...

  6. [开发技巧]·TopN指标计算方法

    [开发技巧]·TopN指标计算方法 1.概念介绍 在图片分类的中经常可以看到Top-1,Top-5等TopN准确率(或者时错误率). 那这个TopN是什么意思呢?首先Top-1准确率最好理解,就是我们 ...

  7. 多目标跟踪MOT技术总结(持续更新)

    前言:本人作为MOT领域新人,目前已经阅读一定量和质量的paper,尽可能的将这些MOT算法按照不同的技术路径进行分类(2016 SORT之后),并且只对论文的方法做一个大概的总结,具体细节请参照原文 ...

  8. 多目标跟踪MOT踩坑记录

    文章目录 tracking MOT log 0. 数据集 1.Github 2.资源综述 3.工具包Code MOT 工具包 MOT 评估 Python版 4.算法Code deep sort `py ...

  9. 多目标跟踪(MOT)论文随笔-SIMPLE ONLINE AND REALTIME TRACKING (SORT)

    转载请标明链接:http://www.cnblogs.com/yanwei-li/p/8643336.html  网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细 ...

最新文章

  1. OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法
  2. AI女神李飞飞:成为顶尖科学家的人生路
  3. cocos游戏源码怎么用_亲子游戏怎么玩?游戏方式用对了,才会事半功倍
  4. Numpy:数组合矢量计算
  5. Redis进阶-string底层数据结构精讲
  6. win7触摸板怎么关闭_笔记本电脑触摸板如何开关 笔记本电脑触摸板设置方法【详解】...
  7. python debug run 结果不同_Python:PyCharm中运行与调试模式下的不同行为
  8. unixlinux命令,20个 Unix/Linux 命令技巧
  9. 学习数据库Mysql/Oracle/SQL从入门到进阶书籍pdf版吐血整理推荐附网盘链接(珍藏版)
  10. 如何将mp3合并在一起?
  11. python翻页爬取豆瓣影评,翻页爬取豆瓣电影名称和评分
  12. 云服务器有什么用途?新手如何使用云服务器
  13. linux配置https不安全链接,配置HTTPS证书后,浏览器出现不安全提示的解决方法
  14. 第12章 从美国次贷危机中学到什么
  15. 大一C语言入门到底怎么学
  16. 蓝桥杯 2014-5 圆周率
  17. 这才是B站的正确打开方式!
  18. dw8 html视频教程,DW8在网页中轻松插入Flash视频
  19. Moviepy时间变换time_mirror再遇‘OSError: MoviePy error: failed to read the first frame of video file‘解决示例代码
  20. 服装设计Marvelous Designer 11程序安装及注意事项

热门文章

  1. 什么是邓氏编码DUNS NUMBER?
  2. 怎样使用计算机的桌面助手,360桌面助手怎么用
  3. flutter图片聊天泡泡_Flutter 气泡效果合集(全网最全)
  4. fw_setenv的配置及使用
  5. 【管培生培养计划】第一个月的培养记录
  6. java金额三位一撇方法_Java数据格式化问题
  7. canvas - 基础知识 - 绘制剪纸图形
  8. MDK5 nRF BLE(蓝牙低功耗)
  9. 自动化成本高?那么如何获得最高的投资回报呢?
  10. 小程序(十)签到业务流程分析