mindspore.train.MeanSurfaceDistance
- class mindspore.train.MeanSurfaceDistance(symmetric=False, distance_metric='euclidean')[源代码]
计算从 y_pred 到 y 的平均表面距离。通常情况下,用来衡量分割任务中,预测情况和真实情况之间的差异度。
给定两个集合A和B,S(A)表示A的表面像素,任意v到S(A)的最短距离定义为:
从集合B到集合A的平均表面距离(Average Surface Distance)为:
其中, ||*|| 表示距离度量, |*| 表示元素的数量。
从集合B到集合A,以及从集合A到集合B的表面距离平均值为:
- 参数:
distance_metric (str) - 支持如下三种距离计算方法:
"euclidean"
(欧式距离)、"chessboard"
(棋盘距离、切比雪夫距离) 或"taxicab"
(出租车距离、曼哈顿距离)。默认值:"euclidean"
。symmetric (bool) - 是否计算 y_pred 和 y 之间的对称平均平面距离。如果为
False
,计算方式为 ;如果为True
,计算方式为 。默认值:False
。
- 支持平台:
Ascend
GPU
CPU
样例:
>>> import numpy as np >>> from mindspore import Tensor >>> from mindspore.train import MeanSurfaceDistance >>> x = Tensor(np.array([[3, 0, 1], [1, 3, 0], [1, 0, 2]])) >>> y = Tensor(np.array([[0, 2, 1], [1, 2, 1], [0, 0, 1]])) >>> metric = MeanSurfaceDistance(symmetric=False, distance_metric="euclidean") >>> metric.clear() >>> metric.update(x, y, 0) >>> mean_average_distance = metric.eval() >>> print(mean_average_distance) 0.8047378541243649
- update(*inputs)[源代码]
使用 y_pred、 y 和 label_idx 更新内部评估结果。
- 参数:
inputs - y_pred、 y 和 label_idx。 y_pred 和 y 为Tensor、list或numpy.ndarray。 y_pred 是预测的二值图像。 y 是实际的二值图像。 label_idx 数据类型为int或float,表示像素点的类别值。
- 异常:
ValueError - 输入的数量不等于3。
TypeError - label_idx 的数据类型不是int或float。
ValueError - label_idx 的值不在 y_pred 或 y 中。
ValueError - y_pred 和 y 的shape不同。