open-mmlab/mmdetection · warning

``build_match_cost`` would be deprecated soon, please use ``

Error message

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

What it means

Deprecation warning from build_match_cost: the helper only delegates to TASK_UTILS.build and is scheduled for removal. Construct match costs (e.g. BBoxL1Cost, FocalLossCost, IoUCost) through mmdet.registry.TASK_UTILS instead.

Source

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

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)


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)

View on GitHub (pinned to cfd5d3a985)

Solutions

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

Example fix

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

Strategy: fallback

Validate before calling

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

Try / catch

with warnings.catch_warnings():
    warnings.simplefilter('ignore', DeprecationWarning)
    cost = build_match_cost(cfg)

Prevention

When it happens

Trigger: Calling build_match_cost(cfg) when wiring up matcher costs for DETR-style heads; legacy imports of the builder.

Common situations: DETR / Deformable-DETR head customization using old builder APIs during mmdet upgrades.

Related errors


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