繁体   English   中英

如何减小VGG16中间层瓶颈特征的大小?

[英]How to reduce size of bottleneck features of intermediate layer of VGG16?

我想vgg16网络而不是conv5_3c0nv4_3连接到更快的R-CNN的RPN网络。 是vgg16网络的python代码。 我更改了这些行:

def _image_to_head(self, is_training, reuse=False):
    with tf.variable_scope(self._scope, self._scope, reuse=reuse):
      net = slim.repeat(self._image, 2, slim.conv2d, 64, [3, 3],
                          trainable=False, scope='conv1')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool1')
      net = slim.repeat(net, 2, slim.conv2d, 128, [3, 3],
                        trainable=False, scope='conv2')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool2')
      net = slim.repeat(net, 3, slim.conv2d, 256, [3, 3],
                        trainable=is_training, scope='conv3')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool3')
      net = slim.repeat(net, 3, slim.conv2d, 512, [3, 3],
                        trainable=is_training, scope='conv4')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool4')
      net = slim.repeat(net, 3, slim.conv2d, 512, [3, 3],
                        trainable=is_training, scope='conv5')

    self._act_summaries.append(net)
    self._layers['head'] = net

return net

至:

def _image_to_head(self, is_training, reuse=False):
    with tf.variable_scope(self._scope, self._scope, reuse=reuse):
      net = slim.repeat(self._image, 2, slim.conv2d, 64, [3, 3],
                          trainable=False, scope='conv1')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool1')
      net = slim.repeat(net, 2, slim.conv2d, 128, [3, 3],
                        trainable=False, scope='conv2')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool2')
      net = slim.repeat(net, 3, slim.conv2d, 256, [3, 3],
                        trainable=is_training, scope='conv3')
      net = slim.max_pool2d(net, [2, 2], padding='SAME', scope='pool3')
      net = slim.repeat(net, 3, slim.conv2d, 512, [3, 3],
                        trainable=is_training, scope='conv4')

    self._act_summaries.append(net)
    self._layers['head'] = net

return net

如上所示,我删除了conv5和pool4层 因为我的物体很小,我希望得到更好的结果,但是结果变得更糟。 我想我需要在conv4的末尾添加一个deconv层吗? 还是有另一种方式?

谢谢

也有一些方法可以减少瓶颈特征的长度。

为什么不添加deconv

  • 您将使用随机值初始化deconv层
  • 您不是在微调网络,而是通过网络向前传递。
  • 因此,deconv的输出将使conv4的功能随机化

池化层:

  • 平均池(基于窗口大小,它将返回该窗口的平均值)。 因此,如果说带有值[3,2,4,3]的window(2,2)将仅产生一个值:6

  • MaxPool(基于窗口大小,将导致该窗口的最大值)。 因此,如果说带有值[3,2,4,3]的window(2,2)将仅产生一个值:3

在此处查看池化层

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM