def build_backbone(self, input_img_batch): if self.base_network_name.startswith('resnet_v1'): feature_dict = resnet.ResNetBackbone(self.cfgs).resnet_base( input_img_batch, scope_name=self.base_network_name, is_training=self.is_training) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training) elif self.base_network_name in [ 'resnet152_v1d', 'resnet101_v1d', 'resnet50_v1d', 'resnet152_v1b', 'resnet101_v1b', 'resnet50_v1b', 'resnet34_v1b', 'resnet18_v1b' ]: feature_dict = resnet_gluoncv.ResNetGluonCVBackbone( self.cfgs).resnet_base(input_img_batch, scope_name=self.base_network_name, is_training=self.is_training) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training) elif self.base_network_name.startswith('MobilenetV2'): feature_dict = mobilenet_v2.MobileNetV2Backbone( self.cfgs).mobilenetv2_base(input_img_batch, is_training=self.is_training) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training) elif 'efficientnet-lite' in self.base_network_name: feature_dict = efficientnet_lite_builder.EfficientNetLiteBackbone( self.cfgs).build_model_fpn_base( input_img_batch, model_name=self.base_network_name, training=True) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training) elif 'efficientnet' in self.base_network_name: feature_dict = efficientnet_builder.EfficientNetBackbone( self.cfgs).build_model_fpn_base( input_img_batch, model_name=self.base_network_name, training=True) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training) elif 'darknet' in self.base_network_name: feature_dict = darknet.DarkNetBackbone(self.cfgs).darknet53_body( input_img_batch, is_training=self.is_training) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training) else: raise ValueError( 'Sorry, we only support resnet, mobilenet_v2 and efficient.')
def build_backbone(self, input_img_batch): if self.base_network_name.startswith('resnet_v1'): feature_dict = resnet.ResNetBackbone(self.cfgs).resnet_base( input_img_batch, scope_name=self.base_network_name, is_training=self.is_training) elif self.base_network_name in self.pretrain_zoo.mxnet_zoo: feature_dict = resnet_gluoncv.ResNetGluonCVBackbone( self.cfgs).resnet_base(input_img_batch, scope_name=self.base_network_name, is_training=self.is_training) elif self.base_network_name in self.pretrain_zoo.pth_zoo: feature_dict = resnet_pytorch.ResNetPytorchBackbone( self.cfgs).resnet_base(input_img_batch, scope_name=self.base_network_name, is_training=self.is_training) elif self.base_network_name.startswith('MobilenetV2'): feature_dict = mobilenet_v2.MobileNetV2Backbone( self.cfgs).mobilenetv2_base(input_img_batch, is_training=self.is_training) elif 'efficientnet-lite' in self.base_network_name: feature_dict = efficientnet_lite_builder.EfficientNetLiteBackbone( self.cfgs).build_model_fpn_base( input_img_batch, model_name=self.base_network_name, training=True) elif 'efficientnet' in self.base_network_name: feature_dict = efficientnet_builder.EfficientNetBackbone( self.cfgs).build_model_fpn_base( input_img_batch, model_name=self.base_network_name, training=True) elif 'darknet' in self.base_network_name: feature_dict = darknet.DarkNetBackbone(self.cfgs).darknet53_body( input_img_batch, is_training=self.is_training) else: raise ValueError('Sorry, we only support {}'.format( self.pretrain_zoo.all_pretrain)) return self.fpn_func.fpn_retinanet(feature_dict, self.is_training)