在Keras训练模型图像输入中选择特定的一组RGB通道

Thanh Nguyen

在我的Keras CNN中,我像这样添加Input层:

model.add(Conv2D(32, (3, 3), input_shape=(img_width, img_height, nb_channel)))

与nb_channel = 3 RGB输入和= 1灰度输入和flow_from_directoryImageDataGenerator

但是,我想指定一组要输入到CNN的颜色,例如,只允许绿色和红色通道,我该怎么做?

我正在将Keras与tensorflow后端一起使用

除了@ Minh-Tuan Nguyen的巧妙解决方案之外,我们还可以按照以下方式进行切片

#custom filter
def filter_layer(x):
    red_x = x[:,:,:,0]
    blue_x = x[:,:,:,2]
    green_x = x[:,:,:,1]
    red_x = tf.expand_dims(red_x, axis=3)
    blue_x = tf.expand_dims(blue_x, axis=3)
    green_x = tf.expand_dims(green_x, axis=3)
    output = tf.concat([red_x, blue_x], axis=3)
    return output
#model
input = Input(shape=(img_height, img_width, img_channels))

在合并步骤中,我们可以选择所需的切片。

明阮阮

我认为在这里更“天真”地处理切片会更容易,因为据我所知,Keras不支持使用python和numpy等索引列表对张量进行切片。以下是我针对此问题的代码示例。尝试查看它是否符合您的要求。

indices = [0,2]

def filter_layer(input, indices=indices):
    for i in range(len(indices)):
        index = indices[i]
        x_temp = Lambda(lambda x: x[:,:,:,index][...,None])(input)

        if i==0:
            x = x_temp
        else:
            x = Concatenate(-1)([x, x_temp])
        return x

input = Input(shape=(img_height, img_width, img_channels))
x = Lambda(filter_layer)(input)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在SQL Server中选择一组日期

如何从父母中选择一组孩子?

将Keras预训练模型扩展到具有其他通道或波段的图像

根据特定条件选择一组特定的客户

预训练的Tensorflow模型RGB-> RGBY通道扩展

将输入通道数更改为预训练的keras.applications模型?

如何在张量中选择一组项目

创建一组行并从行中选择最后一组

在QML中选择/保存一组日历日期

如何基于python中特定方法的最大值从一组对象中选择一个对象

在数组中选择一组值

从预训练模型中获取一组嵌入-VGG16 pytorch

如何在打字稿文件的一组单选按钮中选择一个特定的单选按钮?

选择包含一组特定姓氏的县

从上一组中选择最大

如何从SQL中的一组行中选择特定行

在另一列内的一组行中选择列的第一行

如何在SQL中选择一组代码并代表特定的权重?

选择具有一组特定特征的行

创建从通过反射获得的一组类型中选择的特定类型的对象

从对象列表中选择一组n个对象

仅在选择特定的一组单选按钮中的至少一个时显示图像

如何在Selenium Web Driver中的一组类似的单选按钮中选择特定的单选按钮?

ValueError - 将一组图像输入字典

如何在mysql中选择多列值等于一组特定值的记录?

给定一组要识别的图像和一个训练有素的模型,我如何让模型识别图像?

仅选择一组特定的字符 (PostgreSQL)

Self Join : 如何选择一组特定的数据

从同一组中选择 x 个元素的概率