sqh4587 2017-10-25 09:10 采纳率: 0%
浏览 12497

如何在keras+tensorflow中对4通道图像如何输入并分类呢?

ImageDataGenerator默认的flow_from_directory函数中有个color_mode设置,我看文献中只支持‘gray'和'rgb',但我现在要处理的图像是RGBD的4通道图像,如何设置呢?求大师指点。
我尝试着将color_mode设置为'rgb',但是在第一层卷积层的输入数据类型,设置的是(width,height,4)的四通道格式,运行的时候出错了,提示如果我的color_mode设置成了‘rgb',那么自动生成batch的时候,依旧是会变为3通道格式。具体如下:

在flow_from_directory中的color为‘rgb'

 train_generator = train_datagen.flow_from_directory(
        directory= train_dir,  # this is the target directory
        target_size=(200, 200),  # all images will be resized to 200x200
        classes= potato_class,
        batch_size=60,
        color_mode= 'rgb',
        class_mode='sparse')

在卷基层的输入input_shape中设置为4通道

 model = Sequential()  # CNN构建
model.add(Convolution2D(
    input_shape=(200, 200, 4),
    # input_shape=(1, Width, Height),
    filters=16,
    kernel_size=3,
    strides=1,
    padding='same',
    data_format='channels_last',
    name='CONV_1'
))

运行后的错误提示如下:
ValueError: Error when checking input: expected CONV_1_input to have shape (None, 200, 200, 4) but got array with shape (60, 200, 200, 3)

怎样才能让keras接受4通道图像呢?我在stackOverflow中看到有人留言说4通道是支持的,但是我没有找到代码。

  • 写回答

2条回答 默认 最新

  • 一呆飞仙 2017-12-28 11:15
    关注

    我也在做RGB-D图片训练,并且已经成功了。你应该是配置文件没找对。1、因为是四通道嘛,config中要将MEAN_PIXEL改为 MEAN_PIXEL= np.array([123.7, 116.8, 103.9, 0])。2、如果有预训练模型,请把conv1之前的包括conv1的数据给去掉,具体名称你可以打印输出一下自己预训练集合中层的名称
    3、Keras在将图片导入时,类似为keras.layers.Input(shape=config.IMAGE_SHAPE.tolist(), name="input_image"),
    你看一下你config中IMAGE_SHAPE最后一维度有没有改成4
    就这些,希望对你有用。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置