image-processing - Caffe:可变输入图像大小

标签 image-processing computer-vision neural-network deep-learning caffe

我正在试用 Google 的 deepdream code它使用了 Caffe。
他们使用 ModelZoo 提供的在 ImageNet 上预训练的 GoogLeNet 模型。这意味着网络是在裁剪为 224x224 像素大小的图像上训练的。来自 train_val.prototext :

layer {            
  name: "data"     
  type: "Data"     
  ...

  transform_param {
     mirror: true   
     crop_size: 224
  ... 

deploy.prototext用于处理还定义了一个大小为 224x224x3x10 的输入层(RGB 图像大小为 224x224,batchsize 10)。
name: "GoogleNet"
input: "data"
input_shape {
  dim: 10
  dim: 3
  dim: 224
  dim: 224
}

但是我可以使用这个网络来处理任何尺寸的图像(上面的例子使用了 1024x574 像素之一)。
  • deploy.prototext不会将 caffe 配置为使用裁剪。
  • deepdream code中的预处理只做贬低,这里也没有裁剪

  • 我怎么可能在对于输入层来说太大的图像上运行?

    完整代码可见here

    最佳答案

    DeepDream 根本不会裁剪输入图像。
    如果您仔细观察,您会注意到它在中间层上运行:它是 end=参数设置为 'inception_4c/output'end='inception_3b/5x5_reduce' ,但从不 end='loss3/classifier' .这样做的原因是直到这些层的 GoogLeNet 是一个全卷积网络,也就是说,它可以采用任何大小的输入图像并产生大小与输入大小成正比的输出(输出大小通常受 conv padding 和 pooling 影响)。

    要将网络调整为不同大小的输入,函数 deepdream有线路

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

    此行调整网络的层以适应形状 (1,3,h,w) 的输入.

    关于image-processing - Caffe:可变输入图像大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697519/

    相关文章:

    python - 查找形状内的像素索引 : Opencv and Python

    r - writeRaster 输出文件大小

    graphics - 与重建中的 x 和 y 相比,Z 值太大

    opencv - 仅通过图像而不是通过标签从数据库中查找相似图像

    machine-learning - 感知器的几何表示(人工神经网络)

    image-processing - 图像噪声过滤

    image - 正确理解不正确的MATLAB运算

    python - 将文本图像切成字符的最佳方法

    javascript - NeuQuant.js(JavaScript 颜色量化)隐藏 JS 转换的 bug

    machine-learning - keras 模型中的 NaN 损失