【问题标题】:Keras preprocessing for 3D semantic segmentation task用于 3D 语义分割任务的 Keras 预处理
【发布时间】:2019-11-15 05:07:37
【问题描述】:

对于语义图像分割,据我了解,您通常有一个包含图像的文件夹和一个包含相应掩码的文件夹。就我而言,我有尺寸为(32、32、32)的灰度图像。面具自然具有相同的尺寸。标签保存为强度值(值 1 = 标签 1,值 2 = 标签 2 等)。一共4节课。想象一下,我找到了一个使用 keras 模型 API 构建的模型。我如何知道如何准备我的标签数据以使其被模型接受?它取决于损失函数吗?它是否在模型中定义(输入参数)。难道我只是添加另一个维度(4、32、32、32)其中的4代表4个不同的类和one-hot代码吗?

我想为语义分割构建一个 3D 卷积神经网络,但我不明白如何在 keras 中正确输入数据。预测的输出应该是一个 4 通道的 3D 图像,每个通道显示每个像素属于某个类别的概率值。

【问题讨论】:

  • 所以你问的是如何输入图像,对于一些预训练模型,如 VGG16、Inception 等,使用你自己的大小?
  • 它不必是预训练的模型,只要是适合 3D 灰度图像的任何模型,我都可以训练模型。我只是不明白它在哪里说我的标签数据必须是哪种格式...一般来说是 keras
  • 大多数时候输入层是0层。因此,model.layers[0] = Input(shape(width, height, num_of_channels)) 应该可以工作。对于不同的型号,可能会有所不同。 (未经测试!)
  • 这里是一个例子:def isensee2017_model(input_shape=(4, 128, 128, 128), n_base_filters=16, depth=5, n_segmentation_levels=3, n_labels=4, optimizer=Adam, initial_learning_rate= 5e-4,loss_function=weighted_dice_coefficient_loss,activation_name="sigmoid"):

标签: python image keras deep-learning conv-neural-network


【解决方案1】:

Input() 函数定义给定模型的输入张量的形状。对于 3D 图像,通常需要 5D 张量,例如(None, 32, 32, 32, 1),其中 None 指的是批量大小。因此,必须重新塑造训练图像和标签。 Keras 提供了to_categorical 函数来对标签数据进行一次热编码(这是必要的)。生成器的使用有助于输入数据。在这种情况下,我不能使用 keras 的 ImageDataGenerator,因为它只能处理 RGB 和灰度图像,因此必须编写自定义脚本。

【讨论】:

    猜你喜欢
    • 2017-04-12
    • 2018-01-12
    • 2021-05-12
    • 1970-01-01
    • 2021-04-15
    • 2019-11-29
    • 2020-10-03
    • 2019-01-06
    • 2020-01-22
    相关资源
    最近更新 更多