使用 Keras 进行语义分割:损失函数和掩码

数据挖掘 喀拉斯 美国有线电视新闻网
2022-02-24 19:26:17

我即将开始一个使用灰度掩码进行语义分割的项目。问题是,我们必须检测图像的每个像素是对象还是背景(二元类问题)。我很难将这个像素二元分类任务与掩码标签联系起来,因为每个像素都在 [0,255] 范围内。我已经根据这种方法开始使用 Keras 实现 U-net(对于 keras 来说是相当新的)。

  • 你会使用什么样的损失?- 我在想binary_crossentropy
  • 你会使用什么样的标签?因此,如果我按像素进行这种二进制分类,CNN 的输出形状会是什么?

抱歉,如果我没有使用正确的技术术语。

1个回答

让我看看我能不能帮忙。

(1) 我肯定会为您的损失函数推荐二元交叉熵。

(2) 您的标签应该是“掩码”,即图像(与输入图像大小相同),其中“0 类”像素为 0,“1 类”像素为 1。这基本上是一个黑白图像,其中黑白代表 2 个不同的类别。UNET 网络的输出将是单通道图像(与输入的尺寸相同),其中您的“0-class”为黑色,您的“1-class”为白色。

这是一个例子: 在此处输入图像描述

此图像中的输出掩码是您的标签(“掩码”)的外观。如果你正确地训练你的网络,它也应该是 UNET 的输出。训练大约 40 个 epoch,您将开始看到结果。