如果你要使用自定义的数据集,同时还要重写detectron2的数据加载器, 你将需要
注册你的数据集(即告诉detectron2如何获取你的数据集)。
(可选)为你的数据集注册元数据。
接下来,我们详细解释上述两个概念。
该Colab Notebook 有如何在自定义格式的数据集注册和训练工作的例子。Colab Notebook:(https://colab.research.google.com/drive/16jcaJoc6bCFAQ96jDe2HwtXj7BMD_-m5)
注册数据集
为了让detectron2知道如何获取名为"my_dataset"的数据集,你需要实现 一个函数,该函数返回数据集中的数据,然后将其告知detectron2 功能:
def get_dicts(): ... return list[dict] in the following format
from detectron2.data import DatasetCatalogDatasetCatalog.register("my_dataset", get_dicts)
此代码段将数据集"my_dataset"与返回数据的函数相关联。在该过程存在之前,注册将一直有效。
该函数可以将数据从其原始格式处理为以下任意一种格式:
Detectron2的标准数据集字典。它可以与detectron2中的许多内置功能一起使用,因此建议使用它。
你的自定义数据集字典。你还可以以自己的格式返回任意字典格式,例如为新任务添加额外的键,然后你还需要在下游正确处理它们。请参阅下面的更多细节。。
标准数据集字典
对于标准任务(实例检测,实例/语义/全景分割,关键点检测),我们将原始数据集加载到具有类似于COCO的json注释规范的list [dict]
中。这是我们对数据集的标准表示。
每个字典包含有关一个图像的信息。该词典可能具有以下字段。这些字段通常是可选的,某些功能可能需要从其他字段推断某些字段,例如数据加载器将从"file_name"加载图像,并从"sem_seg_file_name"加载"sem_seg"。
file_name
:图像文件的完整路径。如果图像具有此类exif信息,则将应用旋转和翻转。sem_seg_file_name
:语义分割GT的路径。sem_seg
:2Dtorch.Tensor
中的语义分割GT。数组中的值表示类别标签从0开始。height
,width
:整数。图像的尺寸。