detectron2.evaluation¶
-
class
detectron2.evaluation.
CityscapesInstanceEvaluator
(dataset_name)[source]¶ Bases:
detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator
使用 cityscapes API 在 cityscapes 数据集上评估实例分割结果。
注意
它不适用于多机分布式训练。
它包含同步操作,因此必须在所有进程上运行。
只有主进程运行评估。
-
class
detectron2.evaluation.
CityscapesSemSegEvaluator
(dataset_name)[source]¶ Bases:
detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator
使用 cityscapes API 在 cityscapes 数据集上评估语义分割结果。
注意
它不适用于多机分布式训练。
它包含同步操作,因此必须在所有进程上运行。
只有主进程运行评估。
-
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-eval 和 http://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) –
可选,一个输出目录,用于转储所有在数据集上预测的结果。转储包含两个文件
”instances_predictions.pth” 可以使用 torch.load 加载的文件,包含所有结果,其格式与模型产生的格式相同。
”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。
-
-
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,不考虑角度差异。
-
class
detectron2.evaluation.
DatasetEvaluator
[source]¶ 继承自:
object
数据集评估器的基类。
函数
inference_on_dataset()
在数据集的所有样本上运行模型,并使用 DatasetEvaluator 处理输入/输出。此类将累积输入/输出的信息(通过
process()
),并在最后生成评估结果(通过evaluate()
)。
-
class
detectron2.evaluation.
DatasetEvaluators
(evaluators)[source]¶ Bases:
detectron2.evaluation.evaluator.DatasetEvaluator
包装类,用于组合多个
DatasetEvaluator
实例。此类将每个评估调用分派给它所有的
DatasetEvaluator
。
-
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。
-
-
class
detectron2.evaluation.
COCOPanopticEvaluator
(dataset_name: str, output_dir: Optional[str] = None)[source]¶ Bases:
detectron2.evaluation.evaluator.DatasetEvaluator
使用 PanopticAPI 在 COCO 上评估全景质量指标。它将全景分割预测保存到 output_dir 中
它包含一个同步调用,必须从所有工作进程中调用。
-
class
detectron2.evaluation.
PascalVOCDetectionEvaluator
(dataset_name)[source]¶ Bases:
detectron2.evaluation.evaluator.DatasetEvaluator
评估 Pascal VOC 数据集的 Pascal VOC 风格的 AP。它包含同步,因此必须从所有排名调用。
请注意,AP 的概念可以在不同的方式实现,并且可能不会产生相同的结果。此类模拟了官方 Pascal VOC Matlab API 的实现,并且应该产生类似但与官方 API 不完全相同的结果。
-
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]¶
-
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
-