open-mmlab/mmdetection · warning

``build_sampler`` would be deprecated soon, please use ``mmd

Error message

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

What it means

Deprecation warning from mmdet build_bbox_coder: the helper builders in mmdet/models/task_modules/builder.py are shims over TASK_UTILS and will be removed. (Note the message text itself says 'build_sampler' — a copy-paste bug — but the warning fires for build_bbox_coder.) Use mmdet.registry.TASK_UTILS.build(cfg, default_args) directly.

Source

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

# Copyright (c) OpenMMLab. All rights reserved.
import warnings

from mmdet.registry import TASK_UTILS

PRIOR_GENERATORS = TASK_UTILS
ANCHOR_GENERATORS = TASK_UTILS
BBOX_ASSIGNERS = TASK_UTILS
BBOX_SAMPLERS = TASK_UTILS
BBOX_CODERS = TASK_UTILS
MATCH_COSTS = TASK_UTILS
IOU_CALCULATORS = TASK_UTILS


def build_bbox_coder(cfg, **default_args):
    """Builder of box coder."""
    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_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)

View on GitHub (pinned to cfd5d3a985)

Solutions

  1. Replace build_bbox_coder(cfg, ...) with TASK_UTILS.build(cfg, default_args=...)
  2. Import TASK_UTILS from mmdet.registry
  3. Update imports of the deprecated builder module everywhere

Example fix

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

Strategy: fallback

Validate before calling

from mmdet.registry import TASK_UTILS
assert hasattr(TASK_UTILS, 'build')

Try / catch

with warnings.catch_warnings():
    warnings.simplefilter('ignore', DeprecationWarning)
    coder = build_bbox_coder(cfg)  # transitional

Prevention

When it happens

Trigger: Calling mmdet.models.task_modules.builder.build_bbox_coder(cfg) or importing BBOX_CODERS/build_* aliases; custom heads still importing the old builder path.

Common situations: Codebases migrating from mmdet 2.x task_modules builders to the registry-based TASK_UTILS API.

Related errors


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