当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.keras.metrics.MeanIoU用法及代码示例


计算平均 Intersection-Over-Union 指标。

继承自:IoUMetricLayerModule

用法

tf.keras.metrics.MeanIoU(
    num_classes, name=None, dtype=None
)

参数

  • num_classes 预测任务可能具有的标签数量。必须提供此值,因为将分配维度 = [num_classes, num_classes] 的混淆矩阵。
  • name (可选)指标实例的字符串名称。
  • dtype (可选)度量结果的数据类型。

一般定义和计算:

Intersection-Over-Union 是语义图像分割的常用评估指标。

对于单个类,IoU 指标定义如下:

iou = true_positives / (true_positives + false_positives + false_negatives)

为了计算 IoU,预测被累积在一个混淆矩阵中,由 sample_weight 加权,然后从中计算度量。

如果 sample_weightNone ,则权重默认为 1。使用 0 的 sample_weight 来屏蔽值。

请注意,此类首先计算所有单个类的 IoU,然后返回这些值的平均值。

单机使用:

# cm = [[1, 1],
#        [1, 1]]
# sum_row = [2, 2], sum_col = [2, 2], true_positives = [1, 1]
# iou = true_positives / (sum_row + sum_col - true_positives))
# result = (1 / (2 + 2 - 1) + 1 / (2 + 2 - 1)) / 2 = 0.33
m = tf.keras.metrics.MeanIoU(num_classes=2)
m.update_state([0, 0, 1, 1], [0, 1, 0, 1])
m.result().numpy()
0.33333334
m.reset_state()
m.update_state([0, 0, 1, 1], [0, 1, 0, 1],
               sample_weight=[0.3, 0.3, 0.3, 0.1])
m.result().numpy()
0.23809525

compile() API 的用法:

model.compile(
  optimizer='sgd',
  loss='mse',
  metrics=[tf.keras.metrics.MeanIoU(num_classes=2)])

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.keras.metrics.MeanIoU。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。