Image processing Caffe:可变输入图像大小

Image processing Caffe:可变输入图像大小,image-processing,computer-vision,neural-network,deep-learning,caffe,Image Processing,Computer Vision,Neural Network,Deep Learning,Caffe,我正在试用利用Caffe的谷歌。 他们使用ModelZoo提供的在ImageNet上预先培训过的GoogLeNet模型。这意味着网络是在裁剪成224x224像素大小的图像上训练的。从: 用于处理的还定义了大小为224x224x3x10的输入层(大小为224x224的RGB图像,大小为10) 但是,我可以使用该网络处理任何大小的图像(上面的示例使用了1024x574像素中的一个) 不将caffe配置为使用裁剪 中的预处理只会贬低,这里也不会裁剪 我怎么可能在对输入层来说太大的图像上运行呢 可以找

我正在试用利用Caffe的谷歌。 他们使用ModelZoo提供的在ImageNet上预先培训过的GoogLeNet模型。这意味着网络是在裁剪成224x224像素大小的图像上训练的。从:

用于处理的还定义了大小为224x224x3x10的输入层(大小为224x224的RGB图像,大小为10)

但是,我可以使用该网络处理任何大小的图像(上面的示例使用了1024x574像素中的一个)

  • 不将caffe配置为使用裁剪
  • 中的预处理只会贬低,这里也不会裁剪
  • 我怎么可能在对输入层来说太大的图像上运行呢



    可以找到完整的代码

    DeepDream根本不会裁剪输入图像。
    如果你仔细观察,你会注意到它是在一个中间层上运行的:它的
    end=
    参数设置为
    'inception\u 4c/output'
    end='inception\u 3b/5x5\u reduce'
    ,但决不会
    end='loss3/classifier'
    。这是因为这些层的GoogLeNet是一个完全卷积的网络,也就是说,它可以获取任何大小的输入图像,并生成与输入大小成比例的输出(输出大小通常受conv填充和池的影响)

    要将网络调整到不同大小的输入,功能
    deepdream
    具有以下行

    src.reshape(1,3,h,w) # resize the network's input image size
    

    这条线调整网络层以适应形状输入
    (1,3,h,w)

    啊,这当然很有道理!这是否意味着,如果我删除所有完全连接的层,我还可以在任意大小的图像上训练生成的网络架构?如果我实现了一个聪明的批处理?@Zakum你会如何将单个标签丢失与任意大小的预测联系起来?正如你可能已经注意到的,我刚刚开始尝试解决这个问题。^^最后一个Softmax层不会完成这项工作吗?@Zakum“Softmax”会弥补损失,但是你如何训练具有固定大小输出的分类器呢?为了便于文档记录:
    global\u pooling=1
    在一个池层中,然后是一个卷积层,其
    num\u output=1
    ,这就是我最终的回归。Caffe还支持开箱即用培训期间任意大小的输入。只需要使用相同大小输入的批,或者咬紧牙关使用1的批大小。
    name: "GoogleNet"
    input: "data"
    input_shape {
      dim: 10
      dim: 3
      dim: 224
      dim: 224
    }
    
    src.reshape(1,3,h,w) # resize the network's input image size