Caffe deploy.prototxt 具有多个不同维度的输入

Caffe deploy.prototxt with multiple inputs of different dimensions

我在 Caffe 中有一个网络,它接受多个图像输入(可能具有不同的维度)并将它们用作网络初始部分的单独 blob。

在训练阶段,我按照文档中的建议创建了一个 HDF5 数据库来实现这一点。

但是,对于部署阶段,我需要用输入层替换训练阶段的数据层,并指定输入 blob 的维度。

对于单个 blob,这是使用 input_param 的 属性 形状完成的。在这种情况下我该怎么做,我有多个 blob,可能具有不同的尺寸?

谢谢。

如果仔细观察 caffe.proto,您会发现 inputinput_shape 具有 repeated 的 属性:

// DEPRECATED. See InputParameter. The input blobs to the network.
repeated string input = 3;
// DEPRECATED. See InputParameter. The shape of the input blobs.
repeated BlobShape input_shape = 8;

这意味着你可以有几个这样的条目:

name: "AnAmazingNetWithMultipleInputs_ThankYouShai_IwillForeverBeInYourDebt"
input: "first_input_1x3x127x127"
input_shape { dim: 1 dim: 3 dim: 127 dim: 127 }
input: "second_input_2x4x224x224"
input_shape { dim: 2 dim: 4 dim: 224 dim: 224 }
# I hope you can take it from here ;)

如果您更仔细地查看 caffe.proto 的相关部分,您会注意到 "input shape declaration" 的这种形式已被弃用。
更好的方法是使用 "Input" layer:

layer {
  type: "Input"
  name: "one_input_layer"
  top: "first_input_1x3x127x127"
  shape { dim: 1 dim: 3 dim: 127 dim: 127 }
  top: "second_input_2x4x224x224"
  shape { dim: 2 dim: 4 dim: 224 dim: 224 }
}

如果您觉得 understand/read.

更容易,您也可以为每个输入设置不同的 "Input"