|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| """Backbones configurations."""
|
| import dataclasses
|
| from typing import List, Optional, Tuple
|
|
|
| from official.modeling import hyperparams
|
|
|
|
|
| @dataclasses.dataclass
|
| class Transformer(hyperparams.Config):
|
| """Transformer config."""
|
| mlp_dim: int = 1
|
| num_heads: int = 1
|
| num_layers: int = 1
|
| attention_dropout_rate: float = 0.0
|
| dropout_rate: float = 0.0
|
|
|
|
|
| @dataclasses.dataclass
|
| class VisionTransformer(hyperparams.Config):
|
| """VisionTransformer config."""
|
| model_name: str = 'vit-b16'
|
|
|
| pooler: str = 'token'
|
|
|
| representation_size: int = 0
|
| hidden_size: int = 1
|
| patch_size: int = 16
|
| transformer: Transformer = dataclasses.field(default_factory=Transformer)
|
| init_stochastic_depth_rate: float = 0.0
|
| original_init: bool = True
|
| pos_embed_shape: Optional[Tuple[int, int]] = None
|
|
|
| output_encoded_tokens: bool = True
|
|
|
| output_2d_feature_maps: bool = False
|
|
|
|
|
| layer_scale_init_value: float = 0.0
|
|
|
| transformer_partition_dims: Optional[Tuple[int, int, int, int]] = None
|
|
|
|
|
| @dataclasses.dataclass
|
| class ResNet(hyperparams.Config):
|
| """ResNet config."""
|
| model_id: int = 50
|
| depth_multiplier: float = 1.0
|
| stem_type: str = 'v0'
|
| se_ratio: float = 0.0
|
| stochastic_depth_drop_rate: float = 0.0
|
| scale_stem: bool = True
|
| resnetd_shortcut: bool = False
|
| replace_stem_max_pool: bool = False
|
| bn_trainable: bool = True
|
|
|
|
|
| @dataclasses.dataclass
|
| class DilatedResNet(hyperparams.Config):
|
| """DilatedResNet config."""
|
| model_id: int = 50
|
| output_stride: int = 16
|
| multigrid: Optional[List[int]] = None
|
| stem_type: str = 'v0'
|
| last_stage_repeats: int = 1
|
| se_ratio: float = 0.0
|
| stochastic_depth_drop_rate: float = 0.0
|
| resnetd_shortcut: bool = False
|
| replace_stem_max_pool: bool = False
|
|
|
|
|
| @dataclasses.dataclass
|
| class EfficientNet(hyperparams.Config):
|
| """EfficientNet config."""
|
| model_id: str = 'b0'
|
| se_ratio: float = 0.0
|
| stochastic_depth_drop_rate: float = 0.0
|
|
|
|
|
| @dataclasses.dataclass
|
| class MobileNet(hyperparams.Config):
|
| """Mobilenet config."""
|
| model_id: str = 'MobileNetV2'
|
| filter_size_scale: float = 1.0
|
| stochastic_depth_drop_rate: float = 0.0
|
| output_stride: Optional[int] = None
|
| output_intermediate_endpoints: bool = False
|
|
|
|
|
| @dataclasses.dataclass
|
| class SpineNet(hyperparams.Config):
|
| """SpineNet config."""
|
| model_id: str = '49'
|
| stochastic_depth_drop_rate: float = 0.0
|
| min_level: int = 3
|
| max_level: int = 7
|
|
|
|
|
| @dataclasses.dataclass
|
| class SpineNetMobile(hyperparams.Config):
|
| """SpineNet config."""
|
| model_id: str = '49'
|
| stochastic_depth_drop_rate: float = 0.0
|
| se_ratio: float = 0.2
|
| expand_ratio: int = 6
|
| min_level: int = 3
|
| max_level: int = 7
|
|
|
|
|
|
|
|
|
| use_keras_upsampling_2d: bool = False
|
|
|
|
|
| @dataclasses.dataclass
|
| class RevNet(hyperparams.Config):
|
| """RevNet config."""
|
|
|
| model_id: int = 56
|
|
|
|
|
| @dataclasses.dataclass
|
| class MobileDet(hyperparams.Config):
|
| """Mobiledet config."""
|
| model_id: str = 'MobileDetCPU'
|
| filter_size_scale: float = 1.0
|
|
|
|
|
| @dataclasses.dataclass
|
| class Backbone(hyperparams.OneOfConfig):
|
| """Configuration for backbones.
|
|
|
| Attributes:
|
| type: 'str', type of backbone be used, one of the fields below.
|
| resnet: resnet backbone config.
|
| dilated_resnet: dilated resnet backbone for semantic segmentation config.
|
| revnet: revnet backbone config.
|
| efficientnet: efficientnet backbone config.
|
| spinenet: spinenet backbone config.
|
| spinenet_mobile: mobile spinenet backbone config.
|
| mobilenet: mobilenet backbone config.
|
| mobiledet: mobiledet backbone config.
|
| vit: vision transformer backbone config.
|
| """
|
| type: Optional[str] = None
|
| resnet: ResNet = dataclasses.field(default_factory=ResNet)
|
| dilated_resnet: DilatedResNet = dataclasses.field(
|
| default_factory=DilatedResNet
|
| )
|
| revnet: RevNet = dataclasses.field(default_factory=RevNet)
|
| efficientnet: EfficientNet = dataclasses.field(default_factory=EfficientNet)
|
| spinenet: SpineNet = dataclasses.field(default_factory=SpineNet)
|
| spinenet_mobile: SpineNetMobile = dataclasses.field(
|
| default_factory=SpineNetMobile
|
| )
|
| mobilenet: MobileNet = dataclasses.field(default_factory=MobileNet)
|
| mobiledet: MobileDet = dataclasses.field(default_factory=MobileDet)
|
| vit: VisionTransformer = dataclasses.field(default_factory=VisionTransformer)
|
|
|