def resnet_v2_101_multi(inputs, num_classes=None, is_training=True, global_pool=True, output_stride=None, spatial_squeeze=True, reuse=None, scope='resnet_v2_101'): """ResNet-101 model of [1]. See resnet_v2() for arg and return description.""" block3_rate = [1, 4, 2] block3_rates = [ None, # 1 None, # 2 None, # 3 None, # 4 None, # 5 None, # 6 None, # 7 None, # 8 None, # 9 None, # 10 None, # 11 None, # 12 None, # 13 None, # 14 None, # 15 None, # 16 None, # 17 None, # 18 None, # 19 None, # 20 None, # 21 None, # 22 None # 23 ] block4_rates = [ 1, 2, 4 ] blocks = [ resnet_v2_block('block1', base_depth=64, num_units=3, stride=2), resnet_v2_block('block2', base_depth=128, num_units=4, stride=2), resnet_utils.Block('block3', bottleneck, [ {'depth': 1024, 'depth_bottleneck': 256, 'stride': 2, 'scale_rates': rate} for rate in block3_rates]), resnet_utils.Block('block4', bottleneck, [ {'depth': 2048, 'depth_bottleneck': 512, 'stride': 1, 'unit_rate': rate} for rate in block4_rates]), ] return resnet_v2(inputs, blocks, num_classes, is_training=is_training, global_pool=global_pool, output_stride=output_stride, include_root_block=True, spatial_squeeze=spatial_squeeze, reuse=reuse, scope=scope)
def resnet_v2_101(inputs, num_classes=None, is_training=True, global_pool=True, output_stride=None, spatial_squeeze=True, multi_grid=None, reuse=None, scope='resnet_v2_101'): """ResNet-101 model of [1]. See resnet_v2() for arg and return description.""" if multi_grid is None: multi_grid = _DEFAULT_MULTI_GRID else: if len(multi_grid) != 3: raise ValueError('Expect multi_grid to have length 3.') blocks = [ resnet_v2_block('block1', base_depth=64, num_units=3, stride=2), resnet_v2_block('block2', base_depth=128, num_units=4, stride=2), resnet_v2_block('block3', base_depth=256, num_units=23, stride=2), resnet_utils.Block('block4', bottleneck, [ {'depth': 2048, 'depth_bottleneck': 512, 'stride': 1, 'unit_rate': rate} for rate in multi_grid]), ] return resnet_v2(inputs, blocks, num_classes, is_training=is_training, global_pool=global_pool, output_stride=output_stride, include_root_block=True, spatial_squeeze=spatial_squeeze, reuse=reuse, scope=scope)
def resnet_v2_block(scope, base_depth, num_units, stride): """Helper function for creating a resnet_v2 bottleneck block. Args: scope: The scope of the block. base_depth: The depth of the bottleneck layer for each unit. num_units: The number of units in the block. stride: The stride of the block, implemented as a stride in the last unit. All other units have stride=1. Returns: A resnet_v2 bottleneck block. """ return resnet_utils.Block(scope, bottleneck, [{ 'depth': base_depth * 4, 'depth_bottleneck': base_depth, 'stride': 1, 'unit_rate': 1 }] * (num_units - 1) + [{ 'depth': base_depth * 4, 'depth_bottleneck': base_depth, 'stride': stride, 'unit_rate': 1 }])