首页 文章

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

提问于
浏览
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抛出一些错误:“不能从图层'fc6'复制param 0权重;形状不匹配 . 源param形状是1 1 4096 25088(102760448);目标参数形状是4096 131072(536870912) . 要从头开始学习此图层的参数而不是从保存的网络中复制,请重命名该图层 . “

我怎么可能在没有裁剪的情况下运行对输入层来说太大的图像?

2 回答

  • 0

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

  • 0

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

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

相关问题