如何解决如何在同一网络的顶层添加 vgg16 中间层功能?
我想从浅层和顶层添加特征,假设是 56 x 56x 512 和 14x14x512,然后我将其上采样 4 并得到相同的 56x56x512,添加它,然后通过步幅卷积/最大下采样-池化,然后馈送到 rpn(转换所需大小后)以生成提案。但是在 rpn 层的训练过程中,它显示了一个位置的大小不匹配。
块 1
x = Conv2D(64,(3,3),activation='relu',padding='same',name='block1_conv1')(img_input)
x = Conv2D(64,name='block1_conv2')(x)
x = MaxPooling2D((2,2),strides=(2,name='block1_pool')(x)
# Block 2
x = Conv2D(128,name='block2_conv1')(x)
x = Conv2D(128,name='block2_conv2')(x)
x = MaxPooling2D((2,name='block2_pool')(x)
# Block 3
x_3= x
x = Conv2D(256,name='block3_conv1')(x)
x = Conv2D(256,name='block3_conv2')(x)
x = Conv2D(256,name='block3_conv3')(x)
x = MaxPooling2D((2,name='block3_pool')(x)
#edit (conv4_b)
x_3 = Conv2D(256,name='block_3_conv1')(x_3)
x_3 = Conv2D(256,name='block_3_conv2')(x_3)
x_3 = Conv2D(256,name='block_3_conv3')(x_3)
x_3 = Conv2D(512,(1,1),name='block_3_conv4')(x_3)
# Block 4
x = Conv2D(512,name='block4_conv1')(x)
x = Conv2D(512,name='block4_conv2')(x)
x = Conv2D(512,name='block4_conv3')(x)
x = MaxPooling2D((2,name='block4_pool')(x)
#edit (conv5_b)
x_4=x_3
x_4 = Conv2D(512,name='block_4_conv1')(x_4)
x_4 = Conv2D(512,name='block_4_conv2')(x_4)
x_4 = Conv2D(512,name='block_4_conv3')(x_4)
# Block 5
x = Conv2D(512,name='block5_conv1')(x)
x = Conv2D(512,name='block5_conv2')(x)
x = Conv2D(512,name='block5_conv3')(x)
# x = MaxPooling2D((2,name='block5_pool')(x)
#edit
x = tf.keras.layers.UpSampling2D(size=(4,4),interpolation='nearest')(x)
x = tf.keras.layers.Add()([x_4,x])
print(x_4.shape)
print(x.shape)
x = Conv2D(512,name='block5_conv4')(x)
x = MaxPooling2D((2,name='block5_pool')(x)
print(x.shape)
return x
x_4.shape (无,56,512) x.shape (None,512)
(return)x.shape (None,14,512)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。