Keras多类语义切分标签

Keras多类语义切分标签,keras,deep-learning,conv-neural-network,Keras,Deep Learning,Conv Neural Network,对于语义分段,最后一层通常是 output=Conv2D(num_类,(1,1),activation='softmax') 我的问题是,如何准备标签?例如,如果我要识别10个类,每个类都有不同的颜色。对于每个标签图像,我是否需要为一种特定颜色应用遮罩,将其转换为灰度图像,以便与模型输出中的1个过滤器进行比较?或者有没有办法将一张完整的RGB图片作为标签传入?您网络的输出将是一张具有10个通道的图像,其中每个像素将包含一个概率向量,该概率向量的总和为1(由于softmax)。示例:[0.1,0

对于语义分段,最后一层通常是

output=Conv2D(num_类,(1,1),activation='softmax')


我的问题是,如何准备标签?例如,如果我要识别10个类,每个类都有不同的颜色。对于每个标签图像,我是否需要为一种特定颜色应用遮罩,将其转换为灰度图像,以便与模型输出中的1个过滤器进行比较?或者有没有办法将一张完整的RGB图片作为标签传入?

您网络的输出将是一张具有10个通道的图像,其中每个像素将包含一个概率向量,该概率向量的总和为1(由于softmax)。示例:[0.1,0.1,0.1,0.05,0.05,0.1,0.1,0.1,0.1,0.2]。您希望标签图像的形状相同:一个具有10个通道的图像,每个像素是一个二进制向量,在类的索引处为1,在其他位置为0。你的分割损失函数就是像素交叉熵

用于实施:keras中的softmax具有一个轴参数:

当标签为(行,列)时,输出形状将为:(行,列,num_类)

例如:

您可能希望对分割的标签图像进行一次热编码,以便在10个类的情况下,输出中的每个像素都与一个二进制向量相关联,例如
[0,0,0,1,0,0,0,0]
。@sdcbr抱歉,您可以详细说明一次热编码标签图像吗?是否与我提到的方法相同?您网络的输出将是一个具有10个通道的图像,其中每个像素将包含一个概率向量,其总和为1(由于softmax)。示例:
[0.1,0.1,0.1,0.05,0.05,0.1,0.1,0.1,0.1,0.2]
。您希望标签图像的形状相同:一个具有10个通道的图像,每个像素是一个二进制向量,在类的索引处为1,在其他位置为0。你的分割损失函数就是像素交叉熵。@sdcbr好的,我明白了,谢谢。不过,还有一个问题,我认为softmax会单独应用于每个通道(因此一个通道中的所有像素总和为1),或者Keras足够聪明,知道我希望所有通道中的相同像素总和为1吗?这实际上是一个好问题。可能您必须稍微修改一下输出。也许看看这个例子
np_utils.to_categorical(labels, num_classes)