예제 #1
0
    def _create_feature_extractor(self,
                                  depth_multiplier,
                                  pad_to_multiple,
                                  use_explicit_padding=False,
                                  num_layers=6,
                                  is_training=False,
                                  use_keras=False):
        """Constructs a new feature extractor.

    Args:
      depth_multiplier: float depth multiplier for feature extractor
      pad_to_multiple: the nearest multiple to zero pad the input height and
        width dimensions to.
      use_explicit_padding: Use 'VALID' padding for convolutions, but prepad
        inputs so that the output dimensions are the same as if 'SAME' padding
        were used.
      num_layers: number of SSD layers.
      is_training: whether the network is in training mode.
      use_keras: if True builds a keras-based feature extractor, if False builds
        a slim-based one.

    Returns:
      an ssd_meta_arch.SSDFeatureExtractor object.
    """
        min_depth = 32
        del use_keras
        return ssd_mobilenet_v1_feature_extractor.SSDMobileNetV1FeatureExtractor(
            is_training,
            depth_multiplier,
            min_depth,
            pad_to_multiple,
            self.conv_hyperparams_fn,
            use_explicit_padding=use_explicit_padding,
            num_layers=num_layers)
예제 #2
0
    def _create_feature_extractor(self,
                                  depth_multiplier,
                                  pad_to_multiple,
                                  use_explicit_padding=False,
                                  num_layers=6,
                                  is_training=False,
                                  use_keras=False):

        min_depth = 32
        if use_keras:
            return (ssd_mobilenet_v1_keras_feature_extractor.
                    SSDMobileNetV1KerasFeatureExtractor(
                        is_training=is_training,
                        depth_multiplier=depth_multiplier,
                        min_depth=min_depth,
                        pad_to_multiple=pad_to_multiple,
                        conv_hyperparams=self._build_conv_hyperparams(
                            add_batch_norm=False),
                        freeze_batchnorm=False,
                        inplace_batchnorm_update=False,
                        use_explicit_padding=use_explicit_padding,
                        num_layers=num_layers,
                        name='MobilenetV1'))
        else:
            return ssd_mobilenet_v1_feature_extractor.SSDMobileNetV1FeatureExtractor(
                is_training,
                depth_multiplier,
                min_depth,
                pad_to_multiple,
                self.conv_hyperparams_fn,
                use_explicit_padding=use_explicit_padding,
                num_layers=num_layers)
예제 #3
0
    def _create_feature_extractor(self,
                                  depth_multiplier,
                                  pad_to_multiple,
                                  is_training=True,
                                  batch_norm_trainable=True,
                                  use_explicit_padding=False):
        """Constructs a new feature extractor.

    Args:
      depth_multiplier: float depth multiplier for feature extractor
      pad_to_multiple: the nearest multiple to zero pad the input height and
        width dimensions to.
      is_training: whether the network is in training mode.
      batch_norm_trainable: Whether to update batch norm parameters during
        training or not.
      use_explicit_padding: Use 'VALID' padding for convolutions, but prepad
        inputs so that the output dimensions are the same as if 'SAME' padding
        were used.
    Returns:
      an ssd_meta_arch.SSDFeatureExtractor object.
    """
        min_depth = 32
        with slim.arg_scope([slim.conv2d],
                            normalizer_fn=slim.batch_norm) as sc:
            conv_hyperparams = sc
        return ssd_mobilenet_v1_feature_extractor.SSDMobileNetV1FeatureExtractor(
            is_training,
            depth_multiplier,
            min_depth,
            pad_to_multiple,
            conv_hyperparams,
            batch_norm_trainable=batch_norm_trainable,
            use_explicit_padding=use_explicit_padding)
예제 #4
0
    def _create_feature_extractor(self, depth_multiplier):
        """Constructs a new feature extractor.

        Args:
          depth_multiplier: float depth multiplier for feature extractor
        Returns:
          an ssd_meta_arch.SSDFeatureExtractor object.
        """
        min_depth = 32
        conv_hyperparams = {}
        return ssd_mobilenet_v1_feature_extractor.SSDMobileNetV1FeatureExtractor(
            depth_multiplier, min_depth, conv_hyperparams)
    def _create_feature_extractor(self,
                                  depth_multiplier,
                                  pad_to_multiple,
                                  use_explicit_padding=False,
                                  is_training=False,
                                  use_keras=False):
        """Constructs a new feature extractor.

    Args:
      depth_multiplier: float depth multiplier for feature extractor
      pad_to_multiple: the nearest multiple to zero pad the input height and
        width dimensions to.
      use_explicit_padding: Use 'VALID' padding for convolutions, but prepad
        inputs so that the output dimensions are the same as if 'SAME' padding
        were used.
      is_training: whether the network is in training mode.
      use_keras: if True builds a keras-based feature extractor, if False builds
        a slim-based one.
    Returns:
      an ssd_meta_arch.SSDFeatureExtractor object.
    """
        min_depth = 32
        if use_keras:
            return (ssd_mobilenet_v1_keras_feature_extractor.
                    SSDMobileNetV1KerasFeatureExtractor(
                        is_training=is_training,
                        depth_multiplier=depth_multiplier,
                        min_depth=min_depth,
                        pad_to_multiple=pad_to_multiple,
                        conv_hyperparams=self._build_conv_hyperparams(
                            add_batch_norm=False),
                        freeze_batchnorm=False,
                        inplace_batchnorm_update=False,
                        use_explicit_padding=use_explicit_padding,
                        name='MobilenetV1'))
        else:
            return ssd_mobilenet_v1_feature_extractor.SSDMobileNetV1FeatureExtractor(
                is_training,
                depth_multiplier,
                min_depth,
                pad_to_multiple,
                self.conv_hyperparams_fn,
                use_explicit_padding=use_explicit_padding)
  def _create_feature_extractor(self, depth_multiplier, pad_to_multiple,
                                is_training=True, batch_norm_trainable=True):
    """Constructs a new feature extractor.

    Args:
      depth_multiplier: float depth multiplier for feature extractor
      pad_to_multiple: the nearest multiple to zero pad the input height and
        width dimensions to.
      is_training: whether the network is in training mode.
      batch_norm_trainable: Whether to update batch norm parameters during
        training or not.
    Returns:
      an ssd_meta_arch.SSDFeatureExtractor object.
    """
    min_depth = 32
    with slim.arg_scope([slim.conv2d], normalizer_fn=slim.batch_norm) as sc:
      conv_hyperparams = sc
    return ssd_mobilenet_v1_feature_extractor.SSDMobileNetV1FeatureExtractor(
        is_training, depth_multiplier, min_depth, pad_to_multiple,
        conv_hyperparams, batch_norm_trainable)