示例#1
0
def build_model(images, num_classes, is_training=True, reuse=None):
    model = delf_v1.DelfV1()
    net, end_points = model.GetResnet50Subnetwork(images,
                                                  global_pool=True,
                                                  is_training=is_training,
                                                  reuse=reuse)

    with slim.arg_scope(
            resnet_v1.resnet_arg_scope(weight_decay=0.0001,
                                       batch_norm_scale=True)):
        with slim.arg_scope([slim.batch_norm], is_training=True):
            feature_map = end_points['resnet_v1_50/block3']
            feature_map = slim.conv2d(feature_map,
                                      512,
                                      1,
                                      rate=1,
                                      activation_fn=tf.nn.relu,
                                      scope='conv1')
            feature_map = tf.reduce_mean(feature_map, [1, 2])
            feature_map = tf.expand_dims(tf.expand_dims(feature_map, 1), 2)
            logits = slim.conv2d(feature_map,
                                 num_classes, [1, 1],
                                 activation_fn=None,
                                 normalizer_fn=None,
                                 scope='logits')
            logits = tf.squeeze(logits, [1, 2], name='spatial_squeeze')
    return logits
示例#2
0
    def _ModelFn(images, normalized_image, reuse):
        """Attention model to get feature map and attention score map.

    Args:
      images: Image tensor.
      normalized_image: Whether or not the images are normalized.
      reuse: Whether or not the layer and its variables should be reused.
    Returns:
      attention: Attention score after the non-linearity.
      feature_map: Feature map after ResNet convolution.
    """
        if normalized_image:
            image_tensor = images
        else:
            image_tensor = NormalizePixelValues(images)

        # Extract features and attention scores.
        model = delf_v1.DelfV1(layer_name)
        _, attention, _, feature_map, _ = model.GetAttentionPrelogit(
            image_tensor,
            attention_nonlinear=attention_nonlinear,
            attention_type=attention_type,
            kernel=[attention_kernel_size, attention_kernel_size],
            training_resnet=False,
            training_attention=False,
            reuse=reuse)
        return attention, feature_map
示例#3
0
def build_model(images, num_classes, is_training=True):
    model = delf_v1.DelfV1()
    logits, attention, feature_map = model.AttentionModel(
        images,
        num_classes=num_classes,
        training_resnet=False,
        training_attention=is_training)
    return logits
示例#4
0
def BuildRegModel(images, normalized_image=False, attentive=True):
    if normalized_image:
      image_tensor = images
    else:
      image_tensor = NormalizePixelValues(images)

    model = delf_v1.DelfV1()
    _, _, _, feature_map, end_points = model.GetAttentionPrelogit(image_tensor)
    if attentive:
      return end_points['attention_feature_map']
    else:
      return feature_map
示例#5
0
    def _ModelFn(images, normalized_image, reuse):

        image_tensor = images if normalized_image else NormalizePixelValues(
            images)

        model = delf_v1.DelfV1(layer_name)
        _, attention, _, feature_map, _ = model.GetAttentionPrelogit(
            image_tensor,
            attention_nonlinear=attention_nonlinear,
            attention_type=attention_type,
            kernel=[attention_kernel_size, attention_kernel_size],
            training_resnet=False,
            training_attention=False,
            reuse=reuse)

        return attention, feature_map
示例#6
0
    def network(self, images, is_training=True, reuse=None):
        model = delf_v1.DelfV1()
        net, end_points = model.GetResnet50Subnetwork(images, global_pool=True, is_training=is_training, reuse=reuse)

        with slim.arg_scope(
                resnet_v1.resnet_arg_scope(
                    weight_decay=0.0001, batch_norm_scale=True)):
            with slim.arg_scope([slim.batch_norm], is_training=True):

                feature_map = end_points['siamese/resnet_v1_50/block3']
                feature_map = slim.conv2d(
                    feature_map,
                    512,
                    1,
                    rate=1,
                    activation_fn=tf.nn.relu,
                    scope='conv1')
                feature_map = tf.reduce_mean(feature_map, [1, 2])
                feature_map = tf.expand_dims(tf.expand_dims(feature_map, 1), 2)
        return feature_map