{"record":{"id":"bdf12a5130b5d94f","repo":"open-mmlab/mmdetection","slug":"weights-is-none-use-coco-classes-by-default","errorCode":null,"errorMessage":"weights is None, use COCO classes by default.","messagePattern":"weights is None, use COCO classes by default\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"mmdet/apis/det_inferencer.py","lineNumber":138,"sourceCode":"                # mmdet 3.x, all keys should be lowercase\n                model.dataset_meta = {\n                    k.lower(): v\n                    for k, v in checkpoint_meta['dataset_meta'].items()\n                }\n            elif 'CLASSES' in checkpoint_meta:\n                # < mmdet 3.x\n                classes = checkpoint_meta['CLASSES']\n                model.dataset_meta = {'classes': classes}\n            else:\n                warnings.warn(\n                    'dataset_meta or class names are not saved in the '\n                    'checkpoint\\'s meta data, use COCO classes by default.')\n                model.dataset_meta = {'classes': get_classes('coco')}\n        else:\n            warnings.warn('Checkpoint is not loaded, and the inference '\n                          'result is calculated by the randomly initialized '\n                          'model!')\n            warnings.warn('weights is None, use COCO classes by default.')\n            model.dataset_meta = {'classes': get_classes('coco')}\n\n        # Priority:  args.palette -> config -> checkpoint\n        if self.palette != 'none':\n            model.dataset_meta['palette'] = self.palette\n        else:\n            test_dataset_cfg = copy.deepcopy(cfg.test_dataloader.dataset)\n            # lazy init. We only need the metainfo.\n            test_dataset_cfg['lazy_init'] = True\n            metainfo = DATASETS.build(test_dataset_cfg).metainfo\n            cfg_palette = metainfo.get('palette', None)\n            if cfg_palette is not None:\n                model.dataset_meta['palette'] = cfg_palette\n            else:\n                if 'palette' not in model.dataset_meta:\n                    warnings.warn(\n                        'palette does not exist, random is used by default. '\n                        'You can also set the palette to customize.')","sourceCodeStart":120,"sourceCodeEnd":156,"githubUrl":"https://github.com/open-mmlab/mmdetection/blob/cfd5d3a985b0249de009b67d04f37263e11cdf3d/mmdet/apis/det_inferencer.py#L120-L156","documentation":"Companion warning to [244]: because weights is None, class names cannot come from a checkpoint, so COCO classes are used as the default labeling.","triggerScenarios":"Same as 244 — DetInferencer built with weights=None; always emitted alongside the 'Checkpoint is not loaded' warning.","commonSituations":"Quick pipeline tests without weights; mislabeled outputs when the model is actually trained on a non-COCO dataset.","solutions":["Load real weights (fixes both warnings)","Explicitly provide classes to DetInferencer","Ignore if COCO labels are acceptable"],"exampleFix":"// before\ninferencer = DetInferencer(cfg)\n// after\ninferencer = DetInferencer(cfg, weights='ckpt.pth', classes=my_classes)","handlingStrategy":"validation","validationCode":"if weights is None:\n    print('classes default to COCO; set classes= for correct labels')","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Provide classes explicitly when weights are absent"],"tags":["python","warning","class-names","inferencer"],"backgroundTag":"model-weights-not-loaded","analyzedSha":"cfd5d3a985b0249de009b67d04f37263e11cdf3d","analyzedAt":"2026-08-27T20:54:20.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}