detectron2.data

detectron2.data.DatasetCatalog(dict)

一个全局字典,用于存储有关数据集及其获取方式的信息。

它包含一个从字符串(用于标识数据集的名称,例如“coco_2014_train”)到函数的映射,该函数会解析数据集并以list[dict]的格式返回样本。

返回的字典应符合Detectron2数据集格式(详情请参阅DATASETS.md),如果与data/build.py,data/detection_transform.py中的数据加载功能一起使用。

创建此目录的目的是为了通过仅使用配置中的字符串,轻松选择不同的数据集。

DatasetCatalog.register(name, func)
Parameters
  • name (str) – 用于标识数据集的名称,例如"coco_2014_train"。

  • func (callable) - 一个无需参数且返回字典列表的可调用对象。如果多次调用,它必须返回相同的结果。

DatasetCatalog.get(name)

调用已注册的函数并返回其结果。

Parameters

name (str) – 用于标识数据集的名称,例如"coco_2014_train"。

Returns

list[dict] – 数据集标注。

detectron2.data.MetadataCatalog(dict)

MetadataCatalog 是一个全局字典,提供对给定数据集的Metadata的访问。

与特定名称关联的元数据是单例模式:一旦创建,该元数据将保持存在,并在后续调用get(name)时返回。

这类似于全局变量,因此不要滥用它。 它用于存储程序执行过程中恒定且共享的知识,例如:COCO数据集中的类别名称。

MetadataCatalog.get(name)
Parameters

name (str) – 数据集的名称(例如 coco_2014_train)。

Returns

元数据 – 与此名称关联的 Metadata 实例,如果没有可用实例则创建一个空实例。

detectron2.data.build_detection_test_loader(dataset: Union[List[Any], torch.utils.data.Dataset], *, mapper: Callable[[Dict[str, Any]], Any], sampler: Optional[torch.utils.data.Sampler] = None, batch_size: int = 1, num_workers: int = 0, collate_fn: Optional[Callable[[List[Any]], Any]] = None)torch.utils.data.DataLoader[源代码]

类似于build_detection_train_loader,默认批处理大小=1, 采样器为InferenceSampler。该采样器协调所有工作进程 以生成完全相同的样本集合。

Parameters
  • dataset – 一个数据集字典列表,或一个pytorch数据集(可以是映射式或可迭代式)。可以通过使用DatasetCatalog.get()get_detection_dataset_dicts()获取。

  • mapper – 一个可调用对象,它从数据集中获取样本(字典)并返回模型可消费的格式。当使用cfg时,默认选择是DatasetMapper(cfg, is_train=False)

  • sampler - 一个生成索引的采样器,这些索引将应用于dataset。默认为InferenceSampler,它会在所有工作节点间分割数据集。如果dataset是可迭代的,则采样器必须为None。

  • batch_size – 要创建的数据加载器的批次大小。默认为每个工作进程1张图像,因为这是在论文中报告推理时间的标准做法。

  • num_workers – 并行数据加载工作线程的数量

  • collate_fn - 与 torch.utils.data.DataLoader 的参数相同。默认不进行数据整理,直接返回数据列表。

Returns

DataLoader - 一个torch DataLoader,用于加载指定的检测数据集,包含测试时转换和批处理功能。

示例:

data_loader = build_detection_test_loader(
    DatasetRegistry.get("my_test"),
    mapper=DatasetMapper(...))

# or, instantiate with a CfgNode:
data_loader = build_detection_test_loader(cfg, "my_test")
detectron2.data.build_detection_train_loader(dataset, *, mapper, sampler=None, total_batch_size, aspect_ratio_grouping=True, num_workers=0, collate_fn=None, prefetch_factor=None, persistent_workers=False, pin_memory=False)[源代码]

构建一个具有一些默认特性的目标检测数据加载器。

