图像分割中dice指标的计算及程序编写

dice是医学图像中的常见指标,Vgt代表的是ground truth的分割结果,Vpr代表的是预测的分割结果。直观上理解,如下图,代表的是两个体相交的面积占总面积的比值,完美分割该值为1.。

图像分割中dice指标的计算及程序编写_第1张图片

计算公式为



按图中区域表示计算为


tensorflow中编写计算公式如下:

def dice_coef_theoretical(y_pred, y_true):
    """Define the dice coefficient
        Args:
        y_pred: Prediction
        y_true: Ground truth Label
        Returns:
        Dice coefficient
        """

    y_true_f = tf.cast(tf.reshape(y_true, [-1]), tf.float32)

    y_pred_f = tf.nn.sigmoid(y_pred)
    y_pred_f = tf.cast(tf.greater(y_pred_f, 0.5), tf.float32)
    y_pred_f = tf.cast(tf.reshape(y_pred_f, [-1]), tf.float32)

    intersection = tf.reduce_sum(y_true_f * y_pred_f)
    union = tf.reduce_sum(y_true_f) + tf.reduce_sum(y_pred_f)
    dice = (2. * intersection) / (union + 0.00001)

    if (tf.reduce_sum(y_pred) == 0) and (tf.reduce_sum(y_true) == 0):
        dice = 1

    return dice


你可能感兴趣的:(人工智能,机器学习,python)