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
四、参考资料


发布评论