mot_challenge官方代码使用介绍

评估mot17验证集:每个视频序列的后一半帧作为验证集

下载源码git clone https://hub.fastgit.org/JonathonLuiten/TrackEval.git

官网上下载data样例,放在TrackEval/下,结构如下:

data
|-- gt
|   |-- bdd100k
|   |-- davis
|   |-- kitti
|   |-- mot_challenge
|   |   |-- MOT15-train
|   |   |-- MOT16-train
|   |   |-- MOT17-train
|   |   |-- MOT20-train
|   |   |-- MOTS-train
|   |   `-- seqmaps
|   |-- tao
|   `-- youtube_vis
`-- trackers|-- bdd100k|-- davis|-- kitti|-- mot_challenge|   |-- MOT15-train|   |   `-- MPNTrack|   |       `-- data|   |-- MOT16-train|   |   `-- MPNTrack|   |       `-- data|   |-- MOT17-train|   |   |-- MPNTrack|   |   |   `-- data|   |   `-- yourtracker|   |       `-- data|   |-- MOT20-train|   |   `-- MPNTrack|   |       `-- data|   `-- MOTS-train|       `-- track_rcnn|           `-- data|-- tao`-- youtube_vis

评估支持多个数据集,这里只介绍mot_challenge如何使用这个评估。

gt表示每个数据集的标注,mot_challenge中只包含训练集的标注,因为测试集没有标注。

data/gt/mot_challenge/seqmaps里面存储的是每个数据需要测试的视频序列名称,因为mot17包含3种检测器的视频序列,通常我们只使用一个检测器的视频序列,因为gt的标注都一样。这里我使用SDP检测的视频序列,所以当评估mot17验证集时,需要把其他检测器的视频序列名称删除,这样你自己的tracker得到文件就不会报找不到文件错误了。

  1. 修改1:更改seqmaps文件下需要评测的视频序列名称

例如:

源文件内容:data/gt/mot_challenge/seqmaps/MOT17-train.txt

name
MOT17-02-DPM
MOT17-04-DPM
MOT17-05-DPM
MOT17-09-DPM
MOT17-10-DPM
MOT17-11-DPM
MOT17-13-DPM
MOT17-02-FRCNN
MOT17-04-FRCNN
MOT17-05-FRCNN
MOT17-09-FRCNN
MOT17-10-FRCNN
MOT17-11-FRCNN
MOT17-13-FRCNN
MOT17-02-SDP
MOT17-04-SDP
MOT17-05-SDP
MOT17-09-SDP
MOT17-10-SDP
MOT17-11-SDP
MOT17-13-SDP

删除后文件内容:

name
MOT17-02-SDP
MOT17-04-SDP
MOT17-05-SDP
MOT17-09-SDP
MOT17-10-SDP
MOT17-11-SDP
MOT17-13-SDP
  1. 修改2:生成验证集标签:{gt_folder}/{seq}/gt/gt_val_half.txt

代码:

import os.path as osp
import os
import numpy as np
from tqdm import tqdm
def mkdir_if_missing(d):if osp.isfile(d):d = osp.dirname(d)if not osp.exists(d):os.makedirs(d)data_root = osp.join('../data/gt/mot_challenge') # the root directory of the dataset
gt_folder = osp.join(data_root, 'MOT17-train')
seqs_str = '''MOT17-02-SDPMOT17-04-SDPMOT17-05-SDPMOT17-09-SDPMOT17-10-SDPMOT17-11-SDPMOT17-13-SDP'''
seqs = [seq.strip() for seq in seqs_str.split()]def gen_gt_val():for seq in tqdm(seqs):print('start seq {}'.format(seq))seq_info = open(osp.join(gt_folder, seq, 'seqinfo.ini')).read()seqLength = int(seq_info[seq_info.find('seqLength=') + 10:seq_info.find('\nimWidth')])gt_txt = osp.join(gt_folder, seq, 'gt', 'gt.txt')gt = np.loadtxt(gt_txt, dtype=np.float64, delimiter=',')save_val_gt = osp.join(gt_folder, seq, 'gt', 'gt_val_half.txt')val_start = seqLength // 2with open(save_val_gt, 'w') as f:for obj in gt:label_str = '{:d},{:d},{:d},{:d},{:d},{:d},{:d},{:d},{:.6f}\n'.format(int(obj[0]), int(obj[1]), int(obj[2]), int(obj[3]), int(obj[4]), int(obj[5]), int(obj[6]), int(obj[7]), obj[8])if obj[0] > val_start:f.write(label_str)if __name__ == '__main__':gen_gt_val()
  1. 创建yourtrack/data文件夹保存每个视频跟踪的结果。如果是mot17验证集的结果就放入data/trackers/mot_challenge/MOT17-train/yourtracker/data
  2. 运行代码脚本:进入TrackEval/scripts
python run_mot_challenge.py --BENCHMARK MOT17 --TRACKERS_TO_EVAL yourtracker --METRICS CLEAR Identity --USE_PARALLEL True --GT_LOC_FORMAT {gt_folder}/{seq}/gt/gt_val_half.txt

脚本参数含义:

    Eval arguments:'USE_PARALLEL': False, # 是否使用并行'NUM_PARALLEL_CORES': 8,'BREAK_ON_ERROR': True,'PRINT_RESULTS': True,'PRINT_ONLY_COMBINED': False,'PRINT_CONFIG': True,'TIME_PROGRESS': True,'OUTPUT_SUMMARY': True,'OUTPUT_DETAILED': True,'PLOT_CURVES': True,Dataset arguments:'GT_FOLDER': os.path.join(code_path, 'data/gt/mot_challenge/'),  # Location of GT data'TRACKERS_FOLDER': os.path.join(code_path, 'data/trackers/mot_challenge/'),  # 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': 'MOT17',  # Valid: 'MOT17', 'MOT16', 'MOT20', 'MOT15''SPLIT_TO_EVAL': 'train',  # 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 2D_MOT_2015)'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_FOLDERMetric arguments:'METRICS': ['HOTA', 'CLEAR', 'Identity', 'VACE']
