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