detectron2评估

class detectron2.evaluation.CityscapesInstanceEvaluator(dataset_name)[source]

基类: detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator

使用cityscapes API评估城市景观数据集上的实例分割结果。

注意

  • 它不适用于多机分布式训练。

  • 它包含一个同步机制,因此必须在所有节点上使用。

  • 仅主进程运行评估。

process(inputs, outputs)[源代码]
evaluate()[源代码]
Returns

字典 – 包含一个键"segm",其值为包含"AP"和"AP50"的字典。

class detectron2.evaluation.CityscapesSemSegEvaluator(dataset_name)[源代码]

基类: detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator

使用cityscapes API评估城市景观数据集上的语义分割结果。

注意

  • 它不适用于多机分布式训练。

  • 它包含同步机制,因此必须在所有节点上使用。

  • 仅主进程运行评估。

process(inputs, outputs)[源代码]
evaluate()[源代码]
class detectron2.evaluation.COCOEvaluator(dataset_name, tasks=None, distributed=True, output_dir=None, *, max_dets_per_image=None, use_fast_impl=True, kpt_oks_sigmas=(), allow_cached_coco=True)[源代码]

基类: detectron2.evaluation.evaluator.DatasetEvaluator

使用COCO指标评估对象提议的AR(平均召回率)、实例检测/分割的AP(平均精度)以及关键点检测输出的AP(平均精度)。 请参阅http://cocodataset.org/#detection-evalhttp://cocodataset.org/#keypoints-eval了解其评估指标。 指标范围从0到100(而非0到1),其中-1或NaN表示该指标无法计算(例如由于未做出任何预测)。

除了COCO之外,该评估器还能支持任何边界框检测、实例分割或关键点检测数据集。

