def build_inception(inputs, reuse=True, scope='InceptionV4'):
     is_training = False
     arg_scope = inception_v4_arg_scope(weight_decay=0.0)
     with slim.arg_scope(arg_scope):
         with tf.variable_scope(scope, 'InceptionV4', [inputs],
                                reuse=reuse) as scope:
             with slim.arg_scope([slim.batch_norm, slim.dropout],
                                 is_training=is_training):
                 logits, end_points = inception_v4_base(
                     inputs, final_endpoint='Mixed_5b', scope=scope)
     return [
         end_points['Conv2d_2a_3x3'], end_points['Mixed_4a'],
         end_points['Mixed_5b']
     ]
Пример #2
0
 def testBuildBaseNetwork(self):
     batch_size = 5
     height, width = 299, 299
     inputs = tf.random_uniform((batch_size, height, width, 3))
     net, end_points = inception.inception_v4_base(inputs)
     self.assertTrue(net.op.name.startswith('InceptionV4/Mixed_7d'))
     self.assertListEqual(net.get_shape().as_list(),
                          [batch_size, 8, 8, 1536])
     expected_endpoints = [
         'Conv2d_1a_3x3', 'Conv2d_2a_3x3', 'Conv2d_2b_3x3', 'Mixed_3a',
         'Mixed_4a', 'Mixed_5a', 'Mixed_5b', 'Mixed_5c', 'Mixed_5d',
         'Mixed_5e', 'Mixed_6a', 'Mixed_6b', 'Mixed_6c', 'Mixed_6d',
         'Mixed_6e', 'Mixed_6f', 'Mixed_6g', 'Mixed_6h', 'Mixed_7a',
         'Mixed_7b', 'Mixed_7c', 'Mixed_7d'
     ]
     self.assertItemsEqual(end_points.keys(), expected_endpoints)
     for name, op in end_points.items():
         self.assertTrue(op.name.startswith('InceptionV4/' + name))
Пример #3
0
 def testBuildOnlyUpToFinalEndpoint(self):
     batch_size = 5
     height, width = 299, 299
     all_endpoints = [
         'Conv2d_1a_3x3', 'Conv2d_2a_3x3', 'Conv2d_2b_3x3', 'Mixed_3a',
         'Mixed_4a', 'Mixed_5a', 'Mixed_5b', 'Mixed_5c', 'Mixed_5d',
         'Mixed_5e', 'Mixed_6a', 'Mixed_6b', 'Mixed_6c', 'Mixed_6d',
         'Mixed_6e', 'Mixed_6f', 'Mixed_6g', 'Mixed_6h', 'Mixed_7a',
         'Mixed_7b', 'Mixed_7c', 'Mixed_7d'
     ]
     for index, endpoint in enumerate(all_endpoints):
         with tf.Graph().as_default():
             inputs = tf.random_uniform((batch_size, height, width, 3))
             out_tensor, end_points = inception.inception_v4_base(
                 inputs, final_endpoint=endpoint)
             self.assertTrue(
                 out_tensor.op.name.startswith('InceptionV4/' + endpoint))
             self.assertItemsEqual(all_endpoints[:index + 1],
                                   end_points.keys())
Пример #4
0
def feature_extractor(input_tensor, scope_name="FeatureExtractor"):
    last_layer_name = 'Mixed_5e'
    with tf.contrib.slim.arg_scope(inception_v4.inception_v4_arg_scope()):
        inception_output, end_points = inception_v4.inception_v4_base(
            input_tensor, final_endpoint=last_layer_name, scope=scope_name)
    return inception_output