detectron2.data

detectron2.data.DatasetCatalog(dict)

一个全局字典,用于存储有关数据集的信息以及如何获取它们。

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

如果与 data/build.py,data/detection_transform.py 中的数据加载器功能一起使用,则返回的字典应采用 Detectron2 数据集格式(有关详细信息,请参阅 DATASETS.md)。

拥有此目录的目的是通过在配置中仅使用字符串来简化选择不同数据集的过程。

DatasetCatalog.register(name, func)
参数
  • name (str) – 标识数据集的名称,例如“coco_2014_train”。

  • func (callable) – 一个可调用对象,它不接受任何参数并返回一个字典列表。如果多次调用,它必须返回相同的结果。

DatasetCatalog.get(name)

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

参数

name (str) – 标识数据集的名称,例如“coco_2014_train”。

返回值

list[dict] – 数据集注释。

detectron2.data.MetadataCatalog(dict)

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

与某个名称关联的元数据是单例:一旦创建,元数据将一直存在,并将通过对 get(name) 的未来调用返回。

它就像全局变量,因此不要滥用它。它用于存储在程序执行过程中保持不变且共享的知识,例如:COCO 中的类名。

MetadataCatalog.get(name)
参数

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

返回值

Metadata – 与此名称关联的 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[source]

类似于 build_detection_train_loader,默认批次大小为 1,采样器为 InferenceSampler。此采样器协调所有工作程序以生成所有样本的精确集合。

参数
  • 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 的参数相同。默认情况下,不进行整理,并返回一个数据列表。对于小型批次大小和简单的数据结构,不进行整理是可以的。如果批次大小很大,每个样本包含太多的小张量,则将它们整理到数据加载器中效率更高。

返回值

DataLoader – 一个 PyTorch 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)[source]

使用一些默认功能构建用于目标检测的数据加载器。

参数
  • dataset (list or torch.utils.data.Dataset) – 数据集字典列表,或一个 PyTorch 数据集(映射风格或可迭代)。它可以通过使用 DatasetCatalog.get()get_detection_dataset_dicts() 获得。

  • mapper (callable) – 一个可调用对象,它接受来自数据集的样本(字典)并返回模型要使用的格式。当使用 cfg 时,默认选择是 DatasetMapper(cfg, is_train=True)

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

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

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

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

  • collate_fn – 一个函数,用于确定如何进行批处理,与 torch.utils.data.DataLoader 的参数相同。默认情况下,不进行整理,并返回一个数据列表。对于小型批次大小和简单的数据结构,不进行整理是可以的。如果批次大小很大,每个样本包含太多的小张量,则将它们整理到数据加载器中效率更高。

返回值

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

加载并准备实例检测/分割和语义分割的dataset dicts。

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

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

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

  • proposal_files (list[str]) – 如果给出,则为与 names 中每个数据集匹配的对象提议文件列表。

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

返回值

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

detectron2.data.load_proposals_into_dataset(dataset_dicts, proposal_file)[source]

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

提议文件应为具有以下键的腌制字典

  • “ids”: list[int] 或 list[str],图像 ID

  • “boxes”: list[np.ndarray],每个都是与图像 ID 对应的 Nx4 框数组

  • “objectness_logits”: list[np.ndarray],每个都是与框相对应的 N 大小物体分数数组。

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

参数
  • dataset_dicts (list[dict]) – Detectron2 数据集格式的标注。

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

返回值

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

detectron2.data.print_instances_class_histogram(dataset_dicts, class_names)[source]
参数
  • dataset_dicts (list[dict]) – 数据集字典列表。

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

class detectron2.data.Metadata[source]

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

将所有元数据作为字典返回。请注意,对返回字典的修改不会反映在 Metadata 对象上。

set(**kwargs)[source]

使用 kwargs 设置多个元数据。

get(key, default=None)[source]

访问属性并返回其值(如果存在)。否则返回默认值。

class detectron2.data.DatasetFromList(*args, **kwds)[source]

