open-mmlab/mmdetection · info
DeprecationWarning: anchor_generator is deprecated, please u
Error message
DeprecationWarning: anchor_generator is deprecated, please use "prior_generator" instead
What it means
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.
Source
Thrown at mmdet/models/dense_heads/anchor_head.py:115
self.prior_generator = TASK_UTILS.build(anchor_generator)
# Usually the numbers of anchors for each level are the same
# except SSD detectors. So it is an int in the most dense
# heads but a list of int in SSDHead
self.num_base_priors = self.prior_generator.num_base_priors[0]
self._init_layers()
@property
def num_anchors(self) -> int:
warnings.warn('DeprecationWarning: `num_anchors` is deprecated, '
'for consistency or also use '
'`num_base_priors` instead')
return self.prior_generator.num_base_priors[0]
@property
def anchor_generator(self) -> AnchorGenerator:
warnings.warn('DeprecationWarning: anchor_generator is deprecated, '
'please use "prior_generator" instead')
return self.prior_generator
def _init_layers(self) -> None:
"""Initialize layers of the head."""
self.conv_cls = nn.Conv2d(self.in_channels,
self.num_base_priors * self.cls_out_channels,
1)
reg_dim = self.bbox_coder.encode_size
self.conv_reg = nn.Conv2d(self.in_channels,
self.num_base_priors * reg_dim, 1)
def forward_single(self, x: Tensor) -> Tuple[Tensor, Tensor]:
"""Forward feature of a single scale level.
Args:
x (Tensor): Features of a single scale level.
View on GitHub (pinned to cfd5d3a985)
Solutions
- Replace head.anchor_generator with head.prior_generator
- Suppress the warning if the access comes from an unmodified third-party module
Example fix
# before gen = self.rpn_head.anchor_generator # after gen = self.rpn_head.prior_generator
Defensive patterns
Strategy: validation
Validate before calling
gen = head.prior_generator if hasattr(head, 'prior_generator') else head.anchor_generator
Type guard
def get_prior_generator(head):
return getattr(head, 'prior_generator', None) or head.anchor_generator Prevention
- Prefer prior_generator in new code
- Grep your repo for anchor_generator accesses after mmdet upgrades
When it happens
Trigger: Accessing head.anchor_generator in custom code, e.g. to get anchors per level or grid shapes.
Common situations: Custom test pipelines or hooks ported from mmdet 2.x that call anchor_generator; external repos like old YOLO/SSD extensions.
Related errors
- DeprecationWarning: `num_anchors` is deprecated, for consist
- pretrained must be a str or None
- num_classes={num_classes} is too small
- DeprecationWarning: pretrained is deprecated, please use "in
- You are calling `simple_test_bboxes` in `dense_test_mixins`,
AI-assisted analysis of open-mmlab/mmdetection@cfd5d3a985 (2026-08-27).
Data as JSON: /api/errors/b48f206da743a8df.
Report an issue: GitHub.