Python 3.x 语义分割的自定义度量

Python 3.x 语义分割的自定义度量,python-3.x,tensorflow,keras,Python 3.x,Tensorflow,Keras,我正在进行一项多类语义分割任务,并希望定义一个自定义的加权度量,用于计算我的神经网络的性能 我使用U-net将我的图像分割成8个类中的一个,其中1-7个是特定类,0个是背景。如何使用页面上定义的标准自定义度量模板,以便仅获取通道1-7的IoU乘以(1,7)权重数组?我尝试使用删除自定义度量中的背景通道 y_true, y_pred = y_true[1:,:,:], y_pred[1:, :,:] 但看起来这不是我想要的。任何帮助都将不胜感激。必要的更改 def dice_coef_multi

我正在进行一项多类语义分割任务,并希望定义一个自定义的加权度量,用于计算我的神经网络的性能

我使用U-net将我的图像分割成8个类中的一个,其中1-7个是特定类,0个是背景。如何使用页面上定义的标准自定义度量模板,以便仅获取通道1-7的IoU乘以(1,7)权重数组?我尝试使用删除自定义度量中的背景通道

y_true, y_pred = y_true[1:,:,:], y_pred[1:, :,:]

但看起来这不是我想要的。任何帮助都将不胜感激。

必要的更改

def dice_coef_multilabel(y_true, y_pred, numLabels=CLASSES):
    dice=0
    for index in range(numLabels):
        dice -= dice_coef(y_true[:,:,index], y_pred[:,:,index])
    return dice
如果需要,可以通过使用两个嵌套循环在所有通道组合上循环来跨通道计算骰子系数。我还包括骰子系数的计算

def dice_coef(y_true, y_pred):
    y_true_f = K.flatten(y_true)
    y_pred_f = K.flatten(y_pred)
    intersection = K.sum(y_true_f * y_pred_f)
    return (2. * intersection + smooth) / (K.sum(y_true_f) + K.sum(y_pred_f) + smooth)
FWIW以通道方式实现了各种类型的度量