更改VGG16应用程序的输入张量形状

use*_*212 1 keras keras-layer

我想要提供形状(160,320,3)的图像

 VGG16(input_tensor=input_tensor, include_top=False)   
Run Code Online (Sandbox Code Playgroud)

如何将图像重塑为VGG16模型预期的形状(224,224,3)?

ind*_*you 14

VGG16 模型本身只是固定的层序列和固定卷积内核大小等的一组权重.这并不意味着那些卷积内核不能应用于其他大小的图像.

例如在你的情况下:

from keras.models import Model
from keras.layers import Dense,Flatten
from keras.applications import vgg16
from keras import backend as K

model = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(160,320,3))
model.summary(line_length=150)

flatten = Flatten()
new_layer2 = Dense(10, activation='softmax', name='my_dense_2')

inp2 = model.input
out2 = new_layer2(flatten(model.output))

model2 = Model(inp2, out2)
model2.summary(line_length=150)
Run Code Online (Sandbox Code Playgroud)

根据这里,最小图像尺寸可以是48x48x3任何高于值的图像尺寸.

现在真正的原始权重是在224,224,3成形图像上学习的,但过滤器权重对于具有新图像集的新任务来说是非常好的起点.您确实需要重新训练网络,但网络会很快收敛.这是转学的基础.