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