detectron2评估¶
-
class
detectron2.evaluation.CityscapesInstanceEvaluator(dataset_name)[source]¶ 基类:
detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator使用cityscapes API评估城市景观数据集上的实例分割结果。
注意
它不适用于多机分布式训练。
它包含一个同步机制,因此必须在所有节点上使用。
仅主进程运行评估。
-
class
detectron2.evaluation.CityscapesSemSegEvaluator(dataset_name)[源代码]¶ 基类:
detectron2.evaluation.cityscapes_evaluation.CityscapesEvaluator使用cityscapes API评估城市景观数据集上的语义分割结果。
注意
它不适用于多机分布式训练。
它包含同步机制,因此必须在所有节点上使用。
仅主进程运行评估。
-
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-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)[源代码]¶ - Parameters
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 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。
-
-
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且不考虑角度差异。
-
class
detectron2.evaluation.DatasetEvaluator[source]¶ 基类:
object数据集评估器的基类。
函数
inference_on_dataset()会对数据集中的所有样本运行模型,并使用 DatasetEvaluator 来处理输入/输出。该类将累积输入/输出的信息(通过
process()),并在最后生成评估结果(通过evaluate())。
-
class
detectron2.evaluation.DatasetEvaluators(evaluators)[source]¶ 基类:
detectron2.evaluation.evaluator.DatasetEvaluator包装类,用于组合多个
DatasetEvaluator实例。该类将所有评估调用分派给其所有的
DatasetEvaluator。
-
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 (None 或 int) – 在评估AP时限制每张图像的最大检测数量 该限制默认来自LVIS数据集,值为300。
-
-
class
detectron2.evaluation.COCOPanopticEvaluator(dataset_name: str, output_dir: Optional[str] = None)[source]¶ 基类:
detectron2.evaluation.evaluator.DatasetEvaluator使用PanopticAPI在COCO数据集上评估全景质量指标。 它会将全景分割预测结果保存在output_dir目录中
它包含一个同步调用,必须从所有工作线程调用。
-
class
detectron2.evaluation.PascalVOCDetectionEvaluator(dataset_name)[source]¶ 基类:
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]¶ 基类:
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]¶ - 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
-