detectron2--使用自定义数据集(官方文档)

detectron2中利用自定义的数据集来训练(针对目标检测)

两个步骤

1、注册自定义的数据集(告诉数据集怎样获得数据集)
2、(可选择)为数据集注册metadata

1、注册数据集

数据集名称:my_dataset
定义my_dataset_function按照顺序来返回数据集中所有的数据。斯普哦

def my_dataset_function():
  ...
  return list[dict] in the following format

from detectron2.data import DatasetCatalog
DatasetCatalog.register("my_dataset", my_dataset_function)
# later, to access the data:
data: List[Dict] = DatasetCatalog.get("my_dataset")

返回数据形式:list[dict](列表[字典]),每一个字典里面的内容有以下两种形式:
1、标准的detectron2数据集字典格式(推荐)
2、自定义格式

1.1标准的detectron2数据集字典格式

跟COCO数据集的annotations格式相近。每个dict包含一张图片的信息,对于目标检测任务有:

通用的keys value
file_name 图片文件的完整路径
height,weight 图片大小
image_id(str或者int) 图片的id
目标检测任务 keys value
annotations bbox(list[dict])
bbox_mode(int) bbox的格式:BoxMode.XYXY_ABS, BoxMode.XYWH_ABS
category_id (int) 范围是0-num_class-1

2、自定义数据集的metadata

metadata是包含整个数据集共享信息的key-value map,通常用来描述数据集里面是什么,比如:种类数量、种类颜色、文件根目录等等。
每个数据集都有metadata,通过MetadataCatalog.get(dataset_name).some_metadata接入。
metadata的的结构取决于相关的代码流需要什么。
如果通过DatasetCatalog.register注册了一个新的数据集,那可以通过MetadataCatalog.get(dataset_name).some_key = some_value来加入相关的metadata,metadate的keys:

key value
thing_classes (list[str]) 每个实例类别的名字列表
thing_colors (list[tuple(r, g, b)]) 每个类别的预先定义的颜色,主要用于可视化,不定义就随机颜色

其他不用于目标检测的key-value没写,自行查阅官方文档

3、更新新数据集的配置文件

注册新数据集以后可以在cfg.DATASETS.{TRAIN,TEST}中使用数据集名字(my_dataset)

MODEL.ROI_HEADS.NUM_CLASSES

MODEL.RETINANET.NUM_CLASSES

MODEL.ROI_KEYPOINT_HEAD.NUM_KEYPOINTS

TEST.DETECTIONS_PER_IMAGE

参考文档:detectron2官方文档

你可能感兴趣的:(detectron2,python,目标检测)