• Stzpz's avatar
    Supported FBNet architecture. (#463) · b23eee0c
    Stzpz authored
    * Supported any feature map size for average pool.
    * Different models may have different feature map size.
    
    * Used registry to register keypoint and mask heads.
    
    * Passing in/out channels between modules when creating the model.
    
    Passing in/out channels between modules when creating the model. This simplifies the code to compute the input channels for feature extractors and makes the predictors independent of the backbone architectures.
    * Passed in_channels to rpn and head builders.
    * Set out_channels to model modules including backbone and feature extractors.
    * Moved cfg.MODEL.BACKBONE.OUT_CHANNELS to cfg.MODEL.RESNETS.BACKBONE_OUT_CHANNELS as it is not used by all architectures. Updated config files accordingly.
    
    For new architecture modules, the return module needs to contain a field called 'out_channels' to indicate the output channel size.
    
    * Added unit test for box_coder and nms.
    
    * Added FBNet architecture.
    
    * FBNet is a general architecture definition to support efficient architecture search and MaskRCNN2GO.
    * Included various efficient building blocks (inverted residual, shuffle, separate dw conv, dw upsampling etc.)
    * Supported building backbone, rpn, detection, keypoint and mask heads using efficient building blocks.
    * Architecture could be defined in `fbnet_modeldef.py` or in `cfg.MODEL.FBNET.ARCH_DEF` directly.
    * A few baseline architectures are included.
    
    * Added various unit tests.
    
    * build and run backbones.
    * build and run feature extractors.
    * build and run predictors.
    
    * Added a unit test to verify all config files are loadable.
    b23eee0c