基于keras的deepnet图像分割

基于keras的deepnet图像分割,keras,image-segmentation,Keras,Image Segmentation,我对深度学习还很陌生;我想在大小为(256、256、3)的图像块上训练一个网络,以预测像素级分割的三个标签。首先,我想提供一个卷积层: model = Sequential() model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256)) 到目前为止,模型输出是一个具有32个通道的图像。现在,我想添加一个密集层,它将所有这32个通道合并成三个通道,每个通道预测一个像素类的概率 如何才能做到这一点?将32个通道合并回3个通道的最简单

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

model = Sequential()
model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256))
到目前为止,模型输出是一个具有32个通道的图像。现在,我想添加一个密集层,它将所有这32个通道合并成三个通道,每个通道预测一个像素类的概率


如何才能做到这一点?

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

然后最后添加一个用于分段的激活函数

model.add(Activation("tanh"))
或者,如果希望使用激活参数(任意选择为tanh),可以一次添加所有参数


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

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.

你的y的格式是什么?它们有什么形状?(256256);每个像素都有一个标签分配
model = Sequential()
model.add(Convolution2d(32, 16, 16, input_shape=(3, 256, 256))
model.add(Convolution2d(3, 1, 1,activation="tanh"))
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.