Parameters
  • dataset (listtorch.utils.data.Dataset) – 可以是数据集字典的列表,或者是PyTorch数据集(映射式或可迭代式)。可以通过使用DatasetCatalog.get()get_detection_dataset_dicts()获取。

  • mapper (可调用对象) – 一个可调用对象,它从数据集中获取一个样本(字典)并返回模型可消费的格式。当使用cfg时,默认选择是DatasetMapper(cfg, is_train=True)

  • sampler (torch.utils.data.sampler.SamplerNone) - 一个生成索引的采样器,这些索引将应用于dataset。 如果dataset是映射式的,默认采样器是TrainingSampler,它协调所有工作进程间的无限随机洗牌序列。 如果dataset是可迭代的,则采样器必须为None。

  • total_batch_size (int) – 所有工作节点的总批次大小。

  • aspect_ratio_grouping (bool) – 是否对具有相似宽高比的图像进行分组以提高效率。启用时,要求数据集中的每个元素都是一个包含"width"和"height"键的字典。

  • num_workers (int) – 并行数据加载工作线程的数量

  • collate_fn - 一个决定如何进行批处理的函数,与torch.utils.data.DataLoader的参数相同。默认为不进行合并并返回数据列表。对于小批量大小和简单的数据结构,不合并是可以的。如果您的批量较大且每个样本包含太多小张量,在数据加载器中进行合并会更高效。

Returns

torch.utils.data.DataLoader - 一个数据加载器。它的每个输出是一个长度为total_batch_size / num_workerslist[mapped_element]列表,其中mapped_elementmapper生成。

detectron2.data.get_detection_dataset_dicts(names, filter_empty=True, min_keypoints=0, proposal_files=None, check_consistency=True)[源代码]

加载并准备用于实例检测/分割和语义分割的数据集字典。

Parameters
  • names (strlist[str]) – 一个数据集名称或数据集名称列表

  • filter_empty (bool) – 是否过滤掉没有实例标注的图像

  • min_keypoints (int) – 过滤掉关键点数量少于min_keypoints的图像。设置为0表示不进行过滤。

  • proposal_files (list[str]) - 如果提供,这是一个对象提议文件列表,这些文件与names中的每个数据集相匹配。

  • check_consistency (bool) - 是否检查数据集是否具有一致的元数据。

Returns

list[dict] – 遵循标准数据集字典格式的字典列表。

detectron2.data.load_proposals_into_dataset(dataset_dicts, proposal_file)[源代码]

将预计算的对象提议加载到数据集中。

提案文件应为一个包含以下键的pickled字典:

  • “ids”: list[int] or list[str], 图像ID列表

  • "boxes": list[np.ndarray], 每个都是对应图像ID的Nx4数组形式的边界框

  • “objectness_logits”: list[np.ndarray],每个都是与对应边界框相关的N维目标性评分数组。

  • “bbox_mode”: 边界框数组的BoxMode。默认为 BoxMode.XYXY_ABS

Parameters
  • dataset_dicts (list[dict]) - 以Detectron2数据集格式存储的标注信息。

  • proposal_file (str) – 预计算提案的文件路径,格式为pkl。

Returns

list[dict] – 与dataset_dicts相同的格式,但添加了proposal字段。

detectron2.data.print_instances_class_histogram(dataset_dicts, class_names)[源代码]
Parameters
  • dataset_dicts (list[dict]) - 数据集字典列表。

  • class_names (list[str]) - 类别名称列表(从零开始索引)。

class detectron2.data.Metadata[源代码]

基类: types.SimpleNamespace

一个支持简单属性设置/获取的类。 它旨在存储数据集的元数据并使其全局可访问。

示例:

# somewhere when you load the data:
MetadataCatalog.get("mydataset").thing_classes = ["person", "dog"]

# somewhere when you print statistics or visualize:
classes = MetadataCatalog.get("mydataset").thing_classes
name: str = 'N/A'
as_dict()[源代码]

以字典形式返回所有元数据。 请注意,对返回字典的修改不会反映到Metadata对象上。

set(**kwargs)[源代码]

使用kwargs设置多个元数据。

get(key, default=None)[源代码]

访问一个属性,如果存在则返回其值。 否则返回默认值。

class detectron2.data.DatasetFromList(*args, **kwds)[源代码]

基类: torch.utils.data.Dataset

将列表包装为torch数据集。它会将列表中的元素作为数据生成。

__init__(lst: list, copy: bool = True, serialize: Union[bool, Callable] = True)[源代码]
Parameters
  • lst (list) - 一个包含要生成元素的列表。

  • copy (bool) - 是否在生成元素时进行深拷贝,这样可以在不修改列表中源元素的情况下就地修改结果。

  • serialize (boolcallable) - 是否将存储序列化到其他后端。如果为True,将使用默认的序列化方法;如果给定一个可调用对象,则该可调用对象将用作序列化方法。

class detectron2.data.MapDataset(dataset, map_func)[源代码]

基类: torch.utils.data.Dataset

