我正在使用fchollet的图像分割指南来执行语义分割。我已经尝试修改该指南以适合我的数据集,方法是将8位img掩码值标记为1和2,就像Oxford Pets数据集一样。(在class OxfordPets(keras.utils.Sequence):
中将减去0和1)
问题是如何获得单个类的IoU度量(例如1)?
我尝试了Stack Overflow建议的不同指标,但大多数都建议使用MeanIoU,我尝试过,但结果是nan loss。下面是使用自动对比后的遮罩示例。PIL.ImageOps.autocontrast(load_img(val_target_img_paths[i]))
该模型似乎训练良好,但准确性随着时间的推移而降低。
另外,有人能帮助**解释一下如何根据y_true
和y_pred
计算指标得分吗?**我不太明白在IOU指标计算中何时使用标签值。
2条答案
按热度按时间nszi6y051#
我当时也遇到过类似的问题。我使用了
jaccard_distance_loss
和dice_metric
。它们都是基于IoU的。我的任务是二进制分割,所以我想如果你想用它来解决多标签分类问题,你可能需要修改代码。第一个
rkttyhzu2#
您可以使用
tf.keras.metrics.IoU
方法,您可以在以下位置找到它的文档:https://www.tensorflow.org/api_docs/python/tf/keras/metrics/IoU此处显示了如何使用它:
正如您在文档中所看到的,IoU的计算公式为:
true_positives / (true_positives + false_positives + false_negatives)
个