Пример #1
0
def resnet_v2_50(inputs,
                 config,
                 is_training=True,
                 scope='resnet_v2_50'):
    """Modified ResNet-50 model."""
    blocks = [
        resnet_v2.resnet_v2_block('block1',
                                  base_depth=config.block1_depth,
                                  num_units=config.block1_units,
                                  stride=config.block1_stride),
        resnet_v2.resnet_v2_block('block2',
                                  base_depth=config.block2_depth,
                                  num_units=config.block2_units,
                                  stride=config.block2_stride),
        resnet_v2.resnet_v2_block('block3',
                                  base_depth=config.block3_depth,
                                  num_units=config.block3_units,
                                  stride=config.block3_stride),
        resnet_v2.resnet_v2_block('block4',
                                  base_depth=config.block4_depth,
                                  num_units=config.block4_units,
                                  stride=config.block4_stride),
    ]
    return resnet_v2.resnet_v2(inputs,
                               blocks,
                               is_training=is_training,
                               global_pool=False,
                               include_root_block=True,
                               scope=scope)
Пример #2
0
def resnet_12(inputs, num_classes, scope='resnet_12'):
    blocks = [
        resnet_v2.resnet_v2_block('block1',
                                  base_depth=64,
                                  num_units=2,
                                  stride=1),
        resnet_v2.resnet_v2_block('block2',
                                  base_depth=64,
                                  num_units=2,
                                  stride=1),
        resnet_v2.resnet_v2_block('block3',
                                  base_depth=64,
                                  num_units=2,
                                  stride=1),
        resnet_v2.resnet_v2_block('block4',
                                  base_depth=64,
                                  num_units=2,
                                  stride=1),
        resnet_v2.resnet_v2_block('block5',
                                  base_depth=64,
                                  num_units=2,
                                  stride=1)
    ]
    return resnet_v2.resnet_v2(inputs,
                               blocks,
                               num_classes,
                               is_training=True,
                               global_pool=True,
                               output_stride=None,
                               include_root_block=True,
                               reuse=None,
                               scope=scope)
Пример #3
0
def resnet_small(inputs,
                 num_classes=None,
                 is_training=True,
                 global_pool=True,
                 output_stride=None,
                 include_root_block=True,
                 reuse=None,
                 scope='resnet_small'):
    blocks = [
        resnet_v2.resnet_v2_block('block1',
                                  base_depth=32,
                                  num_units=2,
                                  stride=2),
        resnet_v2.resnet_v2_block('block2',
                                  base_depth=64,
                                  num_units=2,
                                  stride=2),
        resnet_v2.resnet_v2_block('block3',
                                  base_depth=128,
                                  num_units=2,
                                  stride=2),
        resnet_v2.resnet_v2_block('block4',
                                  base_depth=256,
                                  num_units=2,
                                  stride=2),
    ]
    return resnet_v2.resnet_v2(inputs,
                               blocks,
                               num_classes,
                               is_training=is_training,
                               global_pool=global_pool,
                               output_stride=output_stride,
                               include_root_block=include_root_block,
                               reuse=reuse,
                               scope=scope)
Пример #4
0
def fr_v2(x,
          output_neurons,
          inside_neurons,
          is_training,
          name='fr',
          wt_decay=0.0001,
          stride=1,
          updates_collections=tf.GraphKeys.UPDATE_OPS):
    """Performs fusion of information between the map and the reward map.
  Inputs
    x:   NxHxWxC1

  Outputs
    fr map:     NxHxWx(output_neurons)
  """
    if type(stride) != list:
        stride = [stride]
    with slim.arg_scope(
            resnet_v2.resnet_utils.resnet_arg_scope(weight_decay=wt_decay)):
        with slim.arg_scope([slim.batch_norm],
                            updates_collections=updates_collections) as arg_sc:
            # Change the updates_collections for the conv normalizer_params to None
            for i in range(len(arg_sc.keys())):
                if 'convolution' in arg_sc.keys()[i]:
                    arg_sc.values()[i]['normalizer_params'][
                        'updates_collections'] = updates_collections
            with slim.arg_scope(arg_sc):
                bottleneck = resnet_v2.bottleneck
                blocks = []
                for i, s in enumerate(stride):
                    b = resnet_v2.resnet_utils.Block(
                        'block{:d}'.format(i + 1), bottleneck,
                        [{
                            'depth': output_neurons,
                            'depth_bottleneck': inside_neurons,
                            'stride': stride[i]
                        }])
                    blocks.append(b)
                x, outs = resnet_v2.resnet_v2(x,
                                              blocks,
                                              num_classes=None,
                                              is_training=is_training,
                                              global_pool=False,
                                              output_stride=None,
                                              include_root_block=False,
                                              reuse=False,
                                              scope=name)
    return x, outs