__init__(dataset_name, tasks=None, distributed=True, output_dir=None, *, max_dets_per_image=None, use_fast_impl=True, kpt_oks_sigmas=(), allow_cached_coco=True)[源代码]
Parameters
  • dataset_name (str) –

    要评估的数据集名称。 它必须具有以下对应的元数据之一:

    "json_file":COCO格式标注文件的路径

    或者它必须是detectron2的标准数据集格式, 以便可以自动转换为COCO格式。

  • tasks (tuple[str]) – 在给定配置下可评估的任务。任务可以是"bbox"、"segm"或"keypoints"之一。默认情况下,将从预测结果自动推断此参数。

  • distributed (True) – 如果为True,将从所有进程收集结果并在主进程中运行评估。否则,仅评估当前进程中的结果。

  • output_dir (str) –

    可选参数,用于存储数据集上所有预测结果的输出目录。该目录包含两个文件:

    1. "instances_predictions.pth" 文件,可通过 torch.load 加载,包含模型生成的所有结果,格式与模型输出一致。

    2. "coco_instances_results.json" 文件,采用COCO结果格式的json文件。

  • max_dets_per_image (int) - 限制每张图像的最大检测数量。 在COCO数据集中默认限制为100,但可以根据需要自定义为更大值,如评估指标AP fixed和AP pool中所需(参见https://arxiv.org/pdf/2102.01066.pdf) 这不会影响关键点评估。

  • use_fast_impl (bool) – 使用快速但非官方的实现来计算AP。 虽然结果应该与COCO API中的官方实现非常接近, 但仍建议使用官方API计算结果以用于论文发表。该快速实现也会占用更多内存。

  • kpt_oks_sigmas (list[float]) – 用于计算关键点OKS的sigma值。 参见 http://cocodataset.org/#keypoints-eval 当为空时,将使用COCO中的默认值。 否则其长度应与ROI_KEYPOINT_HEAD.NUM_KEYPOINTS相同。

  • allow_cached_coco (bool) - 是否使用之前验证运行中缓存的coco json数据。如果需要使用不同的验证数据,应将其设为False。默认为True。

reset()[source]
process(inputs, outputs)[源代码]
Parameters
  • inputs – COCO模型的输入(例如GeneralizedRCNN)。 这是一个字典列表。每个字典对应一张图像, 包含"height"(高度)、"width"(宽度)、"file_name"(文件名)、"image_id"(图像ID)等键。

  • outputs – COCO模型的输出。它是一个字典列表,其中键为"instances",包含Instances

evaluate(img_ids=None)[源代码]
Parameters

img_ids – 要评估的图像ID列表。默认为None表示对整个数据集进行评估

class detectron2.evaluation.RotatedCOCOEvaluator(dataset_name, tasks=None, distributed=True, output_dir=None, *, max_dets_per_image=None, use_fast_impl=True, kpt_oks_sigmas=(), allow_cached_coco=True)[源代码]

基类: detectron2.evaluation.coco_evaluation.COCOEvaluator

使用类似COCO的指标和API评估目标提议/实例检测输出,支持旋转框。 注意:此处仅使用IOU且不考虑角度差异。

process(inputs, outputs)[source]
Parameters
  • inputs – COCO模型的输入(例如GeneralizedRCNN)。 这是一个字典列表。每个字典对应一张图像, 包含"height"(高度)、"width"(宽度)、"file_name"(文件名)、"image_id"(图像ID)等键值。

  • outputs – COCO模型的输出。它是一个字典列表,其中键为"instances",包含Instances

instances_to_json(instances, img_id)[源代码]
class detectron2.evaluation.DatasetEvaluator[source]

基类: object

数据集评估器的基类。

函数 inference_on_dataset() 会对数据集中的所有样本运行模型,并使用 DatasetEvaluator 来处理输入/输出。

该类将累积输入/输出的信息(通过process()),并在最后生成评估结果(通过evaluate())。

reset()[source]

为新一轮评估做准备。 应在开始一轮评估之前调用。

process(inputs, outputs)[source]

处理输入和输出的配对。 如果它们包含批次数据,可以使用zip逐个消耗这些配对:

for input_, output in zip(inputs, outputs):
    # do evaluation on single input/output pair
    ...
Parameters
  • inputs (list) - 用于调用模型的输入项。

  • outputs (list) – model(inputs)的返回值

evaluate()[source]

在处理完所有输入/输出对后,评估/总结性能。

Returns

dict – 新的评估器类可以返回任意格式的字典,只要用户能够处理结果。 在我们的train_net.py中,我们期望以下格式:

  • key: 任务名称(例如bbox)

  • value: 一个包含{指标名称: 分数}的字典,例如:{"AP50": 80}

class detectron2.evaluation.DatasetEvaluators(evaluators)[source]

基类: detectron2.evaluation.evaluator.DatasetEvaluator

包装类,用于组合多个DatasetEvaluator实例。

该类将所有评估调用分派给其所有的DatasetEvaluator

__init__(evaluators)[source]
Parameters

evaluators (list) – 要组合的评估器列表。

reset()[source]
process(inputs, outputs)[source]
evaluate()[source]
detectron2.evaluation.inference_context(model)[source]

一个上下文环境,其中模型暂时切换到评估模式,并在之后恢复到之前的模式。

Parameters

model – 一个 torch 模块

detectron2.evaluation.inference_on_dataset(model, data_loader, evaluator: Optional[Union[detectron2.evaluation.evaluator.DatasetEvaluator, List[detectron2.evaluation.evaluator.DatasetEvaluator]]])[source]

在data_loader上运行模型,并使用evaluator评估指标。 同时精确地基准测试model.__call__的推理速度。 该模型将在评估模式下使用。

Parameters
  • model (callable) –

    一个可调用对象,它接收来自data_loader的对象并返回一些输出。

    如果它是一个nn.Module,将会被临时设置为eval模式。 如果你想以training模式评估模型,可以封装给定模型并重写其.eval().train()的行为。

  • data_loader - 一个具有长度的可迭代对象。它生成的元素将成为模型的输入。

  • evaluator – 要运行的评估器。如果只想进行基准测试而不想进行任何评估,请使用None

Returns

evaluator.evaluate()的返回值

class detectron2.evaluation.LVISEvaluator(dataset_name, tasks=None, distributed=True, output_dir=None, *, max_dets_per_image=None)[source]

基类: detectron2.evaluation.evaluator.DatasetEvaluator

使用LVIS的指标和评估API来评估对象提议和实例检测/分割的输出。

__init__(dataset_name, tasks=None, distributed=True, output_dir=None, *, max_dets_per_image=None)[source]
Parameters
  • dataset_name (str) – 要评估的数据集名称。 它必须包含以下对应的元数据: "json_file": LVIS格式标注文件的路径

  • tasks (tuple[str]) - 在给定配置下可评估的任务。任务可以是"bbox"或"segm"之一。默认情况下,将从预测结果自动推断此值。

  • distributed (True) - 如果为True,将从所有进程收集结果进行评估。否则,只在当前进程中评估结果。

  • output_dir (str) – 可选参数,用于指定输出结果的目录。

  • max_dets_per_image (Noneint) – 在评估AP时限制每张图像的最大检测数量 该限制默认来自LVIS数据集,值为300。

reset()[source]
process(inputs, outputs)[source]
Parameters
  • inputs – LVIS模型的输入(例如GeneralizedRCNN)。 这是一个字典列表。每个字典对应一张图像, 包含"height"(高度)、"width"(宽度)、"file_name"(文件名)、"image_id"(图像ID)等键值。

  • outputs – LVIS模型的输出。它是一个字典列表,其中键为"instances",包含Instances

evaluate()[source]
class detectron2.evaluation.COCOPanopticEvaluator(dataset_name: str, output_dir: Optional[str] = None)[source]

基类: detectron2.evaluation.evaluator.DatasetEvaluator

使用PanopticAPI在COCO数据集上评估全景质量指标。 它会将全景分割预测结果保存在output_dir目录中

它包含一个同步调用,必须从所有工作线程调用。

__init__(dataset_name: str, output_dir: Optional[str] = None)[source]
Parameters
  • dataset_name – 数据集名称

  • output_dir – 用于保存评估结果的输出目录。

reset()[source]
process(inputs, outputs)[source]
evaluate()[source]
class detectron2.evaluation.PascalVOCDetectionEvaluator(dataset_name)[source]

基类: detectron2.evaluation.evaluator.DatasetEvaluator

评估Pascal VOC数据集的Pascal VOC风格AP。 它包含一个同步过程,因此必须从所有进程调用。

请注意,AP(平均精度)的概念可以通过不同方式实现,结果可能并不完全相同。该类模拟了官方Pascal VOC Matlab API的实现方式,应该能产生与官方API相似但不完全相同的结果。

__init__(dataset_name)[source]
Parameters

dataset_name (str) – 数据集名称,例如"voc_2007_test"

reset()[source]
process(inputs, outputs)[source]
evaluate()[source]
Returns

字典 – 包含一个键"segm",其值为一个包含"AP"、"AP50"和"AP75"的字典。

class detectron2.evaluation.SemSegEvaluator(dataset_name, distributed=True, output_dir=None, *, sem_seg_loading_fn=<function load_image_into_numpy_array>, num_classes=None, ignore_label=None)[source]

基类: detectron2.evaluation.evaluator.DatasetEvaluator

评估语义分割指标。

__init__(dataset_name, distributed=True, output_dir=None, *, sem_seg_loading_fn=<function load_image_into_numpy_array>, num_classes=None, ignore_label=None)[source]
Parameters
  • dataset_name (str) – 要评估的数据集名称。

  • distributed (bool) – 如果为True,将从所有进程收集结果进行评估。否则,仅在当前进程中评估结果。

  • output_dir (str) - 用于存放结果的输出目录。

  • sem_seg_loading_fn – 用于读取语义分割文件并加载到numpy数组的函数。默认已提供,但项目可以自定义。

  • num_classes – 已弃用的参数

  • ignore_label – 已弃用的参数

reset()[source]
process(inputs, outputs)[source]
Parameters
  • inputs – 模型的输入。 它是一个字典列表。每个字典对应一张图像,包含诸如"height"、"width"、"file_name"等键。

  • outputs – 模型的输出。它可以是语义分割预测的列表(张量[H, W]),或者是包含键"sem_seg"的字典列表,该键以相同格式存储语义分割预测结果。

evaluate()[source]

评估标准语义分割指标 (http://cocodataset.org/#stuff-eval):

  • 各类别平均交并比 (mIoU)

  • 频率加权交并比 (fwIoU)

  • 各类别平均像素准确率(mACC)

  • 像素精度 (pACC)

encode_json_sem_seg(sem_seg, input_file_name)[source]

将语义分割转换为COCO stuff格式,分割区域编码为RLE格式。 参见http://cocodataset.org/#format-results

detectron2.evaluation.print_csv_format(results)[source]

以类似Detectron的格式打印主要指标,便于复制粘贴到电子表格中。

Parameters

结果 (有序字典[字典]) – 任务名称 -> {指标 -> 分数} 无序字典也可以打印,但顺序是任意的

detectron2.evaluation.verify_results(cfg, results)[source]
Parameters

结果 (有序字典[字典]) – 任务名称 -> {指标 -> 分数}

Returns

bool - 验证是否成功