1

我正在尝试使用 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 报错:“Cannot copy param 0 weights from layer 'fc6'; 形状不匹配。源参数形状为 1 1 4096 25088 (102760448);目标参数形状是 4096 131072 (536870912)。要从头开始学习该层的参数,而不是从保存的网络中复制,请重命名该层。”</p>

我怎么可能在对输入层来说太大的图像上运行而不进行裁剪?

4

2 回答 2

0

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

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

于 2018-10-24T10:08:40.987 回答
0

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

于 2017-08-25T09:52:18.600 回答