open-mmlab/mmdetection · warning

``build_assigner`` would be deprecated soon, please use ``mm

Error message

``build_assigner`` would be deprecated soon, please use ``mmdet.registry.TASK_UTILS.build()`` 

What it means

Deprecation warning from build_assigner: the wrapper just calls TASK_UTILS.build and will be deleted. Build assigners (ATSSAssigner, MaxIoUAssigner, ...) via mmdet.registry.TASK_UTILS.build(cfg, default_args).

Source

Thrown at mmdet/models/task_modules/builder.py:39

def build_iou_calculator(cfg, default_args=None):
    """Builder of IoU calculator."""
    warnings.warn(
        '``build_iou_calculator`` would be deprecated soon, please use '
        '``mmdet.registry.TASK_UTILS.build()`` ')
    return TASK_UTILS.build(cfg, default_args=default_args)


def build_match_cost(cfg, default_args=None):
    """Builder of IoU calculator."""
    warnings.warn('``build_match_cost`` would be deprecated soon, please use '
                  '``mmdet.registry.TASK_UTILS.build()`` ')
    return TASK_UTILS.build(cfg, default_args=default_args)


def build_assigner(cfg, **default_args):
    """Builder of box assigner."""
    warnings.warn('``build_assigner`` would be deprecated soon, please use '
                  '``mmdet.registry.TASK_UTILS.build()`` ')
    return TASK_UTILS.build(cfg, default_args=default_args)


def build_sampler(cfg, **default_args):
    """Builder of box sampler."""
    warnings.warn('``build_sampler`` would be deprecated soon, please use '
                  '``mmdet.registry.TASK_UTILS.build()`` ')
    return TASK_UTILS.build(cfg, default_args=default_args)


def build_prior_generator(cfg, default_args=None):
    warnings.warn(
        '``build_prior_generator`` would be deprecated soon, please use '
        '``mmdet.registry.TASK_UTILS.build()`` ')
    return TASK_UTILS.build(cfg, default_args=default_args)

View on GitHub (pinned to cfd5d3a985)

Solutions

  1. Use TASK_UTILS.build(cfg, default_args=...)
  2. Update to mmdet.registry imports
  3. Remove dependence on mmdet.models.task_modules.builder

Example fix

# before
from mmdet.models import build_assigner
assigner = build_assigner(cfg)
# after
from mmdet.registry import TASK_UTILS
assigner = TASK_UTILS.build(cfg)
Defensive patterns

Strategy: fallback

Validate before calling

from mmdet.registry import TASK_UTILS
assigner = TASK_UTILS.build(cfg)

Try / catch

with warnings.catch_warnings():
    warnings.simplefilter('ignore', DeprecationWarning)
    assigner = build_assigner(cfg)

Prevention

When it happens

Trigger: Calling build_assigner(cfg) in custom roi_heads/dense_heads; old code paths importing builders from mmdet.models.

Common situations: Upgrading custom detector components that constructed assigners via the pre-registry helper.

Related errors


AI-assisted analysis of open-mmlab/mmdetection@cfd5d3a985 (2026-08-27). Data as JSON: /api/errors/c99a3b6408fc7413. Report an issue: GitHub.