首页 文章

将Keras预训练模型扩展为具有附加通道或波段的图像

提问于
浏览
1

我只是希望澄清一些关于前一篇文章的信息,该文章讨论了如何将Keras预训练的模型如VGG或InceptionV3扩展到不同大小的图像 . 我的问题是我有一些8频段的卫星图像 . 因此,图像可能是 650x650x8 而不是通常的RBG 3波段图像 . 我想知道我是否可以在8个波段而不是3个波段的图像上使用Keras预训练模型 .

现在有一个原始帖子并处理与此类似的事情 . 参考文章是关于将Keras VGG预训练模型应用于不同大小的图像 . 因此,VGG在 224x224x3 上进行了培训,并且用户希望将此模型用于 160x320x3 的图像 .

这是原帖:Change input tensor shape for VGG16 application

这是原帖的代码:

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)

所以,如果我用第6行代替:

model = vgg16.VGG16(weights='imagenet', include_top=False, input_shape=(650,650,8))

这会起作用吗,或者预训练的模型是否会接受通道的增加,因为它会接受图像高度或宽度的变化?

此外,我还需要使用额外的 Channels 对模型进行额外的培训 . 但我不清楚预先训练的模型如何实际实现这种扩展 . 添加节点的权重是仅设置为0还是某种初始化程序确定的权重?我想说明我需要做多少额外的训练 .

感谢您的任何提示或建议 .

1 回答

  • 1

    来自Keras docs

    input_shape:可选的形状元组,仅在include_top为False时指定(否则输入形状必须为(224,224,3)(带有'channels_last'数据格式)或(3,224,224)(带'channels_first '数据格式) . 它应该有3个输入通道,宽度和高度不应小于48.例如(200,200,3)将是一个有效值 .

    您将无法将此VGG实施用于多光谱图像 . 正如您已经提到的,这将为未预先训练的模型引入额外的权重 .

    用于多光谱图像的神经网络是一个非常活跃的研究课题,但我担心现有的解决方案很少,例如在imagenet上预先训练的网络 . 您可以尝试使用降维技术(如PCA)将图像压缩为三个通道 . 或者完全培养自定义架构,将8通道图像作为输入 .

相关问题