【问题标题】:Using convolution layer trained weights for different image size使用卷积层训练的权重来处理不同的图像大小
【发布时间】:2018-10-24 09:41:09
【问题描述】:

我想使用 vgg-16 的前三个卷积层来生成特征图。 但我想将它与可变图像大小一起使用,即不是 224x224 或 256x256 的 imagenet 大小。例如 480x640 或任何其他随机图像尺寸。

由于卷积层与图像空间大小无关,我如何将权重用于不同的图像大小? 那么我们如何使用 vgg-16 的预训练权重到前三个卷积层。 请让我知道这是否可能。

【问题讨论】:

    标签: python tensorflow deep-learning


    【解决方案1】:

    As convolution layer are independent of image size

    实际上比这更复杂。内核本身与图像大小无关,因为我们将其应用于每个像素。事实上,这些内核的训练可以重复使用。

    但这意味着输出大小取决于图像大小,因为这是每个输入像素从层中送出的节点数。因此,即使特征提取器是独立的,密集层也不适合您的图像。

    因此,您需要对图像进行预处理以适应第一层的大小,或者从头开始重新训练密集层。

    当人们谈论“迁移学习”时,这就是人们几十年来在细分领域所做的事情。您可以重复使用最好的特征提取器,然后使用这些特征训练一个专用模型。

    【讨论】:

    • 但是当我提到关于卷积的斯坦福课程时,它提到了(cs231n.github.io/transfer-learning) -“但是,一些变化是直截了当的:由于参数共享,您可以轻松地在图像上运行预训练网络不同的空间大小。这在 Conv/Pool 层的情况下很明显,因为它们的前向函数与输入体积空间大小无关(只要步幅“适合”)。“。另外,由于我没有改变或改变过滤器大小并且只是使用不同的图像大小,它应该给我来自第三个卷积层的特征图
    • 我基本上想训练一个新的网络,它从预训练的 vgg-16 中获取特征图,其大小与训练时不同,vgg-16 是在 256x256 上训练的,我想使用 480x640。我怎样才能做到这一点?
    • 重用 CNN 层,但从头开始重新训练密集层。仅当您想重用其特征提取器时才可以选择。
    【解决方案2】:

    卷积层的变量很容易复用。首先,定义一个包含卷积层的图,然后恢复它们的值。以下是伪代码

    def network(your_inputs):
        filter1 = tf.get_variable(shape=[filter_size, filter_size, in_channel, out_channel], name="vgg16/layer1")
        features = tf.nn.conv2d(your_inputs, filter1, strides=[1,1,1,1])
        filter2 = tf.get_variable(shape=[filter_size, filter_size, in_channel, out_channel], name="vgg16/layer2")
        features = tf.nn.conv2d(features, filter2, strides=[1,1,1,1])
    
        restore_filters = [filter1, filter2]
    
        ...
    
        return logits, restore_filters 
    
    outputs, restore_filters = network(inputs)
    saver = tf.train.Saver(restore_filters)
    saver.restore(sess, "vgg-checkpoint.ckpt")
    

    当然,您的过滤器大小必须与 VGG 网络相匹配。当您的变量名称与检查点文件的名称不同时,您可以将 Saver 与字典参数一起使用。

    【讨论】:

    • 我能否使用分辨率为 720p 的图像进行推理,即使网络被训练为更小的尺寸?我打算使用只有转换层的网络。这样我的最终网络就可以使用不同的图像尺寸进行推理
    猜你喜欢
    • 1970-01-01
    • 2016-12-27
    • 2017-12-27
    • 1970-01-01
    • 2020-10-03
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多