Python 3.x 将图像分割模型输出从2D(类数、像素数)重塑为3D通道最后图像的正确方法是什么

Python 3.x 将图像分割模型输出从2D(类数、像素数)重塑为3D通道最后图像的正确方法是什么,python-3.x,keras,deep-learning,image-segmentation,Python 3.x,Keras,Deep Learning,Image Segmentation,我正在使用keras和python进行卫星图像分割。据我所知,为了获得图像分割的(像素级)预测,模型将维度层(-1,num_类,高度,宽度)重塑为形状(-1,num_类,高度*宽度)。然后应用softmax或sigmoid等激活函数。我的问题是,在这一步之后,如何以channel first或channel last的格式恢复图像? 示例代码 o = (Reshape(( num_classes , outputHeight*outputWidth)))(o) o = (Permute((2,

我正在使用keras和python进行卫星图像分割。据我所知,为了获得图像分割的(像素级)预测,模型将维度层(-1,num_类,高度,宽度)重塑为形状(-1,num_类,高度*宽度)。然后应用softmax或sigmoid等激活函数。我的问题是,在这一步之后,如何以channel first或channel last的格式恢复图像? 示例代码

o = (Reshape((  num_classes , outputHeight*outputWidth)))(o)
o = (Permute((2, 1)))(o)
o = (Activation('softmax'))(o)
我尝试在最后向模型添加以下层

o = (Reshape((outputHeight, outputWidth, num_classes)))(o)
这是正确的吗?这是否会以与原始图像相同的顺序重新定向图像像素? 另一种选择是在单个图像上使用以下代码

array.reshape(height, width, num_classes)

我应该使用哪种方法来获得像素级分割结果?

不,如果您对图像分割感兴趣,您应该而不是展平然后重塑张量。相反,使用完全卷积模型,如。你可以在github上找到很多它的示例实现,例如

不,如果你对图像分割感兴趣,你应该而不是展平然后重塑你的张量。相反,使用完全卷积模型,如。您可以在github上找到许多it的示例实现,例如

Thank@mrks。你的回答帮了大忙,它完全改变了我对GoodThank@mrks的输出。你的回答帮了大忙,它彻底改变了我的产出