我正在尝试使用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)。要从头开始学习此图层的参数而不是从保存的网络中复制,请重命名该图层。“
如果没有裁剪,我怎么可能在输入图层太大的图像上运行?
答案 0 :(得分:0)
您应首先将图像调整为224x224,因为VGG已经过该分辨率的培训。提取更高分辨率的特征是没有意义的。 对于调整大小和裁剪,您可以使用我专门的ImageData图层:https://github.com/yihui-he/caffe-pro
答案 1 :(得分:0)
为图像使用完全相同的尺寸,或者为新图像尺寸重新训练密集层。
您可以重用卷积内核,但不能为不同的图像大小重用密集层。