ADEChallengeData2016
annotation
training(存放所有训练标签png图片)
validation(存放所有验证标签png图片)
images
training(存放所有训练jpg图片)
validation(存放所有验证jpg图片)
有这些足够,其余不重要
注:图片和标签明明方式需对应
下载安装detector2库,使用./detectron2/datasets/prepare_ade20k_sem_seg.py即可完成。
该代码会先找寻环境变量DETECTRON2_DATASETS作为数据集根目录,若找不到默认路径./datasets。个人建议,可以更改datasets为自己数据集存储路径,或者在数据集存储路径和datasets建立一个软链接。后面ADEChallengeData2016为数据集名,可根据自己数据集修改,其余部分均不用修改。
至此,数据集准备完毕。
接下来以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()函数修改的),两个函数对比,修改几个参数即可,不再赘述。
最后,将该注册函数加入到该文件的主函数中
至此,数据集注册已经完成。
配置数据集相当简单,只需找到配置文件中的
DATASETS:
TRAIN: ("ade20k_sem_seg_train",)
TEST: ("ade20k_sem_seg_val",)
字段,若参考官方的命名方式,应该只需将ade20K改为gid即可
看了半天官方文档,导入数据集好像很复杂,又很简单,也没有具体的例子,我这种菜鸟看不懂,所有自己根据官方文件试出来了这种方法,希望对大家有所帮助,有不足之处希望大家批评指正。
要完整详细导入,建议大家还是好好参考官方文档:https://detectron2.readthedocs.io/en/latest/modules/data.html#detectron2.data.DatasetCatalog