Dice的计算(dispimg公式详解)

2023-07-26 12:06:44 阅读:

 

这两天在做分割模型的评测工作。分割任务中最常用的评测指标是Dice,交并比很类似,具体的公式为:Dice = 2 * (A∩B) /(|A| + |B|)(如下图所示)

工作中,通常会使用代码来实现Dice的计算。第一天的工作中,我遇到的问题是计算分割出的Mask和ground True Mask的Dice, 于是写了如下的代码进行计算:

def dice_equation(mask1, mask2): intersection = (mask1 * mask2).sum() union = (mask1 + mask2).sum() if union != 0: dices = float((2 * intersection) / union) else: dices = 0 return dices

即获取两个图像的mask,通常情况下mask中的前景会用1表示,而背景图像会用0表示,那么这种情况下,则可以把两个mask等成数组进行上面的计算,可以获得Dice.

由于我当时需要计算的数据量比较大,每次都需要获得预测的Mask和Ground True的Mask,并且由于我做的是3D的分割,所以整个数组的运算量很大,总体算下来花费的时间比较久。所以第二天便尝试是否有其他的方法可以用来计算。 于是找到了通过bbox的计算方法。

bbox的计算方法,目前只适用于检测框的Dice计算。即把每一个检测的框用bounding box表示: min_z, min_y, min_x, max_z, max_y, max_x,通过对他们的坐标进行计算来求Dice。具体的代码如下:

def intersection(bbox1,bbox2): min_z1, min_y1, min_x1, max_z1, max_y1, max_x1 = np.split(bbox1, indices_or_sections=6, axis=0) min_z2, min_y2, min_x2, max_z2, max_y2, max_x2 = np.split(bbox2, indices_or_sections=6, axis=0) pair_z_min = np.maximum(min_z1, min_z2) pair_z_max = np.minimum(max_z1, max_z2) z_intersect = np.maximum(0, pair_z_max - pair_z_min) pair_y_min = np.maximum(min_y1, min_y2) pair_y_max = np.minimum(max_y1, max_y2) y_intersect = np.maximum(0, pair_y_max - pair_y_min) pair_x_min = np.maximum(min_x1, min_x2) pair_x_max = np.minimum(max_x1, max_x2) x_intersect = np.maximum(0, pair_x_max - pair_x_min) return z_intersect * y_intersect * x_intersect def area(bbox): min_z, min_y, min_x, max_z, max_y, max_x = np.split(bbox, indices_or_sections=6, axis=0) return (max_z - min_z) * (max_y - min_y) * (max_x - min_x) def dice(bbox1, bbox2): intersect = intersection(bbox1, bbox2) area1 = area(bbox1) area2 = area(bbox2) dice = 2 * intersect / (area1 + area2) return dice

其实核心还是想办法通过bbox求出两个bbox的交集,拿如下的代码举例:

#先找到两个bbox中的左上角点的较大的值:A pair_z_min = np.maximum(min_z1, min_z2) #再找出两个bbox中的右下角点的较小的值:B pair_z_max = np.minimum(max_z1, max_z2) #B-A是否大于0,如果大于0,则说明是有相交的,如果小于0则说明没有相交 z_intersect = np.maximum(0, pair_z_max - pair_z_min)

该示例仅是在Z轴上的计算,通过这种方法依次计算X轴和Y轴,最终把得到的三个值相乘,则得到了两个bbox的交集部分。


以上就是关于《Dice的计算(dispimg公式详解)》的全部内容,本文网址:https://www.7ca.cn/tg/41197.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明