Caffe:vgg网络的可变输入图像大小

时间:2016-11-10 14:35:52

标签: neural-network deep-learning computer-vision caffe vgg-net

我正在尝试使用caffe从VGG网络中提取卷积层的特征而不是FC层。在这种情况下,理论输入图像大小可能是任意的。但它接缝表示VGG网络在裁剪成224x224像素大小的图像上进行了训练。所以我在deploy.prototext中定义了一个输入数据层:

layers{
  name: "data"
  type: MEMORY_DATA
  top: "data"
  top: "label"
  transform_param{
    mirror: false
    crop_size:224
    mean_value:129.1863
    mean_value:104.7624
    mean_value:93.5940
  }
  memory_data_param{
    batch_size:1
    channels:3
    width:224
    height:224
  }
}

我尝试修改width = 500 \ height = 500 \ crop_size = 500但失败了。 Caffe引发了一些错误:“无法从图层复制param 0权重&f; fc6&#39 ;;形状不匹配。源param形状是1 1 4096 25088(102760448);目标参数形状是4096 131072(536870912)。要从头开始学习此图层的参数而不是从保存的网络中复制,请重命名该图层。“

如果没有裁剪,我怎么可能在输入图层太大的图像上运行?

2 个答案:

答案 0 :(得分:0)

您应首先将图像调整为224x224,因为VGG已经过该分辨率的培训。提取更高分辨率的特征是没有意义的。 对于调整大小和裁剪,您可以使用我专门的ImageData图层:https://github.com/yihui-he/caffe-pro

答案 1 :(得分:0)

为图像使用完全相同的尺寸,或者为新图像尺寸重新训练密集层。

您可以重用卷积内核,但不能为不同的图像大小重用密集层。