对数据集中的元素应用一个函数。

__init__(dataset, map_func)[源代码]
Parameters
  • dataset – 应用映射函数的数据集。可以是映射式或可迭代数据集。当提供可迭代数据集时,返回的对象也将是可迭代数据集。

  • map_func – 一个可调用对象,用于映射数据集中的元素。map_func可以返回None以跳过数据(例如在出现错误时)。None的处理方式取决于dataset的类型。如果dataset是映射式的,它会随机尝试其他元素;如果dataset是可迭代的,它会跳过该数据并尝试下一个。

class detectron2.data.ToIterableDataset(*args, **kwds)[源代码]

基类: torch.utils.data.IterableDataset

将一个基于索引的旧式(也称为映射式)数据集转换为可迭代式数据集。

__init__(dataset: torch.utils.data.Dataset, sampler: torch.utils.data.Sampler, shard_sampler: bool = True, shard_chunk_size: int = 1)[源代码]
Parameters
  • dataset – 一个旧式数据集,包含__getitem__方法

  • sampler – 一个低成本的可迭代对象,用于生成要应用于dataset的索引。

  • shard_sampler

    是否基于当前PyTorch数据加载器的工作进程ID对采样器进行分片。当IterableDataset被PyTorch的DataLoader分叉到多个工作进程时,它需要根据工作进程ID对其数据进行分片,以避免不同工作进程产生相同数据。

    大多数采样器(如我们的TrainingSampler)不会基于数据加载器工作进程ID进行分片,此时该参数应设为True。但某些采样器可能已实现分片功能,这种情况下该参数应设为False。

  • shard_chunk_size - 当对采样器进行分片时,每个工作进程将

class detectron2.data.DatasetMapper(*args, **kwargs)[源代码]

基类: object

一个可调用对象,接收Detectron2数据集格式的字典数据,并将其映射为模型使用的格式。

这是默认的可调用函数,用于将数据集字典映射为训练数据。 您可能需要参考它来实现自定义逻辑, 例如不同的图像读取或转换方式。 详情请参阅Dataloader

当前可调用对象执行以下操作:

  1. 从“file_name”读取图像

  2. 对图像和标注应用裁剪/几何变换

  3. 准备数据和标注为Tensor和Instances

__init__(is_train: bool, *, augmentations: List[Union[detectron2.data.transforms.Augmentation, detectron2.data.transforms.Transform]], image_format: str, use_instance_mask: bool = False, use_keypoint: bool = False, instance_mask_format: str = 'polygon', keypoint_hflip_indices: Optional[numpy.ndarray] = None, precomputed_proposal_topk: Optional[int] = None, recompute_boxes: bool = False)[源代码]

注意:此接口为实验性功能。

Parameters
  • is_train – 用于训练还是推理

  • augmentations - 要应用的一系列增强或确定性变换的列表

  • image_format – 由detection_utils.read_image()支持的图像格式。

  • use_instance_mask – 如果可用,是否处理实例分割标注

  • use_keypoint – 如果存在关键点标注,是否进行处理

  • instance_mask_format – 可选 "polygon" 或 "bitmask"。将实例分割掩码处理为此格式。

  • keypoint_hflip_indices – 参见 detection_utils.create_keypoint_hflip_indices()

  • precomputed_proposal_topk – 如果提供此参数,将从dataset_dict加载预计算提案,并为每张图像保留前k个提案。

  • recompute_boxes – 是否通过从实例掩码标注计算紧密边界框来覆盖原有的边界框标注。

classmethod from_config(cfg, is_train: bool = True)[源代码]
__call__(dataset_dict)[源代码]
Parameters

dataset_dict (dict) - 一张图像的元数据,采用Detectron2数据集格式。

Returns

dict – detectron2内置模型接受的格式

detectron2.data.detection_utils 模块

在典型的目标检测数据管道中使用的通用数据处理工具。

exception detectron2.data.detection_utils.SizeMismatchError[源代码]

基类: ValueError

当加载的图像宽度/高度与标注信息不一致时。

detectron2.data.detection_utils.convert_image_to_rgb(image, format)[源代码]

将给定格式的图像转换为RGB格式。

Parameters
  • image (np.ndarray or Tensor) - 一个HWC格式的图像

  • format (str) – 输入图像的格式,另请参阅 read_image

Returns

(np.ndarray) – (高度,宽度,3通道) 0-255范围的RGB图像,可以是浮点型或uint8类型

