ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Dice系数

2021-07-24 16:30:31  阅读:680  来源: 互联网

标签:系数 torch Dice float smooth numpy norm


1.背景

Dice 系数是常用的分割的评价标准之一 后面还会介绍其他的评价标准。
而且我发现大家的东西都是互相抄来抄去没有意思

2.Dice系数

  1. 原理及定义
    公式1公式1
    假设 X 是 Output【也就是我们输出结果】 维度为(3,3)
    Y 为lable【标签】 维度为(3,3)
  2. 单一分类
    首先我们需要明白Dice系数使用判断两个图片(这里我就指的是X Y)的相似度的,但是在我们的分割任务当中我们通常将

0 代表背景
1 代表预测分割

现在我们假设
a=[
[1,0,1],
[0,0,0],
[0,1,0]
]

b=[
[0,0,0],
[0,0,0],
[0,1,0]
]
大家需要比较的肯定是1,也就是预测分割这部分和真实的label之间的相似度,计算方法如下:

  1. 计算出 相应位置都是1的个数 1个
  2. 分别计算出含有1的个数并相加 4个
  3. 带入公式计算 2*1/4 = 0.5 0.5

代码实现如下:(pytorch 实现)

import torch
import numpy as np

a_numpy = np.array([
 [1,0,1],
 [0,0,0],
 [0,1,0]
 ])
b_numpy = np.array([
 [0,0,0],
 [0,0,0],
 [0,1,0]
 ])
a   =  torch.from_numpy(a_numpy)
b   =  torch.from_numpy(b_numpy)
# a * b 代表对应位置相乘 不懂的可以看一下 torch文档,norm为1范数
res =  2*(a.float()*b.float()).norm(1)/(a.float().norm(1)+b.float().norm(1))
print(res)

输出结果为0.5

为什么使用上述的计算方法了? 因为有时候我们输出的label可能为百分比的时候

a=[
[0.7, 0 , 0.8],
[0.1 , 0.2 , 0.3],
[0.4 , 0.9 , 0.2]
]

b=[
[0,0,0],
[0,0,0],
[0,1,0]
]
我们使用了相同的代码进行计算得出结果为0.3913
如果我们对a进行修改从0.7 升到 1 dice值降到0.3673

可能是我个人的见识比较浅薄,我觉得大家如果使用可能性计算Dice的话可能会对极大概率的影响不够充分,也就是A与B的交际部分,虽然我们乘上了一个2 但是在绝大数512512 图片中 假设物体分辨率为 3030,261244*(小概率)加到分母中,我个人认为这是不太合理的,希望大家可以批评指正。

·························································································································
同时为了避免出现X Y 全部都是0 导致公式1 出现分母为0的情况,我们通常会对其进行一个平滑调整 也就是加上一个smooth

smooth = 1.
a   =  torch.from_numpy(a_numpy)
b   =  torch.from_numpy(b_numpy)
res =  (2*(a.float()*b.float()).norm(1) +smooth) / ((a.float().norm(1)+b.float().norm(1))+smooth)
print(res)

这里我又不带明白了 这里的smooth 应该是越小对原始的影响应该越小,大家好像都设置为1了 可能是一种约定俗称吧

最后就是变种时间 正对 |X| + |Y|
有的人会使用我上面说的1范数,但是我发现好像大家也有采用取元素平方求和的做法:

标签:系数,torch,Dice,float,smooth,numpy,norm
来源: https://blog.csdn.net/qq_41322802/article/details/119058571

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有