首页 > 解决方案 > 为独特的分割任务构建复杂的自定义损失函数 - 图像上预测点和真实点之间的平均距离

问题描述

我需要为以下任务构建一个非常复杂的损失函数:模型接收图像并输出分割图。具体任务需要识别几个小圆圈,这样输出的分割图本质上是一个带有几个非常小的白点的黑色背景。

分割图输出示例。

对这类问题使用基于交集的方法的问题在于,由于每个圆圈都非常小,所以两个不接触但非常接近的圆圈与两个不接触的圆圈之间没有任何区别& 彼此相距甚远,尽管前者显然更好并且应该“激励”。

一个可能的损失函数是将预测图像上的每个点与ground-truth图像上的对应点进行匹配,并找到对应点之间的平均距离,而不是使用交点。

我目前正在考虑的一种方法是:

  1. 使用 Hessian 行列式方法快速有效地识别 blob 的坐标。
  2. 使用匈牙利算法找到从预测图像到真实图像的点的最佳映射。幸运的是,这也可以处理模型预测的点数与真实图像中的点数不同的情况。

但是,我不确定如何使用 Keras 后端函数来实现这一点,因为我正在使用其他库(用于 Hessian 行列式的scikit 图像和用于匈牙利算法的scipy)来完成繁重的工作。我在这里寻找一些指导:是否完全有可能使用可区分的后端函数来实现这一点?如果没有,您是否会推荐其他方法来查找对应点之间的平均距离。

或者,是否有更简单/更好的损失函数可以通过使用基于交集的损失函数来解决上述问题?

谢谢。

标签: pythontensorflowkerasdeep-learningloss-function

解决方案


推荐阅读