我正在尝试使用Caffe的Google deepdream code。 他们使用由ModelZoo提供的ImageNet预训练的GoogLeNet模型。这意味着网络在裁剪为224x224像素大小的图像上进行了训练。来自train_val.prototext:
layer {
name: "data"
type: "Data"
...
transform_param {
mirror: true
crop_size: 224
...
用于处理的deploy.prototext还定义了一个大小为224x224x3x10的输入图层(RGB图像大小为224x224,批量大小为10)。
name: "GoogleNet"
input: "data"
input_shape {
dim: 10
dim: 3
dim: 224
dim: 224
}
但是我可以使用这个网络来处理任何大小的图像(上面的例子使用了1024x574像素之一)。
我怎样才能运行对输入图层来说太大的图像?
可以找到完整的代码here
答案 0 :(得分:4)
DeepDream根本不会裁剪输入图像
如果您密切关注,您会注意到它在中级层运行:它的end=
参数设置为'inception_4c/output'
或end='inception_3b/5x5_reduce'
,但从不{ {1}}。原因是GoogLeNet到这些层是完全卷积网络,也就是说,它可以采用任何大小的输入图像并产生大小与输入大小成比例的输出(输出大小为通常受到填充和填充的影响。)
要将网络调整为不同大小的输入,函数end='loss3/classifier'
具有
deepdream
此行调整网络图层以适应形状src.reshape(1,3,h,w) # resize the network's input image size
的输入。