Bases: torch.utils.data.Dataset

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

__init__(lst: list, copy: bool = True, serialize: Union[bool, Callable] = True)[source]
参数
  • lst (list) – 包含要生成的元素的列表。

  • copy (bool) – 是否在生成元素时深度复制该元素,这样结果可以在不影响列表中源的情况下就地修改。

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

class detectron2.data.MapDataset(dataset, map_func)[source]

Bases: torch.utils.data.Dataset

在数据集中的元素上映射函数。

__init__(dataset, map_func)[source]
参数
  • dataset – 应用映射函数的数据集。可以是映射风格或可迭代数据集。当给出可迭代数据集时,返回的对象也将是可迭代数据集。

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

class detectron2.data.ToIterableDataset(*args, **kwds)[source]

Bases: torch.utils.data.IterableDataset

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

__init__(dataset: torch.utils.data.Dataset, sampler: torch.utils.data.Sampler, shard_sampler: bool = True, shard_chunk_size: int = 1)[source]
参数
  • dataset – 具有 __getitem__ 的旧式数据集

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

  • shard_sampler

    是否根据当前的 pytorch 数据加载器 worker ID 对 sampler 进行分片。当 IterableDataset 由 pytorch 的 DataLoader 分叉到多个 worker 时,它负责根据 worker ID 对其数据进行分片,以便 worker 不会生成相同的数据。

    大多数采样器(例如我们的 TrainingSampler)不根据 dataloader 工作器 ID 进行分片,因此此参数应设置为 True。但某些采样器可能已经分片,在这种情况下,此参数应设置为 False。

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

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

基类: object

一个可调用对象,它接受 Detectron2 Dataset 格式的 dataset dict,并将其映射到模型使用的格式。

这是用于将您的 dataset dict 映射到训练数据的默认可调用对象。您可能需要遵循它来实现自己的可调用对象,以实现自定义逻辑,例如不同的图像读取或转换方式。有关详细信息,请参阅 数据加载器

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

  1. 从“file_name”读取图像

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

  3. 将数据和标注准备为张量和 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)[源代码]

注意:此接口是实验性的。

参数
  • is_train – 是否在训练或推断中使用

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

  • image_formatdetection_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 加载预先计算好的 proposals,并保留每个图像的前 k 个 proposals。

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

类方法 from_config(cfg, is_train: bool = True)[源代码]
__call__(dataset_dict)[源代码]
参数

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

返回值

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

detectron2.data.detection_utils 模块

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

异常 detectron2.data.detection_utils.SizeMismatchError[源代码]

基类: ValueError

当加载的图像的宽度/高度与标注不同时。

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

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

参数
  • image (np.ndarrayTensor) – 一张 HWC 图像

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

返回值

(np.ndarray) – 0-255 范围内的 (H,W,3) RGB 图像,可以是浮点数或 uint8

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

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

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

将变换应用于 dataset_dict 中的 proposals(如果有)。

参数
  • dataset_dict (dict) – 从数据集中读取的 dict,可能包含字段“proposal_boxes”、“proposal_objectness_logits”、“proposal_bbox_mode”

  • image_shape (tuple) – 高度,宽度

  • transforms (TransformList) –

  • proposal_topk (int) – 只保留前 K 个得分最高的 proposals

  • min_box_size (int) – 任何一边小于此阈值的 proposals 将被移除

输入 dict 在原地修改,上述键被移除。将添加一个新键“proposals”。它的值为一个 Instances 对象,该对象在其字段“proposal_boxes”和“objectness_logits”中包含经过转换的 proposals。

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

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

它将对框使用 transforms.apply_box,对分割多边形和关键点使用 transforms.apply_coords。如果您需要为每个数据结构专门设计的任何内容,您需要实现此函数或变换的自己的版本。

参数
  • annotation (dict) – 单个实例的实例标注字典。它将在原地修改。

  • transforms (TransformListlist[Transform]) –

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

  • keypoint_hflip_indices (ndarray[int]) – 请参阅 create_keypoint_hflip_indices

