首页 文章

具有keras的Deep Net用于图像分割

提问于
浏览
2

我对深度学习很陌生;我想在大小(256,256,3)的图像块上训练网络,以预测像素分割的三个标签 . 首先,我想提供一个卷积层:

model = Sequential()
model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256))

到目前为止,模型输出是具有32个通道的图像 . 现在,我想添加一个密集层,将所有这32个通道合并为三个通道,每个通道预测一个像素的类概率 .

我怎样才能做到这一点?

2 回答

  • 2

    将32个通道合并为3的最简单方法是添加另一个卷积,这次使用三个滤波器(我任意设置滤波器大小为1x1):

    model = Sequential()
    model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256))
    model.add(Convolution2d(3, 1, 1))
    

    然后最后添加激活功能进行分割

    model.add(Activation("tanh"))
    

    或者,如果你想使用 activation 参数(任意选择为tanh),你可以一次性添加所有内容

    model = Sequential()
    model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256))
    model.add(Convolution2d(3, 1, 1,activation="tanh"))
    

    https://keras.io/layers/convolutional/

  • 1

    您必须在卷积层和密集层之间使用展平:

    model = Sequential()
    model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256))
    # Do not forget to add an activation layer after your convolution layer, so here.
    
    model.add(Flatten())
    
    model.add(Dense(3))
    model.add(Activation("sigmoid")) # whatever activation you want.
    

相关问题