You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dice系数的正确实现方法是什么?两种代码结果差异咨询

Dice系数正确实现说明

两段代码都不存在逻辑错误,返回值差异来自二者统计Dice系数的口径不同,对应完全不同的使用场景:

Dice系数核心定义

标准Dice系数(也叫Sørensen–Dice系数,分割任务中等价于F1分数)的计算公式为:
Dice = (2 * |真实标注与预测结果的交集|) / (|真实标注像素总数| + |预测结果像素总数|)
代码中的smooth是为了避免分母为0添加的平滑项,常规使用时取1e-5量级的极小值即可,取1时属于加入拉普拉斯平滑的修正版本,会给小目标样本的计算结果带来一定偏移。

两段代码的具体差异

  • dice_coef2计算的是全局Dice
    它直接对整个输入batch的所有像素、所有通道求交集和并集的总和,再一次性计算比值。这种统计方式下,前景像素量大的样本会主导最终分数,小目标样本的误差会被大样本的结果稀释,很容易出现分数虚高,你得到的0.94就是全局口径下的计算结果。
  • dice_coef1计算的是样本平均Dice
    它指定在空间维度和通道维度axis=[1,2,3]上求和,也就是先给batch里每个独立样本单独计算各自的Dice值,最后再对所有样本的Dice取平均。这种方式下每个样本对最终分数的权重相同,不会出现大样本掩盖小样本误差的问题,是分割任务训练、验证阶段的主流实现方式,得到的0.85更能反映模型在单个样本上的平均分割效果。

使用建议

  • 如果是竞赛要求提交整个测试集的全局Dice评分,使用dice_coef2的逻辑即可
  • 如果是训练过程中监控模型效果、评估模型对不同样本的通用分割能力,优先使用dice_coef1的实现

内容的提问来源于stack exchange,提问作者Tom Berry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 01:42:28