{"record":{"id":"f992602034e2a7fb","repo":"facebookresearch/detectron2","slug":"dataset-is-not-registered-available-datasets","errorCode":null,"errorMessage":"Dataset '{}' is not registered! Available datasets are: {}","messagePattern":"Dataset '(.+?)' is not registered! Available datasets are: (.+?)","errorType":"exception","errorClass":"KeyError","httpStatus":null,"severity":"error","filePath":"detectron2/data/catalog.py","lineNumber":53,"sourceCode":"        \"\"\"\n        assert callable(func), \"You must register a function with `DatasetCatalog.register`!\"\n        assert name not in self, \"Dataset '{}' is already registered!\".format(name)\n        self[name] = func\n\n    def get(self, name):\n        \"\"\"\n        Call the registered function and return its results.\n\n        Args:\n            name (str): the name that identifies a dataset, e.g. \"coco_2014_train\".\n\n        Returns:\n            list[dict]: dataset annotations.\n        \"\"\"\n        try:\n            f = self[name]\n        except KeyError as e:\n            raise KeyError(\n                \"Dataset '{}' is not registered! Available datasets are: {}\".format(\n                    name, \", \".join(list(self.keys()))\n                )\n            ) from e\n        return f()\n\n    def list(self) -> List[str]:\n        \"\"\"\n        List all registered datasets.\n\n        Returns:\n            list[str]\n        \"\"\"\n        return list(self.keys())\n\n    def remove(self, name):\n        \"\"\"\n        Alias of ``pop``.","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/facebookresearch/detectron2/blob/a2f4a8771ab77e8411c26b27f24f9489a28a2453/detectron2/data/catalog.py#L35-L71","documentation":"DatasetCatalog.get(name) looks up the registered loader for the dataset name; a KeyError from the lookup is re-raised with a message listing all registered dataset names so you can see what's available.","triggerScenarios":"Calling DatasetCatalog.get('my_train') when only register_instances-style names exist; using cfg.DATASETS.TRAIN=('coco_2017_train_xyz',) with a typo; calling get before your register call ran.","commonSituations":"Forgetting to import the module that registers the dataset (e.g. custom dataset script); typos in dataset names; expecting built-in registration without importing detectron2.data.datasets.","solutions":["Ensure the registering import runs: from my_project import register_datasets before building loaders","Fix the dataset name string to exactly match the registration (case-sensitive); the error lists available names","If the dataset should be built-in, import detectron2.data.datasets (or the specific builtin module)"],"exampleFix":"# before\nDatasetCatalog.get(\"mydata_train\")  # not registered\n# after\nfrom mydata import register_mydata  # calls DatasetCatalog.register(\"mydata_train\", ...)\nregister_mydata()\nd = DatasetCatalog.get(\"mydata_train\")","handlingStrategy":"validation","validationCode":"from detectron2.data import DatasetCatalog\nassert name in DatasetCatalog.list(), f\"{name} not registered; have: {DatasetCatalog.list()}\"","typeGuard":"def dataset_registered(name: str) -> bool:\n    return name in DatasetCatalog.list()","tryCatchPattern":"try:\n    dicts = DatasetCatalog.get(name)\nexcept KeyError as e:\n    if \"not registered\" in str(e):\n        import my_datasets  # module that registers\n        dicts = DatasetCatalog.get(name)\n    else:\n        raise","preventionTips":["Import dataset registration modules at program entry","Add a startup check that all cfg.DATASETS.TRAIN/TEST names are registered","Use exact, case-sensitive dataset name constants"],"tags":["dataset","registry","detectron2"],"backgroundTag":"dataset-not-registered","analyzedSha":"a2f4a8771ab77e8411c26b27f24f9489a28a2453","analyzedAt":"2026-08-27T12:08:21.260Z","schemaVersion":2},"datasetVersion":"2026-08-27T13:17:12.746Z"}