open-mmlab/mmdetection · critical · RuntimeError

Please run "pip install openmim" and run "mim install mmpret

Error message

Please run "pip install openmim" and run "mim install mmpretrain" to install mmpretrain first.

What it means

LinearReIDHead requires mmpretrain because it extends mmpretrain's BaseModuleClsHead; if the mmpretrain import failed (mmpretrain is None), __init__ raises RuntimeError immediately with installation instructions.

Source

Thrown at mmdet/models/reid/linear_reid_head.py:59

            Defaults to dict(type='Normal',layer='Linear', mean=0, std=0.01,
            bias=0).
    """

    def __init__(self,
                 num_fcs: int,
                 in_channels: int,
                 fc_channels: int,
                 out_channels: int,
                 norm_cfg: Optional[dict] = None,
                 act_cfg: Optional[dict] = None,
                 num_classes: Optional[int] = None,
                 loss_cls: Optional[dict] = None,
                 loss_triplet: Optional[dict] = None,
                 topk: Union[int, Tuple[int]] = (1, ),
                 init_cfg: Union[dict, List[dict]] = dict(
                     type='Normal', layer='Linear', mean=0, std=0.01, bias=0)):
        if mmpretrain is None:
            raise RuntimeError('Please run "pip install openmim" and '
                               'run "mim install mmpretrain" to '
                               'install mmpretrain first.')
        super(LinearReIDHead, self).__init__(init_cfg=init_cfg)

        assert isinstance(topk, (int, tuple))
        if isinstance(topk, int):
            topk = (topk, )
        for _topk in topk:
            assert _topk > 0, 'Top-k should be larger than 0'
        self.topk = topk

        if loss_cls is None:
            if isinstance(num_classes, int):
                warnings.warn('Since cross entropy is not set, '
                              'the num_classes will be ignored.')
            if loss_triplet is None:
                raise ValueError('Please choose at least one loss in '
                                 'triplet loss and cross entropy loss.')

View on GitHub (pinned to cfd5d3a985)

Solutions

  1. pip install openmim && mim install mmpretrain
  2. Pin a compatible mmpretrain release matching your mmdet version
  3. Run python -c "import mmpretrain" to confirm it imports cleanly

Example fix

# before
RuntimeError at head construction
# after
mim install mmpretrain  # then rebuild/train
Defensive patterns

Strategy: validation

Validate before calling

import importlib.util
assert importlib.util.find_spec('mmpretrain') is not None, 'mmpretrain required for LinearReIDHead'

Prevention

When it happens

Trigger: Instantiating LinearReIDHead (all ReID heads built on it, e.g. in QDTrack/DeepSORT reid configs) in an environment where mmpretrain is missing or fails to import.

Common situations: Optional mmpretrain dependency not installed; mmpretrain version incompatible with installed mmengine/mmcv so the import errors and is swallowed.

Related errors


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