|
|
|
from detectron2.layers import ShapeSpec |
|
from detectron2.utils.registry import Registry |
|
|
|
from .backbone import Backbone |
|
|
|
BACKBONE_REGISTRY = Registry("BACKBONE") |
|
BACKBONE_REGISTRY.__doc__ = """ |
|
Registry for backbones, which extract feature maps from images |
|
|
|
The registered object must be a callable that accepts two arguments: |
|
|
|
1. A :class:`detectron2.config.CfgNode` |
|
2. A :class:`detectron2.layers.ShapeSpec`, which contains the input shape specification. |
|
|
|
Registered object must return instance of :class:`Backbone`. |
|
""" |
|
|
|
|
|
def build_backbone(cfg, input_shape=None): |
|
""" |
|
Build a backbone from `cfg.MODEL.BACKBONE.NAME`. |
|
|
|
Returns: |
|
an instance of :class:`Backbone` |
|
""" |
|
if input_shape is None: |
|
input_shape = ShapeSpec(channels=len(cfg.MODEL.PIXEL_MEAN)) |
|
|
|
backbone_name = cfg.MODEL.BACKBONE.NAME |
|
backbone = BACKBONE_REGISTRY.get(backbone_name)(cfg, input_shape) |
|
assert isinstance(backbone, Backbone) |
|
return backbone |
|
|