detector2导入语义分割数据集

detector2导入语义分割数据集

  • 1.调整数据集文件目录
    • 参考ADEChallengeData2016数据集的目录结构
  • 2. 生成detector2专用的数据集标签格式
  • 3. 导入数据集
    • 此过程均在detectron2/detectron2/data/datasets目录下完成
  • 4. 配置数据集
  • 5. 特别说明

1.调整数据集文件目录

参考ADEChallengeData2016数据集的目录结构

	ADEChallengeData2016
			annotation
					training(存放所有训练标签png图片)
					validation(存放所有验证标签png图片)
			images
					training(存放所有训练jpg图片)
					validation(存放所有验证jpg图片)
	有这些足够,其余不重要
	注:图片和标签明明方式需对应

2. 生成detector2专用的数据集标签格式

下载安装detector2库,使用./detectron2/datasets/prepare_ade20k_sem_seg.py即可完成。
该代码会先找寻环境变量DETECTRON2_DATASETS作为数据集根目录,若找不到默认路径./datasets。个人建议,可以更改datasets为自己数据集存储路径,或者在数据集存储路径和datasets建立一个软链接。后面ADEChallengeData2016为数据集名,可根据自己数据集修改,其余部分均不用修改。

至此,数据集准备完毕。

3. 导入数据集

此过程均在detectron2/detectron2/data/datasets目录下完成

接下来以gid数据集为例
(1)在builtin_meta.py文件中,添加如下内容,位置不限:

GID_SEM_SEG_CATEGORIES = ["building", "field", "forest", "grassland", "water"]


代码内容为:数据集名和数据集对象类别
(2) 在builtin.py文件中,先导入在builtin_meta.py文件中定义的GID_SEM_SEG_CATEGORIES:

from .builtin_meta import GID_SEM_SEG_CATEGORIES

然后开始注册

def register_all_gid(root):
    root = os.path.join(root, "gid")
    for name, dirname in [("train", "training"), ("val", "validation")]:
        image_dir = os.path.join(root, "images", dirname)
        gt_dir = os.path.join(root, "annotations_detectron2", dirname)
        name = f"gid_sem_seg_{name}"
        DatasetCatalog.register(
            name, lambda x=image_dir, y=gt_dir: load_sem_seg(y, x, gt_ext="png", image_ext="jpg")
        )
        MetadataCatalog.get(name).set(
            stuff_classes=GID_SEM_SEG_CATEGORIES[:],
            image_root=image_dir,
            sem_seg_root=gt_dir,
            evaluator_type="sem_seg",
            ignore_label=255,
        )’

根据此函数修改即可(此函数是我根据本文件内的register_all_ade20k()函数修改的),两个函数对比,修改几个参数即可,不再赘述。
最后,将该注册函数加入到该文件的主函数中
detector2导入语义分割数据集_第1张图片

    至此,数据集注册已经完成。

4. 配置数据集

配置数据集相当简单,只需找到配置文件中的

DATASETS:
  TRAIN: ("ade20k_sem_seg_train",)
  TEST: ("ade20k_sem_seg_val",)

字段,若参考官方的命名方式,应该只需将ade20K改为gid即可
在这里插入图片描述

5. 特别说明

看了半天官方文档,导入数据集好像很复杂,又很简单,也没有具体的例子,我这种菜鸟看不懂,所有自己根据官方文件试出来了这种方法,希望对大家有所帮助,有不足之处希望大家批评指正。
要完整详细导入,建议大家还是好好参考官方文档:https://detectron2.readthedocs.io/en/latest/modules/data.html#detectron2.data.DatasetCatalog

你可能感兴趣的:(深度学习,python,人工智能,深度学习)