detectron2.data.detection_utils.check_image_size(dataset_dict, image)[源代码]

如果图像与字典中指定的大小不匹配,则引发错误。

detectron2.data.detection_utils.transform_proposals(dataset_dict, image_shape, transforms, *, proposal_topk, min_box_size=0)[源代码]

对dataset_dict中的提案应用变换(如果有的话)。

Parameters
  • dataset_dict (dict) - 从数据集中读取的字典,可能包含字段"proposal_boxes"、"proposal_objectness_logits"、"proposal_bbox_mode"

  • image_shape (tuple) – 高度,宽度

  • transforms (TransformList) –

  • proposal_topk (int) – 仅保留得分最高的K个提案

  • min_box_size (int) - 任何一边小于此阈值的候选框将被移除

输入字典会被原地修改,上述提到的键会被移除。将新增一个键"proposals",其值为一个Instances对象,该对象在其字段"proposal_boxes"和"objectness_logits"中包含转换后的提案。

detectron2.data.detection_utils.transform_instance_annotations(annotation, transforms, image_size, *, keypoint_hflip_indices=None)[源代码]

对单个实例的边界框、分割和关键点标注应用变换。

对于边界框,它将使用transforms.apply_box;对于分割多边形和关键点,则使用transforms.apply_coords。如果您需要针对每种数据结构更专门化的处理,就需要自行实现该函数或变换的定制版本。

Parameters
  • annotation (dict) - 单个实例的标注字典。它会被原地修改。

  • transforms (TransformListlist[Transform]) –

  • image_size (tuple) – 转换后图像的高度和宽度

  • keypoint_hflip_indices (ndarray[int]) – 参见 create_keypoint_hflip_indices

Returns

dict – 相同的输入字典,其中的"bbox"、"segmentation"、"keypoints"字段会根据transforms进行转换。"bbox_mode"字段将被设置为XYXY_ABS。

detectron2.data.detection_utils.annotations_to_instances(annos, image_size, mask_format='polygon')[源代码]

从数据集字典中的实例标注创建一个由模型使用的Instances对象。

Parameters
  • annos (list[dict]) - 单张图像中的实例标注列表,每个元素对应一个实例。

  • image_size (tuple) – 高度,宽度

Returns

Instances – 它将包含字段"gt_boxes"、"gt_classes"、"gt_masks"、"gt_keypoints",如果这些字段可以从annos中获取。这是内置模型期望的格式。

detectron2.data.detection_utils.annotations_to_instances_rotated(annos, image_size)[源代码]

从数据集字典中的实例标注创建一个由模型使用的Instances对象。 与annotations_to_instances相比,此函数仅适用于旋转框

Parameters
  • annos (list[dict]) – 单张图像中的实例标注列表,每个元素对应一个实例。

  • image_size (tuple) - 高度, 宽度

Returns

Instances – 包含字段“gt_boxes”、“gt_classes”,如果这些字段可以从annos中获取的话。这是内置模型期望的格式。

detectron2.data.detection_utils.build_augmentation(cfg, is_train)[源代码]

根据配置创建默认的Augmentation列表。目前包含调整大小和翻转。

Returns

列表[增强]

detectron2.data.detection_utils.create_keypoint_hflip_indices(dataset_names: Union[str, List[str]]) → List[int][源代码]
Parameters

dataset_names – 数据集名称列表

Returns

list[int] – 一个大小为#关键点的列表,存储水平翻转后的关键点索引。

detectron2.data.detection_utils.filter_empty_instances(instances, by_box=True, by_mask=True, box_threshold=1e-05, return_mask=False)[源代码]

过滤掉Instances对象中的空实例。

Parameters
  • instances (Instances) -

  • by_box (bool) – 是否过滤掉包含空框的实例

  • by_mask (bool) - 是否过滤掉带有空掩码的实例

  • box_threshold (float) - 被视为非空的最小宽度和高度

  • return_mask (bool) – 是否返回过滤实例的布尔掩码

Returns

Instances – 经过筛选的实例。 tensor[bool], 可选: 表示筛选实例的布尔掩码

detectron2.data.detection_utils.read_image(file_name, format=None)[源代码]

将图像读取为指定格式。如果图像包含旋转或翻转的exif信息,将自动应用这些变换。

Parameters
  • file_name (str) – 图像文件路径

  • format (str) – PIL支持的图像模式之一,或"BGR"或"YUV-BT.601"。

