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
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
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
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
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
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