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