Returns

image (np.ndarray) – 一张符合指定格式的HWC图像,对于PIL支持的图像模式或"BGR"格式应为0-255范围的uint8类型;对于YUV-BT.601格式应为浮点型(Y通道0-1范围)。

detectron2.data.datasets 模块

detectron2.data.datasets.load_coco_json(json_file, image_root, dataset_name=None, extra_annotation_keys=None)[源代码]

加载一个采用COCO实例标注格式的json文件。 当前支持实例检测、实例分割以及人体关键点标注。

Parameters
  • json_file (str) - COCO实例标注格式的json文件完整路径。

  • image_root (str路径类) – 该json文件中图片所在的目录。

  • dataset_name (strNone) –

    数据集的名称(例如:coco_2017_train)。 当提供此参数时,该函数还将执行以下操作:

    • 将"thing_classes"添加到与此数据集关联的元数据中

    • 将类别ID映射到一个连续范围内(标准数据集格式所需),并将"thing_dataset_id_to_contiguous_id"添加到与此数据集关联的元数据中

    通常应提供此选项,除非用户需要加载原始JSON内容并手动进行更多处理。

  • extra_annotation_keys (list[str]) – 除了"iscrowd"、"bbox"、"keypoints"、"category_id"和"segmentation"之外,还应加载到数据集字典中的每个标注键列表。这些键对应的值将按原样返回。例如,densepose标注就是以这种方式加载的。

Returns

list[dict] - 当dataset_name不为None时,返回一个符合Detectron2标准数据集字典格式的字典列表(参见 Using Custom Datasets)。 如果dataset_name为None,返回的category_ids可能不连续且可能不符合Detectron2标准格式。

说明

  1. 此函数不会读取图像文件。 结果中不包含“image”字段。

detectron2.data.datasets.load_sem_seg(gt_root, image_root, gt_ext='png', image_ext='jpg')[源代码]

加载语义分割数据集。"gt_root"目录下所有扩展名为"gt_ext"的文件被视为真实标注数据,"image_root"目录下所有扩展名为"image_ext"的文件作为输入图像。真实标注与输入图像通过相对于"gt_root"和"image_root"的文件路径进行匹配,不考虑文件扩展名。该方法适用于COCO及其他一些数据集。

Parameters
  • gt_root (str) - 真实语义分割文件的完整路径。语义分割标注以图像形式存储,其中像素的整数值代表对应的语义标签。

  • image_root (str) – 输入图像所在的目录。

  • gt_ext (str) – 用于真实标注数据的文件扩展名。

  • image_ext (str) – 输入图像的文件扩展名。

Returns

list[dict] – 一个字典列表,采用detectron2标准格式,不包含实例级别的标注。

说明

  1. 此函数不会读取图像和真实标注文件。结果中不包含"image"和"sem_seg"字段。

detectron2.data.datasets.register_coco_instances(name, metadata, json_file, image_root)[源代码]

