mean_iou
paddle.fluid.layers.mean_iou
(input, label, num_classes)[源代码]
该OP计算均值IOU, 均值IOU(Mean Intersection-Over-Union)是语义图像分割中的常用的评价指标之一,它首先计算每个类的IOU,然后计算类之间的平均值。IOU定义如下:
先得到类别的预测结果,然后从中计算均值-IOU。
参数
- input (Variable) - 分割类别预测结果,类型为int32或int64的多维Tensor。
- label (Variable) - 真实label,类型为int32或int64的多维Tensor,它的shape与input相同。
- num_classes (int32) - 类别数目。
返回
- mean_iou (Variable) - 类型为float32的1-D Tensor,shape为[1], 均值IOU的计算结果。
- out_wrong (Variable) - 类型为int32的1-D Tensor,shape为[num_classes],代表每个类别中错误的个数。
- out_correct (Variable) - 类型为int32的1-D Tensor,shape为[num_classes],代表每个类别中正确的个数。
input
和 label
对应的数值应该是类别id,而不是one-hot形式。
代码示例
import paddle.fluid as fluid
iou_shape = [32, 32]
num_classes = 5
predict = fluid.layers.data(name='predict', shape=iou_shape, dtype='int64')
label = fluid.layers.data(name='label', shape=iou_shape, dtype='int64')
mean_iou, out_wrong, out_correct = fluid.layers.mean_iou(predict, label, num_classes)