{"record":{"id":"9962fdbc32452823","repo":"open-mmlab/mmdetection","slug":"nms-cfg-in-test-cfg-will-be-deprecated-please-ren","errorCode":null,"errorMessage":"nms_cfg in test_cfg will be deprecated. Please rename it as nms","messagePattern":"nms_cfg in test_cfg will be deprecated\\. Please rename it as nms","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"mmdet/models/dense_heads/corner_head.py","lineNumber":834,"sourceCode":"        keepinds = (det_bboxes[:, -1] > -0.1)\n        det_bboxes = det_bboxes[keepinds]\n        det_labels = clses[keepinds]\n\n        if with_nms:\n            det_bboxes, det_labels = self._bboxes_nms(det_bboxes, det_labels,\n                                                      self.test_cfg)\n\n        results = InstanceData()\n        results.bboxes = det_bboxes[..., :4]\n        results.scores = det_bboxes[..., 4]\n        results.labels = det_labels\n        return results\n\n    def _bboxes_nms(self, bboxes: Tensor, labels: Tensor,\n                    cfg: ConfigDict) -> Tuple[Tensor, Tensor]:\n        \"\"\"bboxes nms.\"\"\"\n        if 'nms_cfg' in cfg:\n            warning.warn('nms_cfg in test_cfg will be deprecated. '\n                         'Please rename it as nms')\n        if 'nms' not in cfg:\n            cfg.nms = cfg.nms_cfg\n\n        if labels.numel() > 0:\n            max_num = cfg.max_per_img\n            bboxes, keep = batched_nms(bboxes[:, :4], bboxes[:,\n                                                             -1].contiguous(),\n                                       labels, cfg.nms)\n            if max_num > 0:\n                bboxes = bboxes[:max_num]\n                labels = labels[keep][:max_num]\n\n        return bboxes, labels\n\n    def _decode_heatmap(self,\n                        tl_heat: Tensor,\n                        br_heat: Tensor,","sourceCodeStart":816,"sourceCodeEnd":852,"githubUrl":"https://github.com/open-mmlab/mmdetection/blob/cfd5d3a985b0249de009b67d04f37263e11cdf3d/mmdet/models/dense_heads/corner_head.py#L816-L852","documentation":"CornerHead._bboxes_nms warns (note: via a buggy `warning.warn` call — it should be `warnings.warn`, so this line itself can raise NameError in some versions) when test_cfg still uses the old key `nms_cfg` instead of `nms`, then aliases cfg.nms = cfg.nms_cfg. The config key was renamed in mmdet 3.x.","triggerScenarios":"Running CornerNet inference with a test_cfg containing `nms_cfg=...` instead of `nms=...` (old 2.x config).","commonSituations":"Reusing mmdet 2.x CornerNet configs with mmdet 3.x; converting configs manually and missing the nms key rename.","solutions":["Rename `nms_cfg` to `nms` in the model's test_cfg in your config","If you hit a NameError on `warning.warn`, upgrade mmdet — the typo was fixed upstream"],"exampleFix":"# before\ntest_cfg=dict(nms_cfg=dict(type='nms', iou_threshold=0.5), max_per_img=100)\n# after\ntest_cfg=dict(nms=dict(type='nms', iou_threshold=0.5), max_per_img=100)","handlingStrategy":"validation","validationCode":"test_cfg = cfg['model'].get('test_cfg', {})\nif 'nms_cfg' in test_cfg:\n    test_cfg['nms'] = test_cfg.pop('nms_cfg')  # migrate before building model","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Run mmdet's config migration tools when upgrading 2.x -> 3.x","Never keep nms_cfg alongside nms in test_cfg"],"tags":["mmdet","cornernet","config-migration","nms"],"backgroundTag":"config-key-renamed","analyzedSha":"cfd5d3a985b0249de009b67d04f37263e11cdf3d","analyzedAt":"2026-08-27T20:54:20.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}