CNN:用于像素分类的Softmax层

时间:2017-09-15 17:39:38

标签: conv-neural-network image-segmentation softmax

我想更详细地了解softmax层如何在CNN中查看图像的语义分割/按像素分类。 CNN输出类标签的图像,其中原始图像的每个像素都有标签。

在通过网络传递测试图像之后,倒数第二层输出原始图像分辨率的N个通道。我的问题是,softmax层如何将这N个通道转换为标签的最终图像。

假设我们有C类(#可能的标签)。我的建议是,对于每个像素,其前一层的N个神经元连接到softmax层中的C神经元,其中每个C神经元代表一个类。使用softmax激活功能,C输出(对于该像素)的总和等于1(这有利于网络的训练)。最后,每个像素被分类为具有最高概率的类(由softmax值给出)。 这意味着softmax层由C * #pixels神经元组成。我的建议是否正确?我没有找到解释,希望你能帮助我。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

答案是softmax图层将这N个频道转换为标签的最终图像

假设您有一个N通道输出,那么您的问题是如何将其转换为3通道以进行最终输出。

答案是你不要。这N个通道中的每一个代表一个类。要走的路是你应该有一个具有相同高度和重量的虚拟阵列和3个通道。

现在你必须用一种颜色抽象地编码每个类,如街道为绿色,汽车为红色等。

假设对于height = 5和width = 5,通道7具有最大值。现在,

- >如果通道7代表汽车,则需要在虚拟阵列上放置一个红色像素,其中height = 5且width = 5.

- >如果通道7表示街道,则需要在虚拟阵列上放置绿色像素,其中height = 5且width = 5.

所以你试图寻找一个像素所属的N类。根据类,您将在虚拟阵列上以独特的颜色重绘像素。

这个虚拟数组称为掩码。

例如,假设这是一个输入

enter image description here

我们正在尝试使用像素分类来定位大脑的肿瘤区域。这里的班级数是2,肿瘤存在且不存在。因此softmax层输出一个2通道对象,其中通道1表示存在肿瘤,而通道2表示不存在。

因此,无论何时对于height = X和width = Y,通道1具有更高的值,我们都会制作一个dummmy [X] [Y]图像的白色像素。当通道2具有更高的值时,我们制作黑色像素。

之后我们会得到一个这样的面具,

Mask file

哪个不太有意义。但是当我们覆盖这两个图像时,我们得到了这个

Final Output

所以基本上你会尝试使用N Channel从输出中创建遮罩图像(第二个)。覆盖它们将为您提供最终输出