detectron2通过访问 DatasetCatalog 来访问具体数据,以及 MetadataCatalog 来访问 metadata(我的理解是metadata里面是数据集的具体信息,比如类别数,评估器的种类)
先要把数据集转化成coco格式
from detectron2.data.datasets.register_coco import register_coco_instances
from detectron2.data.catalog import DatasetCatalog,MetadataCatalog
import os
from detectron2.data.datasets.coco import load_coco_json
if __name__ == '__main__':
root_file = r'F:/DeepLearning/CrossVIS-main/datasets'
json_file = os.path.join(root_file,'smoke/annotations/train_in_coco.json')
image_root = os.path.join(root_file,'smoke/train')
DatasetCatalog.register("smoke_train",
lambda: load_coco_json(json_file, image_root, "smoke_train"))
MetadataCatalog.get("smoke_train").set(thing_classes=["smoke"],
json_file=json_file,
image_root=image_root)
代码只展示了训练集的注册,验证集操作一样,注册完成后,我们可以看到DatasetCatalog和MetadataCatalog中已经有了我们的数据集
注册完成后,可以用load_coco_json函数或者DatasetCatalog.get()方法来
data_dict = load_coco_json(json_file,image_root,"smoke_train")
# data_dict = DatasetCatalog.get("smoke_train")
查看该数据集detectron2格式的标注list[dict]