为实例检测、实例分割和关键点检测任务注册一个COCO JSON标注格式的数据集。 (即http://cocodataset.org/#format-data中所述的类型1和2, 数据集中的instances*.jsonperson_keypoints*.json文件)。

这是一个如何注册新数据集的示例。 你可以参照这个函数进行类似操作,来注册新的数据集。

Parameters
  • name (str) – 用于标识数据集的名称,例如"coco_2014_train"。

  • metadata (dict) - 与此数据集关联的额外元数据。您可以将其保留为空字典。

  • json_file (str) – JSON实例注释文件的路径。

  • image_root (str路径类) – 包含所有图像的目录。

detectron2.data.datasets.convert_to_coco_json(dataset_name, output_file, allow_cached=True)[源代码]

将数据集转换为COCO格式并保存为json文件。 dataset_name必须在DatasetCatalog中注册,并符合detectron2的标准格式。

Parameters
  • dataset_name – 配置文件中对数据目录的引用,必须在DatasetCatalog中注册且符合detectron2的标准格式

  • output_file – 将要保存的json文件路径

  • allow_cached - 如果json文件已存在则跳过转换

detectron2.data.datasets.register_coco_panoptic(name, metadata, image_root, panoptic_root, panoptic_json, instances_json=None)[源代码]

注册一个名为name的COCO全景分割数据集的"标准"版本。 该注册数据集中的字典遵循detectron2的标准格式。 因此被称为"标准"版本。

Parameters
  • name (str) – 用于标识数据集的名称,例如"coco_2017_train_panoptic"

  • metadata (dict) – 与此数据集关联的额外元数据。

  • image_root (str) – 包含所有图像的目录

  • panoptic_root (str) - 包含COCO格式全景标注图像的目录

  • panoptic_json (str) – COCO格式的json全景标注文件路径

  • sem_seg_root (none) - 未使用,以保持与register_coco_panoptic_separated的一致性。

  • instances_json (str) – JSON实例标注文件的路径

detectron2.data.datasets.register_coco_panoptic_separated(name, metadata, image_root, panoptic_root, panoptic_json, sem_seg_root, instances_json)[源代码]

注册一个名为name的COCO全景分割数据集的"分离"版本。 在这个已注册的数据集中,标注将同时包含实例标注和语义标注,每个标注都有其独立的连续ID。因此被称为"分离"版本。

它遵循了PanopticFPN论文中使用的设置:

  1. 实例标注直接来源于COCO实例标注任务中的多边形,而非COCO全景标注中的掩码。

    这两种格式存在细微差异: 实例标注中的多边形可能存在重叠。 掩码标注是通过对重叠多边形进行深度排序标注生成的。

  2. 语义标注是从全景标注转换而来,其中所有"物体"被赋予语义ID 0。因此所有语义类别的ID将位于连续范围[1, #stuff_categories]内。

此函数还将注册一个名为name + '_stuffonly'的纯语义分割数据集。

Parameters
  • name (str) – 用于标识数据集的名称,例如"coco_2017_train_panoptic"

  • metadata (dict) – 与此数据集关联的额外元数据。

  • image_root (str) – 包含所有图像的目录

  • panoptic_root (str) – 包含全景标注图像的目录

  • panoptic_json (str) – 全景标注json文件的路径

  • sem_seg_root (str) – 包含所有真实分割标注的目录。

  • instances_json (str) – JSON实例标注文件的路径

detectron2.data.datasets.load_lvis_json(json_file, image_root, dataset_name=None, extra_annotation_keys=None)[源代码]

加载一个LVIS标注格式的json文件。

Parameters
  • json_file (str) – LVIS json注释文件的完整路径。

  • image_root (str) – 该json文件中图片所在的目录。

  • dataset_name (str) – 数据集的名称(例如"lvis_v0.5_train")。 如果提供此参数,该函数会将"thing_classes"放入与此数据集关联的元数据中。

  • extra_annotation_keys (list[str]) – 除了"bbox"、"bbox_mode"、"category_id"和"segmentation"之外,还应加载到数据集字典中的每个标注键列表。这些键对应的值将按原样返回。

Returns

list[dict] – 一个符合Detectron2标准格式的字典列表。(参见 Using Custom Datasets )

说明

  1. 此函数不会读取图像文件。 结果中不包含“image”字段。

detectron2.data.datasets.register_lvis_instances(name, metadata, json_file, image_root)[源代码]

为实例检测和分割任务注册一个符合LVIS JSON标注格式的数据集。

Parameters
  • name (str) – 用于标识数据集的名称,例如 "lvis_v0.5_train"。

  • metadata (dict) - 与此数据集关联的额外元数据。它可以是一个空字典。

  • json_file (str) – JSON实例注释文件的路径。

  • image_root (str路径类对象) – 包含所有图像的目录。

detectron2.data.datasets.get_lvis_instances_meta(dataset_name)[源代码]

加载LVIS元数据。

Parameters

dataset_name (str) – 不包含分割名称的LVIS数据集名称(例如"lvis_v0.5")。

Returns

字典 – 包含键值thing_classes的LVIS元数据

detectron2.data.datasets.load_voc_instances(dirname: str, split: str, class_names: Union[List[str], Tuple[str, ]])[源代码]

将Pascal VOC检测标注加载为Detectron2格式。

Parameters
  • dirname – 包含“Annotations”、“ImageSets”、“JPEGImages”目录

  • split (str) – 可选值为"train"、"test"、"val"或"trainval"之一

  • class_names – 类别名称的列表或元组

detectron2.data.datasets.register_pascal_voc(name, dirname, split, year, class_names='aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor')[源代码]

detectron2.data.samplers 模块

class detectron2.data.samplers.TrainingSampler(*args, **kwds)[源代码]

基类: torch.utils.data.Sampler

在训练过程中,我们只关注训练数据的"无限流"。 因此,该采样器会生成一个无限的索引流, 所有工作进程协同工作以正确打乱索引顺序并采样不同的索引。

每个工作进程中的采样器实际上生成的是indices[worker_id::num_workers] 其中indices是一个由 shuffle(range(size)) + shuffle(range(size)) + …(如果shuffle为True) 或range(size) + range(size) + …(如果shuffle为False) 组成的无限索引流

请注意,此采样器不会基于PyTorch DataLoader的工作进程ID进行分片。传递给PyTorch DataLoader的采样器仅用于映射式数据集,并且不会在工作进程内部执行。但如果以某种方式在数据加载器工作进程内部执行此采样器,则需要额外工作来基于工作进程ID对其输出进行分片。这是必要的,以避免工作进程产生相同的数据。ToIterableDataset实现了这一逻辑。此说明适用于detectron2中的所有采样器。

__init__(size: int, shuffle: bool = True, seed: Optional[int] = None)[源代码]
Parameters
  • size (int) - 要从基础数据集中采样的数据总数

  • shuffle (bool) - 是否打乱索引顺序

  • seed (int) - 随机打乱的初始种子值。必须在所有工作进程间保持一致。如果为None,将使用工作进程间共享的随机种子(需要所有工作进程间同步)。

class detectron2.data.samplers.RandomSubsetTrainingSampler(*args, **kwds)[源代码]

基类: detectron2.data.samplers.distributed_sampler.TrainingSampler

与TrainingSampler类似,但仅随机采样索引的子集。当您希望通过以下方式估算准确率与数据量关系曲线时,此功能非常有用

使用不同的子集比例训练模型。

__init__(size: int, subset_ratio: float, shuffle: bool = True, seed_shuffle: Optional[int] = None, seed_subset: Optional[int] = None)[源代码]
Parameters
  • size (int) - 从基础数据集中采样的数据总数

  • subset_ratio (float) – 从基础数据集中抽取子集数据的比例

  • shuffle (bool) - 是否打乱索引顺序

  • seed_shuffle (int) - 洗牌的初始种子值。必须在所有工作进程间保持一致。如果为None,将使用工作进程间共享的随机种子(需要所有工作进程间同步)。

  • seed_subset (int) – 用于随机化采样子集的种子值。 必须在所有工作进程间保持一致。如果为None,将使用工作进程间共享的随机种子(需要所有工作进程间同步)。

class detectron2.data.samplers.InferenceSampler(*args, **kwds)[源代码]

基类: torch.utils.data.Sampler

为所有工作进程生成推理索引。推理需要在__完全一致__的样本集上运行,因此当样本总数无法被工作进程数整除时,该采样器会在不同工作进程上生成不同数量的样本。

__init__(size: int)[源代码]
Parameters

size (int) – 从基础数据集中采样的数据总数

class detectron2.data.samplers.RepeatFactorTrainingSampler(*args, **kwds)[源代码]

基类: torch.utils.data.Sampler

与TrainingSampler类似,但样本可能根据其"重复因子"出现多次。这适用于在LVIS等类别不平衡的数据集上进行训练。

__init__(repeat_factors, *, shuffle=True, seed=None)[源代码]
Parameters
  • repeat_factors (Tensor) - 一个浮点向量,表示每个索引的重复因子。当全为1时,等同于TrainingSampler(len(repeat_factors), ...)

  • shuffle (bool) - 是否打乱索引顺序

  • seed (int) - 洗牌操作的初始种子值。必须在所有工作进程间保持一致。如果为None,将使用工作进程间共享的随机种子(需要所有工作进程间同步)。

static repeat_factors_from_category_frequency(dataset_dicts, repeat_thresh)[源代码]

基于类别频率计算每张图像的(分数)重复因子。 图像的重复因子是该图像中标注的最稀有类别频率的函数。类别c的“频率”在[0, 1]范围内定义为训练集中(无重复)出现类别c的图像所占比例。 详见LVIS: A Dataset for Large Vocabulary Instance Segmentation (>= v2) 附录B.2。

Parameters
  • dataset_dicts (list[dict]) – 以Detectron2数据集格式存储的标注信息。

  • repeat_thresh (float) - 数据重复的频率阈值。如果频率是repeat_thresh的一半,图像将被重复两次。

Returns

torch.Tensor – 第i个元素表示数据集中索引为i的图像的重复因子。