コード例 #1
0
ファイル: inference.py プロジェクト: wangxiaoran1995/automl
def build_model(model_name: Text, inputs: tf.Tensor, **kwargs):
    """Build model for a given model name.

  Args:
    model_name: the name of the model.
    inputs: an image tensor or a numpy array.
    **kwargs: extra parameters for model builder.

  Returns:
    (cls_outputs, box_outputs): the outputs for class and box predictions.
    Each is a dictionary with key as feature level and value as predictions.
  """
    model_arch = det_model_fn.get_model_arch(model_name)
    mixed_precision = kwargs.get('mixed_precision', None)
    precision = utils.get_precision(kwargs.get('strategy', None),
                                    mixed_precision)
    cls_outputs, box_outputs = utils.build_model_with_precision(
        precision, model_arch, inputs, False, model_name, **kwargs)
    if mixed_precision:
        # Post-processing has multiple places with hard-coded float32.
        # TODO(tanmingxing): Remove them once post-process can adpat to dtypes.
        cls_outputs = {
            k: tf.cast(v, tf.float32)
            for k, v in cls_outputs.items()
        }
        box_outputs = {
            k: tf.cast(v, tf.float32)
            for k, v in box_outputs.items()
        }
    return cls_outputs, box_outputs
コード例 #2
0
def build_model(model_name: Text, inputs: tf.Tensor, **kwargs):
  """Build model for a given model name.
  Args:
    model_name: the name of the model.
    inputs: an image tensor or a numpy array.
    **kwargs: extra parameters for model builder.
  Returns:
    (cls_outputs, box_outputs): the outputs for class and box predictions.
    Each is a dictionary with key as feature level and value as predictions.
  """
  mixed_precision = kwargs.get('mixed_precision', None)
  precision = utils.get_precision(kwargs.get('strategy', None), mixed_precision)

  if kwargs.get('use_keras_model', None):

    def model_arch(feats, model_name=None, **kwargs):
      """Construct a model arch for keras models."""
      config = hparams_config.get_efficientdet_config(model_name)
      config.override(kwargs)
      model = efficientdet_keras.EfficientDetNet(config=config)

      #l=model.layers[0]  # efficientnet part
      #print(l.name)


      #layer_names=[]
      #feats_out=l.predict(feats,steps=1)  #predict
      #for ml in l.layers:
        #print(ml.name)
        #layer_names.append(ml.name)
      #save_feat_fig(feats_out)
      #exit()

      cls_out_list, box_out_list = model(feats, training=False)
      # convert the list of model outputs to a dictionary with key=level.
      assert len(cls_out_list) == config.max_level - config.min_level + 1
      assert len(box_out_list) == config.max_level - config.min_level + 1
      cls_outputs, box_outputs = {}, {}
      for i in range(config.min_level, config.max_level + 1):
        cls_outputs[i] = cls_out_list[i - config.min_level]
        box_outputs[i] = box_out_list[i - config.min_level]
      return cls_outputs, box_outputs

  else:
    model_arch = det_model_fn.get_model_arch(model_name)

  cls_outputs, box_outputs = utils.build_model_with_precision(
      precision, model_arch, inputs, False, model_name, **kwargs)

  if mixed_precision:
    # Post-processing has multiple places with hard-coded float32.
    # TODO(tanmingxing): Remove them once post-process can adpat to dtypes.
    cls_outputs = {k: tf.cast(v, tf.float32) for k, v in cls_outputs.items()}
    box_outputs = {k: tf.cast(v, tf.float32) for k, v in box_outputs.items()}

  return cls_outputs, box_outputs
コード例 #3
0
ファイル: inference.py プロジェクト: tnkong/automl
def build_model(model_name: Text, inputs: tf.Tensor, **kwargs):
    """Build model for a given model name.

  Args:
    model_name: the name of the model.
    inputs: an image tensor or a numpy array.
    **kwargs: extra parameters for model builder.

  Returns:
    (class_outputs, box_outputs): the outputs for class and box predictions.
    Each is a dictionary with key as feature level and value as predictions.
  """
    model_arch = det_model_fn.get_model_arch(model_name)
    class_outputs, box_outputs = model_arch(inputs, model_name, **kwargs)
    return class_outputs, box_outputs
コード例 #4
0
ファイル: model_inspect.py プロジェクト: zyg11/automl
    def build_model(self,
                    inputs: tf.Tensor,
                    is_training: bool = False) -> List[tf.Tensor]:
        """Build model with inputs and labels and print out model stats."""
        tf.logging.info('start building model')
        model_arch = det_model_fn.get_model_arch(self.model_name)
        cls_outputs, box_outputs = model_arch(inputs,
                                              model_name=self.model_name,
                                              is_training_bn=is_training,
                                              use_bfloat16=False,
                                              **self.model_overrides)

        print('backbone+fpn+box params/flops = {:.6f}M, {:.9f}B'.format(
            *utils.num_params_flops()))

        all_outputs = list(cls_outputs.values()) + list(box_outputs.values())
        return all_outputs
コード例 #5
0
    def build_model(self,
                    inputs: tf.Tensor,
                    is_training: bool = False) -> List[tf.Tensor]:
        """Build model with inputs and labels and print out model stats."""
        logging.info('start building model')
        model_arch = det_model_fn.get_model_arch(self.model_name)
        cls_outputs, box_outputs = model_arch(inputs,
                                              model_name=self.model_name,
                                              is_training_bn=is_training,
                                              use_bfloat16=False,
                                              **self.model_overrides)

        print('backbone+fpn+box params/flops = {:.6f}M, {:.9f}B'.format(
            *utils.num_params_flops()))

        # Write to tfevent for tensorboard.
        train_writer = tf.summary.FileWriter(self.logdir)
        train_writer.add_graph(tf.get_default_graph())
        train_writer.flush()

        all_outputs = list(cls_outputs.values()) + list(box_outputs.values())
        return all_outputs
コード例 #6
0
def build_model(model_name: Text, inputs: tf.Tensor, **kwargs):
    model_arch = det_model_fn.get_model_arch(model_name)
    class_outputs, box_outputs = model_arch(inputs, model_name, **kwargs)
    return class_outputs, box_outputs