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,如对您有帮助可以分享给好友,谢谢。
声明