2024年1月24日发(作者:)

out_size = (1.0 * (in_size + 2 * pad - dilation * (k_size - 1) - 1) / stride).astype(32) + 1 else: out_size = (1.0 * (in_size + 2 * pad - dilation * (k_size - 1) - 1) / stride).astype(32) + 1 in_size = out_size total_stride = total_stride * stride return out_size, total_stride#

输出特征图上每个像素感受野的计算(top-down calculation)def in_from_out(net_p, layer_len): RF = 1 for layer in reversed(range(layer_len)): k_size, stride, pad, dilation, _ = net_p[layer] RF = ((RF - 1) * stride) + dilation * (k_size - 1) + 1 return RFif __name__ == '__main__': img_size = 300 print("layer output sizes given image = %dx%d" % (img_size, img_size)) for net in net_(): print('************net structrue name is %s**************' % net) for i in range(len(net_struct[net]['net'])): p = out_from_in(img_size, net_struct[net]['net'], net_struct[net]['name'], i + 1) rf = in_from_out(net_struct[net]['net'], i + 1) print( "layer_name = {:<8} output_size = {:<4} total_stride = {:<3} output_channel = {:<4} rf_size = {:<4}".format( net_struct[net]['name'][i], p[0], p[1], net_struct[net]['net'][i][4], rf) )# vgg16

输出结果如下layer output sizes given image = 300x300************net structrue name is vgg16**************layer_name = conv1_1 output_size = 300 total_stride = 1 output_channel = 64 rf_size = 3

layer_name = conv1_2 output_size = 300 total_stride = 1 output_channel = 64 rf_size = 5

layer_name = pool1 output_size = 150 total_stride = 2 output_channel = 64 rf_size = 6

layer_name = conv2_1 output_size = 150 total_stride = 2 output_channel = 128 rf_size = 10

layer_name = conv2_2 output_size = 150 total_stride = 2 output_channel = 128 rf_size = 14

layer_name = pool2 output_size = 75 total_stride = 4 output_channel = 128 rf_size = 16

layer_name = conv3_1 output_size = 75 total_stride = 4 output_channel = 256 rf_size = 24

layer_name = conv3_2 output_size = 75 total_stride = 4 output_channel = 256 rf_size = 32

layer_name = conv3_3 output_size = 75 total_stride = 4 output_channel = 256 rf_size = 40

layer_name = pool3 output_size = 38 total_stride = 8 output_channel = 256 rf_size = 44

layer_name = conv4_1 output_size = 38 total_stride = 8 output_channel = 512 rf_size = 60

layer_name = conv4_2 output_size = 38 total_stride = 8 output_channel = 512 rf_size = 76

layer_name = conv4_3 output_size = 38 total_stride = 8 output_channel = 512 rf_size = 92

layer_name = pool4 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 100

layer_name = conv5_1 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 132

layer_name = conv5_2 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 164

layer_name = conv5_3 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 196

layer_name = pool5 output_size = 10 total_stride = 32 output_channel = 512 rf_size = 212

# vgg16_ssd

输出结果如下************net structrue name is vgg16_ssd**************layer_name = conv1_1 output_size = 300 total_stride = 1 output_channel = 64 rf_size = 3

layer_name = conv1_2 output_size = 300 total_stride = 1 output_channel = 64 rf_size = 5

layer_name = pool1 output_size = 150 total_stride = 2 output_channel = 64 rf_size = 6

layer_name = conv2_1 output_size = 150 total_stride = 2 output_channel = 128 rf_size = 10

layer_name = conv2_2 output_size = 150 total_stride = 2 output_channel = 128 rf_size = 14

layer_name = pool2 output_size = 75 total_stride = 4 output_channel = 128 rf_size = 16

layer_name = conv3_1 output_size = 75 total_stride = 4 output_channel = 256 rf_size = 24

layer_name = conv3_2 output_size = 75 total_stride = 4 output_channel = 256 rf_size = 32

layer_name = conv3_3 output_size = 75 total_stride = 4 output_channel = 256 rf_size = 40

layer_name = pool3 output_size = 38 total_stride = 8 output_channel = 256 rf_size = 44

layer_name = conv4_1 output_size = 38 total_stride = 8 output_channel = 512 rf_size = 60

layer_name = conv4_2 output_size = 38 total_stride = 8 output_channel = 512 rf_size = 76

layer_name = conv4_3 output_size = 38 total_stride = 8 output_channel = 512 rf_size = 92

layer_name = pool4 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 100

layer_name = conv5_1 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 132

layer_name = conv5_2 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 164

layer_name = conv5_3 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 196

layer_name = pool5 output_size = 19 total_stride = 16 output_channel = 512 rf_size = 228

layer_name = fc6 output_size = 19 total_stride = 16 output_channel = 1024 rf_size = 420

layer_name = fc7 output_size = 19 total_stride = 16 output_channel = 1024 rf_size = 420

layer_name = conv6_1 output_size = 19 total_stride = 16 output_channel = 256 rf_size = 420

layer_name = conv6_2 output_size = 10 total_stride = 32 output_channel = 512 rf_size = 452

layer_name = conv7_1 output_size = 10 total_stride = 32 output_channel = 128 rf_size = 452

layer_name = conv7_2 output_size = 5 total_stride = 64 output_channel = 256 rf_size = 516

layer_name = conv8_1 output_size = 5 total_stride = 64 output_channel = 128 rf_size = 516

layer_name = conv8_2 output_size = 3 total_stride = 64 output_channel = 256 rf_size = 644

layer_name = conv9_1 output_size = 3 total_stride = 64 output_channel = 128 rf_size = 644

layer_name = conv9_2 output_size = 1 total_stride = 64 output_channel = 256 rf_size = 772

四、参考资料