用resnet提取对象特征时,往往中间层也会包含一些细节信息,所以有时候会将中间层的特征抽取出来,本文将介绍如何抽取中间层的特征。
二、准备代码
- import tensorflow as tf
-
- from tensorflow.contrib import slim
- from tensorflow.contrib.slim.nets import resnet_v2
-
- def resnet_arg_scope(self, is_training=True, # 训练标记
- weight_decay=0.0001, # 权重衰减速率
- batch_norm_decay=0.997, # BN的衰减速率
- batch_norm_epsilon=1e-5, # BN的epsilon默认1e-5
- batch_norm_scale=True): # BN的scale默认值
-
- batch_norm_params = { # 定义batch normalization(标准化)的参数字典
- 'is_training': is_training,
- 'decay': batch_norm_decay,
- 'epsilon': batch_norm_epsilon,
- 'scale': batch_norm_scale,
- 'updates_collections': tf.GraphKeys.UPDATE_OPS,
- }
-
- with slim.arg_scope( # 通过slim.arg_scope将[slim.conv2d]的几个默认参数设置好
- [slim.conv2d],
- weights_regularizer=slim.l2_regularizer(weight_decay), # 权重正则器设置为L2正则
- weights_initializer=slim.variance_scaling_initializer(), # 权重初始化器
- activation_fn=tf.nn.relu, # 激活函数
- normalizer_fn=slim.batch_norm, # 标准化器设置为BN
- normalizer_params=batch_norm_params):
- with slim.arg_scope([slim.batch_norm], **batch_norm_params):
- with slim.arg_scope([slim.max_pool2d], padding='SAME') as arg_sc: # ResNet原论文是VALID模式,SAME模式可让特征对齐更简单
- return arg_sc
-
- def _image_extract_resnet(image):
- with slim.arg_scope(resnet_arg_scope(is_training=True)):
- net, end_points = resnet_v2.resnet_v2_152(image, reuse=tf.AUTO_REUSE)
以上代码是调用resnet152的过程,抽取特征则只涉及到end_points的信息。
直接对endpoint进行输出,然后整理一下就可以得到所有中间层的信息。整理的结果如下:
- ('resnet_v2_152/conv1', shape=(1, 112, 112, 64)),
-
- ('resnet_v2_152/block1/unit_1/bottleneck_v2/shortcut', shape=(1, 56, 56, 256)),
- ('resnet_v2_152/block1/unit_1/bottleneck_v2/conv1', shape=(1, 56, 56, 64)),
- ('resnet_v2_152/block1/unit_1/bottleneck_v2/conv2', shape=(1, 56, 56, 64)),
- ('resnet_v2_152/block1/unit_1/bottleneck_v2/conv3', shape=(1, 56, 56, 256)),
- ('resnet_v2_152/block1/unit_1/bottleneck_v2', shape=(1, 56, 56, 256)),
- ('resnet_v2_152/block1/unit_2/bottleneck_v2/conv1', shape=(1, 56, 56, 64)),
- ('resnet_v2_152/block1/unit_2/bottleneck_v2/conv2', shape=(1, 56, 56, 64)),
- ('resnet_v2_152/block1/unit_2/bottleneck_v2/conv3', shape=(1, 56, 56, 256)),
- ('resnet_v2_152/block1/unit_2/bottleneck_v2', shape=(1, 56, 56, 256)),
- ('resnet_v2_152/block1/unit_3/bottleneck_v2/conv1', shape=(1, 56, 56, 64)),
- ('resnet_v2_152/block1/unit_3/bottleneck_v2/conv2', shape=(1, 28, 28, 64)),
- ('resnet_v2_152/block1/unit_3/bottleneck_v2/conv3', shape=(1, 28, 28, 256)),
- ('resnet_v2_152/block1/unit_3/bottleneck_v2', shape=(1, 28, 28, 256)),
- ('resnet_v2_152/block1', shape=(1, 28, 28, 256)),
-
- ('resnet_v2_152/block2/unit_1/bottleneck_v2/shortcut', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_1/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_1/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_1/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_1/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_2/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_2/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_2/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_2/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_3/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_3/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_3/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_3/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_4/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_4/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_4/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_4/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_5/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_5/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_5/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_5/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_6/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_6/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_6/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_6/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_7/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_7/bottleneck_v2/conv2', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_7/bottleneck_v2/conv3', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_7/bottleneck_v2', shape=(1, 28, 28, 512)),
- ('resnet_v2_152/block2/unit_8/bottleneck_v2/conv1', shape=(1, 28, 28, 128)),
- ('resnet_v2_152/block2/unit_8/bottleneck_v2/conv2', shape=(1, 14, 14, 128)),
- ('resnet_v2_152/block2/unit_8/bottleneck_v2/conv3', shape=(1, 14, 14, 512)),
- ('resnet_v2_152/block2/unit_8/bottleneck_v2', shape=(1, 14, 14, 512)),
- ('resnet_v2_152/block2', shape=(1, 14, 14, 512)),
-
- ('resnet_v2_152/block3/unit_1/bottleneck_v2/shortcut', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_1/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_1/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_1/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_1/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_2/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_2/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_2/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_2/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_3/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_3/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_3/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_3/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_4/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_4/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_4/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_4/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_5/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_5/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_5/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_5/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_6/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_6/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_6/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_6/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_7/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_7/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_7/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_7/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_8/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_8/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_8/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_8/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_9/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_9/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_9/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_9/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_10/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_10/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_10/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_10/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_11/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_11/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_11/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_11/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_12/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_12/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_12/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_12/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_13/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_13/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_13/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_13/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_14/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_14/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_14/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_14/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_15/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_15/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_15/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_15/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_16/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_16/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_16/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_16/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_17/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_17/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_17/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_17/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_18/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_18/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_18/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_18/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_19/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_19/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_19/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_19/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_20/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_20/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_20/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_20/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_21/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_21/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_21/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_21/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_22/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_22/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_22/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_22/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_23/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_23/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_23/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_23/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_24/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_24/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_24/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_24/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_25/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_25/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_25/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_25/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_26/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_26/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_26/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_26/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_27/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_27/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_27/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_27/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_28/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_28/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_28/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_28/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_29/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_29/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_29/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_29/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_30/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_30/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_30/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_30/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_31/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_31/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_31/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_31/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_32/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_32/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_32/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_32/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_33/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_33/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_33/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_33/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_34/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_34/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_34/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_34/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_35/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_35/bottleneck_v2/conv2', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_35/bottleneck_v2/conv3', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_35/bottleneck_v2', shape=(1, 14, 14, 1024)),
- ('resnet_v2_152/block3/unit_36/bottleneck_v2/conv1', shape=(1, 14, 14, 256)),
- ('resnet_v2_152/block3/unit_36/bottleneck_v2/conv2', shape=(1, 7, 7, 256)),
- ('resnet_v2_152/block3/unit_36/bottleneck_v2/conv3', shape=(1, 7, 7, 1024)),
- ('resnet_v2_152/block3/unit_36/bottleneck_v2', shape=(1, 7, 7, 1024)),
- ('resnet_v2_152/block3', shape=(1, 7, 7, 1024)),
-
- ('resnet_v2_152/block4/unit_1/bottleneck_v2/shortcut', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4/unit_1/bottleneck_v2/conv1', shape=(1, 7, 7, 512)),
- ('resnet_v2_152/block4/unit_1/bottleneck_v2/conv2', shape=(1, 7, 7, 512)),
- ('resnet_v2_152/block4/unit_1/bottleneck_v2/conv3', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4/unit_1/bottleneck_v2', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4/unit_2/bottleneck_v2/conv1', shape=(1, 7, 7, 512)),
- ('resnet_v2_152/block4/unit_2/bottleneck_v2/conv2', shape=(1, 7, 7, 512)),
- ('resnet_v2_152/block4/unit_2/bottleneck_v2/conv3', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4/unit_2/bottleneck_v2', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4/unit_3/bottleneck_v2/conv1', shape=(1, 7, 7, 512)),
- ('resnet_v2_152/block4/unit_3/bottleneck_v2/conv2', shape=(1, 7, 7, 512)),
- ('resnet_v2_152/block4/unit_3/bottleneck_v2/conv3', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4/unit_3/bottleneck_v2', shape=(1, 7, 7, 2048)),
- ('resnet_v2_152/block4', shape=(1, 7, 7, 2048))])
如果想要调用中间的某一层可以如下设置:
- def _image_extract_resnet(self, image, label, driven=False):
- # 图像特征处理模块
- with slim.arg_scope(self.resnet_arg_scope(is_training=True)):
- net, end_points = resnet_v2.resnet_v2_152(image, reuse=tf.AUTO_REUSE)
-
- # 想要别的层的话替换[]中的内容就可以了
- feature = end_points['resnet_v2_152/conv1']
-
- return net, feature