首页 > 解决方案 > 非分类掩码的 UNet 损失函数?

问题描述

我有一个在 Keras 中实现的 UNet 分割网络,它简单地将 RGB 图像中的所有像素映射到 4 个类别,这些类别在热图掩码(低、低-中、高-中、高)上进行了训练。使用 CCE 或分类骰子损失我能够得到不错的结果。

但是,原始形式的掩码是具有 255 位分辨率的热图图像。通过将 255 位的分辨率降低为 4 类来将其硬塞到 Unet 中,这似乎是一种完全任意的错误引入。

我希望网络输出一个图像,每个像素的值都在 (0,1) 之间,并使用通过将热图图像乘以 1./255 生成的掩码训练网络。

在这种情况下,损失函数将包含掩码和网络预测之间的数学差异。谁能指出我做过类似事情的人的方向?我认为我在用相关术语描述我正在寻找的东西方面很糟糕,因为这似乎是计算机视觉中相当普遍的目标..?

标签: pythonkerasdeep-learningcomputer-visionsemantic-segmentation

解决方案


如果我正确理解您的问题 - “基本事实”掩码只是一个灰度图像,其值在 [0,255] 范围内,这意味着它的值之间存在很强的关系(例如 - 25 接近 26 然后接近 70 . 这不是常规分割的情况,您为每个像素分配不同的类别,类别值可能代表任意对象,例如“自行车”或“人”)。换句话说,这是一个回归问题,更具体地说,是一个图像到图像的回归。您正在尝试重建一个灰度图像,该图像应该与地面实况掩码相同,像素级。

如果我理解正确 - 你应该寻找回归损失。可以使用的常见示例是均方误差(又名 MSE,L2 范数)或平均绝对误差(又名 MAE,L1 范数)。这些是“常见的嫌疑人”,我建议您从他们开始,尽管存在许多其他损失。


推荐阅读