首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用于分割的DSC和IOU

用于分割的DSC和IOU
EN

Stack Overflow用户
提问于 2021-05-30 05:06:07
回答 1查看 894关注 0票数 1

在培训和验证过程中,我一直试图以二进制交叉熵作为损失,并阅读dice_coeffiou作为衡量标准。经过5个年代后的结果是

代码语言:javascript
代码运行次数:0
运行
复制
Epoch 5/5 2373/2373 [==============================] - 84s 35ms/step - loss: 0.0260 - dice_coef: 0.9864 - iou: 0.9734 - val_loss: 0.0579 - val_dice_coef: 0.9583 - val_iou: 0.9216

我使用的指标如下:

代码语言:javascript
代码运行次数:0
运行
复制
def iou(y_true, y_pred):
  def f(y_true, y_pred):
    intersection = (y_true * y_pred).sum()
    union = y_true.sum() + y_pred.sum() - intersection
    x = (intersection + 1e-15) / (union + 1e-15)
    x = x.astype(np.float32)
    return x
return tf.numpy_function(f, [y_true, y_pred], tf.float32)

smooth = 1e-15
def dice_coef(y_true, y_pred):
    y_true = tf.keras.layers.Flatten()(y_true)
    y_pred = tf.keras.layers.Flatten()(y_pred)
    intersection = tf.reduce_sum(y_true * y_pred)
    return (2. * intersection + smooth) / (tf.reduce_sum(y_true) + tf.reduce_sum(y_pred) + smooth)

def dice_loss(y_true, y_pred):
    return 1.0 - dice_coef(y_true, y_pred)

评估结果在这里

代码语言:javascript
代码运行次数:0
运行
复制
46/46 [==============================] - 12s 259ms/step - loss: 0.0557 - dice_coef: 0.9567 - iou: 0.9181

,我怀疑这是

  1. 尽管我得到95%的骰子和91%的iou,但预测的口罩并不像预期的那样。他们预测了大部分图像的很多区域。我不知道这95%是怎么得到的。有许多图像的预测是不合理的。
  2. 据我所知,训练和验证结果给出了一个平均的骰子分数。预测的掩码值在0,1之间。通常在论文中报道的是什么?它是在应用threshold>0.5之后还是在阈值之前?难道我们不能用一种以阈值为标准的指标来训练网络吗?如果是,请帮我处理密码。在对模型进行评估后,测试图像的结果如下:

EN

回答 1

Stack Overflow用户

发布于 2021-05-30 05:49:08

如果要将阈值考虑在内,则需要绘制ROC曲线。对于二进制分类(每像素),ROC曲线向您展示了准确度和特异性随阈值的变化。

一旦你有了一条ROC曲线,你就可以测量“曲线下面积”,得到一个计算分类器的数字。

您可以使用sklearn.metrics.roc_curve实现来计算它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67757876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档