首页 > 解决方案 > 如何在 pytorch 中计算 Surface Dice-Sørensen 系数?

问题描述

我想在 python3/pytorch中计算本文( 第 19 页)中的Surface Dice-Sørensen 系数。

我必须指出,我不会尝试实现简单的标准体积 Dice-Sørensen 系数!这在我的实现中如下所示:

import torch

def volumetric_DSC(M1, M2):
    M1 = M1.view(-1)
    M2 = M2.view(-1)
    dividend = 2 * (M1 * M2).sum()
    divisor = (M1 * M1).sum() + (M2 * M2).sum()
    return dividend / divisor

if __name__ == "__main__":
    m1 = torch.empty(5, 5, 5).uniform_(0, 1)
    m1 = torch.bernoulli(m1)
    m2 = torch.empty(5, 5, 5).uniform_(0, 1)
    m2 = torch.bernoulli(m2)
    loss = volumetric_DSC(m1, m2)
    print("loss = {0}".format(loss))

如何将此代码扩展到 Surface Dice-Sørensen 系数损失?

标签: python-3.xpytorch

解决方案


作为研究的一部分,此处提供了表面骰子实现。您可以将其用作评估指标,但不能用作损失函数,因为它包含不可微分的操作。您将需要提供“公差”距离,即 0.9 的表面骰子意味着 90% 的表面位于公差范围内(最好从数据本身计算,例如您正在解决的任务的观察者间变化)


推荐阅读