|
|
|
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
|
|
|