• View-of-Delft数据集的评估函数简单介绍


    View-of-Delft(以下简称VoD)的官方数据集简介与Dev-kit的github页面:GitHub - tudelft-iv/view-of-delft-dataset

    Dataset Preparation | The View of Delft dataset

    VoD数据集文件介绍:View-of-Delft数据集文件学习

            VoD数据集采用了和KITTI数据集相同的评估指标(AP与AOS),其评估函数位于vod/evaluation/evaluate.py中。

    1.预测结果的保存

            观察Evaluation.evaluate函数:

    1. class Evaluation:
    2. def __init__(self, test_annotation_file):
    3. self.test_annotation_file = test_annotation_file
    4. def evaluate(self, result_path, current_class=None, score_thresh=-1):
    5. ...
    6. dt_annotations = kitti.get_label_annotations(result_path, val_image_ids) #获取预测结果
    7. ...
    8. gt_annotations = kitti.get_label_annotations(self.test_annotation_file, val_image_ids) # 获取标注信息
    9. ... # 进行评估

            可以看到,评估前使用同一函数(get_label_annotations)获取了预测和标注信息,可推测预测文件和标注文件应该具有相同的名称和排布格式。因此,模型的预测需要被保存在一个文件夹下,每一帧对应一个txt文件,其中每一行包含16项,代表一个预测边界框,详见View-of-Delft数据集文件学习的2.3节。

    2.评估函数的具体输入

            具体观察上面提到的get_label_annotations函数,可知输出的gt_annotations/dt_annotations应该均是长度为总帧数的列表,且每一个元素是一个字典:

    1. {
    2. 'name': List[str], # 列表长为M
    3. 'truncated': array(M,1),
    4. 'occluded': array(M,1),
    5. 'alpha': array(M,1),
    6. 'bbox': array(M,4),
    7. 'dimensions': array(M,3), # HWL->LHW 相机坐标系下的边界框尺寸顺序
    8. 'location': array(M,3),
    9. 'rotation_y': array(M,1),
    10. 'score': array(M,1)
    11. }

    其中MM为预测/真实边界框数。注意边界框是表示在相机坐标系下的。

    3.评估函数的设置

            Evaluation.evaluate函数中调用评估函数的代码为:

    get_official_eval_result(gt_annotations, dt_annotations, current_class, custom_method=0)

    其中current_class为需要评估的类别名称列表;custom_method可为0或3(1和2暂未实现),分别代表在整个标注区域内评估以及在可驾驶区域内评估

    4.评估函数的输出

            观察get_official_eval_result函数,发现其输出的格式为{'entire_area':dict()}(custom_method=0)或{'roi':dict()}(custom_method=3)。其中内层字典dict()含有各类别的3D/BEV AP值和AOS值,键值对的形式为

    f'{类别名}_{指标}_all': float       # 指标为aos/3d/bev之一

    若输入current_class的长度为NcNc,则内层字典含有3Nc项元素。

            观察get_official_eval_result函数能够进一步发现,VoD数据集仅能对前6个类别(Car, Pedestrian, Cyclist, rider, bicycle, bicycle_rack)进行评估,且仅考虑了低标准(overlap_0_5)下的、11点插值的BEV AP/3D AP/AOS评估结果,高标准(overlap_0_7)下的、40点插值的评估结果以及图像2D边界框的AP值均未考虑。

  • 相关阅读:
    BIOS MBR UEFI GPT详解
    【多线程】CountDownLatch
    css实现一个温度计图表
    什么是原型链(prototype chain)?如何实现继承?
    Python 快速入门(第3版)1-7章 读书笔记
    1162地图分析
    服务器崩溃,主要都有哪些原因又怎么解决服务器崩溃。
    git-secret:在 Git 存储库中加密和存储密钥(上)
    c语言-浅谈指针(2)
    红队内网攻防渗透:内网渗透之内网对抗:横向移动篇&入口差异&切换上线&IPC管道&AT&SC任务&Impacket套件&UI插件
  • 原文地址:https://blog.csdn.net/weixin_45657478/article/details/127697577