返回值

dict – 与输入 dict 相同,字段“bbox”、“segmentation”、“keypoints”根据 transforms 进行了转换。字段“bbox_mode”将设置为 XYXY_ABS。

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

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

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

  • image_size (tuple) – 高度,宽度

返回值

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

detectron2.data.detection_utils.annotations_to_instances_rotated(annos, image_size)[source]

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

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

  • image_size (tuple) – 高度,宽度

返回值

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

detectron2.data.detection_utils.build_augmentation(cfg, is_train)[source]

从配置文件创建默认的 Augmentation 列表。现在它包括调整大小和翻转。

返回值

list[Augmentation]

detectron2.data.detection_utils.create_keypoint_hflip_indices(dataset_names: Union[str, List[str]]) → List[int][source]
参数

dataset_names – 数据集名称列表

返回值

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

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

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

参数
  • instances (Instances) –

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

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

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

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

返回值

Instances – 过滤后的实例。tensor[bool],可选:过滤后的实例的布尔掩码

detectron2.data.detection_utils.read_image(file_name, format=None)[source]

将图像读取到给定格式。如果图像具有此类 EXIF 信息,将应用旋转和翻转。

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

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

返回值

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

加载使用 COCO 实例标注格式的 json 文件。目前支持实例检测、实例分割和人体关键点标注。

参数
  • json_file (str) – COCO 实例标注格式中 json 文件的完整路径。

  • image_root (strpath-like) – 此 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”之外,还应加载到数据集字典中的每个标注键的列表。这些键的值将按原样返回。例如,密集姿态标注以这种方式加载。

返回值

list[dict] – 当 dataset_name 不为 None 时,Detectron2 标准数据集字典格式中的字典列表(参见 使用自定义数据集 )。如果 dataset_name 为 None,返回的 category_ids 可能不连续,可能不符合 Detectron2 标准格式。

笔记

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

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

加载语义分割数据集。所有在“gt_root”下具有“gt_ext”扩展名的文件都将被视为地面真值标注,所有在“image_root”下具有“image_ext”扩展名的文件都将被视为输入图像。地面真值和输入图像使用相对于“gt_root”和“image_root”的相对文件路径进行匹配,而不考虑文件扩展名。这适用于 COCO 和一些其他数据集。

参数
  • gt_root (str) – 地面真值语义分割文件的完整路径。语义分割标注被存储为具有像素中整数值的图像,这些值代表相应的语义标签。

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

  • gt_ext (str) – 地面真值标注的文件扩展名。

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

返回值

list[dict] – detectron2 标准格式中的字典列表,没有实例级标注。

笔记

  1. 此函数不会读取图像和地面真值文件。结果没有“image”和“sem_seg”字段。

detectron2.data.datasets.register_coco_instances(name, metadata, json_file, image_root)[source]

