{"record":{"id":"b48f206da743a8df","repo":"open-mmlab/mmdetection","slug":"deprecationwarning-anchor-generator-is-deprecated","errorCode":null,"errorMessage":"DeprecationWarning: anchor_generator is deprecated, please use \"prior_generator\" instead","messagePattern":"DeprecationWarning: anchor_generator is deprecated, please use \"prior_generator\" instead","errorType":"console","errorClass":null,"httpStatus":null,"severity":"info","filePath":"mmdet/models/dense_heads/anchor_head.py","lineNumber":115,"sourceCode":"\n        self.prior_generator = TASK_UTILS.build(anchor_generator)\n\n        # Usually the numbers of anchors for each level are the same\n        # except SSD detectors. So it is an int in the most dense\n        # heads but a list of int in SSDHead\n        self.num_base_priors = self.prior_generator.num_base_priors[0]\n        self._init_layers()\n\n    @property\n    def num_anchors(self) -> int:\n        warnings.warn('DeprecationWarning: `num_anchors` is deprecated, '\n                      'for consistency or also use '\n                      '`num_base_priors` instead')\n        return self.prior_generator.num_base_priors[0]\n\n    @property\n    def anchor_generator(self) -> AnchorGenerator:\n        warnings.warn('DeprecationWarning: anchor_generator is deprecated, '\n                      'please use \"prior_generator\" instead')\n        return self.prior_generator\n\n    def _init_layers(self) -> None:\n        \"\"\"Initialize layers of the head.\"\"\"\n        self.conv_cls = nn.Conv2d(self.in_channels,\n                                  self.num_base_priors * self.cls_out_channels,\n                                  1)\n        reg_dim = self.bbox_coder.encode_size\n        self.conv_reg = nn.Conv2d(self.in_channels,\n                                  self.num_base_priors * reg_dim, 1)\n\n    def forward_single(self, x: Tensor) -> Tuple[Tensor, Tensor]:\n        \"\"\"Forward feature of a single scale level.\n\n        Args:\n            x (Tensor): Features of a single scale level.\n","sourceCodeStart":97,"sourceCodeEnd":133,"githubUrl":"https://github.com/open-mmlab/mmdetection/blob/cfd5d3a985b0249de009b67d04f37263e11cdf3d/mmdet/models/dense_heads/anchor_head.py#L97-L133","documentation":"The AnchorHead.anchor_generator property is a deprecated alias for prior_generator. mmdet renamed AnchorGenerator usage to the generic PriorGenerator API; accessing the old property warns.","triggerScenarios":"Accessing head.anchor_generator in custom code, e.g. to get anchors per level or grid shapes.","commonSituations":"Custom test pipelines or hooks ported from mmdet 2.x that call anchor_generator; external repos like old YOLO/SSD extensions.","solutions":["Replace head.anchor_generator with head.prior_generator","Suppress the warning if the access comes from an unmodified third-party module"],"exampleFix":"# before\ngen = self.rpn_head.anchor_generator\n# after\ngen = self.rpn_head.prior_generator","handlingStrategy":"validation","validationCode":"gen = head.prior_generator if hasattr(head, 'prior_generator') else head.anchor_generator","typeGuard":"def get_prior_generator(head):\n    return getattr(head, 'prior_generator', None) or head.anchor_generator","tryCatchPattern":null,"preventionTips":["Prefer prior_generator in new code","Grep your repo for anchor_generator accesses after mmdet upgrades"],"tags":["mmdet","anchor-head","deprecation","rename"],"backgroundTag":"deprecated-argument-migration","analyzedSha":"cfd5d3a985b0249de009b67d04f37263e11cdf3d","analyzedAt":"2026-08-27T20:54:20.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}