0


(HOTA)多目标跟踪MOT指标计算方法

基本内容:

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

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

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

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


目录结构:

  1. data
  2. ├─ gt
  3. └─ mot_challenge
  4. ├─ MOT17-train
  5. ├─ MOT17-02-DPM
  6. ├─ gt
  7. └─ gt.txt
  8. └─ seqinfo.ini
  9. ├─ MOT17-04-DPM
  10. ├─ gt
  11. └─ gt.txt
  12. └─ seqinfo.ini
  13. ├─ MOT17-05-DPM
  14. ├─ gt
  15. └─ gt.txt
  16. └─ seqinfo.ini
  17. ├─ MOT17-09-DPM
  18. ├─ gt
  19. └─ gt.txt
  20. └─ seqinfo.ini
  21. ├─ MOT17-10-DPM
  22. ├─ gt
  23. └─ gt.txt
  24. └─ seqinfo.ini
  25. ├─ MOT17-11-DPM
  26. ├─ gt
  27. └─ gt.txt
  28. └─ seqinfo.ini
  29. └─ MOT17-13-DPM
  30. ├─ gt
  31. └─ gt.txt
  32. └─ seqinfo.ini
  33. └─ seqmaps
  34. └─ MOT17-train.txt
  35. └─ trackers
  36. └─ mot_challenge
  37. └─ MOT17-train
  38. └─ MOT
  39. └─ data
  40. ├─ MOT17-02-DPM.txt
  41. ├─ MOT17-04-DPM.txt
  42. ├─ MOT17-05-DPM.txt
  43. ├─ MOT17-09-DPM.txt
  44. ├─ MOT17-10-DPM.txt
  45. ├─ MOT17-11-DPM.txt
  46. └─ MOT17-13-DPM.txt
  1. 在下载好的项目主目录中创建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()

  1. default_dataset_config = trackeval.datasets.MotChallenge2DBox.get_default_dataset_config()

修改default_config字典中的值

  1. default_config = {
  2. 'GT_FOLDER': os.path.join(code_path, 'data/gt/demo/'), # Location of GT data
  3. 'TRACKERS_FOLDER': os.path.join(code_path, 'data/trackers/demo/'), # Trackers location
  4. 'OUTPUT_FOLDER': None, # Where to save eval results (if None, same as TRACKERS_FOLDER)
  5. 'TRACKERS_TO_EVAL': None, # Filenames of trackers to eval (if None, all in folder)
  6. 'CLASSES_TO_EVAL': ['pedestrian'], # Valid: ['pedestrian']
  7. 'BENCHMARK': 'DEMO', # Valid: 'MOT17', 'MOT16', 'MOT20', 'MOT15' #'VIS19'
  8. 'SPLIT_TO_EVAL': 'val', # Valid: 'train', 'test', 'all'
  9. 'INPUT_AS_ZIP': False, # Whether tracker input files are zipped
  10. 'PRINT_CONFIG': True, # Whether to print current config
  11. 'DO_PREPROC': True, # Whether to perform preprocessing (never done for MOT15)
  12. 'TRACKER_SUB_FOLDER': 'data', # Tracker files are in TRACKER_FOLDER/tracker_name/TRACKER_SUB_FOLDER
  13. 'OUTPUT_SUB_FOLDER': '', # Output files are saved in OUTPUT_FOLDER/tracker_name/OUTPUT_SUB_FOLDER
  14. 'TRACKER_DISPLAY_NAMES': None, # Names of trackers to display, if None: TRACKERS_TO_EVAL
  15. 'SEQMAP_FOLDER': None, # Where seqmaps are found (if None, GT_FOLDER/seqmaps)
  16. 'SEQMAP_FILE': None, # Directly specify seqmap file (if none use seqmap_folder/benchmark-split_to_eval)
  17. 'SEQ_INFO': None, # If not None, directly specify sequences to eval and their number of timesteps
  18. 'GT_LOC_FORMAT': '{gt_folder}/{seq}/gt/gt.txt', # '{gt_folder}/{seq}/gt/gt.txt'
  19. 'SKIP_SPLIT_FOL': False, # If False, data is in GT_FOLDER/BENCHMARK-SPLIT_TO_EVAL/ and in
  20. # TRACKERS_FOLDER/BENCHMARK-SPLIT_TO_EVAL/tracker/
  21. # If True, then the middle 'benchmark-split' folder is skipped for both.
  22. }
  1. 第一行和第二行分别指的是自己的数据集gt主目录和检测跟踪结果的主目录,第五行是要评价的类别,这里先不提,要与下文进行对应,第六行和第七行就是上述的主目录下的目录(用杠连接起来如下所示)。

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

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

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

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

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

  1. 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即可得到结果。

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


本文转载自: https://blog.csdn.net/qq_45091388/article/details/127880003
版权归原作者 路人1+1 所有, 如有侵权,请联系我们删除。

“(HOTA)多目标跟踪MOT指标计算方法”的评论:

还没有评论