python - 非分类掩码的 UNet 损失函数?
问题描述
我有一个在 Keras 中实现的 UNet 分割网络,它简单地将 RGB 图像中的所有像素映射到 4 个类别,这些类别在热图掩码(低、低-中、高-中、高)上进行了训练。使用 CCE 或分类骰子损失我能够得到不错的结果。
但是,原始形式的掩码是具有 255 位分辨率的热图图像。通过将 255 位的分辨率降低为 4 类来将其硬塞到 Unet 中,这似乎是一种完全任意的错误引入。
我希望网络输出一个图像,每个像素的值都在 (0,1) 之间,并使用通过将热图图像乘以 1./255 生成的掩码训练网络。
在这种情况下,损失函数将包含掩码和网络预测之间的数学差异。谁能指出我做过类似事情的人的方向?我认为我在用相关术语描述我正在寻找的东西方面很糟糕,因为这似乎是计算机视觉中相当普遍的目标..?
解决方案
如果我正确理解您的问题 - “基本事实”掩码只是一个灰度图像,其值在 [0,255] 范围内,这意味着它的值之间存在很强的关系(例如 - 25 接近 26 然后接近 70 . 这不是常规分割的情况,您为每个像素分配不同的类别,类别值可能代表任意对象,例如“自行车”或“人”)。换句话说,这是一个回归问题,更具体地说,是一个图像到图像的回归。您正在尝试重建一个灰度图像,该图像应该与地面实况掩码相同,像素级。
如果我理解正确 - 你应该寻找回归损失。可以使用的常见示例是均方误差(又名 MSE,L2 范数)或平均绝对误差(又名 MAE,L1 范数)。这些是“常见的嫌疑人”,我建议您从他们开始,尽管存在许多其他损失。
推荐阅读
- r - 无法理解列表是如何构建的
- spring-integration - Sprint 集成流程无法启动
- haskell - 如何将字符与 Haskell 中的数字进行比较?
- spring-boot - 弹簧靴找不到配置文件
- reactjs - 如何使用 Axios 从 React 功能组件向 localhost 服务器发出的 get 请求中访问数据?
- filtering - 我可以关闭 Tableau 筛选器中的条件吗?
- android - Recylerview 项目有时只注册点击
- jquery - 在来自浏览器的 POST 请求之前,是否验证了 HTTP 标头中的内容类型?
- windows - _vimrc 他的主目录覆盖 $VIM 中的 _vimrc
- elasticsearch - elasticsearch 找不到命令行工具