注册使用 COCO json 标注格式用于实例检测、实例分割和关键点检测的数据集。(即,http://cocodataset.org/#format-data 中的类型 1 和 2。数据集中的 instances*.jsonperson_keypoints*.json)。

这是如何注册新数据集的示例。你可以进行类似于此函数的操作来注册新数据集。

参数
  • name (str) – 标识数据集的名称,例如“coco_2014_train”。

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

  • json_file (str) – json 实例标注文件的路径。

  • image_root (strpath-like) – 包含所有图像的目录。

detectron2.data.datasets.convert_to_coco_json(dataset_name, output_file, allow_cached=True)[source]

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

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

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

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

注册名为name的COCO全景分割数据集的“分离”版本。此注册数据集中的注释将包含实例注释和语义注释,每个注释都有其自己的连续ID。因此称为“分离”。

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

  1. 实例注释直接来自COCO实例注释任务中的多边形,而不是来自COCO全景注释中的掩码。

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

  2. 语义注释是从全景注释转换而来,其中所有“事物”都被分配为0的语义ID。因此所有语义类别将具有连续范围内的ID [1, #stuff_categories]。

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

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

加载LVIS的注释格式的json文件。

参数
  • 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”之外,还应加载到数据集字典中的每个注释键的列表。这些键的值将按原样返回。

返回值

list[dict] – Detectron2标准格式的字典列表。(请参阅使用自定义数据集 )

笔记

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

detectron2.data.datasets.register_lvis_instances(name, metadata, json_file, image_root)[source]

注册LVIS json注释格式中的数据集,用于实例检测和分割。

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

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

  • json_file (str) – json 实例标注文件的路径。

  • image_root (strpath-like) – 包含所有图像的目录。

detectron2.data.datasets.get_lvis_instances_meta(dataset_name)[source]

加载LVIS元数据。

参数

dataset_name (str) – 不包含拆分名称的LVIS数据集名称(例如,“lvis_v0.5”)。

返回值

dict – 包含以下键的LVIS元数据:thing_classes

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

将Pascal VOC检测注释加载到Detectron2格式。

参数
  • 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')[source]

detectron2.data.samplers 模块

class detectron2.data.samplers.TrainingSampler(*args, **kwds)[source]

Bases: 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 的采样器仅与 map 样式数据集一起使用,不会在工作程序内部执行。但是,如果此采样器以在 DataLoader 工作程序内部执行的方式使用,则需要做额外的工作才能根据工作程序 ID 对其输出进行分片。这是为了防止工作程序生成相同的数据。 ToIterableDataset 实现了此逻辑。此说明适用于 Detectron2 中的所有采样器。

__init__(size: int, shuffle: bool = True, seed: Optional[int] = None)[source]
参数
  • size (int) – 要从中采样的基础数据集的总数据量

  • shuffle (bool) – 是否对索引进行洗牌

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

class detectron2.data.samplers.RandomSubsetTrainingSampler(*args, **kwds)[source]

Bases: detectron2.data.samplers.distributed_sampler.TrainingSampler

与 TrainingSampler 类似,但只采样索引的随机子集。当您想通过

使用不同的 subset_ratio 训练模型来估计精度与数据数量曲线时,这很有用。

__init__(size: int, subset_ratio: float, shuffle: bool = True, seed_shuffle: Optional[int] = None, seed_subset: Optional[int] = None)[source]
参数
  • size (int) – 要从中采样的基础数据集的总数据量

  • subset_ratio (float) – 要从基础数据集中采样的子集数据的比例

  • shuffle (bool) – 是否对索引进行洗牌

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

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

class detectron2.data.samplers.InferenceSampler(*args, **kwds)[source]

Bases: torch.utils.data.Sampler

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

__init__(size: int)[source]
参数

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

class detectron2.data.samplers.RepeatFactorTrainingSampler(*args, **kwds)[source]

Bases: torch.utils.data.Sampler

与 TrainingSampler 类似,但一个样本可能会根据其“重复因子”比其他样本出现更多次。这适用于在像 LVIS 这样的类别不平衡数据集上进行训练。

__init__(repeat_factors, *, shuffle=True, seed=None)[source]
参数
  • repeat_factors (Tensor) – 一个浮点向量,每个索引的重复因子。当它全是 1 时,它等效于 TrainingSampler(len(repeat_factors), ...)

  • shuffle (bool) – 是否对索引进行洗牌

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

static repeat_factors_from_category_frequency(dataset_dicts, repeat_thresh)[source]

根据类别频率计算(分数)每个图像的重复因子。图像的重复因子是该图像中标记的最罕见类别的频率的函数。“类别 c 的频率”在 [0, 1] 中定义为训练集中(无重复)出现类别 c 的图像的比例。见 LVIS: A Dataset for Large Vocabulary Instance Segmentation (>= v2) 附录 B.2。

参数
  • dataset_dicts (list[dict]) – Detectron2 数据集格式中的注释。

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

返回值

torch.Tensor – 第 i 个元素是数据集图像在索引 i 处的重复因子。