Пример #5
0
 def _resnet_small(self,
                   inputs,
                   num_classes=None,
                   global_pool=True,
                   output_stride=None,
                   include_root_block=True,
                   reuse=None,
                   scope='resnet_v2_small'):
   """A shallow and thin ResNet v2 for faster tests."""
   bottleneck = resnet_v2.bottleneck
   blocks = [
       resnet_utils.Block(
           'block1', bottleneck, [(4, 1, 1)] * 2 + [(4, 1, 2)]),
       resnet_utils.Block(
           'block2', bottleneck, [(8, 2, 1)] * 2 + [(8, 2, 2)]),
       resnet_utils.Block(
           'block3', bottleneck, [(16, 4, 1)] * 2 + [(16, 4, 2)]),
       resnet_utils.Block(
           'block4', bottleneck, [(32, 8, 1)] * 2)]
   return resnet_v2.resnet_v2(inputs, blocks, num_classes, global_pool,
                              output_stride, include_root_block, reuse, scope)
Пример #6
0
 def _resnet_small(self,
                   inputs,
                   num_classes=None,
                   global_pool=True,
                   output_stride=None,
                   include_root_block=True,
                   reuse=None,
                   scope='resnet_v2_small'):
   """A shallow and thin ResNet v2 for faster tests."""
   bottleneck = resnet_v2.bottleneck
   blocks = [
       resnet_utils.Block(
           'block1', bottleneck, [(4, 1, 1)] * 2 + [(4, 1, 2)]),
       resnet_utils.Block(
           'block2', bottleneck, [(8, 2, 1)] * 2 + [(8, 2, 2)]),
       resnet_utils.Block(
           'block3', bottleneck, [(16, 4, 1)] * 2 + [(16, 4, 2)]),
       resnet_utils.Block(
           'block4', bottleneck, [(32, 8, 1)] * 2)]
   return resnet_v2.resnet_v2(inputs, blocks, num_classes, global_pool,
                              output_stride, include_root_block, reuse, scope)
def resnet_v2_light(inputs,
                    num_classes=None,
                    is_training=True,
                    global_pool=True,
                    output_stride=None,
                    spatial_squeeze=True,
                    reuse=None,
                    scope='resnet_v2_light'):
    """ResNet-light model of AIlab. See resnet_v2() for arg and return description."""
    blocks = [
        resnet_v2.resnet_v2_block('block1',
                                  base_depth=16,
                                  num_units=3,
                                  stride=2),
        resnet_v2.resnet_v2_block('block2',
                                  base_depth=32,
                                  num_units=4,
                                  stride=2),
        resnet_v2.resnet_v2_block('block3',
                                  base_depth=64,
                                  num_units=8,
                                  stride=2),
        resnet_v2.resnet_v2_block('block4',
                                  base_depth=128,
                                  num_units=3,
                                  stride=1),
    ]

    return resnet_v2.resnet_v2(inputs,
                               blocks,
                               num_classes,
                               is_training=is_training,
                               global_pool=global_pool,
                               output_stride=output_stride,
                               include_root_block=True,
                               reuse=reuse,
                               scope=scope)