# 默认配置,trackeval/datasets/mot_challenge_2d_box.pydefault_config = {'GT_FOLDER': os.path.join(code_path, 'data/gt/mot_challenge/'),  # Location of GT data'TRACKERS_FOLDER': os.path.join(code_path, 'data/trackers/mot_challenge/'),  # 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': 'MOT17',  # Valid: 'MOT17', 'MOT16', 'MOT20', 'MOT15''SPLIT_TO_EVAL': 'train',  # 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_LOC_FORMAT {gt_folder}/{seq}/gt/gt_val_half.txt

需要添加的参数

--BENCHMARK MOT17 # 数据集
--TRACKERS_TO_EVAL yourtracker # 你的tracker名称
--METRICS CLEAR Identity # 使用哪些度量标准

mot_challenge官方评估代码相关推荐

  1. OTB官方评估代码python版本--评估自己跟踪器,对比其他跟踪器

    OTB官方评估代码python版本--评估自己跟踪器,对比其他跟踪器 代码环境准备 环境安装 数据集准备 跑自己跟踪器 结果格式准备 生成json文件并画图 Bonus OTB数据集是目标跟踪领域里面 ...

  2. OTB官方评估代码matlab版本

    OTB最初就是MATLAB版本评估,后来又推出了python版本,不过精度貌似没有matlab高 python版本配置可以参考我另一篇博客:OTB官方评估代码python版本 tracker_benc ...

  3. OTB官方评估代码python版本

    可参考:OTB官方评估代码python版本--评估自己跟踪器,对比其他跟踪器 博主写的很好,按照步骤可以运行 以下有几点注意的地方 1.我是用ubuntu系统,创建虚拟环境安装的python=2.7. ...

  4. Resnet的pytorch官方实现代码解读

    Resnet的pytorch官方实现代码解读 目录 Resnet的pytorch官方实现代码解读 前言 概述 34层网络结构的"平原"网络与"残差"网络的结构图 ...

  5. Windows 10环境下「MSCOCO Captions」评估代码踩坑记录

    文章目录 引言 解决python2→python3.x问题 验证评估代码是否可以正确运行 解决 jar 包运行出错的原因 排查jar包运行出错的原因 解决Could not reserve enoug ...

  6. HttpClient官方sample代码的深入分析(连接池)

    前言   之前一直使用apache的httpclient(4.5.x), 进行http的交互处理. 而httpclient实例则使用了http连接池, 而一旦涉及到连接池, 那会不会在使用上有些隐藏很 ...

  7. 微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法

    微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法 参考文章: (1)微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法 (2)https://www.cnblogs.com/ ...

  8. FFMpeg.AutoGen(1)讲解官方example代码:Main函数、 解码

    FFMpeg是一套C编译的开源工具集.主要用于视频处理,可以编解码视频,建立流媒体服务器等等.官方网站:http://ffmpeg.org/ FFMpeg.AutoGen封装方法以方便C#调用FFmp ...

  9. [Pytorch系列-61]:循环神经网络 - 中文新闻文本分类详解-3-CNN网络训练与评估代码详解

    作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客 本文网址:https://blog.csdn.net/HiWangWenBing/article/detai ...

最新文章

  1. BC28、BC95通过LWM2M连接电信AEP(ctwing)
  2. 细说firewalld和iptables
  3. 堆和堆傻傻分不清?一文告诉你 Java 集合中「堆」的最佳打开方式
  4. [转帖]Sqlcmd使用详解
  5. excel 文档管理服务器,Excel Server Tutorial
  6. kdump和crash的配置方法与内核故障原因分析(一)
  7. jQuery之load方法
  8. java 增 删 查 改_如何对java链表进行增、删、查、改操作
  9. (自用)Linux系统彻底卸载MySQL数据库
  10. 重邮数据结构实验课全部代码目录
  11. matlab进行多光栅衍射仿真,光栅衍射MATLAB仿真.docx
  12. _raw_writel, writel_relaxed 和 writel的区别
  13. RIME鼠须管保姆级五笔配置教程
  14. 远程桌面 服务器握手,《易语言远程控制技术教程》第2课_远程桌面(你的桌面我作主)王军...
  15. 实现用户一键登录的方案有哪些?
  16. 《zw版·delphi与halcon系列原创教程》zw版_THImagex控件函数列表
  17. Python字符串常规操作
  18. 查找该学号学生的成绩。
  19. 选择私有云解决方案,需要考虑哪些要素
  20. 服务器设置邮箱屏蔽,邮箱服务器IP被屏蔽的问题

热门文章

  1. NOI-1.5(14) 人口增长问题
  2. 伤感的一句话 偶尔看到
  3. 淘宝爆款返场什么意思?淘宝爆款返场怎么报名?
  4. 图像矩(Hu矩)简介
  5. 动网论坛后台显示不了
  6. 配置K8S出现以下错误“/proc/sys/net/ipv4/ip_forward contents are not set to 1”
  7. 织梦后台样式php,织梦系统(DEDECMS)后台模板修改
  8. 纪录一年多来项目管理的经历
  9. CCNP-BGP基本配置 理解IBGP和EBGP 学会IBGP全互联 学会用环回口建立EBGP邻居
  10. 720phi10p 和 720p有什么区别_HDMI接口有什么用?HDMI接口相关知识详解