【问题标题】:CNN: Softmax layer for pixel-wise classificationCNN:用于像素分类的 Softmax 层
【发布时间】:2017-09-15 17:39:37
【问题描述】:

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

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

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

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    假设高度 = 5 和宽度 = 5,通道 7 具有最大值。现在,

    ->如果通道 7 代表汽车,则需要在高度 = 5 且宽度 = 5 的虚拟数组上放置一个红色像素。

    ->如果通道 7 代表街道,则需要在高度 = 5 且宽度 = 5 的虚拟数组上放置一个绿色像素。

    因此,您正在尝试查找像素属于 N 类中的哪一个。并且基于类,您将在虚拟数组上以独特的颜色重绘像素。

    这个虚拟数组称为掩码。

    例如,假设这是一个输入

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

    因此,当高度 = X 和宽度 = Y 时,通道 1 具有更高的值,我们制作虚拟 [X][Y] 图像的白色像素。当通道 2 具有更高的值时,我们制作一个黑色像素。

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

    这没有多大意义。但是当我们叠加这两个图像时,我们得到了这个

    因此,基本上您将尝试使用 N 通道从您的输出中创建遮罩图像(第二张)。覆盖它们将为您提供最终输出

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-27
      • 2019-03-08
      • 2018-11-05
      • 2020-09-02
      • 2020-02-21
      • 2019-04-16
      • 2018-02-02
      • 2016-12-08
      相关资源
      最近更新 更多