detectron2.evaluation

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

Bases: detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator

使用 cityscapes API 在 cityscapes 数据集上评估实例分割结果。

注意

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

  • 它包含同步操作,因此必须在所有进程上运行。

  • 只有主进程运行评估。

process(inputs, outputs)[source]
evaluate()[source]
返回

dict – 具有键 “segm”,其值为包含 “AP” 和 “AP50” 的 dict。

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

Bases: detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator

使用 cityscapes API 在 cityscapes 数据集上评估语义分割结果。

注意

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

  • 它包含同步操作,因此必须在所有进程上运行。

  • 只有主进程运行评估。

process(inputs, outputs)[source]
evaluate()[source]
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)[source]

Bases: 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)[source]
参数
  • 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 固定和 AP 池中(参见 https://arxiv.org/pdf/2102.01066.pdf)。这不会影响关键点评估。

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

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

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

reset()[source]
process(inputs, outputs)[source]
参数
  • inputs – COCO 模型的输入(例如,GeneralizedRCNN)。它是一个字典列表。每个字典对应一个图像,并包含诸如 “height”、”width”、”file_name”、”image_id” 之类的键。

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

evaluate(img_ids=None)[source]
参数

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)[source]

Bases: detectron2.evaluation.coco_evaluation.COCOEvaluator

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

process(inputs, outputs)[source]
参数
  • inputs – COCO 模型的输入(例如,GeneralizedRCNN)。它是一个字典列表。每个字典对应一个图像,并包含诸如 “height”、”width”、”file_name”、”image_id” 之类的键。

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

instances_to_json(instances, img_id)[source]
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
    ...
参数
  • inputs (list) – 用于调用模型的输入。

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

evaluate()[source]

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

返回

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

  • 键:任务名称(例如,bbox)

  • 值:{指标名称:得分} 的字典,例如:{“AP50”: 80}

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

Bases: detectron2.evaluation.evaluator.DatasetEvaluator

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

此类将每个评估调用分派给它所有的 DatasetEvaluator

__init__(evaluators)[source]
参数

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

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

一个上下文,其中模型暂时更改为 eval 模式,并在之后恢复到之前的模式。

参数

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 上运行模型,并使用评估器评估指标。还准确地对 model.__call__ 的推理速度进行基准测试。模型将在 eval 模式下使用。

参数
  • model (callable) –

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

    如果它是一个 nn.Module,它将暂时设置为 eval 模式。如果你希望在 training 模式下评估模型,你可以包装给定的模型并覆盖它对 .eval().train() 的行为。

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

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

返回

evaluator.evaluate() 的返回值

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

Bases: detectron2.evaluation.evaluator.DatasetEvaluator

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

__init__(dataset_name, tasks=None, distributed=True, output_dir=None, *, max_dets_per_image=None)[source]
参数
  • dataset_name (str) – 要评估的数据集的名称。它必须具有以下对应的元数据:“json_file”:LVIS 格式注释的路径

  • tasks (tuple[str]) – 在给定配置下可以评估的任务。任务是“bbox”、“segm”之一。默认情况下,将从预测中自动推断这一点。

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

  • output_dir (str) – 可选,用于转储结果的输出目录。

  • max_dets_per_image (None or int) – 评估 AP 时每张图像中最大检测数的限制。默认情况下,LVIS 数据集的限制为 300。

reset()[source]
process(inputs, outputs)[source]
参数
  • inputs – LVIS 模型的输入(例如,GeneralizedRCNN)。它是一个字典列表。每个字典对应于一张图像,并包含“height”、“width”、“file_name”、“image_id”之类的键。

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

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

Bases: detectron2.evaluation.evaluator.DatasetEvaluator

使用 PanopticAPI 在 COCO 上评估全景质量指标。它将全景分割预测保存到 output_dir

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

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

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

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

Bases: detectron2.evaluation.evaluator.DatasetEvaluator

评估 Pascal VOC 数据集的 Pascal VOC 风格的 AP。它包含同步,因此必须从所有排名调用。

请注意,AP 的概念可以在不同的方式实现,并且可能不会产生相同的结果。此类模拟了官方 Pascal VOC Matlab API 的实现,并且应该产生类似但与官方 API 不完全相同的结果。

__init__(dataset_name)[source]
参数

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

reset()[source]
process(inputs, outputs)[source]
evaluate()[source]
返回

dict – 具有键“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]

Bases: 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]
参数
  • dataset_name (str) – 要评估的数据集的名称。

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

  • output_dir (str) – 用于转储结果的输出目录。

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

  • num_classes – 已弃用的参数

  • ignore_label – 已弃用的参数

reset()[source]
process(inputs, outputs)[source]
参数
  • inputs – 模型的输入。它是一个字典列表。每个字典对应于一个图像,并包含“height”、“width”、“file_name”等键。

  • outputs – 模型的输出。它要么是语义分割预测列表(Tensor [H, W]),要么是包含“sem_seg”键的字典列表,该键包含相同格式的语义分割预测。

evaluate()[source]

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

  • 跨类别平均的平均交并比 (mIoU)

  • 频率加权 IoU (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 的格式打印主要指标,以便它们易于复制粘贴到电子表格中。

参数

results (OrderedDict[dict]) – task_name -> {metric -> score} 无序字典也可以打印,但以任意顺序

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

results (OrderedDict[dict]) – task_name -> {metric -> score}

返回

bool – 验证是否成功