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函数:

class Evaluation:
    def __init__(self, test_annotation_file):
        self.test_annotation_file = test_annotation_file

    def evaluate(self, result_path, current_class=None, score_thresh=-1):
        ...
        dt_annotations = kitti.get_label_annotations(result_path, val_image_ids)    #获取预测结果
        ...       
        gt_annotations = kitti.get_label_annotations(self.test_annotation_file, val_image_ids)    # 获取标注信息
        ...       # 进行评估

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

2.评估函数的具体输入

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

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

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

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的长度为N_c,则内层字典含有3\cdot N_c项元素。

        观察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值均未考虑。

你可能感兴趣的:(深度学习,目标检测,python)